Подключение вентустановки по modbus

root@wirenboard-AVV36KSB:~# journalctl -e -p 7
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 holding(s) @ 41201 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 03 a0 f1 00 01 f7 f9
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] ReadFrame: 01 03 02 00 14 b8 4b
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 holding(s) @ 41202 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 03 a0 f2 00 01 07 f9
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] ReadFrame: 01 03 02 00 14 b8 4b
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 holding(s) @ 41214 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 03 a0 fe 00 01 c7 fa
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] ReadFrame: 01 03 02 05 dc ba 8d
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 holding(s) @ 41218 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 03 a1 02 00 01 06 36
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] ReadFrame: 01 03 02 01 90 b9 b8
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 holding(s) @ 41651 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 03 a2 b3 00 01 56 55
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] ReadFrame: 01 03 02 00 00 b8 44
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 input(s) @ 41109 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 04 a0 95 00 01 03 e6
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: WARNING: [modbus] failed to read 1 input(s) @ 41109 of device modbus:1: Serial protocol error: request ti
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 input(s) @ 41110 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 04 a0 96 00 01 f3 e6
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: WARNING: [modbus] failed to read 1 input(s) @ 41110 of device modbus:1: Serial protocol error: request ti
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 input(s) @ 41111 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 04 a0 97 00 01 a2 26
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: WARNING: [modbus] failed to read 1 input(s) @ 41111 of device modbus:1: Serial protocol error: request ti
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 input(s) @ 41113 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 04 a0 99 00 01 c3 e5
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: WARNING: [modbus] failed to read 1 input(s) @ 41113 of device modbus:1: Serial protocol error: request ti
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 holding(s) @ 41200 of device modbus:1
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Write: 01 03 a0 f0 00 01 a6 39
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] Sleep 1000 us
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [port] ReadFrame: 01 03 02 00 1b f8 4f
фев 09 15:44:50 wirenboard-AVV36KSB wb-mqtt-serial[30428]: DEBUG: [modbus] read 1 holding(s) @ 41201 of device modbus:1

А кусок лога зачем показывать? К тому ж с обрезанными строками… Посмотрите что именно отправляется и сверьте чс работающим.

wb-mqtt-serial_20220209T162252.log (548.0 КБ)
Это?

Запросите тот же регистр той же командой с помощью modbus_client.
Ну и сравните запросы.

Вот по одному из регистров неработающих
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x03 -r41109
Opening /dev/ttyRS485-2 at 115200 bauds (N, 8, 1)
[01][03][A0][95][00][01][B6][26]
Waiting for a confirmation…
<01><03><02><05><8D>
SUCCESS: read 1 of elements:
Data: 0x05dc

09-02-2022 16:23:21.270 WARNING: [modbus] failed to read 1 input(s) @ 41109 of device modbus:1: Serial protocol error: request timed out
09-02-2022 16:23:21.160 DEBUG: [port] Sleep 1000 us
09-02-2022 16:23:21.160 DEBUG: [port] Write: 01 04 a0 95 00 01 03 e6
09-02-2022 16:23:21.160 DEBUG: [port] Sleep 1000 us
09-02-2022 16:23:21.160 DEBUG: [modbus] read 1 input(s) @ 41109 of device modbus:1
По работающим регистрам все совпадает

Совпадают?

Это по неработающему регистру не совпадает. Что это значит? Как поправить?

Вот работающий регистр, все совпадает
root@wirenboard-AVV36KSB:~# modbus_client --debug -mrtu -b115200 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x03 -r41651
Opening /dev/ttyRS485-2 at 115200 bauds (N, 8, 1)
[01][03][A2][B3][00][01][56][55]
Waiting for a confirmation…
<01><03><02><00><00><44>
SUCCESS: read 1 of elements:
Data: 0x0000

09-02-2022 16:23:21.160 DEBUG: [port] ReadFrame: 01 03 02 00 00 b8 44
09-02-2022 16:23:21.160 DEBUG: [port] Sleep 1000 us
09-02-2022 16:23:21.160 DEBUG: [port] Write: 01 03 a2 b3 00 01 56 55
09-02-2022 16:23:21.160 DEBUG: [port] Sleep 1000 us
09-02-2022 16:23:21.160 DEBUG: [modbus] read 1 holding(s) @ 41651 of device modbus:1

Значит что запрашивается неверной командой.
Поправить - запрашивать верный тип регистра.

Совпадает = работает. Я выше давал и описания Modbus и статьи…
Смените тип регистра. Явно ж отвечает на Holding

Установлен такой тип в регистре
“name”: “Error code 0”,
“reg_type”: “input”,
“address”: 41109,
“type”: “text”,
“format”: “s16”,
“group”: “Current data”
Поменять на “discrete” ?

На holding. Или, если писать надо 0x10 командой - на holding_multi. У меня создается впечателение что читать документацию - зло. :frowning:

Поменял, все почернело


только там можно менять показания ползунком, либо…, но это же просто показания температуры и показания ошибок их не надо менять. Во вторых в показаниях температуры должны показываться десятичные знаки
“name”: “Street temp”,
“reg_type”: “holding”,
“address”: 41111,
“type”: “temperature”,
“format”: “s16”,
“scale”: 0.1,
“group”: “Current data”

Если у вас остались затруднения, то сформулируйте их, пожалуйста, более точно.
Не нужен ползунок - измените “range” на “value”. Описание всех видов контролов можно найти здесь: https://github.com/wirenboard/homeui/blob/master/conventions.md

1 лайк

Изменил, рядом с значением все равно отображаются стрелки смены значения

Как сделать чтобы отображалось только значение считанных данных?
Кроме того прошу подсказать как задать порядок байт 1-0-3-2 (из документации) для правильного отображения температуры

Поддерживаю, очень путано и разрозненно

В очередной раз сылка на документацию: GitHub - wirenboard/wb-mqtt-serial: wb-mqtt-serial

В документации, смотреть на “word_order” и форматы.

А что путано? Все сгруппировано по месту использования, описано. Что надо поменять?

Сюда Как подключить Modbus RTU-устройство стороннего производителя к контроллеру Wiren Board? — Wiren Board нужно добавить все ссылки которые вы мне дали

И тогда любой непродвинутый пользователь (такой же как я) сможет писать шаблоны для простых устройств

Разобрался все корректно показывает

Но вот с этим не могу допереть, подскажите плиз

После обращения к производителю, они исправили код команды «Пуск/Стоп» в прошивке, заработало частично.
Задал вопрос производителю: Сейчас включение/отключение с контроллера ВБ работает, вентустановка считывает, а вот когда включаю вентустановку с пульта в контроллере не отражается включение, почему это может происходить?
Он ответил: Возможно ли в вашей среде привязать ваш переключатель “Power” к 6-му биту регистра “Параметры” (адрес 41107)
и добавить кнопку “Start/Stop” которая будет устанавливать 0-й бит регистра “Командное слово” (адрес 41651) ?
Такое возможно и как это сделать?

[quote=“eag, post:79, topic:10186”]

// доступен ли канал для записи через MQTT
                            "readonly": true,

Тут: Драйвер wb-mqtt-serial: шаблоны — Wiren Board
а именно

 Можно читать отдельные биты регистра, для этого запишите адрес в формате: "address":"reg:shift:width", где reg — адрес регистра, shift — смещение от начала, а width — количество считываемых битов. Например, "address":"109:1:2" — прочитать второй и третий биты регистра, расположенного по адресу 109.

Никогда бы не понял, спасибо заработало