Подключение китайского датчика Темп. и Влажн

хм… почему сам не сносится при удалении девайса …

а можете подсказать где подробнее посмотреть по командам mqtt?
можно ли просто сходить через консоль в какой-то каталог и там почистить?

вот тема на форуме по этому вопросу.


он достаточно регулярно всплывает.
поиском по mqtt-delete находится
я таким образом разбирался
в свое время

удалил, спасибо

Что в итоге имею сейчас.

в каталоге /usr/share/wb-mqtt-serial/templates
сделал файл config-ZHIPU_T-XNQ-08.json

{
“device_type”: “ZHIPU_T-XNQ-08”,
“device”: {
“name”: “ZHIPU_T-XNQ-08”,
“id”: “zhipu_t-xnq-08”,
“max_read_registers”: 0,
“channels”: [
{
“name”: “Temperature”,
“reg_type”: “input”,
“address”: 0,
“type”: “temperature”,
“format”: “s16”,
“scale”: 0.1,
“error_value”: “0x7FFF”
},
{
“name”: “Humidity”,
“reg_type”: “input”,
“address”: 1,
“type”: “rel_humidity”,
“format”: “u16”,
“scale”: 0.1,
“error_value”: “0xFFFF”
}
]
}
}

настроил через WEB UI сериал девайс, адрес 1

в итоге имею показания в контроле:

ZHIPU_T-XNQ-08 1

Temperature 32.4 °C

Humidity 20.1 % RH

Сомневаюсь на предмет верности полученных данных, в помещении где проводятся измерения температура явно не 32. есть другой измеритель в помещении (термостат управления радиаторами) который показывает 22.5 градуса …

Помогите разобраться, проверьте меня. Что не так?
также пока не понял как поменять адрес на датчике … ничего не понимаю по китайски))

п.с. дублирую ссылку на документацию:

Заранее благодарен.

имхо перепутаны параметры влажности и температуры.

проверить то легко.
чуть подогреть датчик и поглядеть
какой параметр меняться будет.

в яблочко, еще раз спасибо.

Осталось только научится менять адреса на этих датчиках…

Подключил еще один датчик на второй порт, настроил … в контроле видно что из-за того что адрес один и тот же и тип девайса один и тот же, второе окно для датчика не появилось, но видно что значения скачут, т.е. датчики оба работают и данные приходят.

Через консоль делаю такое:
~# modbus_client --debug -m rtu -s1 -pnone /dev/ttyRS485-2 -a0x00 -t0x06 -r0x80 2
Data to write: 0x2
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[00][06][00][80][00][02][08][32]
Waiting for a confirmation…
ERROR Connection timed out: select
ERROR occured!

Что делаю не так?

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

Спасибо

А Вы документацию к датчикам читали? Вы пытаетесь в 128 регистр широковещательной командой записать значение 2. А судя по документации, которую уже выкладывали в этой теме выше адрес храниться в другом регистре.
image

Помогите разобраться с адресацией.
что означает “0х”?
какая команда в данном случае будет правильной?

Спасибо

https://wirenboard.com/wiki/index.php/Modbus-client

Спасибо.

Я правильно понял что 0x означает 16ричную систему счисления? ))
(0х80 - 128 в десятичной …)

Регистр где хранится адрес modbus в этом датчике 0x0100
если это 100 в 16тиричной, то в десятичной это 256 … странно, обычно адресацию ограничивают одним байтом (255 в десятичной)

И еще больше непонятно становится с регистрами темп и вл. 0x0200 и 0x0201 …
Хотя при этом данные считываются нормально при адресах регистров 0 и 1 …

Подскажите, как это понять ))
Еще раз спасибо

Добрый вечер!
Мне кажется, вы путаете Modbus-адрес устройства и адреса регистров. Вот еще мануал:
https://wirenboard.com/wiki/index.php/Протокол_Modbus

Не путаю … но таблицу адресов регистров эту китайскую понять не могу голову сломал.

мануалы прочитал …

Данные считывать получается по адресу modbus 1 и адресам регистров 0 и 1:

modbus_client --debug -m rtu -s1 -pnone /dev/ttyRS485-2 -a1 -t0x03 -r0x00

Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[01][03][00][00][00][01][84][0A]
Waiting for a confirmation…
<01><03><02><01><69><79>
SUCCESS: read 1 of elements:
Data: 0x0169

modbus_client --debug -m rtu -s1 -pnone /dev/ttyRS485-2 -a1 -t0x03 -r0x01

Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[01][03][00][01][00][01][D5][CA]
Waiting for a confirmation…
<01><03><02><00>
SUCCESS: read 1 of elements:
Data: 0x00c8

