Есть контроллер wb6 с zigbee
не могу понять как написать правило для изменения состояния релюхи при каждом нажатии кнопки, при этом она присылает состояние single, double, triple и тд,
Хочу чтобы меняла состояние при одном нажатии любой из кнопок,
для этого подписываюсь на топик
Тут дописал и исправил нерабочие кнопки в интерфейсе
Спойлер
var Relay1 = "zigbee2mqtt/0x00158d0005c0e29b/set";
var Relay2 = "zigbee2mqtt/0x00158d0005c1a9e4/set";
var TrackButton1 = "zigbee2mqtt/0x00158d00064455b6";
var TrackButton2 = "zigbee2mqtt/0x00158d0006442370";
defineVirtualDevice("aqara1", { // Виртуальное устройство для управления из интерфейса при желании
title: "Комната",
cells: {
enabled: {
type: "switch",
value: false
},
}
});
defineVirtualDevice("aqara2", { // Виртуальное устройство для управления из интерфейса при желании
title: "Кухня",
cells: {
enabled: {
type: "switch",
value: false
},
}
});
defineRule("aqara1-rule", {
whenChanged: "aqara1/enabled",
then: function (newValue, devName, cellName) {
if (dev["aqara1"]["enabled"] == true) {
publish(Relay1, JSON.stringify({"state_l1": "ON"}), 2, false); // отправляем zigbee команду aqara1 ON, если хотим поменять канал то вместо state_l1 ставим state_l2
log.info("Relay1 set ON");
} else {
publish(Relay1, JSON.stringify({"state_l1": "OFF"}), 2, false); // отправляем zigbee команду aqara1 OFF, если хотим поменять канал то вместо state_l1 ставим state_l2
log.info("Relay1 set OFF");
}
}
});
defineRule("aqara2-rule", {
whenChanged: "aqara2/enabled",
then: function (newValue, devName, cellName) {
log.info("aqara2");
if (dev["aqara2"]["enabled"] == true) {
publish(Relay2, JSON.stringify({"state_l1": "ON"}), 2, false); // отправляем zigbee команду aqara2 ON, если хотим поменять канал то вместо state_l1 ставим state_l2
log.info("Relay2 set ON");
} else {
publish(Relay2, JSON.stringify({"state_l1": "OFF"}), 2, false);// отправляем zigbee команду aqara2 OFF, если хотим поменять канал то вместо state_l1 ставим state_l2
log.info("Relay2 set OFF");
}
}
});
function test01(inValue){ // Обьявляем функцию парсинга
var cmd = JSON.parse(inValue);
if (!cmd.hasOwnProperty("click")) {// Парсим ответ топика
return;
}
if (cmd.click == "single") {
dev["aqara1"]["enabled"] = !dev["aqara1"]["enabled"]; //Меняем значение виртуального устройства при нажатии
}
if (cmd.click == "double") {
dev["aqara2"]["enabled"] = !dev["aqara2"]["enabled"]; //Меняем значение виртуального устройства при нажатии
}
}
// подписываемся на топики
trackMqtt(TrackButton1, function(newValue) {
test01(newValue.value);
});
trackMqtt(TrackButton2, function(newValue) {
test01(newValue.value);
});