Использую модель для управления штор. Написал правило управления по импульсу. По задумке необходимо следующая последовательность управления:
- Нажатие №1 - запустить двигатель в сторону A
- Нажатие №2 - Остановить двигатель, если таймер еще активен, запустить двигатель в сторону B, если таймер уже прошел.
- Нажатие №3 - запустить двигатель в сторону B
var timer_id = null;
var timeout_s = 10*1000
defineRule("rollet", {
whenChanged: "wb-mr6c_24/Input 3 counter", //модуль DL.1
then: function(newValue, devName, cellName) {
if (dev["wb-gpio/EXT1_ON3"] = "0";) {
dev["wb-gpio/EXT1_ON3"] = "1";
dev["wb-gpio/EXT1_DIR3"] = !dev["wb-gpio/EXT1_DIR3"];
if (timer_id) {
clearTimeout(timer_id);
}
timer_id = setTimeout(function () {
dev["wb-gpio/EXT1_ON3"] = "0";
timer_id = null;
}, timeout_s);
} else {
dev["wb-gpio/EXT1_ON3"] = "0";
}
}
});
По факту правило только поочередно запускает двигатель в разные стороны независимо от таймера. Т.е. Я не могу остановить шторы в промежуточном положении.
Похоже я не правильно оперирую с оператором else.
Помогите пожалуйста разобраться