Сокол-М отваливается после первого считывания

Метеостанция Сокол-М читается 1 раз из 200. Какой-то системы и зависимости не установлено кроме того, что первое чтение проходит корректно, а затем - как буд то устройство потерялось.

Замена на другой Сокол-М не помогла.

Существует предположение, что всё работало корректно на прошивке WB 2022 года. После обновления до 2024 началась указанная проблема.

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

Добрый день.

Вот тут не совсем понятно. Что называете “прошивкой”?

Судя по обилию

WARNING: </dev/ttyRS485-2 19200 8 N 1>: closed due to repetitive errors

устройство не отвечает.
Рекомендую проверить связь, используя modbus_client.
В общем достатчно сотню-другую чтений в цикле чтобы получить статистику.

Сделал:

root@wirenboard-A2Q7PSNZ:~# for run in {1…200}; do echo Attemopt $run; modbus_client --debug -mrtu -b19200 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x03 -r1 | grep “SUCCESS”; done
Attemopt 1
ERROR Connection timed out: select
Attemopt 2
ERROR Connection timed out: select
Attemopt 3
ERROR Connection timed out: select
Attemopt 4
ERROR Connection timed out: select
Attemopt 5
ERROR Connection timed out: select
Attemopt 6
ERROR Connection timed out: select
Attemopt 7
ERROR Connection timed out: select
Attemopt 8
ERROR Connection timed out: select
Attemopt 9
ERROR Connection timed out: select
Attemopt 10
ERROR Connection timed out: select
Attemopt 11
ERROR Connection timed out: select
Attemopt 12
ERROR Connection timed out: select
Attemopt 13
ERROR Connection timed out: select
Attemopt 14
ERROR Connection timed out: select
Attemopt 15
ERROR Connection timed out: select
Attemopt 16
ERROR Connection timed out: select
Attemopt 17
ERROR Connection timed out: select
Attemopt 18
ERROR Connection timed out: select
Attemopt 19
ERROR Connection timed out: select
Attemopt 20
ERROR Connection timed out: select
Attemopt 21
ERROR Connection timed out: select
Attemopt 22
ERROR Connection timed out: select
Attemopt 23
ERROR Connection timed out: select
Attemopt 24
ERROR Connection timed out: select
Attemopt 25
ERROR Connection timed out: select
Attemopt 26
ERROR Connection timed out: select
Attemopt 27
ERROR Connection timed out: select
Attemopt 28
ERROR Connection timed out: select
Attemopt 29
ERROR Connection timed out: select
Attemopt 30
ERROR Connection timed out: select
Attemopt 31
ERROR Connection timed out: select
Attemopt 32
ERROR Connection timed out: select
Attemopt 33
ERROR Connection timed out: select
Attemopt 34
SUCCESS: read 1 of elements:
Attemopt 35
SUCCESS: read 1 of elements:
Attemopt 36
SUCCESS: read 1 of elements:
Attemopt 37
SUCCESS: read 1 of elements:
Attemopt 38
SUCCESS: read 1 of elements:
Attemopt 39
SUCCESS: read 1 of elements:
Attemopt 40
SUCCESS: read 1 of elements:
Attemopt 41
SUCCESS: read 1 of elements:
Attemopt 42
SUCCESS: read 1 of elements:
Attemopt 43
SUCCESS: read 1 of elements:
Attemopt 44
SUCCESS: read 1 of elements:
Attemopt 45
ERROR Connection timed out: select
Attemopt 46
ERROR Connection timed out: select
Attemopt 47
ERROR Connection timed out: select
Attemopt 48
ERROR Connection timed out: select
Attemopt 49
ERROR Connection timed out: select
Attemopt 50
ERROR Connection timed out: select
Attemopt 51
ERROR Connection timed out: select
Attemopt 52
ERROR Connection timed out: select
Attemopt 53
ERROR Connection timed out: select
Attemopt 54
ERROR Connection timed out: select
Attemopt 55
ERROR Connection timed out: select
Attemopt 56
ERROR Connection timed out: select
Attemopt 57
ERROR Connection timed out: select
Attemopt 58
ERROR Connection timed out: select
Attemopt 59
ERROR Connection timed out: select
Attemopt 60
SUCCESS: read 1 of elements:
Attemopt 61
SUCCESS: read 1 of elements:
Attemopt 62
SUCCESS: read 1 of elements:
Attemopt 63
SUCCESS: read 1 of elements:
Attemopt 64
SUCCESS: read 1 of elements:
Attemopt 65
SUCCESS: read 1 of elements:
Attemopt 66
SUCCESS: read 1 of elements:
Attemopt 67
SUCCESS: read 1 of elements:
Attemopt 68
SUCCESS: read 1 of elements:
Attemopt 69
SUCCESS: read 1 of elements:
Attemopt 70
SUCCESS: read 1 of elements:
Attemopt 71
ERROR Connection timed out: select
Attemopt 72
ERROR Connection timed out: select
Attemopt 73
ERROR Connection timed out: select
Attemopt 74
ERROR Connection timed out: select
Attemopt 75
ERROR Connection timed out: select
Attemopt 76
ERROR Connection timed out: select
Attemopt 77
ERROR Connection timed out: select
Attemopt 78
ERROR Connection timed out: select
Attemopt 79
ERROR Connection timed out: select
Attemopt 80
ERROR Connection timed out: select
Attemopt 81
ERROR Connection timed out: select
Attemopt 82
SUCCESS: read 1 of elements:
Attemopt 83
SUCCESS: read 1 of elements:
Attemopt 84
SUCCESS: read 1 of elements:
Attemopt 85
SUCCESS: read 1 of elements:
Attemopt 86
SUCCESS: read 1 of elements:
Attemopt 87
SUCCESS: read 1 of elements:
Attemopt 88
SUCCESS: read 1 of elements:
Attemopt 89
SUCCESS: read 1 of elements:
Attemopt 90
SUCCESS: read 1 of elements:
Attemopt 91
SUCCESS: read 1 of elements:
Attemopt 92
SUCCESS: read 1 of elements:
Attemopt 93
SUCCESS: read 1 of elements:
Attemopt 94
SUCCESS: read 1 of elements:
Attemopt 95
SUCCESS: read 1 of elements:
Attemopt 96
SUCCESS: read 1 of elements:
Attemopt 97
SUCCESS: read 1 of elements:
Attemopt 98
SUCCESS: read 1 of elements:
Attemopt 99
SUCCESS: read 1 of elements:
Attemopt 100
SUCCESS: read 1 of elements:
Attemopt 101
SUCCESS: read 1 of elements:
Attemopt 102
SUCCESS: read 1 of elements:
Attemopt 103
SUCCESS: read 1 of elements:
Attemopt 104
SUCCESS: read 1 of elements:
Attemopt 105
SUCCESS: read 1 of elements:
Attemopt 106
SUCCESS: read 1 of elements:
Attemopt 107
SUCCESS: read 1 of elements:
Attemopt 108
SUCCESS: read 1 of elements:
Attemopt 109
SUCCESS: read 1 of elements:
Attemopt 110
SUCCESS: read 1 of elements:
Attemopt 111
SUCCESS: read 1 of elements:
Attemopt 112
SUCCESS: read 1 of elements:
Attemopt 113
SUCCESS: read 1 of elements:
Attemopt 114
SUCCESS: read 1 of elements:
Attemopt 115
SUCCESS: read 1 of elements:
Attemopt 116
SUCCESS: read 1 of elements:
Attemopt 117
SUCCESS: read 1 of elements:
Attemopt 118
SUCCESS: read 1 of elements:
Attemopt 119
SUCCESS: read 1 of elements:
Attemopt 120
SUCCESS: read 1 of elements:
Attemopt 121
SUCCESS: read 1 of elements:
Attemopt 122
SUCCESS: read 1 of elements:
Attemopt 123
SUCCESS: read 1 of elements:
Attemopt 124
SUCCESS: read 1 of elements:
Attemopt 125
SUCCESS: read 1 of elements:
Attemopt 126
SUCCESS: read 1 of elements:
Attemopt 127
SUCCESS: read 1 of elements:
Attemopt 128
SUCCESS: read 1 of elements:
Attemopt 129
SUCCESS: read 1 of elements:
Attemopt 130
SUCCESS: read 1 of elements:
Attemopt 131
SUCCESS: read 1 of elements:
Attemopt 132
SUCCESS: read 1 of elements:
Attemopt 133
SUCCESS: read 1 of elements:
Attemopt 134
SUCCESS: read 1 of elements:
Attemopt 135
SUCCESS: read 1 of elements:
Attemopt 136
SUCCESS: read 1 of elements:
Attemopt 137
SUCCESS: read 1 of elements:
Attemopt 138
SUCCESS: read 1 of elements:
Attemopt 139
SUCCESS: read 1 of elements:
Attemopt 140
SUCCESS: read 1 of elements:
Attemopt 141
SUCCESS: read 1 of elements:
Attemopt 142
SUCCESS: read 1 of elements:
Attemopt 143
SUCCESS: read 1 of elements:
Attemopt 144
SUCCESS: read 1 of elements:
Attemopt 145
SUCCESS: read 1 of elements:
Attemopt 146
SUCCESS: read 1 of elements:
Attemopt 147
SUCCESS: read 1 of elements:
Attemopt 148
SUCCESS: read 1 of elements:
Attemopt 149
SUCCESS: read 1 of elements:
Attemopt 150
SUCCESS: read 1 of elements:
Attemopt 151
SUCCESS: read 1 of elements:
Attemopt 152
SUCCESS: read 1 of elements:
Attemopt 153
SUCCESS: read 1 of elements:
Attemopt 154
SUCCESS: read 1 of elements:
Attemopt 155
SUCCESS: read 1 of elements:
Attemopt 156
SUCCESS: read 1 of elements:
Attemopt 157
SUCCESS: read 1 of elements:
Attemopt 158
SUCCESS: read 1 of elements:
Attemopt 159
SUCCESS: read 1 of elements:
Attemopt 160
SUCCESS: read 1 of elements:
Attemopt 161
SUCCESS: read 1 of elements:
Attemopt 162
SUCCESS: read 1 of elements:
Attemopt 163
SUCCESS: read 1 of elements:
Attemopt 164
SUCCESS: read 1 of elements:
Attemopt 165
SUCCESS: read 1 of elements:
Attemopt 166
SUCCESS: read 1 of elements:
Attemopt 167
SUCCESS: read 1 of elements:
Attemopt 168
SUCCESS: read 1 of elements:
Attemopt 169
SUCCESS: read 1 of elements:
Attemopt 170
SUCCESS: read 1 of elements:
Attemopt 171
SUCCESS: read 1 of elements:
Attemopt 172
SUCCESS: read 1 of elements:
Attemopt 173
SUCCESS: read 1 of elements:
Attemopt 174
SUCCESS: read 1 of elements:
Attemopt 175
SUCCESS: read 1 of elements:
Attemopt 176
SUCCESS: read 1 of elements:
Attemopt 177
SUCCESS: read 1 of elements:
Attemopt 178
SUCCESS: read 1 of elements:
Attemopt 179
SUCCESS: read 1 of elements:
Attemopt 180
SUCCESS: read 1 of elements:
Attemopt 181
SUCCESS: read 1 of elements:
Attemopt 182
SUCCESS: read 1 of elements:
Attemopt 183
SUCCESS: read 1 of elements:
Attemopt 184
SUCCESS: read 1 of elements:
Attemopt 185
SUCCESS: read 1 of elements:
Attemopt 186
SUCCESS: read 1 of elements:
Attemopt 187
SUCCESS: read 1 of elements:
Attemopt 188
SUCCESS: read 1 of elements:
Attemopt 189
SUCCESS: read 1 of elements:
Attemopt 190
SUCCESS: read 1 of elements:
Attemopt 191
SUCCESS: read 1 of elements:
Attemopt 192
SUCCESS: read 1 of elements:
Attemopt 193
SUCCESS: read 1 of elements:
Attemopt 194
SUCCESS: read 1 of elements:
Attemopt 195
SUCCESS: read 1 of elements:
Attemopt 196
SUCCESS: read 1 of elements:
Attemopt 197
SUCCESS: read 1 of elements:
Attemopt 198
SUCCESS: read 1 of elements:
Attemopt 199
SUCCESS: read 1 of elements:
Attemopt 200
SUCCESS: read 1 of elements:

