Добрый день!
Как-то внезапно с дашборда “Устройства” и пропал блок уведомлений Alarms, отчего на пользовательском дашборде “Котельная” алярмы стали неактивными (там были продублированы некоторые наиболее важные).
Также Alarms не наблюдается среди MQTT-топиков.
В то же время файлик /etc/wb-rules/alarms.conf присутствует и его содержимое вполне корректно.
Подскажите в какую сторону копать проблему.
Сделал.
Решил проверить статус и получил вот что:
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 сидит реле и нормально работает
Проблема повторилась.
Добавил в модуль уведомлений 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 с этими правилами приводил ранее.
Похоже, подтверждается версия про длину конфига.
В качестве эксперимента почистил строки конфига в части новых 3-х алертов детекторов дыма, перезапустил wb-rules и - вуаля, блок уведомлений снова появился на дашборде.
Нет. Как раз с ним блок уведомлений вообще не отображается (но там все нужные уведомления по максимуму на данный момент).
Я решил узнать, какое минимально число алармов будет работать корректно, и убрал из конфига контроль фаз B и C входного фидера (хватит и мониторинга одной - A) и добавил туда контроль детектора дыма в 3-х комнатах - в результате блок уведомлений отобразился в “Устройствах”, но в нём почему-то отсутствует упоминание о контроле аварии септика и даже в перечне MQTT-топиков его нет. Очень странное поведение…
Буквально только что провёл обновление системы через apt update && apt upgrade и блок уведомлений снова слетел
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).