Статья

Система защиты от протечки воды NEPTUN Smart в Умный дом

Как известно, Умная система защиты от протечки воды предназначена для обнаружения и локализации протечек воды в системах водоснабжения. Такие системы сами справляются со своими функциями и автономно. Но если есть возможность контролировать и управлять им через систему умного дома было бы вообще супер.

Наконец дошли руки до своего NEPTUN Smart. В названии уже заложено что система умная. Докупив Модуль расширения Ethernet для подключения по ModBus TCP (ни в одной инструкции нет упоминания что он поддерживает ModBus TCP) и Модуль расширения RS-485 для подключения по  ModBus RTU. Чтоб можно было поэкспериментировать.  Соответственно есть возможность получения текущих параметров, и управление через сервер умного дома. Было решено добавить его в WirenBoard. Таблица регистров есть в этом документе. Как видим параметров там масса. Писать шаблон решил на все регистры. Был написан шаблон по карте регистров из документа. Регистры разделил на 9 групп: Счетчики, Модуль управление и состояние, Настройка и состояние проводных линий, Конфигурация беспроводных датчиков, Состояние беспроводных датчиков 1-10, Состояние беспроводных датчиков 11-20, Состояние беспроводных датчиков 21-30, Состояние беспроводных датчиков 31-40, Состояние беспроводных датчиков 41-50. Подключение по ModBus TCP IP устройства порт 503 адрес по умолчанию 240. Если не установлен Модуль расширения RS-485, то меняется только через команду по ModBus. Если установлен модуль то можно и через приложение SST Cloud или также по команде по ModBus. Если подключение по ModBus RTU  то параметры по умолчанию 9600, 8N1 адрес 240.

Подключение по ModBus RTU
Подключение по ModBus TCP

Для того, чтобы WirenBoard обнаружил и добавил устройство скачиваем шаблон и размещаем его в дериктории /usr/share/wb-mqtt-serial/templates. После чего настраеваем в wb-mqtt-sereal.conf устройство, выбрав шаблон из ссылки. Ниже фрагмент шаблона, так как шаблон 4305 строк весь находится по ссылке.

