Подключено около 55 сериал устройств на 3х линиях и один датчик зигби. Падают правила с ошибкой подключения к брокеру (ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.PublishToken (&{{{{0 0} 0 0 {{} 0} {{} 0}} 0x1984c40 } 50940}) ) при: сохранении/изменении больших файлов правил, перезагрузке контроллера, перезагрузке mosquitto, перезагрузке wb-rules. Возможно они падают и от других действий, но эти мне удалось выявить наверняка. Ошибка проявилась недавно при изменении правила и до этого не возникала, контроллер несколько месяцев работал стабильно с текущими правилами, которые не сильно изменялись.
Метод восстановления нормальной работы, на данный момент, выглядит так: остановка wb-mqtt-serial → рестарт wb-rules (занимает несколько минут) → запуск wb-mqtt-serial. После этих действий контроллер работает без ошибок.
Сбрасывал контроллер к заводским настройкам, но безрезультатно. Прикладываю диагностический архив, текст и скрины логов.
Здравствуйте, проверил все, рекурсивного создания правил нет (могу приложить архив с правилами, если требуется), но самих правил создается достаточно много, возможно проблема в количестве? Еще смущает, что проблема проявилась только недавно после обновления, раньше ее не было
То есть созданием большого массива правил.
Хороший способ убедиться что правила не создаются в процессе - добавить в лог вывод, именно при создании каждого правила.
Если есть способ (метод) позволяющий воспроизвести ошибку не создавая тысячи правил - поделитесь, проверю.
Добрый день! Наблюдаю аналогичную проблему у себя: правила работали (и работают) без сбоев, в Журнале критичных ошибок не было. Изменения вношу периодически, но 90% правил не меняются уже больше года.
Сегодня поставил обновления, после этого решил внести изменения в одно из правил. Изменения не сохранятся, в Журнале появились критические ошибки, связанные с MQTT.
По моим наблюдениям:
если менять небольшие правила (до 100 строк) - изменения сохраняются
если менять правила 100+ строк - процесс сохранения зависает и в Журнале начинают появляться ошибки (см. скрин)
спустя небольшое время после пары-тройки таких попыток сохранить изменения в правилах контроллер сам перезагружается
попробовал удалить все правила и возвращать их частями (включая самые древние, которые не менялись год точно) - отсеять “кривое” правило не удалось, т.к. вернул половину - все работает, попытался сохранить любое большое - ошибки, маленькое - сохранилось. Также и с другой половиной правил
отдельно подчеркну, что во время проверок пробовал “менять” правила по принципу - добавил/удалил пустую строку между функциями - и все равно это приводило к бесконечному процессу сохранения + появлению критических ошибок в журнале
Диагностический архив, к сожалению, пока приложить не смог - т.к. при попытке сделать его через веб процесс не заканчивается ничем, а при попытке через консоль получаю ошибку, связанную с таймаутом (о чем завел отдельный топик )
UPD: спустя 4 часа после публикации данного поста и прекращения попыток сохранять изменения в правилах посмотрел Журнал - ни единой критической ошибки, все штатно, как и было до обнаружения проблемы. А в то время, когда тестировал и пытался сохранять правила - ошибки сыпались обильно. Такое ощущение, что именно сохранение правил на 100+ строк что-то подвешивает так, что mqtt начинает сбоить
Да, симптомы аналогичные, уже словил такое же поведение и на другом контроллере, когда количество модбас устройств выросло с 20 до 35. С большими правилами такие проблемы возникают почти со 100% вероятностью, с малыми действительно все хорошо, но иногда баг ловится даже при сохранении небольших файлов правил. Хорошо, что я не один…
Так же хочу добавить, что баг ловится на контроллерах с большим количеством подключенных модбас устройств (40+ штук), хватает даже одного файла правил в котором создаются более 30 маленьких правил и 5-10 виртуальных устройств, тестировал на другом “свежем” контроллере пока была возможность. Пример правила прикладываю, если поддержка хочет протестировать, то рекомендую использовать для этого инсталляции с большим количеством модбас устройств, видимо их опрос как то влияет на то что брокер падает AutoWatering.js (17,2 КБ)
Еще проводил тесты на контроллере к которому подключены два модбас устройства и 60 зигби устройств, ошибок не возникает, загружал те же правила.
На контроллерах с большим количеством модбас устройств при отключении драйвера wb-serial, правила получается сохранять и редактировать без возникновения каких либо ошибок (в последнее время только так и приходится работать с правилами контроллера - останавливая опрос устройств). После сохранения правил, запускаю опрос и все работает без ошибок.
Сегодня словил ошибку на контроллере с большим количеством зигби устройств и с двумя модбас устройствами (писал ранее, рано радовался) при изменении большого правила. Второе модбас устройство добавил на прошлой неделе, это датчик wb-msw, ранее подобных проблем на данном контроллере не наблюдалось. Вылечилось привычным способом через отключение драйвера wb-mqtt-serial и перезагрузкой wb-rules. Скоро будет возможность протестировать свежий контроллер дома, отпишусь о результатах
Воспроизвести удается не всегда. Иногда при сохранении правила падает, иногда с тем же самым правилом не падает и нормально его обновляет, никакой системы.
Направляю еще немного логов, может как-то прояснит ситуацию: