Датчики движения - один из самых популярных способов автоматического управления светом.
Особенности и примеры использования я описывал ранее.
К сожалению, такие датчики хорошо работают в проходных помещениях.
Но в тех местах, где человек находится неподвижно - свет выключается в неподходящее время по таймеру.
Наиболее простой способ этого избежать - увеличить таймер.
Я всегда стремлюсь максимально уменьшить время бесполезной работы света. Иначе как можно такой дом называть умным?!
В случае закрытого помещения, вроде ванной или туалета, проблема решается добавлением датчика двери и такой вот автоматизации. Схема работает уже несколько месяцев и полностью себя оправдала.
В случае открытого помещения, вроде кухни (у меня нет двери) или лампы у кресла - пришлось вновь что-то придумывать.
На схеме изображен прогрессивный таймер. Чем больше двигаешься - тем дольше будет таймер автоматического выключения света.
Таймер начинается с двух минут (настраивается). И если датчик уловит движение пока свет горит - таймер увеличится до шести минут.
Если же в течении двух минут движения не было - свет выключится. Недовольный человек помашет рукой - и таймер включится уже на четыре минуты!
Каждое движение при горящем свете - увеличивает таймер на четыре минуты максимально до 10 минут (настраивается) и запускает таймер заново.
Таким образом, если среди ночи вы забежите на кухню попить водички - свет потухнет быстро. А если долго вертеться на одном месте - свет перейдёт в режим увеличенного таймера.
Самая важная и хитрая нода - это нода счётчика (плюс 2 на схеме).
Отсчёт начинается с -1 и увеличивается с каждым движением на 2.
-1 нужен, чтоб уловить движение сразу после выключения света. И включить не стандартный, а увеличенный в два раза таймер.
Максимальное значение 5 - ограничивает максимальную продолжительность таймера.
Нода сравнения (== 0 на схеме) проверяет значения счётчика на ноль и больше нуля.
В обоих случаях сбросится таймер обратного отсчёта.
А в случае нуля - вдобавок выключится свет.
Значение счётчика -1 так же попадёт в эту ноду, но дальше по цепочке не продвинется (ведь нет такого условия).
Новое движение после этого момента запустит схему заново.
Нода триггера запускается заново при каждом движении (галка extend delay).
Время в 2 минуты можно поменять на удобное вам.
Оно фактически домножается на величину счётчика.
Как работают другие ноды я уже описывал ранее в своих статьях.
И готовое флоу для копипаста:
[{"id":"75e2a30a.f38fbc","type":"switch","z":"16c244a5.bbf80b","name":"","property":"payload.entity_id","propertyType":"msg","rules":[{"t":"eq","v":"binary_sensor.motion_sensor_hall","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":210,"y":1680,"wires":[["c86bcd87.9f05","385be4f8.e48f1c"]]},{"id":"c86bcd87.9f05","type":"api-call-service","z":"16c244a5.bbf80b","name":"turn_on light","server":"363b253c.34918a","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_on","entityId":"light.backlight_hall","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":370,"y":1680,"wires":[[]]},{"id":"385be4f8.e48f1c","type":"counter","z":"16c244a5.bbf80b","name":" 2","init":"-1","step":"2","lower":"-1","upper":"5","mode":"increment","outputs":1,"x":350,"y":1740,"wires":[["e4c57c00.1d13b"]]},{"id":"951d4786.47c168","type":"server-events","z":"16c244a5.bbf80b","name":"motion","server":"363b253c.34918a","event_type":"xiaomi_aqara.motion","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":70,"y":1680,"wires":[["75e2a30a.f38fbc"]]},{"id":"e4c57c00.1d13b","type":"switch","z":"16c244a5.bbf80b","name":"== 0","property":"count","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":470,"y":1740,"wires":[["ac1e0649.89a0d8","902888b3.b16a28"],["ac1e0649.89a0d8"]]},{"id":"f0448131.0bcce","type":"change","z":"16c244a5.bbf80b","name":"-1","rules":[{"t":"set","p":"decrement","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":1740,"wires":[["385be4f8.e48f1c"]]},{"id":"ac1e0649.89a0d8","type":"trigger","z":"16c244a5.bbf80b","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"2","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":630,"y":1740,"wires":[["f0448131.0bcce"]]},{"id":"902888b3.b16a28","type":"api-call-service","z":"16c244a5.bbf80b","name":"turn_off light","server":"363b253c.34918a","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"light.backlight_hall","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":630,"y":1680,"wires":[[]]},{"id":"363b253c.34918a","type":"server","z":"","name":"Home Assistant"}]
Добавь плиз готовое флоу, чтобы можно было копи-паст, плиз :)
Я не публикую флоу не потому что я вредный. На мой взгляд, повторение флоу вручную, хотяб по скриншотам с объяснениями, заставляет человека думать и хоть что-то понять в принципах работы.
Но флоу добавил ;)
Заменить датчик движения на датчик присутствия и не нужны будут такие сложности программные ;)))
Можно достойный пример датчика присутствия?
То есть если у вас дома уже развешаны датчики движения вы предлагаете потратить деньги и заменить их на датчики присутствия? Вместо бесплатной софтовой доработки?
Слышал, что wi-fi новые могут определять местоположение человека, вот бы скорее что-то подобное, тогда можно будет налету вкл/выкл зная точно где человек сейчас. А то с таймерами даже 2 минуты капает прилично (мощные светодиодные ленты стоят)
Спасибо за такое решение. Мне как человеку далёкому от логики программирования, только и остается что собирать вот из таких кирпичиков )
Спасибо за очередной прекрасный пример автоматизации. Единственное, что я переделал - это начальную ноду. Почему-то с нодой "Motion" - была задержка с включением света. Поставил входную моду из прошлого вашего примера.
Не совсем понял, у Вас датчик посылает только сообщения об обнаружении движения, о прекращении (через минуну как все акаровские вроде) не посылает?
Здравствуйте добавил датчики через Zigbee2MQTT и теперь получаю такую картину
Садится батарея: bathroom_battery, bathroom_temperature, bathroom_humidity, bathroom_linkquality, bedroom_battery, bedroom_temperature, bedroom_humidity, bedroom_linkquality
у каждого датчика теперь несколько friendly_name :))
подскажите пожалуйста как мне получать уведомления только с датчиков содержащих в имени _battery