json
Копировать
{
"title": "NEPTUN",
"device_type": "NEPTUN_Series",
"group": "neptun",
"device": {
"name": "NEPTUN",
"id": "neptun",
"frame_timeout_ms": 8,
"force_frame_timeout": true,

"groups": [
{
"title": "Counters",
"id": "counters",
"order": 1
},
{
"title": "Configuration and status module",
"id": "configuration and status module",
"order": 2
},
{
"title": "Wired Line Input Configuration and Status",
"id": "wired line input configuration and status",
"order": 3
},
{
"title": "Wireless sensor configuration and Status",
"id": "wireless sensor configuration and status",
"order": 4
},
{
"title": "Wireless sensor 1-10",
"id": "wireless sensor 1",
"order": 5
},
{
"title": "Wireless sensor 11-20",
"id": "wireless sensor 2",
"order": 6
},
{
"title": "Wireless sensor 21-30",
"id": "wireless sensor 3",
"order": 7
},
{
"title": "Wireless sensor 31-40",
"id": "wireless sensor 4",
"order": 8
},
{
"title": "Wireless sensor 41-50",
"id": "wireless sensor 5",
"order": 9
},
{
"title": "General",
"id": "general",
"order": 10
}
],
"parameters": {
"Relay_switching": {
"title": "Relay switching",
"description": "Configuring relay functions",
"address": 4,
"reg_type": "holding",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
"default": 3,
"enum_titles": ["pdo not switch alarm switching pdo not switch switching by closing taps",
"first group alarm_switching pdo not switch switching by closing taps",
"second group alarm_switching pdo not switch switching by closing taps",
"both groups alarm_switching pdo not switch switching by closing taps",
"pdo not switch alarm_switching first group switching by closing taps",
"first group alarm_switching first group switching by closing taps",
"second group alarm_switching first group switching by closing taps",
"both groups alarm_switching first group switching by closing taps",
"pdo not switch alarm_switching second group switching by closing taps",
"first group alarm_switching second group switching by closing taps",
"second group alarm_switching second group switching by closing taps",
"both groups alarm_switching second group switching by closing taps",
"pdo not switch alarm_switching both groups switching by closing taps",
"first group alarm_switching both groups switching by closing taps",
"second group alarm_switching both groups switching by closing taps",
"both groups alarm_switching both groups switching by closing taps"],
"group": "wired line input configuration and status",
"order": 1
},
"Wireless_Sensor_Settings_1": {
"title": "Wireless Sensor Settings 1",
"description": "Processing events by groups",
"address": 7,
"reg_type": "holding",
"enum": [1, 2, 3],
"default": 3,
"enum_titles": ["first group", "second group", "both groups"],
"group": "wireless sensor configuration and status",
"order": 1
Так выглядит в настройках
Вот так он выглядит в WirenBoard

Если все сделано правильно, то получаем данные с NEPTUN Smart. Как видим очень много полезной информации. Эти данные можно использовать в автоматизациях.

Дальше решил завести его в Sprut.hub по MQTT. Для того, чтобы Sprut.hub обнаружил и добавил устройство нужен шаблон. Написал шаблон для Sprut.hub. Скачиваем шаблон и размещаем его в папке Sprut.hub/Templates/MQTT/Custom. Перезапускаем контроллер MQTT,  получаем данные с NEPTUN Smart. Если у вас есть еще Радиодатчик Neptun Smart 868 то под эти датчики так же Скачиваем шаблон и размещаем его в папке Sprut.hub/Templates/MQTT/Custom.

json
Копировать
[
{
"name": "Счётчик",
"manufacturer": "Neptun",
"model": "Neptun_Smart",
"manufacturerId": "Neptun_Counter",
"modelId": "neptun.counter",
"catalogId": 3765,
"services": [
{
"name": "Счётчик P1",
"type": "C_WaterMeter",
"characteristics": [
{
"type": "C_CubicMeter",
"link": {
"type": "Float",
"topicSearch": "/devices/(neptun_[0-9]{1,3})/controls/Slot([1-4]) P1 Counter/meta/type",
"topicGet": "/devices/(1)/controls/Slot(2) P1 Counter"
}
},
{
"type": "SecuritySystemAlarmType",
"link": {
"type": "Integer",
"topicGet": "/devices/(1)/controls/Slot(2) P1 Errors with Namur connection type"
}
}
]
},
{
"name": "Счётчик P2",
"type": "C_WaterMeter",
"characteristics": [
{
"type": "C_CubicMeter",
"link": {
"type": "Float",
"topicGet": "/devices/(1)/controls/Slot(2) P2 Counter"
}
},
{
"type": "SecuritySystemAlarmType",
"link": {
"type": "Integer",
"topicGet": "/devices/(1)/controls/Slot(2) P2 Errors with Namur connection type"
}
}
]
}
]
},
{
"name": "Защита от протечки",
"manufacturer": "Neptun",
"model": "Neptun_Smart",
"manufacturerId": "Neptun_Smart_SE",
"modelId": "neptun.special.edition",
"catalogId": 3801,
"services": [
{
"name": "режим Две зоны",
"type": "Switch",
"characteristics": [
{
"type": "On",
"link": {
"type": "Integer",
"topicSearch": "/devices/neptun_(.*)/controls/Dual zone mode/meta/type",
"topicGet": "/devices/neptun_(1)/controls/Dual zone mode",
"topicSet": "/devices/neptun_(1)/controls/Dual zone mode/on"
}
}
]
},
{
"name": "Зона 1",
"type": "Valve",
"characteristics": [
{
"type": "Active",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Zona 1",
"topicSet": "/devices/neptun_(1)/controls/Zona 1/on"
}
}
]
},
{
"name": "Зона 2",
"type": "Valve",
"characteristics": [
{
"type": "Active",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Zona 2",
"topicSet": "/devices/neptun_(1)/controls/Zona 2/on"
}
}
]
},
{
"name": "режим Мойка пола",
"type": "Switch",
"characteristics": [
{
"type": "On",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/floor washing mode",
"topicSet": "/devices/neptun_(1)/controls/floor washing mode/on"
}
}
]
},
{
"name": "Блокировка кнопок модуля",
"type": "Switch",
"characteristics": [
{
"type": "On",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Keypad locks",
"topicSet": "/devices/neptun_(1)/controls/Keypad locks/on"
}
}
]
},
{
"name": "Закрывать краны при потере беспроводных датчиков",
"type": "Switch",
"characteristics": [
{
"type": "On",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Closing taps when the wireless leak sensor is lost",
"topicSet": "/devices/neptun_(1)/controls/Closing taps when the wireless leak sensor is lost/on"
}
}
]
},
{
"name": "Добавление беспроводных датчиков",
"type": "Switch",
"characteristics": [
{
"type": "On",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Procedure for connecting wireless devices",
"topicSet": "/devices/neptun_(1)/controls/Procedure for connecting wireless devices/on"
}
}
]
},
{
"name": "Датчик протечки 1",
"type": "LeakSensor",
"characteristics": [
{
"type": "LeakDetected",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/LeakSensor 1"
}
}
]
},
{
"name": "Датчик протечки 2",
"type": "LeakSensor",
"characteristics": [
{
"type": "LeakDetected",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/LeakSensor 2"
}
}
]
},
{
"name": "Датчик протечки 3",
"type": "LeakSensor",
"characteristics": [
{
"type": "LeakDetected",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/LeakSensor 3"
}
}
]
},
{
"name": "Датчик протечки 4",
"type": "LeakSensor",
"characteristics": [
{
"type": "LeakDetected",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/LeakSensor 4"
}
}
]
},
{
"name": "Тревога в зоне 1",
"type": "LeakSensor",
"characteristics": [
{
"type": "LeakDetected",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Alarm zona 1"
}
}
]
},
{
"name": "Тревога в зоне 2",
"type": "LeakSensor",
"characteristics": [
{
"type": "LeakDetected",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Alarm zona 2"
}
}
]
},
{
"name": "Краны зоны 1 закрыты из-за потери датчиков",
"type": "ContactSensor",
"characteristics": [
{
"type": "ContactSensorState",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Taps zone 1 are closed due to loss of sensors"
}
}
]
},
{
"name": "Краны зоны 2 закрыты из-за потери датчиков",
"type": "ContactSensor",
"characteristics": [
{
"type": "ContactSensorState",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Taps zone 2 are closed due to loss of sensors"
}
}
]
},
{
"name": "Разряд батареи в беспроводных датчиках",
"type": "ContactSensor",
"characteristics": [
{
"type": "ContactSensorState",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Battery drain in wireless sensors"
}
}
]
},
{
"name": "Потеряно соединение с беспроводными датчиками",
"type": "ContactSensor",
"characteristics": [
{
"type": "ContactSensorState",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/Lost connection with wireless sensors"
}
}
]
}
]
}
]


