Непонятное поведение WB-MQTT-SERIAL

Добрый день
Примерно после последнего обновления прошивки 4.9.22-wb6 [0.47-20200217] и прошивок всех моих модулей (а может я заметил эту проблему только тогда), у меня периодически перестали отвечать железки по rs485. После того, как проблема стала проявляться чаще 1 раза в неделю, я в логе messages увидел что раз в несколько секунд не читаются разные регистры в модулях, на обоих портах RS485 (1 и 2), одна линия короткая в щите, вторая до датчиков метров 15.
Отключение физическое шины от одного или второго порта картину не меняли.
Разовые ошибки чтения регистров не мешают жить и никак не ощущаются в реальной эксплуатации. Проблем в контактах на шине нет.
Но периодически и в последнюю неделю все чаще устройства перестают отвечать по запросы на шине с многочисленными ошибками invalid crc (то есть начинают сыпать ими подряд без перерыва, а не периодически)

Aug 17 20:47:45 wirenboard-AB3RVWYB user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 39 of device modbus:26: Serial protocol error: invalid crc
Aug 17 20:47:46 wirenboard-AB3RVWYB user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 121 of device modbus:26: Serial protocol error: invalid crc
Aug 17 20:47:46 wirenboard-AB3RVWYB user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 discrete(s) @ 7 of device modbus:26: Serial protocol error: invalid crc

Статус самого драйвера в этот момент - запущен.
Устройства на второй шине могут продолжать отвечать, но часть сценариев естественно уже не работает.

Помогает перезапуск
service wb-mqtt-serial stop
service wb-mqtt-serial start

Физически ничего не делаю.
Это все-таки ошибки физической шины, или и проблемы сервиса в том числе?
Подскажите куда еще посмотреть.

Так, давайте поймем какая сейчас версия стоит:

dpkg -s wb-mqtt-serial |grep Version

