Управление zigbee реле из HomeAssistant

Добрый день.
Не могу настроить включение выключение zigbee реле подключенного к Wirenboard через HomeAssistant

HA связан с WB посредством моста - в mosquito.conf прописан топик zigbee устройства следующим образом

topic /devices/ZB-Switch-Master/controls/# both

В HA в configuration.yaml пробовал описать свич следующим образом:

switch:
    - unique_id: wbMsvZigbeeSwitch
      name: "wb_msv_zigbee_switch"
      state_topic: "/devices/ZB-Switch-Master/controls/state"  
      command_topic: "/devices/ZB-Switch-Master/controls/state/set" 
      payload_on: 1 
      payload_off: 0
      state_on: "ON" 
      state_off: "OFF"
      value_template: "{{ value_json.state }}"
      retain: true

В итоге получаю состояние, но само реле не реагирует на измение в HA.
Помогите, пожалуйста, разобраться.

command_topic set на on попробуйте заменить

Пробовал. Те же яйца. Я так полагаю это справедливо для устройств WB, для zigbee как-то по другому.

Ну может вообще без set

Добрый день!

  1. Посмотрите реальные MQTT-топики с помощью MQTT Explorer — там отобразятся фактически используемые устройства и каналы управления.
  2. Для проверки работы управления выполните на контроллере команду:
mosquitto_pub -t "/devices/ZB-Switch-Master/controls/K1/on" -m "1"

Если реле сработает — значит, топик корректный и управление через MQTT работает.

  1. Затем проверьте, чтобы Home Assistant также мог управлять этим же топиком — отправьте команду через интеграцию HA.
  2. Если публикации работают, для дальнейшей настройки связи между контроллером и HA используйте эту статью.

Также существует альтернативный вариант через wb-engine, позволяющий пробрасывать данные в HA, но имейте в виду:
— появляется дополнительная точка отказа (служба движка);
— за ней придётся следить, чтобы обеспечить стабильную работу проброса.


Уточните, зачем был настроен MQTT-бридж?
Если Home Assistant и контроллер находятся в одной сети и используют один брокер — бридж не требуется и может даже мешать корректной работе.

Подключился к брокеру HA


реле выключено (State=OFF) однако топики set и on равны ON и 1 соответственно. Это нормально?
На стороне WB значения топиков те же.

Мост был создан тк HA и WB находятся в разных местах: HA в квартире, а WB в доме. Сети соединены посредством VPN

Сейчас, понаблюдал, и вижу по истории в MQTT explorer, что данные в топики отправляются. Попробовал отправлять и в set и в on, state при этом не меняется.
Поменял 1 и 0 для payload на ON/OFF - значение пишутся реле не включается. Может в какой другой топик писать надо?

нашел еще один топик, который находится в ветке zigbee2mqtt


Может сюда надо писать?

Добрый день!
Попробуйте данную команду

mosquitto_pub -t “zigbee2mqtt/ZB-Switch-Master/set” -m ‘{“state”:“ON”}’

Я использую подобное правило

defineVirtualDevice(“zb_relay_control”, {
title: “Zigbee реле”,
cells: {
relay: {
type: “switch”,
value: false
}
}
});

defineRule(“zb_relay_toggle”, {
whenChanged: “zb_relay_control/relay”,
then: function(newValue) {
publish(
“zigbee2mqtt/0xa4c138dd3d76d904/set”,
JSON.stringify({ state: newValue ? “ON” : “OFF” }),
2,
false
);
}
});

Получилось!
Подписал HA на топик
topic zigbee2mqtt/ZB-Switch-Master/set both

В настройках объекта в HA тоже сменил командный топик:

    - unique_id: wbMsvZigbeeSwitch
      name: "wb_msv_zigbee_switch"
      state_topic: "/devices/ZB-Switch-Master/controls/state"  
      command_topic: "zigbee2mqtt/ZB-Switch-Master/set"  
      payload_on: "ON" 
      payload_off: "OFF" 
      state_on: "ON"  
      state_off: "OFF"
      value_template: "{{ value_json.state }}"
      retain: true

Теперь все работает.
Спасибо.

ps

      state_on: "ON"  
      state_off: "OFF"
      value_template: "{{ value_json.state }}"

Эти строки наверное можно закомментить, тк и без них все прекрасно работает.

1 лайк