Чтение регистра со сдвигом

Не удаётся создать конфигурацию wb-mqtt-serial для чтения регистра со сдвигом.
Со сдвигом 0 работает, со сдвигом 8 бит — нет.

Логи:

|31-07-2025 12:13:09.117 [wb-mqtt-serial]|WARNING: [serial config] the device has no channels:|
|31-07-2025 12:13:09.117 [wb-mqtt-serial]|WARNING: [serial config] Device  wb-modbus-0-0 channel Address is ignored: Serial protocol error: bit offset must not exceed 8 bits|

Фрагмент конфигурации:

"devices" :
      [
        {
          "channels" :
          [
            {
              "address" : "5:8:8",
              "format" : "u8",
              "name" : "Address",
              "offset" : 0,
              "reg_type" : "holding_single",
              "scale" : 1,
              "type" : "value"
            }
          ],
          "protocol" : "modbus",
          "slave_id" : "1"
        }
      ]

Package: wb-mqtt-serial
Version: 2.160.3-wb102

Добрый день!

На мой взгляд с “5:8:8” работать не должно.

Если вы хотите читать байт со сдвигом 8 бит (старший байт регистра), используйте:

"address": "5:8",
"format": "u8"

Если вы хотите прочитать младший байт:

"address": "5:0",
"format": "u8"

Добрый день.
С интерфейса такое сделать нельзя.

Да и из конфигурации тоже:

Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: ERROR: [serial] File: /etc/wb-mqtt-serial.conf error: Validation failed.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 1
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0][address]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to match regex specified by 'pattern' constraint.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 2
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0][address]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #0.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 3
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0][address]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to match regex specified by 'pattern' constraint.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 4
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0][address]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #1.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 5
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0][address]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Value type not permitted by 'type' constraint.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 6
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0][address]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #2.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 7
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0][address]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against any child schemas allowed by oneOf constraint.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 8
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against schema associated with property name 'address'.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 9
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #1.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 10
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #0.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 11
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Missing required property 'consists_of'.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 12
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #1.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 13
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Missing required property 'write_address'.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 14
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #1.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 15
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #2.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 16
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Missing required property 'write_address'.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 17
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #1.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 18
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #3.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 19
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against any child schemas allowed by oneOf constraint.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 20
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0][channels]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate item #0 in array.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 21
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against schema associated with property name 'channels'.
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]: Error 22
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   context: <root>[ports][0][devices][0]
Jul 31 11:49:27 wirenboard-ADHTHZWN wb-mqtt-serial[3976874]:   desc: Failed to validate against child schema #1.

Вы правы. Не нахожу такого функционала в документации, похоже драйвер не поддерживает такое чтение.

Добрый день.

А какие биты из u8 должны читаться такой конструкцией?

Добрый день.

Отталкиваясь от документации, “5:8:8” определяет 16-битный регистр оборудования или его часть (то есть источник данных), которые читаются, а “u8” определяет формат канала WB, в котором считанные данные оказываются. Таким образом, такой конструкцией я рассчитывал взять 8 бит из регистра и получить из них u8 в канале.

P.S. Если указать “address” : “5:8:8” и “format” : “u16”, тогда ошибка не возникает, данные считываются, однако логичным это не выглядит.

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

Понял, спасибо. :+1: