С дашборда пропали алармы

Добрый день!
Как-то внезапно с дашборда “Устройства” и пропал блок уведомлений Alarms, отчего на пользовательском дашборде “Котельная” алярмы стали неактивными (там были продублированы некоторые наиболее важные).


Также Alarms не наблюдается среди MQTT-топиков.
В то же время файлик /etc/wb-rules/alarms.conf присутствует и его содержимое вполне корректно.
Подскажите в какую сторону копать проблему.

Добрый день!

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

приложен диагностический архив, доступен только сотрудникам поддержки
(750,9 КБ)

Добрый день!

Запустите службу:

systemctl enable wb-rules
systemctl start wb-rules

Сделал.
Решил проверить статус и получил вот что:
root@wirenboard-AAXU5DRL:~# systemctl status wb-rules
● wb-rules.service - MQTT Rule engine for Wiren Board
Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2025-07-20 23:34:04 +05; 1 day 15h ago
Main PID: 2115 (wb-rules)
Tasks: 20 (limit: 4676)
Memory: 42.5M
CPU: 5h 54min 45.534s
CGroup: /system.slice/wb-rules.service
└─2115 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/

Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K8: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K7: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K6: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K3: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K3: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K4: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K4: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control wb-mio-gpio_166:3/K4: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control Leak-detector-B&K/Leak Status: No such control
Jul 21 23:06:13 wirenboard-AAXU5DRL wb-rules[2115]: WARNING: [frontend] failed to remove external control Leak-detector-B&K/Leak Status: No such control

Странно, потому что на 166:3 сидит реле и нормально работает

А Leak-detector-B&K/Leak Status - это китайский детектор промочки и он тоже нормально работает.
image

Контроллер ребутил - ничего не меняется.

Попробуйте переустановить

apt-get install --reinstall wb-rules-system

systemctl restart wb-rules