Отлично. Ну, если wb-mqtt-serial точно был остановлен то видно что устройство не отвечает.
Таймаут ответа по умолчанию - 500мс, можно, конечно добавить -o 700 и проверить гипотезу что отвечает позже. Но судя по тому что ответы то есть то нет - больше похоже на неконтакт, например неконтакт Gnd проводника шины.
Саму шину проверить просто - отключить от контроллера и измерить совпротивление терминатора на дальнем конце.

GND контроллера и метеостанции соединены, -o 700 и даже -o 800 не помог

root@wirenboard-A2Q7PSNZ:~# systemctl status wb-mqtt-serial
● wb-mqtt-serial.service - MQTT Driver for serial devices
Loaded: loaded (/lib/systemd/system/wb-mqtt-serial.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2025-11-07 08:38:38 UTC; 27min ago
Process: 8905 ExecStartPre=/usr/lib/wb-mqtt-serial/generate-system-config.sh (code=exited, status=0/SUCCESS)
Process: 8906 ExecStart=/usr/bin/wb-mqtt-serial (code=exited, status=0/SUCCESS)
Main PID: 8906 (code=exited, status=0/SUCCESS)
CPU: 4.731s

Nov 07 08:38:09 wirenboard-A2Q7PSNZ wb-mqtt-serial[8906]: WARNING: [modbus] failed to read 4 input(s) @ 4 of device modbus-tcp:162: Serial protocol error: request timed out
Nov 07 08:38:13 wirenboard-A2Q7PSNZ wb-mqtt-serial[8906]: WARNING: [modbus] failed to read 4 input(s) @ 4 of device modbus-tcp:162: Serial protocol error: request timed out
Nov 07 08:38:13 wirenboard-A2Q7PSNZ wb-mqtt-serial[8906]: WARNING: [modbus] failed to read 4 input(s) @ 4 of device modbus-tcp:162: Serial protocol error: request timed out
Nov 07 08:38:14 wirenboard-A2Q7PSNZ wb-mqtt-serial[8906]: WARNING: </dev/ttyRS485-2 19200 8 N 1>: closed due to repetitive errors
Nov 07 08:38:34 wirenboard-A2Q7PSNZ wb-mqtt-serial[8906]: WARNING: </dev/ttyRS485-2 19200 8 N 1>: closed due to repetitive errors
Nov 07 08:38:36 wirenboard-A2Q7PSNZ wb-mqtt-serial[8906]: INFO: [signal handling] Received signal 15
Nov 07 08:38:36 wirenboard-A2Q7PSNZ systemd[1]: Stopping MQTT Driver for serial devices…
Nov 07 08:38:38 wirenboard-A2Q7PSNZ systemd[1]: wb-mqtt-serial.service: Succeeded.
Nov 07 08:38:38 wirenboard-A2Q7PSNZ systemd[1]: Stopped MQTT Driver for serial devices.
Nov 07 08:38:38 wirenboard-A2Q7PSNZ systemd[1]: wb-mqtt-serial.service: Consumed 4.731s CPU time.

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

Другой порт ситуацию не меняет.
С компьютера опросить нет возможности.

В таком случае проверьте саму шину, подключив вместо самого устройства какое-то заведомо работоспособное (проверенное) устройство.
Если с ним будет работать без ошибок - тогда подключите это устройство вместе с метеостанцией.
То есть если одно устройство стоящее на той же шине будет опрашиваться без ошибок а другое - с ошибками то дело в устройстве.

Немного вызывает подозрение, что изменение поведения устройства чётко совпало с обновлением ПО контроллера. Не было ли как-то изменений в управлении ModBus-портами в 2022-2023 годах в ПО контроллера?

Обновление проводилось apt update && apt upgrade

Версий wb-mqtt-serial сменилось довольно много, носам протокол modbus никак не менялся. Но совершенно точно ничего не менялось в modbus_client. Он использует порт напрямую и никак не зависит от остального ПО.
Для уверенности что порт именно свободен, не занят ничем посторонним можно использовать fuser.

Добрый день. Получилось ли проверить?