Автоматизация, homeassistant + mqtt + zigbee
Немного потупил на тему как увязать три сущности homeassistant + mqtt + zigbee, но разобрался.
Во-первых zigbee2mqtt отправляется на свалку истории. В нем нет вообще никакого смысла, мутное тяжеловесное, глючное дерьмо. Постоянно отваливаются датчики, срет ошибками, невменяемый и неадекватный интерфейс.
HA с установленной интеграцией MQTT прекрасно выполняет все задачи.
Например — транслирует данные с Zigbee датчиков в MQTT брокер. Делается это очень просто.
Создаем файл автоматизации (тоже самое можно через gui) с таким содержимым:
- id: 'send_voltage_on_changes'
alias: 'Передача показаний zigbee'
description: ''
trigger:
- platform: time_pattern
seconds: '0'
condition: []
action:
- service: mqtt.publish
metadata: {}
data:
topic: zigbee/kitchen/voltage
payload: "{{states('sensor.zb_kitchenbacklight_voltage')}}"
- service: mqtt.publish
metadata: {}
data:
topic: zigbee/kitchen/power
payload: "{{states('sensor.zb_kitchenbacklight_power')}}"
- service: mqtt.publish
metadata: {}
data:
topic: zigbee/kitchen/waterleak
payload: "{{states('sensor.zb_waterleak_kitchen_moisture')}}"
mode: single
По тексту всё понятно — он запускается каждую минуту и в соответствующие темы кидает значение zigbee датчиков.
Или нужно отправлять MQTT по нажатию кнопки:
- switch:
unique_id: mqtt_switch1
name: "MQTT кнопка"
state_topic: "test/switch1"
command_topic: "test/switch1"
payload_on: "on"
payload_off: "off"
state_on: "on"
state_off: "off"
optimistic: false
qos: 2
retain: true
Здесь важный момент — темы state и command совпадают для того, чтобы HA оперативно отражал изменение статуса другим маршрутом (с другого устройства например).