Похожая тема была, но что-то тогда ни к чему в ней не пришли. Сыпятся такие ошибки 10 секунд которые установлены в сценарии “Управление светом”. При этом в отладке всё хорошо, да и в общем сценарий работает.
...
02-06-2026 15:52:39.140 [wb-rules] ERROR: trying to stop unknown timer: 37
02-06-2026 15:52:38.134 [wb-rules] ERROR: trying to stop unknown timer: 36
...
wb-release
Wirenboard release wb-2606 (as testing), target wb8/bullseye
Добрый день.
Настроил:
На 2606 не воспроизводится:
Релиз точно актуальный?
У меня есть контроллер, без каких либо правил и сценариев. Напишите пожалуйста - как можно воспроизвести указанную вами ошибку? То есть что и в каком порядке настроить?
Также - для понимания, покажите результаты подписки на все используемые в сценарии топики на момент возникновения подобной ошибки до нее и после, минуты на три, для того чтобы увидеть - нет ли необычных состояний.
Ну и пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.
У меня несколько раз ошибки тоже не возникало. Но потом опять начинают сыпаться каждый раз в соответствии с таймером обратного отсчёта. Пусть ваши программисты посмотрят. Пока у себя просто закомментировал эту строчку в /usr/share/wb-rules-modules/light-control.mod.js
Всё работает, ошибок в журнале нет. Понаблюдаю за этим и другими сценариями, но пусть ваши тоже посмотрят, спасибо.
Попробую погонять…
Потечет, если не чистить таймеры.
Кмк, нет смысла что-то чистить, точнее в данном контексте отменять (прерывать) таймаут (интервал). Он здесь технический, он маленький и он уже сработал, из-за этого ошибка. Максимум что можно сделать:
self.ctx.lightOffTimerId = setTimeout(function () {
updateRemainingLightOffTime(self);
self.ctx.lightOffTimerId = null; // присвоится id, отработает и сбросится
}, 1000);
Хотя наверно и этот сброс смысла особого не имеет. В отличии от вот этой строчки где при обнаружении нового движения таймаут обнуляется.
И да, воспроизвел.
- Включил
motion = 1 → сценарий обнаружил движение, lightOn = 1, лампа включилась
- Выключил
motion = 0 → запустился обратный отсчёт remainingTimeToLightOffInSec с 10 до 0
- Каждую секунду в логах:
ERROR: trying to stop unknown timer: 14
ERROR: trying to stop unknown timer: 15
...
ERROR: trying to stop unknown timer: 22
После окончания отсчёта lightOn = 0 — сценарий работает корректно, несмотря на ошибки
Причина бага
В light-control.mod.js:890 при каждом тике таймер:
Срабатывает и вызывает updateRemainingLightOffTime (декремент значения)
Декремент триггерит правило снова
Правило вызывает clearTimeout(self.ctx.lightOffTimerId) — но таймер уже сработал и не известен движку
self.ctx.lightOffTimerId нигде не сбрасывается в null после срабатывания
Фикс
Да, это работает. Передам разработчикам.