json
Копировать
[
{
"name": "Беспроводной датчик протечки",
"manufacturer": "Neptun",
"model": "Neptun_Smart_868",
"manufacturerId": "Neptun_Smart",
"modelId": "neptun.leak.detected",
"catalogId": 278,
"services": [
{
"name": "Беспроводной датчик протечки",
"type": "LeakSensor",
"characteristics": [
{
"type": "LeakDetected",
"link": {
"type": "Integer",
"topicSearch": "/devices/neptun_(.*)/controls/presense of alarm sensor ([1-50])/meta/type",
"topicGet": "/devices/neptun_(1)/controls/presense of alarm sensor (2)"
}
}
]
},
{
"name": "Батарея",
"type": "BatteryService",
"characteristics": [
{
"type": "BatteryLevel",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/battery level sensor (2)"
}
},
{
"type": "StatusLowBattery",
"link": {
"type": "Integer",
"topicGet": "/devices/neptun_(1)/controls/availability of category sensor (2)"
}
},
{
"type": "ChargingState",
"validValues": "NOT_CHARGEABLE"
}
]
}
]
}
]

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

Вот так он выглядит в Sprut.hub

Огонь!
Максим, большая Вам спасибо! Очень здорово получилось! Свяжитесь, пожалуйста, со мной - я хотел бы сделать Вам подарок от компании Neptun

