Переключение каналов отключенного mr3 останавливает опрос остальных устройств и некорректрые показания AP energy после перезагрузки контроллера 😱

Доброй ночи!
Обранужил в логах wb-mqtt-serial постоянные попытки записи в каналы реле с ошибкой.

May 30 20:08:22 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:96:coil: 0>: Serial protocol error: request timed out
May 30 20:08:22 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:96:coil: 1>: Serial protocol error: request timed out
May 30 20:08:22 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:96:coil: 2>: Serial protocol error: request timed out
May 30 20:08:22 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:99:coil: 0>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:99:coil: 1>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:99:coil: 2>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:97:coil: 0>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:97:coil: 1>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:97:coil: 2>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:32:coil: 0>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:32:coil: 1>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:32:coil: 2>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:95:coil: 0>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:95:coil: 1>: Serial protocol error: request timed out
May 30 20:08:23 IQ351001 wb-mqtt-serial[7314]: WARNING: [register handler] failed to write: <modbus:95:coil: 2>: Serial protocol error: request timed out

Появляется, когда в отключенное устройство выполняешь например:
mosquitto_pub -t /devices/wb-mr3_95/controls/K1/on -m 1

Но ошибок очень много, я подозреваю, что драйвер пытается в приоритетном режиме выполнить команду на запись, но из-за этого перестают опрашиваться остальные устройства на довольно длительное время.

Версия wb-mqtt-serial:

apt-cache policy wb-mqtt-serial
wb-mqtt-serial:
  Installed: 2.68.6-wb105
  Candidate: 2.68.6-wb106
  Version table:
     2.68.6-wb106 990
        990 http://deb.wirenboard.com/wb7/stretch stable/main armhf Packages
 *** 2.68.6-wb105 100
        100 /var/lib/dpkg/status

Наткнулся на это ообенность отлаживая другую проблему, которая кажется более серьезной:
Есть такая конфигурация:
Несколько счетчиков map12e, несколько реле mr3.
Сами реле не подключены, но в конфигурации прописаны.
В wb-rules присутствуют скрипты, переключающие реле по расписанию.
На map12e подключена довольно большая нагрузка и AP energy заметно изменяются даже в течении нескольких минут.
Отключена БД mosquitto.

Что наблюдаю:
При перезагрузке контроллера получаю значения AP energy ниже, чем были переданы до перезагрузки, затем, минут через 10, данные начинают обновляться и приходят корректные значения.


На графике фазы обозначены разным цветом, но так же каждая линия представляет из себя зебру. Цвет темнеет/светлеет при смене значения. Т.е. можно видеть, что 7 минут данные по AP energy не изменялись и отображали некорректное значение, затем, при следующем чтении, стали правильными.

Значения перепроверял так же с помощью:

mosquitto_sub -t /devices/wb-map12e_17/controls/# -v

У меня закончились варианты, что можно проверить. В какую сторону смотреть?
Заранее спасибо!

Добрый день!

Интересно, что в логах ошибки записи для нескольких устройств одновременно, не только для адреса 95. Точно в скриптах нет ничего, что пыталось бы управлять реле?

Добрый день!
Да, все верно, в wb-rules прописано управление для разных реле.

mosquitto_pub это пирмер, который так же воспроизвел проблему:
Отключил wb-rules, wb-mqtt-serial.
Запустил wb-mqtt-serial.
Выполнил mosquitto_pub
Получил такой же лог, но для одного регистра.

Если перезапустить wb-rules и wb-mqtt-serial, а затем остановить wb-rules, поведение на шине как в прикрепленном выше логе.

Получается, в этой части serial ведёт себя как задумано. Там действительно встанет на паузу обычный опрос, потому что serial будет дожидаться ответа от устройства, которого нет, после чего опрос возобновится.

Вот про MAP вопрос интересный. Давайте попробуем отключить serial при запуске и посмотрим, не останется ли опубликованного устройства со старыми значениями:

systemctl disable wb-mqtt-serial.service
reboot

(После проверки надо будет не забыть включить его обратно).

И пришлите диагностический архив

У нас в mosquitto.conf:
persistence false
Мне кажется, не должно быть никаких топиков, но я проверю.

