Датчик дождя и снега с подогревом по Modbus RTU

09 апреля 2019, 22:30

В моем доме есть несколько автоматизированных мансардных окон, следовательно надо сделать так, чтобы они закрывались автоматически, в случае дождя. Искал датчик, работающий по modbus rtu. Вариантов было немного, всего один. Здесь я расскажу, что мне удалось выяснить, как это работает. Документации по девайсу крайне мало, пришлось выпрашивать доки у китайцев.

Датчик выпускается в нескольких вариантах:

1) датчик дождя "сухой-контакт"

2) датчик дождя с подогревом и "сухой-контакт"

3) датчик дождя "сухой-контакт" + интерфейс rs485

4) датчик дождя с подогревом и "сухой-контакт" + интерфейс rs485

Стоимость от 37$ до 52$, стоит переплатить за подогрев, чем потом жалеть об его отсутствии. Датчик с rs485 стоит столько же, сколько без него, особой разницы нет.  Я выбрал самую жирную комплектацию 4. 

Схема подключения

Коричневый - питание от 10 до 30В

Черный - земля.

Зеленый+белый - это "сухой-контакт", я его подключил на модуль WBIO-DI-DR-16. В случае обнаружения дождя, замыкается. 

Желтый - RS485 A

Синий - RS485 B

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

По подогреву мало информации и она отличается. Подогрев должен включаться при долгосрочной температуре < 0°C или при высокой влажности с температурой < 15°C, греет до 45°C

Для чего нужен rs485

Подключить rs485 можно через вот такой usb конвертер. Либо, как в моем случае, напрямую к Wiren Board.


Настройки подключения:

Адрес устройства: 1
Baud rate: 9600 (может быть 4800)
Data bit: 8
Stop bit: 1 
Parity: None


Все что удалось достать по документации:

Документация 1 (конкретно от продавца)

Документация 2 (от другого продавца, к визуально такому же датчику)

Описано всего 3 регистра, данные неполные, я попытался найти значения самостоятельно, во многие регистры нельзя записывать данные.

Карта регистров

HoldingПараметрПо умолчаниюДиапазонОписание
00Состояние00-10 - нет дождя, 1 - есть
01???
0, 1000При намокании, значение становится 1000
02???
1,2При намокании, значение становится 2
03Температура грелки-0-500Текущая температура прогрева (максимум до 45.5 у меня доходило)
04Нагрев00-10 - нет нагрева, 1 - есть
05Чувствительность
0-3500Насколько много воды, 0-10 - сухой датчик, капля воды - 2700, полностью залит - 3000-3500.
48???500
???
49Температура включения прогрева1500-400Температура*10, при которой включается прогрев, при сработанном датчике
50Дельта прогрева2500-400На сколько градусов прогреть относительно температуры включения прогрева (пример: настройка установлено в 250, при 150 включения прогрева, площадка будет нагреваться до 40 и выключаться)
51Задержка срабатывания
1 сек0-60000Через сколько секунд, после попадания влаги, сработает датчик.
52Чувствительность срабатывания
800500-3500
На сколько влаги реагирует датчик, 800 - капля, 3500, надо будет замочить всю площадку

Используются только holding регистры. Чтение - 0x03, запись - 0x06. Записываются только 48-52 регистры, это что-то вроде настроек, которые можно поменять.


Не найдены регистры! Регистр адреса устройства, скорость порта, стоп бит.

Во второй документации указан регистр, по которому можно сменить адрес устройства, но с моим датчиком это не работает, я пытался перезаписывать все регистры, содержащие 1, но это не увенчалось успехом.


Вот вывод всего, что записано на датчике:

#Считать данные с порта /dev/ttyRS485-2, 0-100 holding registers
modbus_client --debug -mrtu -b9600 -s1 -pnone -s1 /dev/ttyRS485-2 -a1 -t3 -r0 -c100

Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[01][03][00][00][00][64][44][21]
SUCCESS: read 100 of elements:
Data: 0x0000 0x0000 0x0001 0x010b 0x0000 0x0004 0x0000 0x0000 0x0000 0x0001 0x0101 0x0000 0x01f4 0x0001 0x0096 0x0001 0x03e8 0x0001 0x0000 0x0001 0x0005 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0001 0x0005 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x01f4 0x0096 0x00fa 0x0001 0x0320 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 


#Я просканировал все адреса до 80000, вот что нашел, что-то типа дэфолтных настроек, записать можно в 65587, но кажется это тоже самое, что и 51 адрес
modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-2 -a1 -t3 -r65500 -c100

Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[01][03][FF][DC][00][64][B5][CF]
SUCCESS: read 100 of elements:
Data: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0001 0x00de 0x0000 0x0004 0x0000 0x0000 0x0000 0x0001 0x0101 0x0000 0x0064 0x0001 0x0096 0x0001 0x03e8 0x0001 0x0000 0x0001 0x0005 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0001 0x0005 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0064 0x0096 0x0028 0x0001 0x0320 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 
#Смена задержки срабатывания на 10сек
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-2 -a1 -t6 -r51 10

#Смена чувсвительности на 1000
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-2 -a1 -t6 -r52 1000

Настройка в Wiren Board

