В статье про климатические сенсоры от Xiaomi я упоминал, что те сенсоры были одним из двух случаев, когда я сильно прокололся с покупкой. С теми сенсорами всё в итоге обошлось, они исправно работают и я заказал ещё.
Второй вещью, с которой не повезло, оказались нонеймовые датчики движения, брендированные Tuya.
Для тех, кто не знает, Tuya - это семейство разной техники для умного дома, собранное различными вендорами под одной из модификаций протокола обмена данными. Все эти устройства управляются из-под фирменных приложений Tuya/SmartHome, которые, по сути, представляют из себя облако для всех этих разношерстных компаний. Датчики Tuya работают как по Zigbee, так и по Wi-Fi.
Именно датчики движения Tuya и стали моей второй головной болью, не решённой до сих пор.
Сейчас точно не вспомню, почему я заказал сначала версию Wi-Fi - может быть, потому что у меня ещё не было стика Conbee, а может потому что тогда не было модификаций Zigbee или они были слишком дорогие, но факт остаётся фактом - я заказал два датчика движения Tuya Wi-Fi.
И уже в процессе настройки оказалось, что интеграция tuya в HomeAssistant не умеет работать именно с датчиками движения. Вроде бы разработка идёт, но теме, в которой мусолится разработка и поддержка таких датчиков, уже года два. То есть на скорое решение, как было с климатическими сенсорами, рассчитывать не приходится.
Поэтому пришлось идти другим путём.
Интеграция Wi-Fi PIR через пинг
В той же теме, где обсуждаются возможности подключения датчиков движения на базе учётной записи tuya, было предложено обходное решение - через ping. Такой способ мне уже был знаком, через пинг я определяю присутствие семьи дома, так что я уже знал, как этим пользоваться и какие грабли предстоят.
В первую очередь надо разделить трекеры для устройств и трекеры для датчиков движения, потому что датчики движения надо сканировать каждую секунду, иначе будет слишком долгая задержка между сработкой датчика и реакцией. Сканировать все устройства раз в секунду - неоправданно нагружать сеть. Роутер у меня был на один диапазон 2.4ГГц, и большое количество активных устройств просто ухудшало раздачу интернета.
В итоге датчики движения были сделаны не через device_tracker, а через более подходящий для этого binary_sensor:
- platform: ping
name: ping_tuya_pir_hall
host: !secret tuya_pir_hall
count: 1
scan_interval: 1
Здесь создаётся бинарный сенсор (вкл/выкл), который раз в секунду пингует устройство и при первом же успешном пинге меняет своё состояние. Автоматизация на включение света при движении:
- alias: Свет в прихожей при движении
trigger:
- entity_id: binary_sensor.ping_tuya_pir_hall
platform: state
to: 'on'
condition:
- condition: template
value_template: '{{ states.sun.sun.attributes.elevation < 15 }}'
action:
- service: light.turn_on
entity_id: light.sonoff_1000abc123
Здесь кроме сработки самого датчика учитывается высота солнца над горизонтом. Потому что свет нужно включать, как правило, ещё до фактического захода солнца.
И автоматизация выключения, если нет движения больше трёх минут:
- alias: Свет в прихожей выкл
trigger:
- entity_id: binary_sensor.ping_tuya_pir_hall
platform: state
to: 'off'
for: 00:03:00
action:
- service: light.turn_off
entity_id: light.sonoff_1000abc123
Несмотря на то, что такое решение работает довольно стабильно, у него есть один существенный минус - очень большая задержка (несколько секунд) между движением и включением света. Есть ещё нюанс, который нельзя назвать недостатком, но нужно иметь его ввиду - у Wi-Fi-версии датчика есть переключатель таймаута сработки - 2 или 4 минуты. То есть если датчик движения сработал, то потом 2/4 минуты он не будет обращать внимания ни на какое движение. У меня переключатель установлен на 2 минуты и сделан таймаут в 3 минуты для выключения. Получается, у датчика есть одна минута в запасе, чтобы уловить какое-то движение, чтобы свет не выключился. Обычно этого хватает.
Интеграция Zigbee PIR
Задержка сработки в несколько секунд - это очень много. Довольно часто получается так, что зашёл в комнату чтобы что-нибудь взять, вышел и включился свет. Нам, привыкшим, что свет включается мгновенно, переучиться включать свет вручную очень сложно, поэтому следующим шагом стала покупка точно такого же датчика, но уже со встроенным Zigbee.
И тут тоже оказалось всё не слава богу. Срабатывает датчик - да, мгновенно. Но, как оказалось, после первой сработки все последующие отрабатывают как-то хаотично, может пройти несколько секунд, а может и несколько минут. Добиться стабильной работы от датчика не удалось до сих пор, пришлось увеличить таймаут на выключение до 5 минут и даже это не всегда помогает. Но обо всём по порядку.
Датчик. Выглядит датчик точно так же, как его брат-близнец с Wi-Fi, даже питается так же от трёх ААА. Единственное отличие - переключатель. У Wi-Fi он переключает таймаут между 2 и 4 минутами, а в Zigbee он просто включает или выключает устройство.
Интегрируется датчик через свисток Zigbee. Я в своё время не стал экономить и взял Conbee II, об этом я тоже обязательно расскажу. Подключение к свистку простейшее и одинаковое для всех устройств: переводим с помощью длинного нажатия кнопки Reset устройство в режим сопряжения и запускаем поиск устройств в интерфейсе PhosconApp, датчик находится и... пропадает. В веб-интерфейсе этого датчика не видно. Я добавлял его раз пять, но оно так и не появилось. Однако само устройство в интеграции HomeAssistant появляется:
Здесь можно поправить все параметры объекта (иконку, название) и начинать использовать его в своих автоматизациях. Тип устройства остался такой же binary_sensor, поэтому при переходе с Wi-Fi на Zigbee понадобилось только поменять название самого сенсора, остальное всё осталось как в примерах выше.
Работает датчик, как я уже сказал, не ах, поэтому я раздумываю над вариантами: заказать другой Zigbee-датчик от другого производителя, предварительно убедившись, что он полностью поддерживается (это тысяча-полторы расходов на штуку); начать баловаться с кастомными прошивками вроде Tasmota/ESPHome и пробрасывать через MQTT (это пара недель, ориентировочно, танцев с бубнами); или же забить и пользоваться пока тем, что есть.
Пока что я остановился на третьем варианте, но как только станет скучновато - я думаю, что я займусь перепрошивками. Тогда мой Дзен станет менее нубским и "4dummies", но это будет полезная информация для всех.
А пока что, как обычно, шер, лайк, подписки, вот это всё.