Снова wb-rules и mosquitto persistance

Добрый день!
WB 6.6 на testing. Сейчас все пакеты обновлены.

После одного из обновлений обнаружил, что правила перестали работать.
Оказалось, что они больше не запускаются нормально, если в mosqutto выключен persistance.
Включил, все заработало.

Но через некоторое время опять возникли проблемы вида
ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken и снова половина правил не работает :frowning:

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

diag_A7YT3BQO_2023-03-07-16.13.24.zip (75.3 КБ)

thermostats.js (2.0 КБ)
Добрый день!
Подгрузил архив с диагностикой и пример правила.

Если поставить флаг persistance = false - правила совсем не работают.

Похоже, что проблема MQTT token wait timeout в моем случае связано с модулем Zigbee. Почему то он постоянно показывает, что одно устройство пытается неудачно подключиться к сети. Если это устройство добавить в черный список - правила работают нормально.
Наверное, нужно открыть отдельную тему про проблему с модулем ( WBE2R-R-ZIGBEE)

Загрузите архивом, движок не работает с js.

thermostats.zip (833 байта)
Приложил в формате zip.

Но обратите внимание: это не мое правило перестает работать.
Это wb-rules вообще перестает нормально работать, когда стоит флаг persistance: false в mosquitto.
С предыдущими версиями wb-rules такого не было.

Добрый день!
все еще мучаюсь с этим.
Вижу, что подобные сообщения возникали и у других пользователей.

Поможете?

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

А пока можете обновить софт контроллера и снова приложить диагностический архив? С момента обращения там много что поменялось в софте и архиве.

Добрый день.
Опишите пожалуйста как воспроизвести подобное поведение.
Если, как предполагаете - дело в устройстве zigbee - то что пишется в топики? В какие, какие значения, как часто?

Еще раз проверил - wb-rules работает как с включеным флагом так и без.

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

Подгрузил новый лог. Попробую описать ситуацию подробно.

У меня WB6, несколько реле, счетчик электричества, несколько датчиков температуры 1-Wire.
Также несколько устройств подключено по zigbee через модуль WBE2R-R-ZIGBEE - это датчики температуры и датчики присутствия Xiaomi.
Настроены правила wb-rules (они приложены выше в посте).
одно правило создает три виртуальных термостата (с датчиками Zigbee и реле WB), другое - включает/выключает свет по срабатыванию датчиков присутсвия.

После перезапуска wb-rules все работает быстро: моментально при срабатывании датчика присутсвия щелкает реле. Но через некоторое время (от нескольких часов до дней). Появляются заметные задержки, секунд на 5, потом больше, а потом свет перестает включатся совсем.

В логах mqtt при этом ERROR: [wbgo_mqtt] MQTT error: publish was broken by timeout

При этом на контроллере не видно большой нагрузки, память свободная есть, веб-интерфейс открывается (кроме страницы с правилами). Релюхи щелкают если на них нажать в вебинтерфейсе без всяких задержек.
При перезапуске службы wb-rules все опять начинает работать. Иногда она сама перезапускается и начинает работать.

Такое впечатление, что после какого-то количества сообщений брокер перестает быстро обрабатывать сообщения от wb-rules или замедляет их. Типа как начинает ее тротлить.

Думаю, что это связано с правилами от zigbee2mqtt - у нее же тоже есть какое то правило в wb-rules? У меня есть какая то неполадка в zigbee - постоянно ломится и не может настроиться какой то устройство. Если в zigbee2mqtt не включить это устройство в черный список эти события пролезают в интерфейс wirenboard и wb-rules валится быстро. Что это за устройство я не знаю, все мои устройства работают.

Хотел попробовать настроить в mosquitto какой-нибудь принудительный дисконнект клиентов. Думаю тогда она будет рубить подключение к wb-rules раз в 20 минут и wb-rules переподключиться и продолжит работу. Может это поможет?

В статистике брокера видно довольно большое, но “нормальное” количество сообщений.
Но вот
$SYS/broker/load/bytes/received/15min 129360.52
много.
Подозреваю что дело как раз в z2m.
А откуда взялось “устройство” которое пытается зарегистрироваться? Если оно стороннее - то как получило ключ? Или z2m в режиме разрешения на добавление?
И, что оно пишет в топик, кстати?

