Статья

Система защиты от протечки воды 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 - имена зон (список)

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

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

WBE2-I-RS485-ISO - 1400р

Надеюсь вы пересмотрите ценовую политику, хотя бы на это изделие.
Я с радостью куплю, его и усовершенствую свою систему защиты от протечек.
Как все тесты показали , я смог получать и отправлять данные модбас тсп по lan плате она дешевле )) и даже по встроенному wifi каналу тот что для sst cloud . Так что можно не докупать модули.
Огонь просто спасибо. А можете написать шаблон для 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 ???
Да

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