Странно, как-то мало активности в этой теме.
Я начал самостоятельное изучение причин проблемы. Есть пара вопросов к разработчикам:
Какие именно сообщения попадают в очередь handleMessage, какие сервисы/библиотеки в неё пишут и читают?
Драйвер wb-mqtt-serial пишет считанное из порта значение в топик mqtt только когда значение изменилось относительно предыдущего? Или не хранит предыдущих значений каналов и безусловно по каждому чтению пишет в mqtt?
А вы не пробовали, кстати, бету 2.0 ставить? Вдруг там пофиксили. Я зимой экспериментировать боюсь - у меня WB котлом управляет, поэтому все глюки пока подпираю костылями.
Проблема выглядит сложной.
По предварительным данным, в зоне риска находятся только скрипты, использующие таймер или cron-правила (если в вашем правиле они не используются, но проблемы всё равно появляются, пожалуйста, напишите нам).
Лучшей помощью для нас будет выкладывание полных ваших скриптов (чтобы мы могли их скопировать и воспроизвести проблему), описаний проблемы, логов ошибок. Было бы идеально, если бы всё это, упакованное в архив, вы отправляли на info@contactless.ru с темой “Проблема wb-rules”.
В целях дополнительного изучения, не на критичных объектах, могу посоветовать попробовать:
Тут Экземпляры мигалок на Timer - #16 от пользователя Flagman выяснили, что зависает и без таймеров и cron, даже при использовании простых setTimeout/setInterval (а без них не обходится практически ни один реальный скрипт).
Там же есть конкретные примеры правил, с которыми проблема воспроизводится.
Я использовал выход Vout на контроллере, чтобы через правила на него подавать импульсы на реле времени. Чтобы когда они зависнут, управление переходило на резерв. В процессе эксплуатации выяснилось, что правила могу зависать не полностью. Т.к. этот мой ватчдог продолжал работать, а часть функций прикрывалась. Ребут помогал.
Могу сказать, что версия рулей из сборки 2110 ложится сама по себе (без внешних причин) раза в два реже предыдущей: крутится около месяца против «стандартных» двух недель. Похоже, проблему нащупать смогли? Осталось только прибить ее.