Svg dashboard и zigbee реле

Добрый день!
Осваиваю создание дашборда с wb-rules и svg, столкнулся со следующим вопросом, по похожим темам разобраться не смог…

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

Тестовый svg

Реле принимает команды по топику

zigbee2mqtt/09-light-1g/set";

Команды вкл/выкл

{ state: "ON" } или { state: "OFF" }

Команды вне svg прекрасно работают, реле срабатывает и меняет статус.
А вот как редактировать SVG панель, где к лампе нужно привязать топик - не понимаю.
Тем более данного топика (zigbee2mqtt/09-light-1g/set) нету в исходных.
Правильнее данный управляющий топик как-то добавить к существующим топикам
устройства, или как-то виртуально отдельно создавать (но это плодить виртуальные устройства на каждые реле) и как это сделать?


Добрый день!
Мне потребуется некоторое время, чтобы подготовить стенд и предоставить более подробный ответ.
Как только всё проверю — сразу вернусь с информацией.

Добрый день!

Алгоритм настройки управления Zigbee-устройствами через SVG-панель выглядит следующим образом:


Общая последовательность

  1. Сопрягается Zigbee-устройство через Zigbee2MQTT.
  2. Создаётся виртуальное устройство с нужными элементами управления.
  3. Пишется правило, которое при изменении состояния виртуального устройства отправляет MQTT-команду.
  4. В конфигурации SVG-панели указывается топик виртуального устройства — и взаимодействие готово.

Пример для реле

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
    );
  }
});

SVG-панель

Укажите в конфиге SVG-панели путь к топику виртуального устройства:

/devices/zb_relay_control/controls/relay

После этого переключение реле с SVG-панели будет работать через виртуальное устройство и MQTT.

Добрый день!
Удалось ли решить вопрос?

Добрый день! Только добрался.
Да! Спасибо.

интерфейс

В таком случае работает и стоит указывать в “Значение включенного состояния” = “1”, выключенного = 0.

Возможно это не всем нужно, но как мысль - я не могу выбирать вручную тип данных из интерфейса и вручную задавать канал mqtt, не создавая правило. Может быть опцией доступной только в режиме администратора/разработчика. А-ля как это реализовано в node-red’e.

1 лайк