z2m в режиме разрешения на добавление, но устройство добавлено в черный список
z2m пишет в топик zigbee2mqtt/bridge/logging
Rejecting joining device which is on blocklist ‘0x00124b0022054884’
Это происходит каждые 12 секунд, примерно.

Действительно, нужно выключить добавление новых устройств. Хотя вроде бы ничего особенно криминального в таких сообщениях нет - вот счетчик электричества пишет в mqtt гораздо чаще и ничего страшного не происходит.

Откуда взялось это устройство я не знаю, первый раз его заметил, когда обновлял WBE2R-R-ZIGBEE для новой версии z2m. пытался найти производителя по id, но ничего не нашел.

1 лайк

Выключил режим добавления в zigbee, но все равно через несколько дней wb-rules зависли.
Симптомы те же.
приложен диагностический архив, доступен только сотрудникам поддержки (167,1 КБ)

Подскажите, что делать? Перезапускать wb-rules каждый день?

Здравствуйте. Спасибо за диагностический архив. К сожалению, в нём нет лога zigbee2mqtt, а лог wb-rules забит ошибками.

Поэтому, пожалуйста, пришлите ещё логи wb-rules и zigbee2mqtt за последние пару суток. Их выгрузить можно из веб-интерфейса Настройки → Системный журнал и отфильтровать по wb-rules, а потом по zigbee2mqtt. Обратите внимание, что логи подгружаются динамически, поэтому надо в интерфейсе пролистать сообщения до нужной даты в прошлом.

Я лично использую zigbee2mqtt на одном из стендов в режиме 24/7 и не замечал подобных проблем, но мы очень хотим понять причину и вы можете очень сильно помочь.

Коллеги,
выгрузил логи
wb-rules_20230705T105848.zip (316,4 КБ)
Я тоже очень хочу помочь :slight_smile:

Очень хорошо, что догадались положить сюда лог mosquitto, я забыл его попросить.

Вижу в логах mosquitto такое:

2023-07-05T06:23:14.146Z [mosquitto] 1688538193: Client wb-rules-engine-wirenboard-A7YT3BQO-6868 closed its connection.
2023-07-05T06:23:13.789Z [mosquitto] 1688538193: Client rules-wirenboard-A7YT3BQO-6868 disconnected due to out of memory.

Пришлите ещё, пожалуйста, графики метрик. Там надо, чтобы время ошибки в логе попало в графики и было видно пару-тройку часов до и пару-тройку часов после.

Нужные метрики, получится три графика:

metrics/load_average_1min, 
metrics/load_average_5min, 
metrics/load_average_15min 

metrics/ram_used, 
metrics/swap_used, 

metrics/dev_root_used_space, 
metrics/data_used_space

Ещё проверьте, пожалуйста, размер файла mosquitto.db командой:

du -h /var/lib/mosquitto/mosquitto.db

А если, возможно, приложите и сам файл.

У меня есть нехорошее предчувствие, что проблема с persistence появилась во второй версии mosquitto, хотя авторами брокера она была устранена ещё в версии 1.5.6. Или это что-то совсем новое с похожими симптомами.

Что то не все метрики собираются:



root@wirenboard-A7YT3BQO:~# cat /etc/mosquitto/mosquitto.conf
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /run/mosquitto/mosquitto.pid

persistence false
persistence_location /var/lib/mosquitto/

log_dest syslog

include_dir /etc/mosquitto/conf.d
root@wirenboard-A7YT3BQO:~# du -h /var/lib/mosquitto/mosquitto.db
du: cannot access '/var/lib/mosquitto/mosquitto.db': No such file or directory
persistence false

Верно понимаю, что оно сломалось последний раз при таком значении настройки? И рестарт wb-rules помогает на какое-то время?

Я завтра посоветуюсь с разработчиками и вернусь.

Да, именно так. После рестарта wb-rules все немедленно начинает работать. Другие сервисы перезапускать не требуется. Перед рестартом я смотрел на загрузку памяти, процессора - ничего криминального не обнаружил. Сам по себе wb-rules много памяти не ест.

@yurra Здравствуйте!

Мне не удалось воспроизвести проблему, но я сделал тикет разработчикам и положил туда присланные вами логи.

Надо будет немного подождать. Тему не закрываю, на связи.