Реле LV
Можно ли за изменением состяния одного входа закрепить сценарий изменяющий последовательно состояние нескольких (не всех) выходов реле?
Думаю что можно сделать как то так, но нужны тесты.
defineRule("test_actions", {
whenChanged: "wb-gpio/EXT2_IN1",
then: function (newValue, devName, cellName) {
var acts = [[1000,"wb_gpio/EXT1_K1",true],[1000,"wb_gpio/EXT1_K2",true],[1000,"wb_gpio/EXT1_K3",true],
[500,"wb_gpio/EXT1_K1",false],[500,"wb_gpio/EXT1_K2",false],[500,"wb_gpio/EXT1_K3",false],
];
var next = function(a){
var i=a.shift();
setTimeout(function(){
dev[i[1]]=i[2];
next(a);
},i[0])
};
next(acts);
}
});
правило срабатывает при изменении и запускается список действий. Первый параметр у действия это через сколько мс оно выполнится.
функция next последовательно их выполняет выбирая первый из массива(уменьшая массив) и вызывая сама себя для следующего действия.
defineRule("turn_on_relays", {
whenChanged: "wb-gpio/EXT1_IN10",
then: function (newValue, devName, cellName) {
dev["wb-gpio/EXT2_R3A1"] = dev["wb-gpio/EXT1_IN10"];
dev["wb-gpio/EXT2_R3A2"] = dev["wb-gpio/EXT1_IN10"];
dev["wb-gpio/EXT2_R3A3"] = dev["wb-gpio/EXT1_IN10"];
}
});