При этом с адресами регистров из таблицы ничего не получается, как понять какие физические адреса регистров?

Спасибо

Пример из мануала:
(1) read the temperature and humidity measurement values (read temperature, humidity and dew point temperature):
Host send:0103020000030473
Reply from machine:01030601 0B 01310050 6A D5

Что получается у меня:
~# modbus_client --debug -m rtu -s1 -pnone /dev/ttyRS485-2 -a1 -t0x03 -r0x0200 -c3
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[01][03][02][00][00][03][04][73]
Waiting for a confirmation…
<01><03><06><00><00><00><00><00><00><21><75>
SUCCESS: read 3 of elements:
Data: 0x0000 0x0000 0x0000

Получается полная белеберда с адресами?
Если так, то где искать регистр с адресом девайса?

Китайцы вместо разъяснения прислали gif )) и программку на китайском … капец

:slight_smile: Ну это классика, когда они присылают ModScan32 вместо инструкции. Типа разбирайтесь сами.
Как правило, желание сэкономить сопряжено с тернистым путем.
Проще было бы все-таки wb-msw использовать.

Если вы в Питере - заезжайте в гости, я постараюсь помочь.
controllerwirenboard@gmail.com

Я не экономил ни разу … куплен контроллер с максимальным наполнением, пока даже не знаю понадобится ли все это …
А вот раскидать десяток другой датчиков температуры и влажности по технических помещениям (чердак/подвал/погреб) … просто из соображений здравого смысла выбраны такие которые дают показания только температуры и влажности и стоят в 3(5) раза дешевле. (повторюсь - десятки штук). Если бы у WB были варианты датчиков не все в одном, а и более простые варианты, выбрал бы их не думая.

За предложение спасибо, я в Питере.
Если тут на форуме мне не подскажут и сам не осилю, с благодарностью обращусь к вам)

1 лайк

Все от задачи и цели ж пляшется, имхо.

Если это дом и выпадание прибора (датчика) не критично,
то использовать какое более дешевое и доступное решение
но с бОльшими проблемами при запуске (обычно таки разово)
более чем разумная стратегия в каких-то случаях.
Ибо временные затраты не особо важны,
а материальные - как раз наоборот.
Ибо карман свой и не резиновый.

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

Собственно задача инженера и есть в том, чтобы
собрать из имеющихся “кирпичей”
оптимальное решение под
конкретные критерии

Да, похоже, продавец указывает неверную таблицу с адресами Modbus-регистров устройства. Там в комментариях на это жалуются. Так же в комментариях есть ссылка на проект на гитхаб: кто-то из покупателей разработал софт для этого датчика. Судя по коду, адреса регистров начинаются с 0, как вы и пробовали. 0 - температура, 1 - влажность, дальше точка росы, затем то же самое но в другом формате представления.
Регистры, которые обозначены как 0x0200 – только чтение, 0x100 – запись и чтение (вот их реальные адреса не могу определить), регистры помеченные как 0x0102 0x0103 – зарезервированы производителем.

Да это я для себя делаю, у себя в загородном доме. Проект не коммерческий и заказчика и сроков нет.

Kilpio, по поводу регистров. там только 0 и 1 и 7 отдают данные, остальное нули.

:~# modbus_client --debug -m rtu -s1 -pnone /dev/ttyRS485-2 -a1 -t0x03 -r0 -c12
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[01][03][00][00][00][0C][45][CF]
Waiting for a confirmation…
<01><03><18><01><6D><00><00><00><00><00><00><00><00><00><00><00><01><04><00><00><00><00><00><00><00><00><96><69>
SUCCESS: read 12 of elements:
Data: 0x016d 0x00c2 0x0000 0x0000 0x0000 0x0000 0x0000 0x0104 0x0000 0x0000 0x0000 0x0000

Прошелся руками до четырех сотен адресов, везде нули.

~# modbus_client --debug -m rtu -s1 -pnone /dev/ttyRS485-2 -a1 -t0x03 -r0x200 -c12
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[01][03][02][00][00][0C][44][77]
Waiting for a confirmation…
<01><03><18><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><6C>
SUCCESS: read 12 of elements:
Data: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

~# modbus_client --debug -m rtu -s1 -pnone /dev/ttyRS485-2 -a1 -t0x03 -r0x100 -c12
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 1)
[01][03][01][00][00][0C][44][33]
Waiting for a confirmation…
<01><03><18><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><6C>
SUCCESS: read 12 of elements:
Data: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

я думаю что чего-то недопонимаю … подскажите куда поискать плз, тут же есть опытные!

Заранее благодарен.