Прошу помочь с написанием шаблона

есть такой вот датчик
датчик давления с али

отзывается на команды:
modbus_client --debug -mrtu -pnone -s1 -b9600 -o1000 /dev/ttyRS485-1 -a1 -t0x03 -r0x1
modbus_client --debug -mrtu -pnone -s1 -b9600 -o1000 /dev/ttyRS485-1 -a1 -t0x03 -r0xa
modbus_client --debug -mrtu -pnone -s1 -b9600 -o1000 /dev/ttyRS485-1 -a1 -t0x03 -r0xb
( но с параметром -t0x04 не работает)

нужные регистры:
0x1 - Температура
0xA - давление, всегда 1, наверное старший байт (перевод с китайского: Большое высокое давление воздуха (ед. изм. 0,01 мбар))
0xB - реальное давление, не пойму в чем измеряется, наверное младший байт (перевод с китайского: Большое низкое давление воздуха (ед. изм. 0,01 мбар))

вот какой шаблон написал:

{
 "device_type": "ALI-PRESSURE",
 "device": {
  "name": "ALI-PRESSURE",
  "id": "ALI-PRESSURE",
  "max_read_registers": 60,
  "channels": [
   {
    "name": "PRESSURE",
    "reg_type": "holding",
    "address": "0xb",
    "type": "atmospheric_pressure",
    "format": "u32",
    "scale": 0.01,
    "round_to": 0.01
   },
   {
    "name": "Temperature",
    "reg_type": "holding",
    "address": "0x1",
    "type": "temperature",
    "format": "u16",
    "scale": 0.1,
    "round_to": 0.01
   }
  ]
 }
}

с типом input не работало (а нужен input - эти регистры только для чтения), с holding работает, но странно - только если щелкнуть мышкой в поле элемента в devices и изменить его значение, то оно сразу скидывается на реальное значение и топик начинает работать, при этом второй элемент отключается (и в чем измеряет давление я так и не понял)
и почему то подпись давления наползает на другой объект
alipress


в общем где-то я промахнулся, направьте на путь истинный

Если с помощью modbus_client читается командой 0x3 - то только holding. Независимо - для чтения или записи он.

Лучше попробовать поставиь 1

Ну и в шаблоне надо добавить

"response_timeout_ms": 100,
 "frame_timeout_ms": 150,

например.
А если debug включить для wb-mqtt-serial - что за ошибки?

Ну и неправильтно, если выбираем u32 - то указываем адресом “address”: “0xa” наче будут читаться два регистра начиная с 0xb

{
 "device_type": "ALI-PRESSURE",
 "device": {
  "name": "ALI-PRESSURE",
  "id": "ALI-PRESSURE",
  "max_read_registers": 1,
  "response_timeout_ms": 100,
  "frame_timeout_ms": 150,
  "channels": [
   {
    "name": "PRESSURE",
    "reg_type": "holding",
    "address": "0xb",
    "type": "atmospheric_pressure",
    "format": "u16",
    "scale": 0.01,
    "round_to": 0.01
   },
   {
    "name": "Temperature",
    "reg_type": "holding",
    "address": "0x1",
    "type": "temperature",
    "format": "u16",
    "scale": 0.1,
    "round_to": 0.01
   }
  ]
 }
}

изменил u32 на u16, стало показывать те цифры, что считываются при помощи modbus_client
осталась проблема, что показывает только одно значение (или температуру, или давление), второе красным пока не щелкнешь по нему и не изменишь значение
тогда оно начинает показывать, но второе при этом тут же становится красным
я не понимаю, почему регистр работает с типом holding, а если поставить input - то не работает
это ведь данные только для чтения
в итоге в devices поле с редактированием, хотя оно там не нужно
в логах:
wb-mqtt-serial[29916]: WARNING: [modbus] failed to read 1 holding(s) @ 1 of device modbus:1: Serial protocol error: request timed out
при включении галки “включить отладку” в веб интерфейсе никаких ошибок не выдает
response_timeout_ms выставлял до 2000, результат тот же

