ERROR: trying to stop unknown timer

Похожая тема была, но что-то тогда ни к чему в ней не пришли. Сыпятся такие ошибки 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);

Хотя наверно и этот сброс смысла особого не имеет. В отличии от вот этой строчки где при обнаружении нового движения таймаут обнуляется.

И да, воспроизвел.

  1. Включил motion = 1 → сценарий обнаружил движение, lightOn = 1, лампа включилась
  2. Выключил motion = 0 → запустился обратный отсчёт remainingTimeToLightOffInSec с 10 до 0
  3. Каждую секунду в логах:
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 после срабатывания

Фикс

Да, это работает. Передам разработчикам.