Тупит WB-MRWL3

WB-MRWL3 отваливается от контроллера через определенное время. Отваливается, значит перестает реагировать на команды от контроллера, не включаются реле через веб интерфейс.
В веб интерфейсе отображается как обычно, нет красного.

При перезагрузке роутера, wb-mrwl3 также не реагирует на команды от контроллера.

Проблема решается передергиванием клеммной колодки rs485 с питанием.

Попробуйет пожалуйста обновить прошивку Модуль Modbus-реле WB-MRWL3 — Wiren Board

1 лайк

выдает непонятную ошибку

root@wirenboard-AJUQM74C:~# wb-mcu-fw-updater update-fw /dev/ttyRS485-1 -a59
2021-12-14 11:17:21,504 Will find serial port settings for (/dev/ttyRS485-1 : 59)…
2021-12-14 11:17:21,556 Has found serial port settings: {‘baudrate’: 9600, ‘stopbits’: 2, ‘parity’: ‘N’}
2021-12-14 11:17:21,644 ‘utf-8’ codec can’t decode byte 0xf9 in position 1: invalid start byte
2021-12-14 11:17:22,252 Unhandled exception!
Traceback (most recent call last):
File “/usr/bin/wb-mcu-fw-updater”, line 201, in
args.func(args)
File “/usr/bin/wb-mcu-fw-updater”, line 19, in update_fw
update_monitor.flash_alive_device(modbus_connection, ‘fw’, args.branch_name, args.specified_version, args.force, args.erase_settings)
File “/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py”, line 144, in flash_alive_device
specified_fw_version = downloader.get_latest_version_number(fw_signature)
File “/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_downloader.py”, line 88, in get_latest_version_number
url_path = urljoin(self._construct_urlpath(name), CONFIG[‘LATEST_FW_VERSION_FILE’])
File “/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_downloader.py”, line 77, in _construct_urlpath
return urljoin(self.parent_url_path, name, self.fw_source)
File “/usr/lib/python3.5/posixpath.py”, line 89, in join
genericpath._check_arg_types(‘join’, a, *p)
File “/usr/lib/python3.5/genericpath.py”, line 143, in _check_arg_types
(funcname, s.class.name)) from None
TypeError: join() argument must be str or bytes, not ‘NoneType’

ок, пока как-будто не сбоит. В чем ошибка я пока не понял, все ли норм встало интересно

Здравствуйте! По-видимому, обновление прошивки не произошло. Думаю, что у вас в конфигурации есть сторонние устройства. Утилита попыталась их опросить, но получила недопустимый ответ.
Попробуйте отключить другие устройства от шины, кроме того, у которого хотите обновить прошивку. Выполните команду еще раз.

На шине оставил только 1 устройство с адресом 59, второй порт rs485

  1. использовал wb-mcu-fw-updater update-fw /dev/ttyRS485-2 -a 59
    ошибка повторяется
    root@wirenboard-AVT4KEVX:~# wb-mcu-fw-updater update-fw /dev/ttyRS485-2 -a59
    2021-12-16 09:31:45,166 Will find serial port settings for (/dev/ttyRS485-2 : 59)…
    2021-12-16 09:31:45,236 Has found serial port settings: {‘stopbits’: 2, ‘parity’: ‘N’, ‘baudrate’: 9600}
    2021-12-16 09:31:45,336 ‘utf-8’ codec can’t decode byte 0xf9 in position 1: invalid start byte
    2021-12-16 09:31:45,861 Unhandled exception!
    Traceback (most recent call last):
    File “/usr/bin/wb-mcu-fw-updater”, line 201, in
    args.func(args)
    File “/usr/bin/wb-mcu-fw-updater”, line 19, in update_fw
    update_monitor.flash_alive_device(modbus_connection, ‘fw’, args.branch_name, args.specified_version, args.force, args.erase_settings)
    File “/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py”, line 144, in flash_alive_device
    specified_fw_version = downloader.get_latest_version_number(fw_signature)
    File “/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_downloader.py”, line 88, in get_latest_version_number
    url_path = urljoin(self._construct_urlpath(name), CONFIG[‘LATEST_FW_VERSION_FILE’])
    File “/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_downloader.py”, line 77, in _construct_urlpath
    return urljoin(self.parent_url_path, name, self.fw_source)
    File “/usr/lib/python3.5/posixpath.py”, line 89, in join
    genericpath._check_arg_types(‘join’, a, *p)
    File “/usr/lib/python3.5/genericpath.py”, line 143, in _check_arg_types
    (funcname, s.class.name)) from None
    TypeError: join() argument must be str or bytes, not ‘NoneType’

  2. После попробовал перевести устройство в режим загрузчика командой
    wb-mcu-fw-flasher -j -d /dev/ttyRS485-2 -a 59