надо поменять как

 {
    "name": "PRESSURE",
    "reg_type": "holding",
    "address": "0xa",
    "type": "atmospheric_pressure",
    "format": "u32",
    "scale": 0.01,
    "round_to": 0.01
   },

Непонятно, включите Debug и покажите лог в момент опроса, попробуем разобраться.

Разработчики устройства так написали. Собственнно holding - это просто регистр который читается командой 0x3

Про Debug - именно все обращения к устройству с момента перезапуска wb-mqtt-serial отфильтруйте, интересно, это с первого же чтения ошибку дает или нет.

спасибо!
после установки u32 из регистра 0xa, стало показывать реальные значения

вот запуск с дебагом

апр 20 11:18:49 wirenboard-A7YUIFGN systemd[1]: Started MQTT Driver for serial devices.
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: INFO: [serial config] Ali-press override property "name"
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: INFO: [mqtt] connection estabilished with code "0" <success>
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: INFO: [mqtt] subscription succeeded (message id 1)
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: INFO: [mqtt] subscription succeeded (message id 2)
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial port driver] setting up devices at </dev/ttyRS485-1 9600 8 N 1>
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial client] CreateDevice: ALI-PRESSURE_1 (ALI-PRESSURE) @ 1 -- protocol: modbus
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial client] AddRegister: 0x755cd018
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial client] AddRegister: 0x755ce468
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: WARNING: [serial] no devices defined for port </dev/ttyRS485-2 9600 8 N 2>. Skipping.
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] Adding range: 1 holding(s) @ 1 of device modbus:1
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] Adding range: 1 holding(s) @ 11 of device modbus:1
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: INFO: [mqtt] subscription succeeded (message id 11)
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: INFO: [mqtt] subscription succeeded (message id 17)
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 250000 us
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] ReadFrame: 01 03 02 00 d5 79 db
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [register handler] new val for <modbus:1:holding: 1>: d5
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial port driver] register value change: <modbus:1:holding: 1> <- 21.3
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 21.3
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 11 of device modbus:1
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 0b 00 01 f5 c8
апр 20 11:18:51 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: WARNING: [modbus] failed to read 1 holding(s) @ 11 of device modbus:1: Serial protocol error: request timed out
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: INFO: [serial client] device modbus:1 is connected
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] ReadFrame: 01 03 02 00 d5 79 db
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 21.3
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 11 of device modbus:1
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 0b 00 01 f5 c8
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: WARNING: [modbus] failed to read 1 holding(s) @ 11 of device modbus:1: Serial protocol error: request timed out
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] ReadFrame: 01 03 02 00 d5 79 db
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 21.3
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 11 of device modbus:1
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 0b 00 01 f5 c8
апр 20 11:18:52 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: WARNING: [modbus] failed to read 1 holding(s) @ 11 of device modbus:1: Serial protocol error: request timed out
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] ReadFrame: 01 03 02 00 d5 79 db
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 21.3
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [modbus] read 1 holding(s) @ 11 of device modbus:1
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 0 us
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Write: 01 03 00 0b 00 01 f5 c8
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: DEBUG: [port] Sleep 9000 us
апр 20 11:18:53 wirenboard-A7YUIFGN wb-mqtt-serial[18296]: WARNING: [modbus] failed to read 1 holding(s) @ 11 of device modbus:1: Serial protocol error: request timed out

а это момент вот такого “переключения”
gluk

апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: WARNING: [modbus] failed to read 1 holding(s) @ 1 of device modbus:1: Serial protocol error: request timed out
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] ReadFrame: 01 03 04 00 01 85 3f 89 73
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [serial port driver] channel 'PRESSURE' of device 'ALI-PRESSURE_1' <-- 996.47
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: WARNING: [modbus] failed to read 1 holding(s) @ 1 of device modbus:1: Serial protocol error: request timed out
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [serial port driver] setting device register: <modbus:1:holding: 1> <- 23
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] ReadFrame: 01 03 04 00 01 85 40 c8 93
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [register handler] new val for <modbus:1:holding: 10>: 18540
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [serial port driver] register value change: <modbus:1:holding: 10> <- 996.48
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [serial port driver] channel 'PRESSURE' of device 'ALI-PRESSURE_1' <-- 996.48
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: [57B blob data]
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 06 00 01 00 e6 59 80
апр 20 12:14:25 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: WARNING: [register handler] Register <modbus:1:holding: 1> TRegisterHandler::Flush() failed: Serial protocol error: request timed out
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] ReadFrame: 01 03 02 00 df f9 dc
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [register handler] new val for <modbus:1:holding: 1>: df
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [serial port driver] register value change: <modbus:1:holding: 1> <- 22.3
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 22.3
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: WARNING: [modbus] failed to read 2 holding(s) @ 10 of device modbus:1: Serial protocol error: request timed out
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] ReadFrame: 01 03 02 00 df f9 dc
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 22.3
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 0 us
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
апр 20 12:14:26 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [port] Sleep 9000 us
апр 20 12:14:27 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: WARNING: [modbus] failed to read 2 holding(s) @ 10 of device modbus:1: Serial protocol error: request timed out
апр 20 12:14:27 wirenboard-A7YUIFGN wb-mqtt-serial[22273]: DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1

вот еще логи

