Найти тему
2,1K подписчиков

Полноценная интеграция DIY ZigBee устройств в Home Assistant

590 прочитали

В статье "Изобретаем умное устройство. ZigBee домофон" я писал, что данное DIY устройство интегрируется в Home Assistant без всяких проблем. В некотором смысле это так. Устройство интегрируется и отображает статусы. Но нам доступен всего один регулятор - звук. А как же нам поменять остальные параметры? Разберемся.

Translation to English is here. Также можно следить за нами на других площадках: Instagram и telegram (RU, EN, DE), Medium, LiveJournal, YouTube (старый канал), YouTube (новый канал).

Для начала я, конечно, почитал комментарии к статье. Там же были и примеры. Но они не работают. Начав разбираться в алгоритме работы примеров сразу замечаешь, что устройство везде отображается как "zintercom". У меня же устройство отображается стандартно, как и все остальные устройства и имеет типовой FRIENDLY_NAME. А все дело в том, что устройство было добавлено в zigbee2mqtt официально и для управления устройством нужно читать страницу девайса, а не чужие примеры.

Начнем с выбора режима работы домофона, остальные режимы настраиваются также. Я опишу сегодня короткий способ, но зато все действия в нем понятны. В следующий раз я опишу другой способ, с поддержкой русского меню выбора. Статья "Input Select в Home Assistant. Что это и зачем оно нужно" была предисловием. Мы в ней создали такое "русское" меню, в котором можно выбирать наш желаемый режим работы, но все что происходит пока - отправка сообщения. Создадим по аналогии helper с 4 режимами: never, once, always, drop.

В статье "Изобретаем умное устройство. ZigBee домофон" я писал, что данное DIY устройство интегрируется в Home Assistant без всяких проблем. В некотором смысле это так.

Почему именно эти режимы? Все просто, в описании указаны именно эти команды. Вот цитата:

Mode (enum)
Select open mode. Value can be found in the published state on the mode property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"mode": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"mode": NEW_VALUE}. The possible values are: never, once, always, drop.

Теперь, все что нам нужно, это найти имя устройства. Если устройство уже переименовано, то нужно зайти в сенсор устройства, например качество сигнала и посмотреть Entity id, оно по-прежнему содержит имя устройства. Например sensor.0x00124b0022607eac_linkquality - показывает нам качество сигнала и имя устройства 0x00124b0022607eac.

Задача почти решена. Для смены режима нам нужно опубликовать zigbee2mqtt/0x00124b0022607eac/set сообщение {"mode": NEW_VALUE}. А что если хочется попроще? Так можно, что и описано в учебнике.

zigbee2mqtt/FRIENDLY_NAME/set
Publishing messages to this topic allows you to control your Zigbee devices via MQTT. Only accepts JSON messages.
Without JSON
In case you don't want to use JSON, publishing to zigbee2mqtt/[FRIENDLY_NAME]/set/state with payload ON is the same as publishing to zigbee2mqtt/[FRIENDLY_NAME]/set payload {"state": "ON"}.

Вот и ответ. Для смены режимы на, например, always нам нужно всего лишь опубликовать в топике zigbee2mqtt/0x00124b0022607eac/set/mode сообщение always, что мы уже делали примитивными методами в статье "Home Assistant, публикация в MQTT". Создадим автоматизацию:

alias: 'domophone: set mode'
description: ''
trigger:
- entity_id: input_select.domofon
platform: state
condition: []
action:
- service: mqtt.publish
data:
topic: zigbee2mqtt/0x00124b0022607eac/set/mode
payload: '{{states(''input_select.domofon'')}}'
mode: single

Что она делает: при смене режима в нашем помощнике в топик zigbee2mqtt/0x00124b0022607eac/set/mode публикуется этот же статус.

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

Это был лишь пример конкретных режимов конкретного устройства, но таким методом можно управлять любым zigbee устройством, которое у нас поддерживается в zigbee2mqtt. Кстати, Home Assistant делает тоже самое, когда мы жмем в панели на кнопки и крутим регуляторы, только нам не нужно создавать для этого автоматизаций, они уже приписаны в home assistant. Зная это, мы теперь можем управлять zigbee устройствами со сторонних устройств вообще без home assistant. Но это будет следующая история.

А на этом все, делайте ваш умный дом умнее, ярче, красочнее, информативнее, настраивайте автоматизации правильно, чтобы получать максимальное удовольствие. Вы можете всегда поддержать меня лайком, репостом, комментарием или просто подписаться, чтобы не пропускать свежие выпуски. Также можно следить за нами на других площадках: Instagram и telegram (RU, EN, DE), Medium, LiveJournal, YouTube (старый канал), YouTube (новый канал).