root@IQ351001:~# mosquitto_sub -t /devices/wb-map12e_17/controls/+ -v | grep "Ch 4 AP"
/devices/wb-map12e_17/controls/Ch 4 AP energy L1 45881.27546
/devices/wb-map12e_17/controls/Ch 4 AP energy L2 44134.16355
/devices/wb-map12e_17/controls/Ch 4 AP energy L3 47221.51519
^C
root@IQ351001:~# systemctl disable wb-mqtt-serial.service
Removed /etc/systemd/system/multi-user.target.wants/wb-mqtt-serial.service.
root@IQ351001:~# reboot
....
root@IQ351001:~# mosquitto_sub -t /devices/wb-map12e_17/controls/+ -v | grep "Ch 4 AP"
/devices/wb-map12e_17/controls/Ch 4 AP energy L1 45555.58074
/devices/wb-map12e_17/controls/Ch 4 AP energy L2 43826.20712
/devices/wb-map12e_17/controls/Ch 4 AP energy L3 46888.75896
^C
root@IQ351001:~# ps -aux | grep serial
root      3352  5.2  0.9  84020  9484 ?        Ssl  10:23   0:10 /usr/bin/wb-mqtt-serial
root      9517  0.0  0.0   5872   556 pts/0    S+   10:27   0:00 grep serial
root@IQ351001:~#

Странно, что wb-mqtt-serial запущен.
Данные в AP energy меньше, чем были до перезагруззки.

UPD:
wb-mqtt-serial скорее всего запускается нашими сервисами как зависимость, сейчас сделаю второй тест.

При отключенном wb-mqtt-serial после reboot топиков нет.

Принял, спасибо! Пришлите ещё диагностический архив, пожалуйста

Да, вспоминаю как это делать из консоли. Можете пожалуйста напомнить?

wb-diag-collect diag
1 лайк

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

Спасибо! Похоже в самом деле на проблему в нашем serial, будем решать и держать в курсе здесь

2 лайка
  1. Можете прислать ваш файл /var/lib/wb-mqtt-serial/libwbmqtt.db?
  2. Можете прислать лог завершения работы wb-mqtt-serial с включенной отладкой?
systemctl stop wb-mqtt-serial
wb-mqtt-serial -d 3

Дождаться, когда сервис начнёт опрашивать регистры, и отключить его по Ctrl^C. Нужны самые последние записи с префиксом [storage]

Исправили в libwbmqtt1-4 версии 4.1.1. Обновитесь, пожалуйста. После обновления надо перезапустить wb-mqtt-serial, чтобы он начал использовать новую версию библиотеки.

1 лайк

Можете пожалуйста уточнить? Сейчас:

release wb-2207 (as stable)

root@wirenboard-AEFZEI57:~# apt-cache policy libwbmqtt
libwbmqtt:
  Installed: (none)
  Candidate: 1.7.2
  Version table:
     1.7.2 990
        990 http://deb.wirenboard.com/wb7/stretch stable/main armhf Packages
root@wirenboard-AEFZEI57:~# apt-cache policy wb-mqtt-serial
wb-mqtt-serial:
  Installed: 2.68.6-wb106
  Candidate: 2.68.6-wb106
  Version table:
 *** 2.68.6-wb106 990
        990 http://deb.wirenboard.com/wb7/stretch stable/main armhf Packages
        100 /var/lib/dpkg/status
root@wirenboard-AEFZEI57:~#

Нужно ли прислать логи или уже не актуально?

Разобрался. У нас используется версия 1-3:

root@IQ389000:~# apt-cache policy libwbmqtt1-*
libwbmqtt1-3-dev:
  Installed: (none)
  Candidate: 3.9.0
  Version table:
     3.9.0 990
        990 http://deb.wirenboard.com/wb7/stretch stable/main armhf Packages
libwbmqtt1-3:
  Installed: 3.9.0
  Candidate: 3.9.0
  Version table:
 *** 3.9.0 990
        990 http://deb.wirenboard.com/wb7/stretch stable/main armhf Packages
        100 /var/lib/dpkg/status
libwbmqtt1-3-test-utils:
  Installed: (none)
  Candidate: 3.9.0
  Version table:
     3.9.0 990
        990 http://deb.wirenboard.com/wb7/stretch stable/main armhf Packages
root@IQ389000:~#

Добрый день!
Подскажите, будет ли исправление для libwbmqtt1-3?

Да. Только что выложили. В релизе wb-2207 это версия 3.9.0-wb100.

2 лайка

Большое спасибо! Будем тестировать!