root@wirenboard-A7YUIFGN:~# wb-mqtt-serial -c /etc/wb-mqtt-serial.conf -d2
INFO: [serial config] Ali-press override property "name"
DEBUG: [storage] Open BDB storage at '/var/lib/wb-mqtt-serial/libwbmqtt.db'
DEBUG: [backend] emit StartEvent{}
DEBUG: [driver] Receive event StartEvent{}
INFO: [mqtt] connection estabilished with code "0" <success>
DEBUG: [mqtt] Publish '/wbretainhack/6f489d1cddd7dfefe5534498e164ffa1' payload: '2'
INFO: [mqtt] subscription succeeded (message id 1)
INFO: [mqtt] subscription succeeded (message id 2)
DEBUG: [backend] HandleMetaDriver topic: "/devices/wbrules/meta/driver" payload: "wb-rules"
DEBUG: [backend] HandleMetaDriver topic: "/devices/buzzer/meta/driver" payload: "wb-rules"
DEBUG: [backend] HandleMetaDriver topic: "/devices/network/meta/driver" payload: "wb-rules"
DEBUG: [backend] HandleMetaDriver topic: "/devices/power_status/meta/driver" payload: "wb-rules"
DEBUG: [backend] HandleMetaDriver topic: "/devices/hwmon/meta/driver" payload: "wb-rules"
DEBUG: [backend] HandleMetaDriver topic: "/devices/system/meta/driver" payload: "wb-rules"
DEBUG: [backend] HandleMetaDriver topic: "/devices/alarms/meta/driver" payload: "wb-rules"
DEBUG: [backend] HandleMetaDriver topic: "/devices/wb-adc/meta/driver" payload: "wb-adc"
DEBUG: [backend] HandleMetaDriver topic: "/devices/wb-gpio/meta/driver" payload: "wb-gpio"
DEBUG: [mqtt] /wbretainhack/6f489d1cddd7dfefe5534498e164ffa1 payload: 2
DEBUG: [backend] emit ReadyEvent{}
DEBUG: [driver] Receive event ReadyEvent{}
DEBUG: [tx 0XA5E00730] Open
DEBUG: [tx 0XA5E00730] Close
DEBUG: [serial port driver] setting up devices at </dev/ttyRS485-1 9600 8 N 1>
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [driver] waiting for transaction to complete
DEBUG: [tx 0X75241490] Open
DEBUG: [serial client] CreateDevice: ALI-PRESSURE_1 (ALI-PRESSURE) @ 1 -- protocol: modbus
DEBUG: [backend] create new local device ALI-PRESSURE_1
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/meta/driver' payload: 'wb-modbus'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/meta/name' payload: 'Ali-press'
DEBUG: [storage] Get key 'ALI-PRESSURE_1/PRESSURE' with value: '996.92'
DEBUG: [backend] create control PRESSURE for device ALI-PRESSURE_1
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/error' payload: ''
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/order' payload: '1'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/readonly' payload: '0'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/type' payload: 'atmospheric_pressure'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE' payload: '996.92'
DEBUG: [mqtt] Subscribe '/devices/ALI-PRESSURE_1/controls/PRESSURE/on'
DEBUG: [mqtt] Unsubscribe '/wbretainhack/6f489d1cddd7dfefe5534498e164ffa1'
DEBUG: [serial client] AddRegister: 0x75242330
DEBUG: [storage] Get key 'ALI-PRESSURE_1/Temperature' with value: '21.9'
DEBUG: [backend] create control Temperature for device ALI-PRESSURE_1
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/error' payload: ''
DEBUG: [backend] HandleMetaDriver topic: "/devices/ALI-PRESSURE_1/meta/driver" payload: "wb-modbus"
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/order' payload: '2'
INFO: [mqtt] subscription succeeded (message id 11)
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/readonly' payload: '0'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/type' payload: 'temperature'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature' payload: '21.9'
DEBUG: [mqtt] Subscribe '/devices/ALI-PRESSURE_1/controls/Temperature/on'
DEBUG: [serial client] AddRegister: 0x752436d0
DEBUG: [tx 0X75241490] Close
WARNING: [serial] no devices defined for port </dev/ttyRS485-2 9600 8 N 2>. Skipping.
DEBUG: [signal handling] Waiting for signals...
DEBUG: [modbus] Adding range: 1 holding(s) @ 1 of device modbus:1
DEBUG: [modbus] Adding range: 2 holding(s) @ 10 of device modbus:1
INFO: [mqtt] subscription succeeded (message id 18)
DEBUG: [port] Sleep 500000 us
DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
DEBUG: [port] Sleep 9000 us
DEBUG: [port] ReadFrame: 01 03 02 00 db f8 1f
DEBUG: [register handler] new val for <modbus:1:holding: 1>: db
DEBUG: [tx 0XA5E00730] Open
DEBUG: [tx 0XA5E00730] Close
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [serial port driver] register value change: <modbus:1:holding: 1> <- 21.9
DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 21.9
DEBUG: [tx 0XA5E00730] Open
DEBUG: [tx 0XA5E00730] Close
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
DEBUG: [port] Sleep 9000 us
WARNING: [modbus] failed to read 2 holding(s) @ 10 of device modbus:1: Serial protocol error: request timed out
DEBUG: [tx 0XA5E00730] Open
DEBUG: [tx 0XA5E00730] Close
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/error' payload: 'r'
DEBUG: [driver] Receive event SyncEvent{}
INFO: [serial client] device modbus:1 is connected
DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
DEBUG: [port] Sleep 9000 us
DEBUG: [port] ReadFrame: 01 03 02 00 db f8 1f
DEBUG: [serial port driver] channel 'Temperature' of device 'ALI-PRESSURE_1' <-- 21.9
DEBUG: [tx 0XA5E00708] Open
DEBUG: [tx 0XA5E00708] Close
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
DEBUG: [port] Sleep 9000 us
DEBUG: [backend] HandleControlOnValue topic: "/devices/ALI-PRESSURE_1/controls/PRESSURE/on" payload: "997"
DEBUG: [backend] emit ControlOnValueEvent{Device:ALI-PRESSURE_1,Control:PRESSURE,Value:997}
DEBUG: [driver] Receive event ControlOnValueEvent{Device:ALI-PRESSURE_1,Control:PRESSURE,Value:997}
DEBUG: [storage] Set key 'ALI-PRESSURE_1/PRESSURE' with value: '997'
DEBUG: [serial port driver] setting device register: <modbus:1:holding: 10> <- 997
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE' payload: '997'
WARNING: [modbus] failed to read 2 holding(s) @ 10 of device modbus:1: Serial protocol error: request timed out
DEBUG: [modbus] write  holding(s) @ 10 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 10 00 0a 00 02 04 00 01 85 74 40 a7
DEBUG: [port] Sleep 14000 us
DEBUG: [port] ReadFrame: 01 90 01 8d c0
WARNING: [register handler] Register <modbus:1:holding: 10> TRegisterHandler::Flush() failed: Serial protocol error: illegal function
DEBUG: [tx 0XA5E00770] Open
DEBUG: [tx 0XA5E00770] Close
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/error' payload: 'rw'
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
DEBUG: [port] Sleep 9000 us
WARNING: [modbus] failed to read 1 holding(s) @ 1 of device modbus:1: Serial protocol error: request timed out
DEBUG: [tx 0XA5E00748] Open
DEBUG: [tx 0XA5E00748] Close
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/error' payload: 'r'
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
DEBUG: [port] Sleep 9000 us996,98
DEBUG: [port] ReadFrame: 01 03 04 00 01 85 82 49 02
DEBUG: [register handler] new val for <modbus:1:holding: 10>: 18582
DEBUG: [tx 0XA5E00770] Open
DEBUG: [tx 0XA5E00770] Close
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/error' payload: 'w'
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [serial port driver] register value change: <modbus:1:holding: 10> <- 997.14
DEBUG: [serial port driver] channel 'PRESSURE' of device 'ALI-PRESSURE_1' <-- 997.14
DEBUG: [tx 0XA5E00748] Open
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE' payload: '997.14'
DEBUG: [storage] Set key 'ALI-PRESSURE_1/PRESSURE' with value: '997.14'
DEBUG: [tx 0XA5E00748] Close
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/error' payload: ''
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [modbus] read 1 holding(s) @ 1 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 01 00 01 d5 ca
DEBUG: [port] Sleep 9000 us
^CINFO: [signal handling] Received signal 2
WARNING: [modbus] failed to read 1 holding(s) @ 1 of device modbus:1: Serial protocol error: request timed out
DEBUG: [modbus] read 2 holding(s) @ 10 of device modbus:1
DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 01 03 00 0a 00 02 e4 09
DEBUG: [port] Sleep 9000 us
DEBUG: [port] ReadFrame: 01 03 04 00 01 85 72 49 46
DEBUG: [register handler] new val for <modbus:1:holding: 10>: 18572
DEBUG: [serial port driver] register value change: <modbus:1:holding: 10> <- 996.98
DEBUG: [serial port driver] channel 'PRESSURE' of device 'ALI-PRESSURE_1' <-- 996.98
DEBUG: [tx 0XA5E00770] Open
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE' payload: '996.98'
DEBUG: [storage] Set key 'ALI-PRESSURE_1/PRESSURE' with value: '996.98'
DEBUG: [tx 0XA5E00770] Close
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [driver] Receive event SyncEvent{}
DEBUG: [driver] waiting for transaction to complete
DEBUG: [tx 0XA5E00828] Open
DEBUG: [mqtt] Unsubscribe '/devices/ALI-PRESSURE_1/controls/Temperature/on'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/controls/Temperature': timed out
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/order' payload: ''
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/readonly' payload: ''
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/type' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/controls/Temperature/meta/type': timed out
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/Temperature/meta/error' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/controls/Temperature/meta/error': timed out
DEBUG: [mqtt] Unsubscribe '/devices/ALI-PRESSURE_1/controls/PRESSURE/on'
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/controls/PRESSURE': timed out
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/order' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/order': timed out
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/readonly' payload: ''
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/type' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/type': timed out
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/error' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/controls/PRESSURE/meta/error': timed out
DEBUG: [serial port driver] device ALI-PRESSURE_1 removed successfully
DEBUG: [tx 0XA5E00828] Close
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/meta/driver' payload: ''
DEBUG: [mqtt] Publish '/devices/ALI-PRESSURE_1/meta/name' payload: ''
WARNING: [backend] Unable to cleanup topic '/devices/ALI-PRESSURE_1/meta/name': timed out
DEBUG: [backend] emit StopEvent{}
DEBUG: [driver] Receive event StopEvent{}
DEBUG: [storage] Close BDB storage

