WB-MRWL3 отваливается от контроллера через определенное время. Отваливается, значит перестает реагировать на команды от контроллера, не включаются реле через веб интерфейс.
В веб интерфейсе отображается как обычно, нет красного.
При перезагрузке роутера, wb-mrwl3 также не реагирует на команды от контроллера.
Проблема решается передергиванием клеммной колодки rs485 с питанием.
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
использовал 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’
После попробовал перевести устройство в режим загрузчика командой
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.
В конфигурации тоже ничего больше не прописано? Покажите содержимое файла /etc/wb-mqtt-serial.conf контроллера, с которого пробовали.
А какая версия утилиты использовалась? Посмотреть можно так:
Не должно быть. Специально установил версию 3.9 - работает.
В конфигурации у вас модуль указан на порту RS-485-1, а в выводе команд используете порт RS-485-2. Тут не может быть ошибки?
Убедитесь еще раз, что к шине подключен только данный модуль и никакой софт больше не использует данный порт. Затем для диагностики модуля выполните, пожалуйста, на контроллере следующую команду (порт исправьте на свой):
Очень маловероятно что перепутал порт, так как пробовал управлять устройством через web интерфейс, а физически он был подключен ко второму.
Но я еще разок попробую, чтобы наверняка.