Странная работа wb-mqtt-serial при включенном периоде опроса

Wirenboard release wb-2207 (as testing)
Batch No: 7.2.1C 642
wb-mqtt-serial 2.68.6-wb105

Когда у всех каналов стоит период опроса в порядке очереди, все работает штатно, реакция на нажатие кнопки мгновенная, лампочки мигают постоянно.

Если задаю фиксированный период опроса для одного канала 1000мс, то все начинает работать с большой задержкой, лампочки практически перестают мигать.

Запустил wb-mqtt-serial в дебаг режиме:

<7>DEBUG: [port] ReadFrame: c9 04 04 00 00 ff 40 f2 48                               
<7>DEBUG: [register] new val for <modbus:201:input: 104>: ff40                       
<7>DEBUG: [serial port driver] channel 'Uptime (s)' (MQTT control 'Uptime') of device 'wb-mr6c_201' <-- 65344, error: ""
<7>DEBUG: [port] Sleep 8000 us                                                       
<7>DEBUG: [port] Sleep 0 us                                                          
<7>DEBUG: [port] Write: cb 04 00 27 00 01 90 6b                                      
<7>DEBUG: [port] Sleep 1000 us                                                       
<7>DEBUG: [port] ReadFrame: cb 04 02 00 00 21 20
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: cb 01 00 00 00 06 ad a2
<7>DEBUG: [port] Sleep 1000 us
<7>DEBUG: [port] ReadFrame: cb 01 01 00 6e 50         
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86688853: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86688954: Wait until 86689819                                   
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689054: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689154: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689254: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689354: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689454: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689555: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689655: Wait until 86689819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689755: Wait until 86689819
<7>DEBUG: [port] Sleep 8000 us
<7>DEBUG: [port] Sleep 0 us
<7>DEBUG: [port] Write: c9 04 00 68 00 02 e0 5f
<7>DEBUG: [port] Sleep 1000 us
<7>DEBUG: [port] ReadFrame: c9 04 04 00 00 ff 41 33 88
<7>DEBUG: [register] new val for <modbus:201:input: 104>: ff41
<7>DEBUG: [serial port driver] channel 'Uptime (s)' (MQTT control 'Uptime') of device 'wb-mr6c_201' <-- 65345, error: ""
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689825: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86689925: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690026: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690126: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690226: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690326: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690426: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690526: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690627: Wait until 86690819
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>86690727: Wait until 86690819

Постоянно появляются строки с “Wait until” и опрос не идет.
Ожидаемое поведение, что только этот канал опрашиваться будет раз в секунду, а остальные как прежде.

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

Здравствуйте!
Довольно странное поведение. Пока не могу воспроизвести данное поведение.

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в инструкции.

Также предлагаю сконфигурировать только один модуль с измененными периодом опроса канала в конфигурации устройств. Остальные для теста удалить/отключить. Проблема повторяется?

Удалил из конфигурации все устройства, кроме двух MR6C и MDM3.
Задержка присутствует, но она меньше т.к. меньше устройств необходимо опрашивать. В дебаг режиме также преобладает ожидание “Wait until”.

Время работы с момента включения обновляется четко раз в секунду, а вот состояние канала с задержкой до 2-3 секунд выходит. Переключаю физической кнопкой.

diag_output_ACZVEF3I_2022-09-05-17.12.49.zip (122.7 КБ)

Да, получилось воспроизвести похожее поведение на wb-2207 (stable): добавляю модуль WB-MR6C, все настройки по умолчанию - опрос нормальный; у любого канала выставляю желаемый опрос 5000 мс - опрос становится очень редким. Сообщу разработчикам.

Сейчас в драйвере опроса по RS-485 используется новый планировщик. Задание желаемого периода опроса предполагалось для более частого опроса приоритетных каналов (небольшой период опроса), также на работу планировщика влияет заданное время ответа от устройств (в шаблонах или конфигурации).
В вашей конфигурации должно быть достаточно убрать принудительно заданный таймаут ответа в настройках порта RS485-2:

"response_timeout_ms" : 2000,

В веб-интерфейсе это можно сделать так:

Снимите галочку, параметр Response timeout пропадет, и сохраните конфигурацию. Опрос должен работать нормально.

А как выставить более редкий опрос, например мне не нужно измерять температуру каждую секунду, хочу раз в 10 секунд, чтобы история не забивалась слишком частыми значениями, некоторые параметры вообще чаще чем раз в минуту нет смысла измерять и забивать историю?

Я планировал для каналов, где необходима быстрая реакция (счетчики нажатий) ставить 100мс и при этом освободить шину от лишних запросов, выставив опрос менее приоритетных каналов на минимум, например для меня нет смысла освещенность/со2 чаще чем раз в минуту опрашивать.

