Добавленное устройство перестало работать

Снова зашёл в веб-интерфейс и увидел что на устройствах цифры поменялись. Обновляются они или нет проверю завтра. Но для wb-mqtt-serial я не делал Restart. Только Status.

Debug главное выключите - в зависимости от количества устройств он приведет к разрастанию файла логов и полному заполнению раздела.

Сегодня снова зашёл в веб-интерфейс. Устройства не обновляются. Вчерашние цифры. Проверил статус wb-mqtt-serial. Активен. Сделал Restart. Всё начало обновляться. Помню раньше такого небыло.

Как происходит движение данных? Данные (значения) считываются с датчиков (в данном случае по modbus), затем отправляются в MQTT, а если зайти в веб-интерфейс, то данные считываются из MQTT и отображаются в devices. Верно? А если подключится напрямую к контроллеру, интернета нет. Тогда как? Брокером MQTT выступает сам контроллер? И движения те же?

Он точно активен и не вышел (Exited)? Скопируйте сюда вывод, пожалуйста.

Верно. wb-mqtt-serial записывает в mqtt постоянно. Дальше значения используются и для интерфейса и для работы правил.

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

И да, контроллер обновлялся?

apt update && apt upgrade -y

Сегодня снова всё повторяется. В веб-интерфейсе данные не обновляются. На скриншоте видно, что wb-mqtt-serial активен. После рестарта начали обновляться. И по команде статус более расширенная информация появилась.
Контроллер не обновлялся. Как я понимаю, Вы написали две команды. 1) apt update; 2) apt upgrade -y.
На контроллере выполняется правило. Эти обновления не сотрут его?

Прошло не более 15 минут, данные снова перестали обновляться. Снова помог Restart wb-mqtt-serial

“exited” - неактивен. То есть вышел.

cat /var/log/messages |grep wb-mqtt-serial 

и надо посмотреть - возможно найдется причина.

Правило - нет, но если обновлялся очень давно - то возможно надо будет поправить значения
https://wirenboard.com/wiki/Совместимость_скриптов_при_обновлении_wb-rules

И проверьте - место свободное есть?

Вот скрин с выполнением команды и со списком свободного места

Ну, с местом все хорошо. Кстати, до обновления выполните

dpkg -s wb-mqtt-serial |grep Version

Интересно, насколько старый стоит.

Ну и само правило выложите - глянем чем чревато обновление.

Я ошибался на счёт правила. Уточнил у коллеги, нет правила. Данные просто отправляются в MQTT без обработки. Ну тем лучше, сделаю обновление.
Кроме того, что wb-mqtt-serial отваливается, ещё сервис enermon-ui отваливается. А без него удалённо в веб-интерфейс не попадёшь. Нужно каждый раз через Putty заходить в контроллер, перезапускать этот сервер, только так можно попасть в веб-интерфейс. На скриншоте видно.

И ещё есть вопрос. Когда я первый раз настраивал устройство в Configs/Serial Device Driver Configuration, имена регистров я написал русскими буквами. Затем переименовал латинскими буквами. В Devices появилось два пункта, с русским названием и с латинским. Удаляю эти пункты (регистры). С русскими буквами не удаляется.
Затем снова добавляю. Имена пишу латинскими буквами. Теперь один регистр с латинским названием присутствует, но значение не обновляется. Второй регистр присутствует с двумя названиями. Но который латинскими буквами - тот обновляется. В общем каша какая-то.
В файле /etc/wb-mqtt-serial.conf всё красиво, регистров с русскими буквами нет.

Все-таки посмотреть бы в лог, на чем отваливается. Если возможно - пришлите его, лог.
И заодно файл wb-mqtt-serial.conf

Это что-то нестандартное, в штатном софте такого нет.
И на скриншоте видно, что он выключен. Если контроллер по какой-то причине перезапускается - то сервис сам не стартует.
Если есть доступ к контроллеру по ssh, почему просто туннель через ssh не используете?

Да, созданные топики - кэшируютрся в MQTT.
Как удалить - тут:
https://wirenboard.com/wiki/MQTT#.D0.9E.D1.87.D0.B8.D1.81.D1.82.D0.BA.D0.B0_.D0.BE.D1.87.D0.B5.D1.80.D0.B5.D0.B4.D0.B8_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D0.B9
Не получается?

