Контроллер WB8 глючит / зависает

Добрый день. Столкнулся с проблемой, контроллер очень долго отрабатывает действия. Например включая лампочку, в интерфейсе состояние меняется, по факту нет. Несколько раз нажал включить/выключить, ничего не произошло. Через минуту все нажатые команды начинают отрабатываться сразу друг за другом. Тоже самое происходит с показанием датчиков. Например открыл дверь (геркон подключен на модуль входов) и в интерфейсе меняется состояние через 4-5 секунд.

Нагрузка load15 больше 6, возможно с этим связана. Так как после перезагрузки контроллера load15 становится в норме и все работает корректно. Но спустя некоторое время всё снова начинает подвисать.

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

Добрый день!

Судя по диаг. архиву, контроллер перегружен по процессору. В системе идёт очень большой поток внутренних MQTT-сообщений, и почти все ядра заняты его обработкой (в том числе движком правил wb-rules). Из-за этого службе опроса Modbus-устройств не хватает процессорного времени: команды на реле и приходящие изменения от датчиков встают в очередь и «выплёскиваются» пачкой. Отсюда и то, что вы видите — задержка включения света, срабатывание нажатий разом через минуту, отставание герконов на 4–5 секунд.

Источник потока — с высокой вероятностью одно из ваших правил в wb-rules.

Пришлите, пожалуйста, содержимое папки с правилами. Останавливать wb-rules для этого не нужно. Проще всего собрать архив по SSH:

tar czf /tmp/wb-rules.tgz /etc/wb-rules/

Файл /tmp/wb-rules.tgz скачайте (можно через WinSCP) и прикрепите к теме.

wb-rules.tgz (123 байта)

image

Извинюсь, в прошлой команде забыл один флаг, выполните, пожалуйста, исправленную команду tar czhf /tmp/wb-rules.tgz /etc/wb-rules/ и приложите архив сюда

image

Архив в любом случае должен был создасться, это обычное предупреждение

wb-rules.tgz (10,9 КБ)

Пока есть только догадки по правилам, давайте посмотрим, что публикуется в брокере. Выполните команду mosquitto_sub -h localhost -t '#' -W 30 -F '%r %t %p' > /tmp/mqtt_dump.txt и приложите файл mqtt_dump.txt сюда, пожалуйста

mqtt_dump.txt (4,3 МБ)

Причина зависаний и высокого load из-за одного правила wb-dali. Оно бесконечно публикует значение в топик /devices/virtual_light_1/controls/actual_level (около 2800 в секунду).

Этот поток забивает процессор и MQTT-брокер — отсюда задержки и глюки.

В логике правило с условием, которое всегда истинно и само же публикует контрол, за счёт чего зацикливается:

defineRule("Init actual from MQTT", {
    when: function() { return true; },
    then: function() { publish(TOPIC_ACTUAL, "0"); }
});

Что с этим делать — на ваш выбор:

  1. Если это устройство (virtual_light_1) не используется — просто отключите файл и перезапустите wb-rules.

  2. Если виртуальный диммер нужен — правило надо переписать без самозацикливания.