Как известно, Умная система защиты от протечки воды предназначена для обнаружения и локализации протечек воды в системах водоснабжения. Такие системы сами справляются со своими функциями и автономно. Но если есть возможность контролировать и управлять им через систему умного дома было бы вообще супер.
Наконец дошли руки до своего 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.
Для того, чтобы WirenBoard обнаружил и добавил устройство скачиваем шаблон и
размещаем его в дериктории /etc/wb-mqtt-serial.conf.d/templates. После чего
настраеваем в wb-mqtt-sereal.conf устройство, выбрав шаблон из ссылки. Ниже фрагмент шаблона, так как шаблон 4305 строк весь находится по ссылке.
{
"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
Если все сделано правильно, то получаем данные с 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.
[
{
"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"
}
}
]
}
]
}
]
[
{
"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ще один пункт добавлен в систему управления умным домом. Теперь при протечке в доме, можно предпринять какие-то действия в автоматизациях.
@Oleg89267015858
Делал себе пометки, сравнивал с приложением Tuya, выходило как-то так:
101 - режим мойки пола
109 - Зона 1
110 - Зона 2
135 - имена зон (список)
Вот бы полный список.
WB-MWAC целиком 6800 стоит.
Я смотрю на свой Neptun Smart который стоил мне ещё 20тыр и думаю, думаю, думаю...
Максиму огромнейшее спасибо!!! Очень бы хотелось, что бы не зря.
WBE2-I-RS485-ISO - 1400р
Надеюсь вы пересмотрите ценовую политику, хотя бы на это изделие.
Я с радостью куплю, его и усовершенствую свою систему защиты от протечек.
Итого:
1. Modbus TCP (по WiFi) есть в каждом модуле Smart.
2. Modbus TCP есть в плате расширения LAN
3. Modbus RTU есть в плате расширения RS-485
У меня вопрос. Смарт версия WiFi поддерживает из коробки? Или без дополнительных модулей никак в spruthub не залетит!?
Заранее спасибо!
А через уже готовую интеграцию системы с Tuya нельзя как-то пробросить в Sprut?
Я только жду поставку своего хаба и пока в руках не крутил его, но уже надо подбирать систему контроля протечки.
Я больше хотел бы получить уведомление об аварии. А это можно и через облако.
Вот на примере того же режима уборки. Какой адрес нужно подставить? Я пытался провести аналогию с 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
По состоянию на июль 2024г. новые устройства уже нельзя добавить в SST Cloud, только в Tuya Smart Life. Техподдержка Нептуна это подтвердила.
В итоге у меня все-таки получилось подключить нептун к wirenboard по modbus tcp через wifi, и (!) одновременно к облаку Tuya!
Сначала я подключился к tuya, потом сбросил настройки и попытался подключиться к SST Cloud. Подключение не прошло до конца, но зато нептун подключился к домашнему wifi. Потом снова подключил tuya. В итоге у нептуна теперь два сетевых интерфейса, с разными MAC-адресами - один для SST, другой для tuya. И на том, который для SST, как раз открыт порт 503/tcp через который работает модбас!