Описание шаблона устройства (китайское реле) c работой по Modbus

У меня есть два китайских реле с управлением по Modbus: одно одноканальное, второе- двухканальное.
Они успешно управляются через modbus_client, согласно инструкции.
Например, включение реле 2 двухканального реле с адресом 0x12:

$ modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-2 -a0x12 -t0x05 -r0x01 1
Data to write: 0x1
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[12][05][00][01][FF][00][DF][59]
Waiting for a confirmation...
<12><05><00><01><FF><00><DF><59>
SUCCESS: written 1 elements!

выключение:

$ modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-2 -a0x12 -t0x05 -r0x01 0
Data to write: 0x0
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[12][05][00][01][00][00][9E][A9]
Waiting for a confirmation...
<12><05><00><01><00><00><9E><A9>
SUCCESS: written 1 elements!

Завёл шаблон устройства:

{
    "device_type": "China Modbus 2-ch Relay",
    "device": {
        "name":  "China Modbus 2-ch Relay",
        "id": "china-mb-2-ch-relay",
        "max_read_registers": 8,
        "response_timeout_ms": 1,
        "frame_timeout_ms": 8,
        "poll_interval": 100,
        "channels": [
            {
                "name": "Relay 1",
                "reg_type": "coil",
                "address": 0,
                "type": "switch"
            },  
            {
                "name": "Relay 2",
                "reg_type": "coil",
                "address": 1,
                "type": "switch"
            }
        ]
    }
}

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


и состояние реле не считывается (если остановить службу wb-mqtt-serial, изменить состояние реле, и запустить службу опять).
в логах видно, что считывается два coil-а:

DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 12 01 00 00 00 02 bf 68
DEBUG: [port] Sleep 9000 us
WARNING: [modbus] failed to read 2 coil(s) @ 0 of device modbus:0x12: Serial protocol error: request timed out

это то же самое, что

modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-2 -a0x12 -t0x01 -r0x00 -c 2
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[12][01][00][00][00][02][BF][68]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!

однако, чтение статуса (п.10 в документации выше):

10,read device address (тут правда, ошибка копи-пасты: должно быть read device status, полагаю)

send:FF 01 00 00 00 08 28 12

return :FF 01 01 01 A1 A0

remarks:The 4th byte of the Return frame,the Bit0–Bit7 of 0x01 representing relay 1-relay 8, 0 is turn off .1 is turn on.

т.е.

modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-2 -a0x12 -t0x01 -r0x00 -c 8
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[12][01][00][00][00][08][3F][6F]
Waiting for a confirmation...
<12><01><01><03><15><0D>
SUCCESS: read 8 of elements:
        Data: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00

даёт нам правильный ответ: включены оба реле, например

т.е. применяя дедукцию ))), догоняем в конфиге количество реле до 8 штук, и получаем


т.е. всё как бы корректно запрашивается

DEBUG: [port] Sleep 0 us
DEBUG: [port] Write: 12 01 00 00 00 08 3f 6f
DEBUG: [port] Sleep 9000 us
DEBUG: [port] ReadFrame: 12 01 01 03 15 0d
DEBUG: [serial port driver] channel 'Relay 1' of device 'china-mb-2-ch-relay_0x12' <-- 1
DEBUG: [serial port driver] channel 'Relay 2' of device 'china-mb-2-ch-relay_0x12' <-- 1
DEBUG: [serial port driver] channel 'Relay 3' of device 'china-mb-2-ch-relay_0x12' <-- 0
DEBUG: [serial port driver] channel 'Relay 4' of device 'china-mb-2-ch-relay_0x12' <-- 0
DEBUG: [serial port driver] channel 'Relay 5' of device 'china-mb-2-ch-relay_0x12' <-- 0
DEBUG: [serial port driver] channel 'Relay 6' of device 'china-mb-2-ch-relay_0x12' <-- 0
DEBUG: [serial port driver] channel 'Relay 7' of device 'china-mb-2-ch-relay_0x12' <-- 0
DEBUG: [serial port driver] channel 'Relay 8' of device 'china-mb-2-ch-relay_0x12' <-- 0

однако, реле на самом деле два )) ну педали 3-8 ничего не делают…

отсюда вопрос: как сделать так, чтобы можно было видеть реальное количество реле, но получать их статус при запросе всех восьми?

wb-mqtt-serial так не умеет, к сожалению.

А если установить

"max_read_registers": 1,

, для того чтобы читался максимум 1 регистр (coil) за запрос?