Добрый день.
Надеюсь - я правильно понял задачу, вот код:
//01_08_test_1.js
//Идея в том, чтобы определить переключение только после того как знчение в течении заданного
// времени находится БОЛЬШЕ уставки.
var devInput = "01_08_Test0/test0"; // устройство-источник значений.
var compValue = 10; //Значение, превышение которого отслеживаем
var debounceTime = 2000; //Время "дребезга" в миллисекундах
var timerId = null; //тут будем сохранять идентификатор таймера
log.info("start")
defineRule( "debounceTime" ,{
whenChanged: "01_08_Test0/test0",
then: function (newValue, devName, cellName){
log.info("I’m here!", newValue)
if(newValue > compValue) { //Если значение БОЛЬШЕ
log.info("Compare BIGGER", newValue)
if (timerId){ //Если таймер УЖЕ есть
log.info("Timer started BEFORE", newValue)
}
else{ //Запускаем таймер
log.info("Timer NEED started", newValue)
timerId = setTimeout(function () { //Начинаем описывать таймер
log.info("VALUE BIGGER over", debounceTime, " ms") //тут можно описать требуемое действие
timerId = null; //Сбрасываем идентификатор отработавшего таймера
}, debounceTime);
}
}
else{ //Если значение МЕНЬШЕ уставки
if (timerId){ //Если таймер УЖЕ есть
log.info("Kill timer", timerId);
clearTimeout(timerId); //останавливем таймер
timerId = null; //Сбрасываем идентификатор таймера
}
}
}
})
“log.info” можно удалить или закомментировать