Таймаут выставлен специально, когда стоял дефолтный в 500мс, периодически в логах появлялись предупреждения:

Sep 07 08:44:13 wb wb-mqtt-serial[16418]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 07 09:14:22 wb wb-mqtt-serial[16418]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:201: Serial protocol error: request timed out
Sep 07 13:23:24 wb wb-mqtt-serial[16418]: WARNING: [modbus] failed to read 6 coil(s) @ 0 of device modbus:201: Serial protocol error: request timed out

Проверил, поставил дефолтный таймаут в 500мс, и опрос одного канала 5000мс: лучше не стало, также все работает очень медленно.

Может надо пересмотреть логику работы планировщика, чтобы учесть опрос медленных значений.

Нужно не 500 мс установить, а вообще этот параметр убрать из конфигурации для порта в веб-интерфейсе. Соответственно из файла конфигурации он тоже должен пропасть. Должно быть так:

У меня такая же боль, решения нет. см. Новая логика параметров опроса wb-mqtt-serial в wb-2204

Вроде помогло, но теперь в логах так:

Sep 07 18:34:16 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 07 18:35:55 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 07 18:47:29 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 07 18:51:25 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 07 18:54:22 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 07 18:58:35 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 07 19:15:33 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 07 19:23:22 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 07 19:27:15 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 07 19:28:14 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 07 19:41:40 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 07 19:51:48 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 07 20:08:59 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 07 20:09:45 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 07 20:17:59 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 07 20:18:52 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out

Шина витой парой, не больше метра, терминатор на конце стоит.

Что с этим делать?:

Sep 08 08:23:45 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 08:24:40 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 08:24:58 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 08:31:12 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 08:32:55 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 08:35:25 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 08:43:18 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 08:44:11 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 08:44:19 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 08:52:53 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 08:59:04 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 09:05:33 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 09:06:07 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 09:14:14 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 09:27:00 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 09:27:25 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 09:35:50 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 09:39:22 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 09:42:20 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 09:44:05 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 09:50:06 wb wb-mqtt-serial[27570]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out

Из-за этих ошибок каналы в HomeAssistant “мигают”.
image

Не совсем понятно. Вы убрали таймаут из настроек и все устройства на порту перестали опрашиваться? А если оставить одно устройство на порту? Какой теперь файл /etc/wb-mqtt-serial.conf

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

Sep 08 16:27:16 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 16:32:24 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 16:37:53 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 16:38:21 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 17:00:45 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 17:06:29 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 17:08:39 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 17:16:03 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 17:17:39 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 17:18:37 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 17:21:16 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 17:23:21 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 17:32:48 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 17:33:40 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 17:39:28 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 17:47:53 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 17:54:38 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 17:57:20 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 18:02:00 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 18:04:34 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 18:06:48 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 18:06:57 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 18:10:31 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 18:10:44 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 18:16:41 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 08 18:21:35 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out

Устройства 201 202 203 это MR6C , на порту еще 9 устройств. Если таймаут вернуть то ошибок нету.
wb-mqtt-serial.conf (10.6 КБ)

Возможно, это как-то тоже связано с работой планировщика. Шаблоны стандартные не менялись? Попробую воспроизвести…
А если все каналы входов включить для чтения (как по умолчанию в шаблоне) тоже ошибки? Попробуйте еще установить таймаут только для этих модулей реле, например, 200 мс.

Все стандартное, недавно получил WB7 2GB взамен WB7 1GB. Только установил Docker для HA. Если все каналы включить, то тоже таймауты на чтение но возможно на других регистрах.

Если ставлю response_timeout_ms = 2000 то ошибки пропадают.

Да тоже ошибки:

Sep 09 11:50:15 wb wb-mqtt-serial[18065]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 09 11:59:41 wb wb-mqtt-serial[18065]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 09 12:01:22 wb wb-mqtt-serial[18065]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 09 12:03:48 wb wb-mqtt-serial[18065]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 09 12:11:18 wb wb-mqtt-serial[18065]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 09 12:13:02 wb wb-mqtt-serial[18065]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 09 12:13:56 wb wb-mqtt-serial[18065]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out

Сейчас попробую таймаут у модулей поставить 200мс.
После установки таймаута, опрос всей шины замедлился как в первом сообщении.
wb-mqtt-serial.conf (8.8 КБ)

Зависает в Wait until, стоит опрос канала 60секунд:

