Блог

Прогрессивный таймер движения в Hass.io на Node-RED

Датчики движения - один из самых популярных способов автоматического управления светом.

Особенности и примеры использования я описывал ранее.

К сожалению, такие датчики хорошо работают в проходных помещениях.

Но в тех местах, где человек находится неподвижно - свет выключается в неподходящее время по таймеру.

Наиболее простой способ этого избежать - увеличить таймер.

Я всегда стремлюсь максимально уменьшить время бесполезной работы света. Иначе как можно такой дом называть умным?!

В случае закрытого помещения, вроде ванной или туалета, проблема решается добавлением датчика двери и такой вот автоматизации. Схема работает уже несколько месяцев и полностью себя оправдала.

В случае открытого помещения, вроде кухни (у меня нет двери) или лампы у кресла - пришлось вновь что-то придумывать.

На схеме изображен прогрессивный таймер. Чем больше двигаешься - тем дольше будет таймер автоматического выключения света.

Таймер начинается с двух минут (настраивается). И если датчик уловит движение пока свет горит - таймер увеличится до шести минут.

Если же в течении двух минут движения не было - свет выключится. Недовольный человек помашет рукой - и таймер включится уже на четыре минуты!

Каждое движение при горящем свете - увеличивает таймер на четыре минуты максимально до 10 минут (настраивается) и запускает таймер заново.

Таким образом, если среди ночи вы забежите на кухню попить водички - свет потухнет быстро. А если долго вертеться на одном месте - свет перейдёт в режим увеличенного таймера.

Как работают другие ноды я уже описывал ранее в своих статьях.

И готовое флоу для копипаста:

[{"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


Вернуться назад
Вернуться назад