Добрый день!
Осваиваю создание дашборда с wb-rules и svg, столкнулся со следующим вопросом, по похожим темам разобраться не смог…
Хочу в дашборде на svg плане управлять лампочками, которые скоммутированы через зигбишные реле.
Тестовый svg
Реле принимает команды по топику
zigbee2mqtt/09-light-1g/set";
Команды вкл/выкл
{ state: "ON" } или { state: "OFF" }
Команды вне svg прекрасно работают, реле срабатывает и меняет статус.
А вот как редактировать SVG панель, где к лампе нужно привязать топик - не понимаю.
Тем более данного топика (zigbee2mqtt/09-light-1g/set) нету в исходных.
Правильнее данный управляющий топик как-то добавить к существующим топикам
устройства, или как-то виртуально отдельно создавать (но это плодить виртуальные устройства на каждые реле) и как это сделать?
Добрый день!
Мне потребуется некоторое время, чтобы подготовить стенд и предоставить более подробный ответ.
Как только всё проверю — сразу вернусь с информацией.
Добрый день!
Алгоритм настройки управления Zigbee-устройствами через SVG-панель выглядит следующим образом:
Общая последовательность
- Сопрягается Zigbee-устройство через Zigbee2MQTT.
- Создаётся виртуальное устройство с нужными элементами управления.
- Пишется правило, которое при изменении состояния виртуального устройства отправляет MQTT-команду.
- В конфигурации 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 лайк