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
А кусок лога зачем показывать? К тому ж с обрезанными строками… Посмотрите что именно отправляется и сверьте чс работающим.
Запросите тот же регистр той же командой с помощью 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. У меня создается впечателение что читать документацию - зло.
Поменял, все почернело
только там можно менять показания ползунком, либо…, но это же просто показания температуры и показания ошибок их не надо менять. Во вторых в показаниях температуры должны показываться десятичные знаки
“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-0-3-2 (из документации) для правильного отображения температуры
Поддерживаю, очень путано и разрозненно
В очередной раз сылка на документацию: GitHub - wirenboard/wb-mqtt-serial: wb-mqtt-serial
В документации, смотреть на “word_order” и форматы.
А что путано? Все сгруппировано по месту использования, описано. Что надо поменять?
Сюда Как подключить Modbus RTU-устройство стороннего производителя к контроллеру Wiren Board? — Wiren Board нужно добавить все ссылки которые вы мне дали
И тогда любой непродвинутый пользователь (такой же как я) сможет писать шаблоны для простых устройств
BrainRoot:Не могу сказать. Если в соответствии с документацией должно меняться - надо спрашивать у производителя.
Обратился к производителю
После обращения к производителю, они исправили код команды «Пуск/Стоп» в прошивке, заработало частично.
Задал вопрос производителю: Сейчас включение/отключение с контроллера ВБ работает, вентустановка считывает, а вот когда включаю вентустановку с пульта в контроллере не отражается включение, почему это может происходить?
Он ответил: Возможно ли в вашей среде привязать ваш переключатель “Power” к 6-му биту регистра “Параметры” (адрес 41107)
и добавить кнопку “Start/Stop” которая будет устанавливать 0-й бит регистра “Командное слово” (адрес 41651) ?
Такое возможно и как это сделать?
[quote=“eag, post:79, topic:10186”]
eag:Как сделать чтобы отображалось только значение считанных данных?
[/quote]В очередной раз сылка на документацию: GitHub - wirenboard/wb-mqtt-serial: wb-mqtt-serial
Но вот с этим не могу допереть, подскажите плиз
// доступен ли канал для записи через MQTT
"readonly": true,
Возможно ли в вашей среде привязать ваш переключатель “Power” к 6-му биту регистра “Параметры” (адрес 41107)
и добавить кнопку “Start/Stop” которая будет устанавливать 0-й бит регистра “Командное слово” (адрес 41651) ?
Тут: Драйвер wb-mqtt-serial: шаблоны — Wiren Board
а именно
Можно читать отдельные биты регистра, для этого запишите адрес в формате: "address":"reg:shift:width", где reg — адрес регистра, shift — смещение от начала, а width — количество считываемых битов. Например, "address":"109:1:2" — прочитать второй и третий биты регистра, расположенного по адресу 109.
// доступен ли канал для записи через MQTT "readonly": true,
Никогда бы не понял, спасибо заработало