Добрый день!
Хочу реализовать сценарий выключения света в помещении, при отсутствии движения в течение 5 минут, но если кто-то войдет в помещении, то таймер должен сбросится и свет не отключится.
В отдельном правиле создал несколько виртуальный устройств, которые управляют группами освещения внешнего контроллера (dev[“light”][“kitchen”] == 100).
В тот момент, когда таймер прерывается движением в лог начинают сыпаться сообщения “ERROR: trying to stop unknown timer:” и правило де-факто перестаёт работать до перезапуска.
Изучил примеры тут и тут, но ответа на вопрос не получил.
Недавно обновился на релиз wb-2304, не помню, что проблема была на wb-2204.
var motion_timer_2_timeout_ms = 30 * 1000; // time delay after Max Motion dropped below threshold in ms
var timer2 = null;
defineRule("Kitchen_motion_light", // Switch on light when motion detected and switch off with time delay when no Max Motion below threshold and all garage doors closed
{
whenChanged: "wb-msw-v3_79/Max Motion",
then: function(newValue, devName, cellName)
{
if (newValue > 45)
{
// if (dev["light"]["kitchen"] == 100)
// {
if (timer2) {
// log ("Kitchen timer resetted " + timer2);
clearTimeout(timer2);
// }
}
}
else
{
// log ("Kitchen timer preparation " + timer2 + "/ Light: " + dev["light"]["kitchen"] + " / Max Motion: " + dev["wb-msw-v3_79"]["Max Motion"]);
if ((dev["light"]["kitchen"] == 100) && (!timer2))
{
// log ("Kitchen timer activated " + timer2);
// if (timer2) {
// clearTimeout(timer2);
// }
timer2 = setTimeout(function ()
{ dev["light"]["kitchen"] = 0;
// log ("Kitchen timer executed " + timer2);
timer2 = null;
},motion_timer_2_timeout_ms);
// log ("Kitchen timer after execution " + timer2);
}
}
}
});