Спасибо, сделал с флагом, сегодня все отработало как надо было. Жду следующую ночь, посмотрю в периодике, приведу скрипт для накопления опыта:
// Включение / выключение правила выключателем на панели Devices
// Создаём виртуальное устройство - выключатель.
defineVirtualDevice("autolight", {
title: "Автоподсветка",
cells: {
enabled: {
type: "switch",
value: false
},
}
});
var isEveningLamp = true; // флаг на управление ночным светом
defineRule("light_control", { //название правила - "Автоподсветка"
whenChanged: "wb-adc/A1", //при изменении состояния датчика света
then: function(newValue, devName, cellName) { //выполняй следующие действия
if (dev["autolight"]["enabled"]) { // если вируальн. устр-во autolight в положении enabled
if (dev["wb-adc"]["A1"] > 3.8) { //если напряжение датчика больше 3.8В,
dev["wb-gpio"]["EXT2_K9"] = false; //установи на выходе wb-gpio устройство EXT2_K9
dev["wb-mr3_20"]["K3"] = false; //установи на выходе wb-gpio устройство wb-mr3_20 K3
isEveningLamp = true;
//в состояние "выключено"
} else { // иначе
if (dev["wb-adc"]["A1"] < 3.3 && isEveningLamp) { //если напряжение датчика меньше 3.3В,
//(обеспечиваем гистерезис)
dev["wb-gpio"]["EXT2_K9"] = true; //установи EXT2_K9 в состояние "включено"
dev["wb-mr3_20"]["K3"] = true; //установи wb-mr3_20 K3 в состояние "включено"
}
}
}
}
});
defineRule("dr_evening_lighting_off", {
when: cron("00 20 00 * * *"),
then: function () { //выполняй следующие действия
isEveningLamp = false;
dev["wb-gpio"]["EXT2_K9"] = false; //установи на выходе wb-gpio устройство EXT2_K9
dev["wb-mr3_20"]["K3"] = false; //установи на выходе wb-gpio устройство wb-mr3_20 K3
log.info("evening lamp off 00:20 AM");
}
});