Шаблон сохранить в файл /usr/share/wb-mqtt-serial/templates/config-rain-sensor.json

{
   "device_type":"RainSensor",
   "device":{
      "name":"Rain Sensor",
      "id":"rain",
      "max_read_registers":0,
      "channels":[
         {
            "name":"Rain",
            "reg_type":"holding",
            "readonly":true,
            "address":0,
            "type":"switch"
         },
         {
            "name":"Heatbed temperature",
            "reg_type":"holding",
            "readonly":true,
            "address":3,
            "type":"value",
            "scale":0.1,
            "format":"s16"
         },
         {
            "name":"Heating",
            "reg_type":"holding",
            "readonly":true,
            "address":4,
            "type":"switch"
         },
         {
            "name":"Sensitivity",
            "reg_type":"holding",
            "readonly":true,
            "address":5,
            "type":"value",
            "max":3500
         },
         {
            "name":"Unknown 48",
            "reg_type":"holding",
            "readonly":false,
            "address":48,
            "type":"range",
            "max":1500
         },
         {
            "name":"Heating Threshold",
            "reg_type":"holding",
            "readonly":false,
            "address":49,
            "type":"range",
            "scale":0.1,
            "max":400
         },
         {
            "name":"Heating Delta",
            "reg_type":"holding",
            "readonly":false,
            "address":50,
            "type":"range",
            "max":400,
            "scale":0.1
         },
         {
            "name":"Detect Delay",
            "reg_type":"holding",
            "readonly":false,
            "address":51,
            "type":"range",
            "max":300
         },
         {
            "name":"Sensitivity Threshold",
            "reg_type":"holding",
            "readonly":false,
            "address":52,
            "type":"range",
            "max":3500
         }
      ]
   }
}

Смена адреса и скорости устройства

Я не нашел, в каком регистре хранится эта информация, но нашел как можно поменять адрес.:)

Подключить к компу через usb<->rs485 конвертер (ссылка выше), подключить внешнее питание 0-30В, соединить общей землей.

Поставить драйвер: скачать cp210x driver

Запустить китайскую программу: скачать RS485ControlV22.exe

Выбрать порт конвертера, нажать "Search Device"

Устройство найдется, и здесь же можно поменять скорость на 9600 и выбрать любой адрес из диапазона 0-247.

Если кто-нибудь найдет, в каких регистрах хранятся эти данные - сообщите.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Андрей Попов (andreypopov)
    Андрей Попов (andreypopov) 7 месяцев назад

    Можно ли управлять подогревом по Modbus?

    Китайская логика запрограммировала подогрев включаться только по заданной минимальной температуре. Нет отдельного регистра для включения прогрева. Подогрев никак не зависит от влажности. А было бы логично, при дожде, включать подогрев, чтобы датчик быстрее высох. Можно добавить эту логику через сценарий: если сильно влажно, меняем параметр мин. температуры на 400 - прогрев включается и держит температуру. Датчик высох - меняем параметр назад на 0. 

  2. Никита Герасимов  (Rapidshe)
    Никита Герасимов (Rapidshe) 6 месяцев назад

    Как датчик ведет себя? сбоев не дает?

К списку статей

Скидки для сообщества

Wiren Board

+7 495 150-66-19
Промокод:
SPRUTDELIVERY
Размер скидки:
0%
Вы получите бесплатную доставку.

Разумный дом

+7 487 223-51-50
Промокод:
71
Размер скидки:
20%
Указывать в письме или комментарии к заказу

УЮТНЫЙ ДОМ

+7 495 797-21-74
Промокод:
SPRUT
Размер скидки:
5%

Z-Wave Ukraine

+380 68 641 9670
Промокод:
Sprut-UA
Размер скидки:
15%

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

LifeControl

+7 495 240-81-01
Промокод:
sprut10
Размер скидки:
10%
На весь ассортимент Lifecontrol

Тематические чаты

Похожие статьи

30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
17 июня 2019, 13:00
HomeKit - это программный framework от компании Apple, который позволяет пользователям iOS, macOS, watchOS и tvOS устройств управлять умными аксессуарами в доме, как через приложение "Дом", так и через голосовой ассистент Siri. Тем самым, делая ваш дом умным. При помощи Apple TV (tvOS) и HomePod управление возможно, но пока только на английском языке через Siri.
29 декабря 2018, 07:22
Ну что, в канун Нового года. Предлагаю небольшой провокационный список. Не надо его рассматривать как руководство к действию - это мои "мысли на тему". Позитива не ждите, но может кто-то сделает ответочку в позитивном стиле.
04 апреля 2019, 08:22
Личная жизнь мешает увлечению "умным домом"? Есть решение!
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
01 ноября 2018, 11:24
Умный дом, о чем стоит задуматься при создании умного дома, и о чем обычно забывают при этом.
15 июня 2019, 13:00
Умный дом. Зачем он нужен? Что продается в магазинах? Что такое Умный дом? На все эти, и многие другие вопросы мы постараемся дать ответ в этой статье.
20 января 2019, 15:09
Использование ESPHomeLib в связке с Home Assistant
18 апреля 2019, 09:07
Раньше, я был глуп и уверен, что zigbee-модули не услышат датчики на больших расстояниях. Я ошибался…