Да, первое же чтение дает ошибку. позвал разработчика.
А попробуйте в цикле запрашивать попеременно регистры? Просто с помощью modbus_client?

Давайте версию:

dpkg -s wb-mqtt-serial

и файл конфига /mnt/data/etc/wb-mqtt-serial.conf

dpkg -s wb-mqtt-serial
Package: wb-mqtt-serial
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 1681
Maintainer: Evgeny Boger <boger@contactless.ru>
Architecture: armhf
Version: 2.7.1
Replaces: wb-homa-modbus (<< 1.14.1)
Depends: libc6 (>= 2.4), libgcc1 (>= 1:3.5), libjsoncpp1 (>= 1.7.4), libstdc++6 (>= 6), libwbmqtt1 (>= 1.1.0), init-system-helpers (>= 1.18~), ucf, bsdutils
Breaks: wb-homa-modbus (<< 1.14.1), wb-mqtt-confed (<< 1.0.2), wb-mqtt-homeui (<< 1.7)
Conffiles:
 /etc/wb-configs.d/11wb-mqtt-serial 25dea7134dcb1cd4ec4e4f33524635e0
 /etc/wb-mqtt-serial.conf.sample c8c1adbf630e6fd7ec871b1b5c4a5e0f
 /etc/init.d/wb-mqtt-serial 1f6938ea476ac51c4b845327d5e40f03 obsolete
