Допустим у вас есть
-
Home Assistant
-
установленный в нем Zigbee2MQTT
-
установленный в нем Node-RED
-
желание что бы на всем этом горел свет когда кто-то находится в помещении
Конечно можно купить TS0601, он прикольный, может работать как роутер, но требует отдельного питания и довольно сильно спамит сообщениями
Поэтому можно применить таймер и обойтись только датчиком движения. Выглядит это примерно так

«Motion bathroom» — подписка на топик датчика движения

«Switch occupancy» — ветвление по данными из json

«state_right — ON» — формирование сообщения включения правого переключателя (у меня там стоит WS-EUK02 и свет только на правом, функция выглядит так
msg.payload = {"state_right": "ON"}; return msg;
«Reset timer» выглядит так
var msg = { reset:true }; return msg;
«state_right — OFF» — формирования json выключения
msg.payload = {"state_right": "OFF"}; return msg;
«delay 15m» — задержка на 15 минут
Ну и «Switch bathroom set» — отсылка сoобщений (mqtt out) в топик выключателя zigbee2mqtt/switch_bathroom/set
Все комопоненты — стандарные из Node-Red. mqtt in / out из network, остальное все из functions
Работает все тупенько, как понятно из схемы
-
Если происходит движение — включается свет и сбрасывается таймер задержки на отсчет с нуля
-
Если движения нет — запускается таймер и если движения не было 15 минут — свет вырубается.
Пару минусов этого решения:
-
Если лежать в ванной / сидеть на горшке и не шевелиться то таймер вырубит свет через 15 минут 🙂 Такое редко, но бывает
-
Свет будет гореть всегда 15 минут даже если вы ушли и он вам не нужен
ссылка на оригинал статьи https://habr.com/ru/articles/744398/
Добавить комментарий