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

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

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

Данные считывать получается по адресу 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

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

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

Да тут все опытные, а опыт подсказывает, что это китайская кривая плохо документированная поделка :slight_smile:

Что могу предложить: в скрипте в цикле прочесть все регистры и посмотреть, где есть какая-то значимая информация. Либо долбить продавца, чтоб прислал нормальное описание.

1 лайк

Продавца долбаю, пока вот видео gif и программка. ее использовать пока не хочу …

Подскажите до какого предела скриптом перебирать номера регистров? 65536?

Спасибо

В общем пробежался циклом …

0: Data: 0x016f
1: Data: 0x00c2
7: Data: 0x0104
240: Data: 0xdaa5
2000: Data: 0x0001
2001: Data: 0x0002

готово ))
Всем спасибо.

Замечательно, поздравляю! Не богат регистрами модуль оказался.

Также приобрел два таких датчика, но почему-то не нашёл готового решения для их подключения.
Выкладываю свой конфиг:

Файл /usr/share/wb-mqtt-serial/templates/config-sht200.json
{
“device_type”: “XY-MD02”,
“device”: {
“name”: “XY-MD02”,
“id”: “xy-md02”,
“max_read_registers”: 0,
“channels”: [
{
“name”: “Temperature”,
“reg_type”: “input”,
“address”: 1,
“type”: “temperature”,
“format”: “s16”,
“scale”: 0.1,
“error_value”: “0x7FFF”
},
{
“name”: “Humidity”,
“reg_type”: “input”,
“address”: 2,
“type”: “rel_humidity”,
“format”: “u16”,
“scale”: 0.1,
“error_value”: “0xFFFF”
}
]
}
}

Конфигурация регистров, которая у меня заработала

1 лайк

Большое спасибо за конфиг, очень выручили.
мне осталось только разобраться со сменой адресов на этих китайских штуковинах.
Может в доках косяки, может я что не так делаю, но сменить адрес у меня пока не получается, ни на этих датчиках, ни на релейных модулях.Если подскажете, буду очень благодарен.

Со сменой нет проблем, нужно прописать в регистр 0x101 новый адрес и перезагрузить его, отключив питание.

Но у этих датчиков есть проблемы: толи у меня какая-то бракованая партия, толи это конструктив такой. Посмотрите здесь
https://support.wirenboard.com/t/datchik-temperatury-vlazhnosti-sht20-rs485/5689/38

может мне так повезло с датчиками
но регистры записи у меня читаются
.
по адресам 101 - 104 идут параметры 1 9600 0 0
адрес скорость и коррекции
но не пишутся… регистры 0х06 похоже залочены

Используйте для записи команду 0x10

1 сообщение было перенесено в новую тему: Регистры датчика YDTH-01