Description: Wiren Board Smart Home MQTT serial protocol driver.

попеременно пощелкал модбасом, вылетает ошибка если поставить -o50 через 3-4 раза, если ставить -о200 и больше, ошибка исчезает
выставил таймауты все какие можно

{
 "device_type": "ALI-PRESSURE",
 "device": {
  "name": "ALI-PRESSURE",
  "id": "A{
 "device_type": "ALI-PRESSURE",
 "device": {
  "name": "ALI-PRESSURE",
  "id": "ALI-PRESSURE",
  "max_read_registers": 0,
  "response_timeout_ms": 2500,
  "frame_timeout_ms": 2000,
  "channels": [
   {
    "name": "PRESSURE",
    "reg_type": "holding",
    "address": "0xa",
    "type": "atmospheric_pressure",
    "format": "u32",
    "scale": 0.01,
    "round_to": 0.01
   },
   {
    "name": "Temperature",
    "reg_type": "holding",
    "address": "0x1",
    "type": "temperature",
    "format": "u16",
    "scale": 0.1,
    "round_to": 0.01
   }
  ]
 }
}

все равно таже самая ошибка
“max_read_registers” ставил 1, 5, 10 - тоже самое

  1. Всё таки хочется увидеть ваш файл настроек (/etc/wb-mqtt-serial.conf), а не шаблон устройства.
  2. При последовательном опросе регистров одного устройства, мы шлём запросы сразу после получения ответа. Это не совсем по стандарту, но обычно не вызывает проблем. Ваше устройство, видимо, строго следует стандарту, поэтому добавьте в настройки "guard_interval_us": 4500. Это даст задержку перед отправкой запросов.

config_ali_pressure.json (530 Байт) wb-mqtt-serial.conf (1.6 КБ)
вот крайние версии конфигураций
ошибка сохраняется

заработало!
wb-mqtt-serial.conf (1.7 КБ) config_ali_pressure.json (530 Байт)
вот с этими параметрами

Добавление “poll_interval”: 50 помогло.