День добрый!
Сделал функцию чтобы при запуске лента горела дольше установленного таймера и чтобы общий таймер не отключал, применил motion_bath_off = null;
Так же пробовал clearTimeout(motion_bath_off);,но все равно срабатывает по motion_bath_off, что я не так сделал?
Нет, неверно. В clearTimeout() аргументом должен быть именно идентификатор таймера, который останавливаем. Посмотрите вот тут: Примеры правил — Wiren Board - в переменной motion_timer_1_id именно уникальный идентификатор, присваиваемый таймеру.
Если вызвать clearTimeout() с идентификатором несуществующего таймера - то ничего не произойдет.
Только функцию - нет. Надо учесть область видимости переменной, если работа с таймером проихсходит в разных - то предавать идентификатор следует через глобальные.
Я же привел ссылку на верную “эталонную” реализацию.
Может как то по другому можно реализовать?
Смысл в том что при фиксаций движения включается диодная лента на 3 минуты
Но, часто надо чтобы датчик движения не влиял на ленту и она горела 60 минут. Получается человек вне зоны действия датчика и оказывается в темноте.
Да, можно. Или два таймера или один, но запускаемый на разное время, в зависимости от какого-то условия.
В зависимости от источника события - запускать таймер, устанавливая глобальную переменную значением его идентификатора.
Дак по сути и использовал два таймера.
Когда зашёл в помещение, то уже сработал таймер (motion_bath_off )
В зависимости от ситуации, если необходимо, то нажимаешь клавишу (fn14)
Она меняет переменную motion117 с 1 на ноль, датчик не реагирует на дальнейшие движения и задаётся новый таймер, например на 20 минут.
Но, таймер motion_bath_off не обнулился и выключил через заданное им время wb-mrgbwwww-d_16 White 2
А, motion117 поменялась на 1 через 20 минут
Попробуйте следующее: при создании экземпляра таймера сохранить его id.
Вывести в лог для уверенности.
Перед остановкой таймера - тоже вывести в лог id, для уверенности.