<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412192: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412292: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412392: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412492: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412592: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412692: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412792: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412893: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425412993: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413093: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413193: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413293: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413393: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413494: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413594: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413694: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413794: Wait until 425469474
<7>DEBUG: [serial client] </dev/ttyRS485-2 115200 8 N 2>425413894: Wait until 425469474

Убрал таймаут у модуля (201), у которого стоит опрос канала раз в 60 секунд, шина также “зависает” wb-mqtt-serial.conf (8.7 КБ)

Получается сочетание response_timeout_ms (на порту или у устройства) с read_period_ms приводит к “зависанию” в режиме Wait until.

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

Sep 08 16:27:16 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 08 16:32:24 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:202: Serial protocol error: request timed out
Sep 08 16:37:53 wb wb-mqtt-serial[31854]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out

В целом редкие ошибки на шине, после того, как вы убрали таймаут у порта, не критичны. Хотя даже такие ошибки у меня не воспроизводятся с теми же версиями ПО. Тестирую на четырех модулях реле. Мой файл конфигурации wb-mqtt-serial.conf (2.8 KB)

Сейчас в шаблонах модулей реле установлен таймаут ответа 1 мс, который и используется по умолчанию при опросе:

"response_timeout_ms": 1,

Как вариант еще попробовать задать таймаут для модулей реле немного больше, например, 3 мс или 5 мс в веб-интерфейсе.


При этом пустых ожиданий в логах у меня не появляется.

Выставил response_timeout_ms = 5мс и read_period_ms для одного канала, шина работает как и должна, задержка не заметна.

Но ошибки таймаута иногда появляются:

Sep 09 13:37:15 wb wb-mqtt-serial[2481]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out
Sep 09 13:44:40 wb wb-mqtt-serial[2481]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:203: Serial protocol error: request timed out
Sep 09 13:49:48 wb wb-mqtt-serial[2481]: WARNING: [modbus] failed to read 1 input(s) @ 39 of device modbus:201: Serial protocol error: request timed out

Это может быть из-за плохой шины? Хотя внешне все хорошо, витая пара обжата в наконечники, терминатор стоит. Что улучшать непонятно :frowning:

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

Программисты постараются исправить описанную вами проблему с задержкой опроса при задании таймаута.

До 20 раз в час таймаут вылетает, не знаю от чего зависит. Конфигурация то у меня простейшая, тут что-то с временем ответа и почему то таймаут вылетает только на MR6C реле, на шине еще 3хMR6CU, 3хMDM3, 3хMRGBW и ошибок опроса у них не наблюдается.

Какие версии прошивок у модулей реле? Можно попробовать обновить их.
Также можно попробовать задать параметр Guard interval (us) = 5000 для порта.

Прошивки модулей:

2022-09-12 16:42:14,475 Update skipped: 2.5.1 -> 2.5.1 (WB-MDM3 (190, /dev/ttyRS485-2))
2022-09-12 16:42:15,860 Update skipped: 2.5.1 -> 2.5.1 (WB-MDM3 (181, /dev/ttyRS485-2))
2022-09-12 16:42:27,326 Update skipped: 2.5.1 -> 2.5.1 (WB-MDM3 (195, /dev/ttyRS485-2))
2022-09-12 16:42:17,239 Update skipped: 3.2.2 -> 3.2.2 (WB-MRGBW-D_fw3_nosubdev (19, /dev/ttyRS485-2))
2022-09-12 16:42:18,782 Update skipped: 3.2.2 -> 3.2.2 (WB-MRGBW-D_fw3_nosubdev (23, /dev/ttyRS485-2))
2022-09-12 16:42:24,515 Update skipped: 3.2.2 -> 3.2.2 (WB-MRGBW-D_fw3_nosubdev (205, /dev/ttyRS485-2))
2022-09-12 16:42:21,525 Update skipped: 1.18.5 -> 1.18.5 (WB-MR6C (202, /dev/ttyRS485-2))
2022-09-12 16:42:22,963 Update skipped: 1.18.5 -> 1.18.5 (WB-MR6C (201, /dev/ttyRS485-2))
2022-09-12 16:42:30,177 Update skipped: 1.18.5 -> 1.18.5 (WB-MR6C (203, /dev/ttyRS485-2))
2022-09-12 16:42:20,154 Update skipped: 1.18.5 -> 1.18.5 (WB-MR6CU (116, /dev/ttyRS485-2))
2022-09-12 16:42:28,723 Update skipped: 1.18.5 -> 1.18.5 (WB-MR6CU (115, /dev/ttyRS485-2))
2022-09-12 16:42:25,884 Update skipped: 1.18.5 -> 1.18.5 (WB-MR6CU (68, /dev/ttyRS485-2))