@Oleg89267015858
Олег, вы же из Нептуна? В свое время попадал в руки блок Neptun Tuya Wifi, который я заводил в Home Assistant через интеграцию Tuya Local для локального управления. Споткнулся на именовании параметров - Tuya их отдает в виде чисел, не все могу ассоциировать с их практической ролью. Возможно, через вас удалось бы раздобыть какую-то документацию, чтобы сделать описание подключения этого блока в локальном режиме.

Делал себе пометки, сравнивал с приложением Tuya, выходило как-то так:

101 - режим мойки пола
109 - Зона 1
110 - Зона 2
135 - имена зон (список)

Вот бы полный список.
Андрей, спасибо! Передаю вопрос специалистам, отпишусь попозже :)
Добрый день! вопрос по описанию значений PID и настройке в Local Tuya все еще актуален
Олег, модуль RS-485 от Neptun , за 7 358р это слишком.
WB-MWAC целиком 6800 стоит.
Я смотрю на свой Neptun Smart который стоил мне ещё 20тыр и думаю, думаю, думаю...

Максиму огромнейшее спасибо!!! Очень бы хотелось, что бы не зря.

WBE2-I-RS485-ISO - 1400р

Надеюсь вы пересмотрите ценовую политику, хотя бы на это изделие.
Я с радостью куплю, его и усовершенствую свою систему защиты от протечек.
Как все тесты показали , я смог получать и отправлять данные модбас тсп по lan плате она дешевле )) и даже по встроенному wifi каналу тот что для sst cloud . Так что можно не докупать модули.
Добрый день! Плата расширения как я понимаю не обязательна для такой интеграции, так как Modbus TCP (по WiFi) есть в каждом модуле Smart.

Итого:

1. Modbus TCP (по WiFi) есть в каждом модуле Smart.

2. Modbus TCP есть в плате расширения LAN

3. Modbus RTU есть в плате расширения RS-485
Огонь просто спасибо. А можете написать шаблон для Home Assistant ?
У меня нет home assistant ))
@MaxE спасибо за проделанную работу и за то, что поделились!!!!

У меня вопрос. Смарт версия WiFi поддерживает из коробки? Или без дополнительных модулей никак в spruthub не залетит!?

Заранее спасибо!
Через wifi встроенный ( тот что для SST Cloud ) тоже работает как канал modbus tcp на 503 порту 240 адрес устройства . Так что можно не докупать ничего, но связь чуть хуже. Есть в логах WB ошибки связи таймауты чтения . В spruthub по wifi через проброс WB работает , напрямую не пробовал так как вроде еще нет поддержки побитного общения по modbus в spruthub.
Добрый день.
А через уже готовую интеграцию системы с Tuya нельзя как-то пробросить в Sprut?

Я только жду поставку своего хаба и пока в руках не крутил его, но уже надо подбирать систему контроля протечки.
С туей влоб не получилось , на ip tuya модуля не нашел открытых портов с модбас и мкутт . А облака я не люблю .
Облако да, не надежно. НО это Нептун же вещь в себе и он работает самостоятельно и достаточно надежно.
Я больше хотел бы получить уведомление об аварии. А это можно и через облако.
Ну тогда возможно допилят контроллер нептуна в спруте и через облако sst cloud будите видит увидомления в спруте и через облако туи управлятьи все настраивать в приложении smart life . Как выяснил оба облака работают вместе )))
А данные в Спрут затягиваются уже из WB через MQTT ???
Да
Максим, а не могли бы помочь с Modbus tcp интеграцией в Home Assistant? В целом интересует как можно понять какие адреса для разных сенсоров и переключателей. Инструкция дана по Modbus RTU, при этом заявлено что есть поддержка и по Modbus tcp. Или может как-то можно развернуть то что вам выдал WIREN при TCP подключении.

Вот на примере того же режима уборки. Какой адрес нужно подставить? Я пытался провести аналогию с RTU но не вышло.

name: neptunsmart
type: top
host: 192.168.0.150
port: 503
- switches:
name: Wash Mode
unique_id: "NeptunWashMode"
address: ??????
command_on:
command_off: 0
Я не у верен что НА умеет обрабатывать побитно вы указывать адрес должны "адресс:начальный бит:длинна бита" так как у нептуна в одном адресе несколько команд например тотже режим мойка пола "0:0:1"

Вернуться назад
Вернуться назад