Ошибки в журнале событий после многократного сохранения скриптов

У меня стойкое ощущение, что это как-то связано именно с последовательностью событий, которые происходят после нажатия кнопки “Сохранить” в редакторе правил. Кстати, если ее нажать подряд несколько раз, то лог оказывается наполнен вот такими записями:

09-06-2026 12:31:39.268 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x400089a300 <nil>} 21138})
09-06-2026 12:31:29.267 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x400089a240 <nil>} [/devices/BathTambHeater/controls/heaterRelay2Path/on] map[] 21137})
09-06-2026 12:31:19.266 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x400089a180 <nil>} 21136})
09-06-2026 12:31:09.266 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40005d5ec0 <nil>} 21135})
09-06-2026 12:30:59.265 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40005d56e0 <nil>} 21134})
09-06-2026 12:30:49.263 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40005d5200 <nil>} 21133})
09-06-2026 12:30:39.263 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40005d4d20 <nil>} 21132})
09-06-2026 12:30:29.262 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40008de540 <nil>} [/devices/BathTambHeater/controls/heaterIsOn/on] map[] 21131})
09-06-2026 12:30:19.262 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000c18f00 <nil>} 21130})
09-06-2026 12:30:09.259 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000c18ea0 <nil>} 21129})
09-06-2026 12:29:59.258 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40008de480 <nil>} 21128})
09-06-2026 12:29:49.257 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000989860 <nil>} 21127})
09-06-2026 12:29:39.256 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000988d80 <nil>} 21126})
09-06-2026 12:29:29.255 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40005d4ba0 <nil>} [/devices/BathTambHeater/controls/currentTemp/on] map[] 21125})
09-06-2026 12:29:19.254 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40005d4900 <nil>} 21124})
09-06-2026 12:29:09.253 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40005d4840 <nil>} 21123})
09-06-2026 12:28:59.252 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000988c60 <nil>} 21122})
09-06-2026 12:28:49.251 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000988c00 <nil>} 21121})
09-06-2026 12:28:39.250 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000ac7ce0 <nil>} 21120})
09-06-2026 12:28:29.249 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x400076f7a0 <nil>} [/devices/BathTambHeater/controls/currentSensorPath/on] map[] 21119})
09-06-2026 12:28:19.248 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x400076f440 <nil>} 21118})
09-06-2026 12:28:09.247 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x40009cfda0 <nil>} 21117})
09-06-2026 12:27:59.246 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000a17e00 <nil>} 21116})
09-06-2026 12:27:49.245 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000a17da0 <nil>} 21115})
09-06-2026 12:27:39.243 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x4000a17ce0 <nil>} 21114})

Добрый день. Я предлагаю понаблюдать за поведением системы некоторое время, повлияло ли добавление таймаута на “зависание” отправки sms. Что касается записей в журнале событий, каждое сохранение скрипта вызывает полный перезапуск движка wb-rules: все правила выгружаются, скрипт перечитывается, виртуальные устройства регистрируются заново — движок переподписывается на топики и публикует retained-значения в брокер. На это уходит несколько секунд, в течение которых все правила не работают.

Что происходит при многократном нажатии.

Каждое новое сохранение запускает очередной перезапуск, не дожидаясь завершения предыдущего. Брокер получает лавину одновременных подписок и публикаций, токены зависают и через 10 секунд получают timeout — отсюда и лог с ошибками MQTT token wait timeout с ровным интервалом 10 с. После того как все перезапуски отработают, система восстанавливается сама. Каждое нажатие — это кратковременная слепота всей автоматики. Если правила управляют реальным оборудованием (реле, обогреватели — как BathTambHeater в вашем случае), в момент перезапуска триггеры не срабатывают. Сохранять стоит один раз, убедившись что правило готово, и сразу проверять лог.

Благодарю за бдительность, я поговорю с коллегами, дополним документацию.

Добрый день! Здесь два момента важны, на мой взгляд:

  1. То, что, по-хорошему, кнопка “Сохранить” в редакторе правил должна бы становиться не активной до завершения перезапуска и предотвращения лавинообразных вызовов.
  2. Ранее уже писал о том, что сильно не хватает кнопки типа “Проверить скрипт”, тогда не придется регулярно нажимать “Сохранить”, чтобы проверить синтаксиc.

Не согласен. Вчера более полутора часов сыпались ошибки

9-06-2026 13:57:09.774 [wb-rules] 	ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x400075daa0 <nil>} 21694})

вплоть до ручного рестарта wb-rules.

P.S. Зря убрали присутствовавшие в предыдущих билдах зеленые всплывающие уведомления об успешном сохранении.

открыл новую тему

Дополню еще, раз уж коснулись интерфейса редактора скриптов, что сильно нужно предупреждение о попытке закрыть вкладку редактора или уйти с нее при наличии несохраненных изменений. В нынешней реализации крайне высокий риск потерять несохраненный (измененный) скрипт случайным ошибочным нажатием в интерфейсе.

Буду воспроизводить ситуацию. Пришлите, пожалуйста, ваши скрипты, это значительно ускорит диагностику.

Насколько помню, в облаке для WB открыт был доступ к контроллеру. Так, может быть, эффективнее будет?

Пришлите, пожалуйста, в личном сообщении название организации (емейл).

Отправил

Добрый день. Скорее всего, мы к вам давно не подключались, поэтому доступ я найти не смог. Прошу отправить приглашение заново.

Пригласите, пожалуйста, пользователя support@wirenboard.com в организацию на облачном сервисе.

Поставьте временный пароль от SSH пришлите личным сообщением (потом замените).

Для этого в настройках организации нажмите кнопку “Пригласить”

Screenshot_20240814_155036

Screenshot_20240814_155036448×137 5.15 KB

И укажите почтовый адрес:

Screenshot_20240814_155147

Screenshot_20240814_155147704×179 8.42 KB

После этого поддержка получит доступ к вашему контроллеру для диагностики.
Не забудьте удалить потом доступ.

Готово