Добрый день!
Подскажите как реализовать переключатель в системе intrahouse установленной на wirenboard и подключенному к нему выключателю(switch) по zigbee протоколу7
Есть zigbee устройство в каналах mqtt
топик прописывается /devices/2-etag/controls/state_right передавая значения ON или OFF
Когда прописываю по вашей инструкции
Создаем канал MQTT, ставим галочки Чтение и Запись, заполняем:
Топик для подписки: /devices/<deviceid>/0
Формула извлечения значения: value == "on" ? 1 : 0
Топик для публикации: /devices/<deviceid>/0/command
Сообщение для публикации: value == 1 ? "on" : "off"
То значение меняется но через 20-30 секунд возвращается обратно и физически свет не включается.(только в MQTT)
Прочитал в инструкции производителя https://wirenboard.com/wiki/Zigbee
что управление устройством zigbee осуществляется так
Управление через конвертер wb-zigbee2mqtt пока не реализовано, но вы можете управлять устройствами стандартными инструментами zigbee2mqtt через wb-rules, отправляя команды с помощью функции publish.
Пример включения и отключения реле с friendly_name равным 0x00158d0001f3fc34 в правилах wb-rules:
publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "ON" }), 2, false);
publish("zigbee2mqtt/0x00158d0001f3fc34/set", JSON.stringify({ state: "OFF" }), 2, false);
В скрипте на wirenboard реализовал логику так и она работает
// Ночник
defineRule("1state_right", {
whenChanged: "Button_left/Зал",
then: function (newValue, devName, cellName, a ) {
if (newValue === true) {
publish("zigbee2mqtt/0x00158d0002b571fe/set", JSON.stringify({ state_right: "ON" }), 2, false);
SendTelegramMsg("Зал свет включен");
}
if (newValue === false) {
publish("zigbee2mqtt/0x00158d0002b571fe/set", JSON.stringify({ state_right: "OFF" }), 2, false);
SendTelegramMsg("Зал свет выключен");
}
}
});