Попытался удалить с помощью команды sudo mqtt-delete-retained, не получается


Как скачать файлы с контроллера на компьютер не знаю. Поэтому пытался как мог. Конец файла /var/log/messages. И файл /etc/wb-mqtt-serial.conf
Messages.txt (53.1 КБ)
wb-mqtt-serial.conf.pdf (113.7 КБ)

sudo не нужно. И забываете добавить “#” в конце, надо так:

mqtt-delete-retained '/devices/kb-006_1/controls/Main счётчик/#'

Вот тут похожее

Winscp вообще не запускается?

Так, вижу много ошибок “Serial protocol error: invalid crc” и “malformed response: invalid data size” которые говорят о том (из опыта) что скорее всего установлено неверное количество стоп-бит.
В устройствах, из которых получаете данные - настройки по умолчанию какие? Для проверки - можно поменять количество стоп-бит для всего порта, кроме пиборов ведь туда ничего не подключено?

С удалением топиков получилось. Лишнее удалил.

Для скачивания файлов с контроллером Вы мне советовали раннее программу Sshfs Manager. Её не смог запустить. Программа Winscp заработала. Но у меня не всё так просто. Я сначала подключаюсь с помощью Putty к нашему корпоративному сайту enermon.naukanet.ru, затем с помощью команды SSH nauka@localhost -p 11028 подключаюсь к WirenBoard. А программа Winscp показывает файлы enermon. Как высветить файловую систему WB не знаю.

Поменять количество Стоповых бит, наверное будет не правильно. В подключенных приборах параметры зашиты жёстко. Данные 8 бит, 2 стоповых, без контроля чётности. Не могут ли ошибки быть связаны с настройками задержек? Сейчас выставлены такие задержки:
для порта /dev/ttyRS485-1:
Response timeout (ms) - 1000
Guard interval (us) - 100 000
Desired poll interval (ms) - 2000

для устройства Vesy-1:
Desired poll interval (ms) - 1000
Delay before accessing the device (ms) - 100
Interval between register reads - 100 000
Device timeout (ms) - 3000
Frame timeout (ms) - 50

для устройства Vesy-4
Desired poll interval (ms) - 2000
Delay before accessing the device (ms) - 100
Interval between register reads - 100 000
Device timeout (ms) - 3000
Frame timeout (ms) - 50

Да, все наши примеры - для доступа к контроллеру в одной сети. Если вы используете промежуточный хост - то нужно построить туннель, например:
подключаюсь к шлюзу (10.0.0.6), на порт 226 которого уже отображен порт ssh целевого хоста:
ssh -L 2023:localost:226 10.0.0.6

После подключения - имею на своей локальной машине на 2023 - порт ssh целевого узла.
Ну или хочу получить доступ к порту ssh хоста, расположенного за шлюзом, прямого доступа к которому нет:
ssh -L 2023:АДРЕС_УЗЛА:22 10.0.0.6

Гуглится например: Магия SSH / Хабр
Ну или поднимаю VPN к шлюзу за которым находится нужный хост. Все зависит от настроек вашей сети, общих рекомендаций нет. Как по мне - проще использовать VPN. Если настраивал кто-то другой - надо спросить у него.

Guard interval (us) - 100 000 это 100 миллисекунд дополнительной задержки перед отправкой в порт данных. Вообще - не должно.

Дело не в таймаутах, ошибки

Serial	protocol	error:	invalid	crc

и

Serial	protocol	error:	malformed response: invalid data size

говорят все же что проблемы со связью. То есть данные в ответ на запрос получены, но либо не полностью либо повреждены. Если включить Debug для порта - то в лог будутписаться как отправленные так и принятые посылки. Так как в подключенных приборах параметры соответствуют тем что в wb-mqtt-serial.conf - остается вариант аппаратной проблемы.
Есть ли возможность переключить один из приборов на другой порт, на второй, который свободен? Проверить - надежно ли подключена земля между контроллером и приборами (отсутствие общего провода - тоже может давать пербои связи).
Ну и фото подключения со стороны контроллера и приборов бы.