Написание функции, высчитывающей корректную температуру, шаблон Uponor Smatrix Base PRO Controller X-147

Вы читаете 13 input, а в таблице влажность 14
Screenshot from 2021-12-16 08-55-41

Да

Вот, 13, 14 и 15 соответственно. На всех по датчику влажности:

image

root@wirenboard-ARTSITW6:~# service wb-mqtt-serial stop
root@wirenboard-ARTSITW6:~# modbus_client --debug -mrtu -peven -s1 /dev/ttyRS485-1 -b9600 -a1 -t0x03 -r0013
Opening /dev/ttyRS485-1 at 9600 bauds (E, 8, 1)
[01][03][00][0D][00][01][15][C9]
Waiting for a confirmation...
<01><03><02><01><9A><39><BF>
SUCCESS: read 1 of elements:
        Data: 0x019a 
root@wirenboard-ARTSITW6:~#

Ничего не поменялось. Может быть такое? Указал u8 для всех трёх

image

Там надо вычитать единичку.

С помощью modbus_client считывается число 0x019a или 410 в десятичной системе. Что тоже не очень похоже на влажность, если считать, что она должна быть без множителя. Попробуйте прочитать значение функцией 0x04, как в документации:

modbus_client --debug -mrtu -peven -s1 /dev/ttyRS485-1 -b9600 -a1 -t0x04 -r13
root@wirenboard-ARTSITW6:~# service wb-mqtt-serial stop
root@wirenboard-ARTSITW6:~# modbus_client --debug -mrtu -peven -s1 /dev/ttyRS485-1 -b9600 -a1 -t0x04 -r13
Opening /dev/ttyRS485-1 at 9600 bauds (E, 8, 1)
[01][04][00][0D][00][01][A0][09]
Waiting for a confirmation...
<01><04><02><A7><24><C3><1B>
SUCCESS: read 1 of elements:
        Data: 0xa724 
root@wirenboard-ARTSITW6:~# service wb-mqtt-serial start

То есть данные читаются и отображаются в веб-интерфейсе верно. Наверное, тут уже надо производителя контроллера отопления Uponor спрашивать, может, были какие-то изменения в его прошивке.

Добрый день.
Судя по документации для вычисления влажности используются только два последних бита:


и при ручной проверке это похоже на правду.
Есть возможность переводить в десятичное число из 0xa724 только 0x0024?

Можно взять младшие 2 байта.
Ну или прочитать отдельно регистр который их содержит.

1 регистр это и так два байта.
Как то можно 1 младший байт из регистра прочитать?
Указание формата я так понял ничего не поменяло. Может баг?

Вот это:

явно два регистра.
Значит в одном 0xa7 а в другом 0x24
UPD, да, один регистр, я ошибся.

Это шестнадцатиричная форма записи, поэтому не два бита, а 8 младших бит (младший байт). Чтобы их получить попробуйте такую конфигурацию в веб-интерфейсе (номер регистра измените):

В шаблоне это можно прописать так:

            {
              "address" : "105:0:8",
              "format" : "u16",
              "name" : "uptime",
              "offset" : 0,
              "reg_type" : "input",
              "scale" : 1,
              "type" : "value"
            }

Да, u8 почему-то не работает…

1 лайк

Кажись, прокатило


image

1 лайк

Рад, что все получилось!

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.