Проверьте наличие в списке топиков /alarms/*

Заработало.
Спасибо!

Проблема повторилась.
Добавил в модуль уведомлений 3 новых аларма (те же, что и как в прошлый раз) - по сработке детекторов дыма ИП 212-45, подключенных к WBIO-DI-WD-14.
Вот фрагмент конфига /etc/wb-rules/alarms.conf:
{
“name”: “Детектор дыма в спальне орков”,
“cell”: “wb-mio-gpio_166:1/IN1”,
“alarmMessage”: “В спальне орков дым!”,
“noAlarmMessage”: “В спальне орков нет дыма”,
“alarmDelayMs”: 0,
“expectedValue”: 0
},
{
“name”: “Детектор дыма в спальне хоббитов”,
“cell”: “wb-mio-gpio_166:1/IN2”,
“alarmMessage”: “В спальне хоббитов дым!”,
“noAlarmMessage”: “В спальне хоббитов нет дыма”,
“alarmDelayMs”: 0,
“expectedValue”: 0
},
{
“name”: “Детектор дыма в кухне/гостиной”,
“cell”: “wb-mio-gpio_166:1/IN3”,
“alarmMessage”: “В кухне/гостиной дым!”,
“noAlarmMessage”: “В кухне/гостиной нет дыма”,
“alarmDelayMs”: 0,
“expectedValue”: 0
}
И блок уведомлений из дашбордов снова пропал.
Попытка восстановить (якобы вдруг испорченный) wb-rules-system по вашей методе не помогла.
Проверка статуса выдала ошибку Control ID is incorrect и ругань, что якобы нет файла конфига алармов
~# systemctl status wb-rules
● wb-rules.service - MQTT Rule engine for Wiren Board
Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-07-23 08:48:03 +05; 12min ago
Main PID: 1970672 (wb-rules)
Tasks: 19 (limit: 4676)
Memory: 16.5M
CPU: 1min 54.620s
CGroup: /system.slice/wb-rules.service
└─1970672 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/

Jul 23 08:48:03 wirenboard-AAXU5DRL wb-rules[1970672]: INFO: [wbgo_mqtt] wb-rules-engine-wirenboard-AAXU5DRL-1970672: MQTT connection established
Jul 23 08:48:03 wirenboard-AAXU5DRL wb-rules[1970672]: INFO: [engine] Starting main loop
Jul 23 08:48:03 wirenboard-AAXU5DRL wb-rules[1970672]: INFO: the engine is ready
Jul 23 08:48:03 wirenboard-AAXU5DRL wb-rules[1970672]: INFO: [engine] Starting sync loop
Jul 23 08:48:04 wirenboard-AAXU5DRL wb-rules[1970672]: WARNING: [rule warning] DAC: no config file
Jul 23 08:48:04 wirenboard-AAXU5DRL wb-rules[1970672]: INFO: [rule info] add your rules to /etc/wb-rules/
Jul 23 08:48:04 wirenboard-AAXU5DRL wb-rules[1970672]: ERROR: device definition error: Control ID is incorrect
Jul 23 08:48:04 wirenboard-AAXU5DRL wb-rules[1970672]: WARNING: couldn’t load /usr/share/wb-rules/load_alarms.js: Error: Control ID is incorrect
/_/github.com/wirenboard/go-duktape@v0.0.0-20240729075045-b4150233e350/api.go:124
anon native strict preventsyield
doLoad /usr/share/wb-rules-system/scripts/lib.js:748 tailcalled
F /usr/share/wb-rules/load_alarms.js:1 preventsyield
Jul 23 08:48:04 wirenboard-AAXU5DRL wb-rules[1970672]: INFO: all rule files are loaded
Jul 23 08:52:38 wirenboard-AAXU5DRL wb-rules[1970672]: WARNING: warning: failed to load /etc/wb-rules/.#alarms.conf: stat /etc/wb-rules/.#alarms.conf: no such file or directory

Но в то же время этот файл еть в указанной директории:

Может, есть ограничения по его длине?

Уточните пожалуйста, перед возникновением проблемы какие-либо действия с ПО или правилами выполняли? Не связано с обновлением?

Попробую воспроизвести.

Уточню у коллег про допустимый размер.

Как будет результат сообщу.

Только добавил в модуль уведомлений 3 новых правила - алертить соответствующими сообщениями при сработке детекторов дыма в разных комнатах.
Фрагмент конфига /etc/wb-rules/alarms.conf с этими правилами приводил ранее.

alarms.conf (7,9 КБ)
на всякий случай приаттачу сам конфиг-файл

1 лайк

Похоже, подтверждается версия про длину конфига.
В качестве эксперимента почистил строки конфига в части новых 3-х алертов детекторов дыма, перезапустил wb-rules и - вуаля, блок уведомлений снова появился на дашборде.

Можно ли как-то убрать или преодолеть это странное ограничение по числу алармов?

Благодарю за помощь и конфиг!

Подумаю, в чем может быть дело. Понадобится еще время.

Добрый день! Уточните пожалуйста, это конфиг с которым сервис работает исправно?

Нет. Как раз с ним блок уведомлений вообще не отображается (но там все нужные уведомления по максимуму на данный момент).
Я решил узнать, какое минимально число алармов будет работать корректно, и убрал из конфига контроль фаз B и C входного фидера (хватит и мониторинга одной - A) и добавил туда контроль детектора дыма в 3-х комнатах - в результате блок уведомлений отобразился в “Устройствах”, но в нём почему-то отсутствует упоминание о контроле аварии септика и даже в перечне MQTT-топиков его нет. Очень странное поведение…

Буквально только что провёл обновление системы через apt update && apt upgrade и блок уведомлений снова слетел :frowning:
systemctl status wb-rules выдаёт:
root@wirenboard-AAXU5DRL:/etc/wb-rules# systemctl status wb-rules
● wb-rules.service - MQTT Rule engine for Wiren Board
Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-07-25 16:35:00 +05; 27s ago
Main PID: 3880265 (wb-rules)
Tasks: 18 (limit: 4676)
Memory: 13.9M
CPU: 6.456s
CGroup: /system.slice/wb-rules.service
└─3880265 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/

Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: INFO: [rule info] using file /var/lib/wirenboard/wbrules-persistent.db for persistent DB
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: INFO: [wbgo_mqtt] wb-rules-engine-wirenboard-AAXU5DRL-3880265: MQTT connection established
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: INFO: [engine] Starting sync loop
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: INFO: [engine] Starting main loop
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: INFO: the engine is ready
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: WARNING: [rule warning] DAC: no config file
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: INFO: [rule info] add your rules to /etc/wb-rules/
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: ERROR: device definition error: Control ID is incorrect
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: WARNING: couldn’t load /usr/share/wb-rules/load_alarms.js: Error: Control ID is incorrect
/_/github.com/wirenboard/go-duktape@v0.0.0-20240729075045-b4150233e350/api.go:124
anon native strict preventsyield
doLoad /usr/share/wb-rules-system/scripts/lib.js:748 tailcalled
F /usr/share/wb-rules/load_alarms.js:1 preventsyield
Jul 25 16:35:00 wirenboard-AAXU5DRL wb-rules[3880265]: INFO: all rule files are loaded

Удалил пару алармов из конфига с рестартом wb-rules - без изменений.
Удалил 3 последних аларма (с контролем 3-х детектора дыма) - блок уведомлений появился, но на нём “мёртвые души” (алармы, которые я удалил из конфига, например контроль фаз B и C и питание контроллера WB).


Вощем, странности продолжаются…

У вас проблема в названии “Детектор дыма в кухне/гостиной”, это название используется в имени контрола, а “/” недопустимый символ в именах контролов.

Странно. У меня и другом месте есть слэш в названии контрола, но оно никак не проявлялось.

Ладно, заменю слэши на тире. Посмотрим что будет…

P.S.: Хорошо бы защиту от подобных вещей заложить в систему. Не все же кастомеры WB - завзятые линуксоиды///

это коммент, тут можно, а в алармах это идентификатор, там нельзя

Добавили проверку, уже в тестинге.