И выполните (если начнет опять ошибками сыпать до перезапуска сервиса и после:

ps axl |grep wb-mqtt

Результаты - сюда, посмотрим.

root@wirenboard-AB3RVWYB:~# dpkg -s wb-mqtt-serial |grep Version
Version: 1.57.0

Жду ошибки.

У меня подобная проблема. Я ранее писал сюда в поиске ответа. Ответили что скорее всего проблема в помехах, создаваемых силовыми линиями. Я понял, что мне уже не поменять ничего и я пока смирился. Перезагружаю устройство раз в три месяца примерно.

Кстати, как давно перезапускали? Перезагружаете весть контроллер или только wb-rules?
Сделайте тоже до и после перезапуска Непонятное поведение WB-MQTT-SERIAL

Чаще всего я весь контроллер перезапускаю по кнопке в web-интерфейсе. Так быстрее чем терминал загружать и команды вспоминать. Но в поисках проблем чаще приходится делать перезагрузку mqtt-serial. В мае текущего года (примерно) не отключился свет по таймингу или что-то вроде этого. Так как правила и дальше продолжали работать, то я предполагаю, что это все же в serial дело, нежели rules .

Mqtt-serial Ver. : 1.36

Итак
До
root@wirenboard-AB3RVWYB:~# ps axl |grep wb-mqtt
0 0 590 1 20 0 17564 7412 poll_s S ? 70:53 /usr/bin/wb-mqtt-db -c /etc/wb-mqtt-db.conf
4 0 2893 1 20 0 24256 4136 poll_s Sl ? 0:04 /usr/bin/wb-mqtt-mbgate -c /etc/wb-mqtt-mbgate.conf
4 0 17697 1 20 0 856112 6544 futex_ Sl ? 0:44 /usr/bin/wb-mqtt-confed -syslog /usr/share/wb-mqtt-confed
0 0 18950 1 20 0 6012 2388 wait S ? 0:00 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
0 0 18951 18950 20 0 44292 8788 futex_ Sl ? 108:38 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
0 0 31874 31799 20 0 5376 560 pipe_w S+ pts/0 0:00 grep wb-mqtt

Перезапуск
root@wirenboard-AB3RVWYB:~# service wb-mqtt-serial stop
root@wirenboard-AB3RVWYB:~# service wb-mqtt-serial start

После:
root@wirenboard-AB3RVWYB:~# ps axl |grep wb-mqtt
0 0 590 1 20 0 17564 7412 poll_s S ? 70:55 /usr/bin/wb-mqtt-db -c /etc/wb-mqtt-db.conf
4 0 2893 1 20 0 24256 4136 poll_s Sl ? 0:04 /usr/bin/wb-mqtt-mbgate -c /etc/wb-mqtt-mbgate.conf
4 0 17697 1 20 0 856112 6544 futex_ Sl ? 0:44 /usr/bin/wb-mqtt-confed -syslog /usr/share/wb-mqtt-confed
0 0 32175 1 20 0 6012 2332 wait S ? 0:00 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
0 0 32176 32175 20 0 44292 10504 futex_ Sl ? 0:03 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
0 0 32247 31799 20 0 5376 520 pipe_w S+ pts/0 0:00 grep wb-mqtt

Однако в этот раз рестарт сервиса не помог.
Вернее как не помог, в этот раз я зашел в лог messages и не проверив работу сценариев, а только увидев invalid crc, начал выполнять запрошенные команды.

Будем считать это фальшстартом, но вдруг уже можно будет увидеть что-то интересное, ошибки на короткой шине в щите.

Сегодня перезапускал контроллер. После обнаружил ошибку CRC:

Aug 23 09:16:17 wirenboard-ARAXKJYF user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 16 holding(s) @ 250 of device modbus_io:185:2: Serial protocol error: invalid crc

Лог ваших рекомендаций:

Нужно

  • схема (лучше с фото) монтажа контроллера, модулей.
  • содержимое /etc/wb-mqtt-serial.conf

@Anton_Safin, @Starck пожалуйста поставьте свежий wb-mqtt-serial (1.61.0) и проверьте снова. Недавно выпустили исправление для проблемы с похожими симптомами: там в процессоре от помех мог зависать приёмопередатчик UART, требовалась его переинициализация.

2 Likes

Я пробовал так:
root@wirenboard-ARAXKJYF:~# apt-get update && apt-get install wb-mqtt-serial, wb-mqtt-confed, wb-mqtt-homeui
Hit http://archive.debian.org wheezy Release.gpg
Hit http://releases.contactless.ru wheezy Release.gpg
Hit http://archive.debian.org wheezy Release
Hit http://releases.contactless.ru wheezy Release
Hit http://releases.contactless.ru wheezy/main armel Packages
Hit http://archive.debian.org wheezy/main Translation-en
Hit http://archive.debian.org wheezy/main armel Packages
Ign http://releases.contactless.ru wheezy/main Translation-en
Reading package lists… Done
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package wb-mqtt-serial,
Понял, что тишина.

а я в параллельной ветке обновлял на днях модули командой apt-get upgrade -y --force-yes
не то?

cat /etc/wb-mqtt-serial.conf
{
“debug”: false,
“ports”: [
{
“path”: “/dev/ttyRS485-1”,
“devices”: [
{
“slave_id”: “44”,
“device_type”: “WB-MDM3”
},
{
“slave_id”: “161”,
“device_type”: “WB-MR6C”
},
{
“slave_id”: “78”,
“device_type”: “WB-MR6C”
},
{
“slave_id”: “26”,
“device_type”: “WB-MR3”
},
{
“slave_id”: “53”,
“device_type”: “WB-MR3”
},
{
“slave_id”: “24”,
“device_type”: “WB-MRGBW-D”
},
{
“slave_id”: “20”,
“device_type”: “WB-MRGBW-D”
},
{
“slave_id”: “54”,
“device_type”: “WB-MRGBW-D”
}
],
“baud_rate”: 115200,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 20,
“enabled”: true,
“response_timeout_ms”: 50
},
{
“path”: “/dev/ttyRS485-2”,
“devices”: [
{
“slave_id”: “102”,
“device_type”: “WB-MSW v.3”
},
{
“slave_id”: “123”,
“device_type”: “WB-MSW v.3”
},
{
“slave_id”: “59”,
“device_type”: “WB-MSW v.3”
}
],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 50,
“enabled”: true,
“response_timeout_ms”: 100
},
{
“path”: “/dev/ttyMOD1”,
“devices”: [],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: false
},
{
“path”: “/dev/ttyMOD2”,
“devices”: [],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: false
},
{
“path”: “/dev/ttyMOD3”,
“devices”: [],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: false
}
]


}

Когда делал фото и проверял модули, случайно выдернул один провод из обжатого наконечника. переобжал и сейчас на этой линии 2 часа проблем не наблюдаю. Возможно действительно был недоконтакт. Так как на длинной линии до датчиков ошибки чтения редкие еще остались, а на короткой пропали. Продолжаю наблюдать.

Скажите правильную команду для апдейта, пожалуйста.

Для начала - что возвращают:

apt search wb-mqtt-serial

и

dpkg -s wb-mqtt-serial

root@wirenboard-AB3RVWYB:~# apt search wb-mqtt-serial
Сортировка… Готово
Полнотекстовый поиск… Готово
wb-mqtt-serial/stretch,now 1.57.0 armhf [установлен]
Wiren Board Smart Home MQTT serial protocol driver.

wb-mqtt-serial-dbgsym/stretch,stretch 1.41.1 armhf
Debug symbols for wb-mqtt-serial

root@wirenboard-AB3RVWYB:~# dpkg -s wb-mqtt-serial
Package: wb-mqtt-serial
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 1493
Maintainer: Evgeny Boger boger@contactless.ru
Architecture: armhf
Version: 1.57.0
Replaces: wb-homa-modbus (<< 1.14.1)
Depends: libc6 (>= 2.4), libgcc1 (>= 1:3.5), libjsoncpp1 (>= 1.7.4), libmosquitto1 (>= 1.0), libmosquittopp1 (>= 1.0), libstdc++6 (>= 6), libwbmqtt0 (>= 1.7), bsdutils, wb-utils (>= 2.0)
Breaks: wb-homa-modbus (<< 1.14.1), wb-mqtt-confed (<< 1.0.2), wb-mqtt-homeui (<< 1.7)
Conffiles:
/etc/init.d/wb-mqtt-serial 1f6938ea476ac51c4b845327d5e40f03
/etc/wb-configs.d/11wb-mqtt-serial 5325e375bc486e31384ed908b8ceae0e
/etc/wb-mqtt-serial.conf.sample c8c1adbf630e6fd7ec871b1b5c4a5e0f
Description: Wiren Board Smart Home MQTT serial protocol driver.
root@wirenboard-AB3RVWYB:~#

Сделайте

apt update && apt upgrade -y

Спасибо. Обновил.
dpkg -s wb-mqtt-serial |grep Version
Version: 1.61.0

Ок, замечательно. Ждем - посмотрим, будет ли глючить.

А мне-то что делать? Версия не обновляется выше 1.36. Я словно вымаливаю у вас помощи. Как-то оно неправильно