после этого также попробовал wb-mcu-fw-updater update-fw /dev/ttyRS485-2 -a 59

теперь светодиод на wbmrwl3 мигает очень быстро, но все также работает через web интерфейс контроллера. Видать тут я уже начал заниматься самодеятельностью)

Для переустановки прошивки на wb-mrwl3 использовал дополнительный контроллер в нашем тестовом чемоданчики. Как только подключил wb-mrwl3 обратно, к своему штатному контроллеру на объекте, светодиод на wb-mrwl3 перестал часто моргать, все нормализовалось. Что теперь делать, пробовать все по новой?

В демонстрационных чемоданах стоят счетчики, которые утилита wb-mcu-fw-updater тоже попытается опросить и обновить. Также может возникнуть проблема, если в конфигурации у сторонних устройств, работающих по своему протоколу, задан адрес больше 247 (например, у счетчика).

В целом можно попробовать выполнить данную команду на любом контроллере. Если на объекте нет подключенных или сконфигурированных сторонних устройств типа счетчиков, то, думаю, можно и на нем. На всякий случай отключите все остальные устройства от шины RS-485.

Не, этот чемоданчик мы сами собирали для тестов, там ничего нет лишнего

Только mrwl и контроллер

В конфигурации тоже ничего больше не прописано? Покажите содержимое файла /etc/wb-mqtt-serial.conf контроллера, с которого пробовали.
А какая версия утилиты использовалась? Посмотреть можно так:

dpkg -s wb-mcu-fw-updater

wb-mqtt-serial.conf (1.2 КБ)

Вывод dpkg -s wb-mcu-fw-updater

root@wirenboard-AVT4KEVX:~# dpkg -s wb-mcu-fw-updater
Package: wb-mcu-fw-updater
Status: install ok installed
Priority: optional
Section: python
Installed-Size: 21
Maintainer: Vladimir Romanov v.romanov@wirenboard.ru
Architecture: all
Version: 1.0.10
Depends: python3-wb-mcu-fw-updater (= 1.0.10)
Conffiles:
/etc/wb-mcu-fw-updater.conf 4008ae3e26f35ecdbb3e64fbb8825ec8
Description: Wiren Board modbus devices firmware update tool (python 3)

Ну у меня python версии 3.9 вроде, дополнительно обновлял, может в этом косяк?

Не должно быть. Специально установил версию 3.9 - работает.

В конфигурации у вас модуль указан на порту RS-485-1, а в выводе команд используете порт RS-485-2. Тут не может быть ошибки?

Убедитесь еще раз, что к шине подключен только данный модуль и никакой софт больше не использует данный порт. Затем для диагностики модуля выполните, пожалуйста, на контроллере следующую команду (порт исправьте на свой):

modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-2 -a59 -t0x04 -r290 -c12

Вывод команды пришлите.

Очень маловероятно что перепутал порт, так как пробовал управлять устройством через web интерфейс, а физически он был подключен ко второму.
Но я еще разок попробую, чтобы наверняка.

Ок, вот эту команду тоже попробую, спасибо