Моя записная книжка. Комментарии отключены из-за спама. Для вопросов используйте эту страничку

Автоматизация, 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')}}"
      qos: 2
      retain: true
  - service: mqtt.publish
    metadata: {}
    data:
      topic: zigbee/kitchen/power
      payload: "{{states('sensor.zb_kitchenbacklight_power')}}"
      qos: 2
      retain: true
  - service: mqtt.publish
    metadata: {}
    data:
      topic: zigbee/kitchen/waterleak
      payload: "{{states('sensor.zb_waterleak_kitchen_moisture')}}"
      qos: 2
      retain: true
  mode: single

По тексту всё понятно — он запускается каждую минуту и в соответствующие темы кидает значение zigbee датчиков. Не забываем указать qos и retain иначе при нескольких подписантах сообщение можно пропустить.
mode — отвечает за то, что будет если выполнение события затянется и наступит следующее. В случае single следующее не наступит.

Или нужно отправлять 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 оперативно отражал изменение статуса другим маршрутом (с другого устройства например).

Ну и последнее действие: когда надо устройство zigbee дрыгнуть по команде mqtt. Опять идем в автоматизацию:

- id: 'change_switch_on_mqtt'
  alias: Включение елки через mqtt
  description: ''
  trigger:
  - platform: mqtt
    topic: dom/room/pine_switch
    payload: 'on'
  condition: []
  action:
  - type: turn_on
    device_id: b6954d440bdacd9b4954aecd9ae44ec2
    entity_id: d2d540e7a4fa4d8275ec0e1510c7d944
    domain: light
  mode: single

Для выключения придется продублировать с другим payload. Делал через gui поэтому device_id и entity_id такие. Но там очевидно.

 20   1 мес   ha   homeassistant   mqtt   zigbee