есть такой вот датчик
датчик давления с али
отзывается на команды:
modbus_client --debug -mrtu -pnone -s1 -b9600 -o1000 /dev/ttyRS485-1 -a1 -t0x03 -r0x1
modbus_client --debug -mrtu -pnone -s1 -b9600 -o1000 /dev/ttyRS485-1 -a1 -t0x03 -r0xa
modbus_client --debug -mrtu -pnone -s1 -b9600 -o1000 /dev/ttyRS485-1 -a1 -t0x03 -r0xb
( но с параметром -t0x04 не работает)
нужные регистры:
0x1 - Температура
0xA - давление, всегда 1, наверное старший байт (перевод с китайского: Большое высокое давление воздуха (ед. изм. 0,01 мбар))
0xB - реальное давление, не пойму в чем измеряется, наверное младший байт (перевод с китайского: Большое низкое давление воздуха (ед. изм. 0,01 мбар))
вот какой шаблон написал:
{
"device_type": "ALI-PRESSURE",
"device": {
"name": "ALI-PRESSURE",
"id": "ALI-PRESSURE",
"max_read_registers": 60,
"channels": [
{
"name": "PRESSURE",
"reg_type": "holding",
"address": "0xb",
"type": "atmospheric_pressure",
"format": "u32",
"scale": 0.01,
"round_to": 0.01
},
{
"name": "Temperature",
"reg_type": "holding",
"address": "0x1",
"type": "temperature",
"format": "u16",
"scale": 0.1,
"round_to": 0.01
}
]
}
}
с типом input не работало (а нужен input - эти регистры только для чтения), с holding работает, но странно - только если щелкнуть мышкой в поле элемента в devices и изменить его значение, то оно сразу скидывается на реальное значение и топик начинает работать, при этом второй элемент отключается (и в чем измеряет давление я так и не понял)
и почему то подпись давления наползает на другой объект
в общем где-то я промахнулся, направьте на путь истинный