Здравствуйте подскажите пожалуйста, как правильно написать код, чтобы переключался весь свет включение/выключение.
Вот такой код написал, но он не работает.
var lightState = false;
function toggleLights() {
lightState = !lightState;
var devices = [
"wb-mr6c_49", "wb-mr3_13", "wb-mr3_20", "wb-mr3_28", "wb-mr3_12",
"wb-mr6c_14", "wb-mr6c_108", "wb-mr3_82", "wb-mr6c_32",
"wb-mr6cu_102", "wb-mr6cu_121", "wb-mr6c_51", "wb-mr3_81",
"wb-mr6cu_148", "wb-mr6cu_84"
];
var relays = ["K1", "K2", "K3", "K4", "K5", "K6"];
devices.forEach(function(device) {
relays.forEach(function(relay) {
if (dev[device] && dev[device][relay] !== undefined) {
dev[device][relay] = lightState;
}
});
});
}
defineRule("toggle_lights_on_button_press", {
whenChanged: "wb-mr6c_49/Input 2",
then: function (newValue, devName, cellName) {
if (newValue) {
toggleLights();
}
}
});
Добрый день
Вот эта строчка
смысла не имеет, так как dev[device] точно не будет разрешаться.
Запишите перебор так:
devices.forEach(function(device) {
relays.forEach(function(relay) {
log.info (device, relay )
if (getDevice(device+"/"+relay) != undefined) {
log.info (device, relay, "set", lightState)
dev[device][relay] = lightState;
}
});
});
У меня строчка с логом выводит успешное
2024-07-02 11:30:10test1 K1 set true
Ну и не забудьте потом закомментировать/удалить вывод в лог.
Вот смотрю на код - и радуюсь, респект.