Вот такую схему я использую по сей день. Сразу добавлю – немного она странна, но работает. И так ,стоит задача: по датчику движения установленному на втором этаже коридора (между перекрестком всех комнат) в периоды с 15:30 до 22:59 свет включается с максимальной яркостью (или с определенной вами каа настроите), в периоды с 23:00 до 06:00 минимальной яркостью достаточной для поиска пути в Ванную 🙂
Теперь более подробно.
1 – если в период времени с 15:30 до 23:00 обнаружено движения в коридоре 2го этажа и я нахожусь дома (подчеркиваю Я, а не кошки), то включается свет и переводим его яркость с уровнем 60, а датчик движения отключаем.По истечении 90 сек, свет отключится.
2 – если в период времени с 23:00 до 23:59 обнаружено движения в коридоре 2го этажа и я нахожусь дома (подчеркиваю Я, а не кошки), то включается свет и переводим его яркость с уровнем 10, а датчик движения отключаем.По истечении 10 сек, свет отключится.
3 – если в период времени с 00:00 до 23:59 обнаружено движения в коридоре 2го этажа и я нахожусь дома (подчеркиваю Я, а не кошки), то включается свет и переводим его яркость с уровнем 10, а датчик движения отключаем.По истечении 10 сек, свет отключится.
теперь почему здесь видим 2 периода с идентичными сценариями ? потому что указав тупо с 23:00 до 06:00 – не работало.
Что же будет происходить если меня нет дома (STATUSMYHOME=Off). В остальном случае сценарий не будет срабатывать ни на какие движения т.к. не у нас жестко прописана логика И – И – И. Как-то так.
Теперь рассмотрим, что такое Ночной режим в Коридоре 2 эт. Это отдельный виртуальный датчик типа Selector
Со следующими уровнями (Levels). Задавать из можно какие-угодно.
+ нам понадобится небольшой скрипт на Lua (Device) для управления этими Levels, где:
- 192.168.1.43 это IP адрес нашей Xiaomi лампочки (не забываем, что необходимо на ней через приложение Yeelight Lamp включить режим разработчика.
- DomDevice – это название нашего виртуального датчика ‘Ночной режим в Коридоре 2го эт’ (строго должно совпадать)
commandArray = {} DomDevice = 'Ночной режим в Коридоре 2го эт'; IP = '192.168.1.43'; PORT = '55443' if devicechanged[DomDevice]=='Off' then -- turn off runcommandoff = "sudo echo -ne '{\"id\":1,\"method\":\"set_power\", \"params\":[\"off\", \"smooth\", 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandoff); -- print(runcommandoff) elseif devicechanged[DomDevice]=='Sunrise' then -- turn to sunrise mode from 0 to 100% on 15 minutes runcommandsunrise = " sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf\",2,1,\"50,2,4000,1,900000,2,4000,100\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandsunrise); -- print(runcommandsunrise) elseif devicechanged[DomDevice]=='Sunset' then -- turn to sunset mode from 100% to 0 on 15 minutes and turn off bulb runcommandsunset = " sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf\",2,2,\"50,2,4000,75,900000,2,4000,1\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandsunset); -- print(runcommandsunset) elseif devicechanged[DomDevice]=='Bright 25%' then -- turn to 25% bright runcommand25 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 25, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand25); -- print(runcommand25) elseif devicechanged[DomDevice]=='Bright 50%' then -- turn to 50% bright runcommand50 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 50, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand50); -- print(runcommand50) elseif devicechanged[DomDevice]=='Bright 75%' then -- turn to 75% bright runcommand75 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 75, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand75); -- print(runcommand75) elseif devicechanged[DomDevice]=='Bright 100%' then -- turn to 100% bright runcommand100 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 100, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand100); -- print(runcommand100) elseif devicechanged[DomDevice]=='Baby' then -- turn to Baby Mode runcommandbaby = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 10, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandbaby); -- print(runcommandbaby) elseif devicechanged[DomDevice]=='4-7-8' then -- turn to 4-7-8 mode runcommand478 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf_\",24,2,\"4000,2,4000,30,7000,2,4000,10,8000,2,4000,1\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand478); -- print(runcommand478) end return commandArray
Полезные линки
Справочник по управлению умными лампочками (Lua/terminal)
можно сделать гораздо проще и правильнее! создаешь виртуальный выключатель и на него вешаешь таймер… при этом в планировщике можешь указать на каждый день свой период! тем самым просто в написании кода используешь если выключатель (виртуальный с таймером) включен, то свет горит на полную, а если нет то тусклый