Здравствуйте! Проверьте отсутствие обрывов на линии и надежность соединений и подключений. Нет ли проблем с питанием? Попробуйте оставить на шине только одно устройство и проверьте работу каждого из них. Подключите одно устройство коротким кабелем (если возможно) для проверки. Если линия длинная, нужно установить терминирующие резисторы на ее концах (RS-485:Физическое подключение — Wiren Board).
Какая у вас версия пакета wb-mqtt-serial?
Можно попробовать подобрать (увеличить) таймауты и интервалы настроек связи (Драйвер wb-mqtt-serial: шаблоны — Wiren Board):
- poll_interval — минимальный интервал опроса регистров устройства в миллисекундах.
- response_timeout_ms — максимальное время ожидания ответа от устройства в миллисекундах. Если в течение этого времени ответ не будет получен — драйвер продолжит опрос других регистров и устройств.
- frame_timeout_ms — минимально необходимая задержка между посылками в миллисекундах.
- guard_interval_us — дополнительная задержка перед каждой отправкой данных в порт в микросекундах. Если при работе с устройством теряются пакеты — попробуйте увеличить значение этого параметра.
- device_timeout_ms — интервал, по истечении которого (а также device_max_fail_cycles) устройство будет помечено отключенным и будет опрашиваться в ограниченном режиме.
Иногда помогает увеличить guard_interval_us (установить, например 20000). Вот похожая тема: Красные регистры 70% времени - #17 от пользователя changer
При рестарте wb-mqtt-serial нет ошибок? Вы конфигурацию вручную прописывали? Попробуйте убрать поле “protocol”: “modbus”.
Я бы еще посоветовал вынести конфигурацию каждого устройства в свой шаблон, положить его в папку /etc/wb-mqtt-serial.conf.d/templates (после этого нужно будет перезапустить сервис wb-mqtt, немного подождать и обновить страницу конфигурации). Затем добавить устройства на странице конфигурирования порта Settings->Configs → Serial Device Driver Configuration → Port serial /dev/ttyRS485-1, выбрав их из выпадающего списка.