Ensystec-leak-protect-wiren-board-template
Шаблон Wiren Board Ensystec Leak Protect для XIOT
Это рабочий кастомный шаблон wb-mqtt-serial для подключения Ensystec Leak Protect к XIOT через Wiren Board.
Версия зафиксирована 2026-06-09 после проверки на контроллере 192.168.88.27.
SHA256: 09622150ba7dc4a4c11062fba031c116cd73cf7c9fd8c34f3ee36f443e2d4568 Локальная копия: /Users/xiot/Projects/xiot_wb/Шаблоны/ensystec/config-ensystec.xiot-final.json Рекомендуемый путь на Wiren Board: /etc/wb-mqtt-serial.conf.d/templates/config-ensystec.json
Зачем нужен этот шаблон
Шаблон нужен для стабильной привязки Ensystec к характеристикам XIOT без wb-rules. Он разделяет теги состояния и теги управления для флага протечки, включения защиты и статуса кранов. Низкоуровневые команды Ensystec, которые пишут отдельные биты регистра CONTROL0, скрыты из обычного интерфейса, чтобы их не привязывали напрямую к характеристикам XIOT.
Основная статья по подключению: Подключение Ensystec в XIOT через Wirenboard. Общая инструкция по размещению шаблонов: Пользовательские шаблоны устройств Wiren Board.
JSON шаблона
{
"title": "template_title",
"device_type": "Ensystec-Leak-Protect",
"group": "g-leakage",
"device": {
"name": "Ensystec Leak Protect",
"id": "ensystec_leak_protect",
"groups": [
{
"title": "Input 1",
"id": "input1"
},
{
"title": "Input 2",
"id": "input2"
},
{
"title": "Input 3",
"id": "input3"
},
{
"title": "Input 4",
"id": "input4"
},
{
"title": "Input 5",
"id": "input5"
},
{
"title": "Input 6",
"id": "input6"
},
{
"title": "Input 7",
"id": "input7"
},
{
"title": "Input 8",
"id": "input8"
},
{
"title": "Input 9",
"id": "input9"
},
{
"title": "Input 10",
"id": "input10"
},
{
"title": "Outputs",
"id": "outputs"
},
{
"title": "General",
"id": "general"
},
{
"title": "HW Info",
"id": "hw_info"
}
],
"parameters": {
"address": {
"title": "Address",
"description": "address_description",
"address": 15,
"reg_type": "holding",
"format": "u8",
"default": 247,
"min": 1,
"max": 247,
"group": "general",
"order": 1
},
"baud_rate": {
"title": "Baud Rate",
"description": "baud_rate_description",
"address": 16,
"reg_type": "holding",
"enum": [
255,
254,
253,
251
],
"default": 255,
"enum_titles": [
"9600 bps",
"19200 bps",
"57600 bps",
"115200 bps"
],
"group": "general",
"order": 2
}
},
"channels": [
{
"name": "external_power_220_ac",
"reg_type": "holding",
"address": "4:1:1",
"readonly": true,
"type": "switch",
"group": "general",
"enabled": true
},
{
"name": "low_battery_voltage",
"reg_type": "holding",
"address": "4:2:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": true
},
{
"name": "leakage_sensor",
"reg_type": "holding",
"address": "4:0:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": true
},
{
"name": "leakage_sensor_control",
"reg_type": "holding",
"write_address": 5,
"type": "switch",
"on_value": 65535,
"off_value": 65407,
"group": "general",
"enabled": true,
"readonly": false
},
{
"name": "failure_sensor",
"reg_type": "holding",
"address": "4:3:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": true
},
{
"name": "alarm_reset",
"reg_type": "holding",
"address": "5:7:1",
"type": "switch",
"on_value": 0,
"group": "general",
"enabled": false,
"off_value": 1,
"readonly": false
},
{
"name": "leak_protection_enabled",
"reg_type": "holding",
"address": "5:2:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": true
},
{
"name": "leak_protection_control",
"reg_type": "holding",
"write_address": 5,
"type": "switch",
"on_value": 65407,
"off_value": 65533,
"group": "general",
"enabled": true,
"readonly": false
},
{
"name": "leak_protection_disable_30min",
"reg_type": "holding",
"address": "5:1:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false,
"readonly": false
},
{
"name": "input_1",
"reg_type": "holding",
"address": "3:0:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input1",
"enabled": true
},
{
"name": "input_1_counter",
"reg_type": "holding",
"address": "17",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input1",
"enabled": false
},
{
"name": "input_1_open_circuit",
"reg_type": "holding",
"address": "3:1:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input1",
"enabled": false
},
{
"name": "input_2",
"reg_type": "holding",
"address": "3:2:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input2",
"enabled": true
},
{
"name": "input_2_counter",
"reg_type": "holding",
"address": "19",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input2",
"enabled": false
},
{
"name": "input_2_open_circuit",
"reg_type": "holding",
"address": "3:3:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input2",
"enabled": false
},
{
"name": "input_3",
"reg_type": "holding",
"address": "3:4:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input3",
"enabled": true
},
{
"name": "input_3_counter",
"reg_type": "holding",
"address": "21",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input3",
"enabled": false
},
{
"name": "input_3_open_circuit",
"reg_type": "holding",
"address": "3:5:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input3",
"enabled": false
},
{
"name": "input_4",
"reg_type": "holding",
"address": "3:6:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input4",
"enabled": true
},
{
"name": "input_4_counter",
"reg_type": "holding",
"address": "23",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input4",
"enabled": false
},
{
"name": "input_4_open_circuit",
"reg_type": "holding",
"address": "3:7:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input4",
"enabled": false
},
{
"name": "input_5",
"reg_type": "holding",
"address": "3:8:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input5",
"enabled": true
},
{
"name": "input_5_counter",
"reg_type": "holding",
"address": "25",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input5",
"enabled": false
},
{
"name": "input_5_open_circuit",
"reg_type": "holding",
"address": "3:9:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input5",
"enabled": false
},
{
"name": "input_6",
"reg_type": "holding",
"address": "3:10:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input6",
"enabled": true
},
{
"name": "input_6_counter",
"reg_type": "holding",
"address": "27",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input6",
"enabled": false
},
{
"name": "input_6_open_circuit",
"reg_type": "holding",
"address": "3:11:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input6",
"enabled": false
},
{
"name": "input_7",
"reg_type": "holding",
"address": "3:12:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input7",
"enabled": true
},
{
"name": "input_7_counter",
"reg_type": "holding",
"address": "29",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input7",
"enabled": false
},
{
"name": "input_7_open_circuit",
"reg_type": "holding",
"address": "3:13:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input7",
"enabled": false
},
{
"name": "input_8",
"reg_type": "holding",
"address": "3:14:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input8",
"enabled": true
},
{
"name": "input_8_counter",
"reg_type": "holding",
"address": "31",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input8",
"enabled": false
},
{
"name": "input_8_open_circuit",
"reg_type": "holding",
"address": "3:15:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input8",
"enabled": false
},
{
"name": "input_9",
"reg_type": "holding",
"address": "2:0:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input9",
"enabled": true
},
{
"name": "input_9_counter",
"reg_type": "holding",
"address": "33",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input9",
"enabled": false
},
{
"name": "input_9_open_circuit",
"reg_type": "holding",
"address": "2:1:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input9",
"enabled": false
},
{
"name": "input_10",
"reg_type": "holding",
"address": "2:2:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input10",
"enabled": true
},
{
"name": "input_10_counter",
"reg_type": "holding",
"address": "35",
"readonly": true,
"type": "value",
"format": "s32",
"group": "input10",
"enabled": false
},
{
"name": "input_10_open_circuit",
"reg_type": "holding",
"address": "2:3:1",
"readonly": true,
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "input10",
"enabled": false
},
{
"name": "output_k1",
"reg_type": "holding",
"write_address": 6,
"type": "switch",
"on_value": 3,
"off_value": 1,
"group": "outputs",
"enabled": true
},
{
"name": "output_k1_flag",
"reg_type": "holding",
"address": "6:0:1",
"readonly": true,
"type": "value",
"enum": [
0,
1
],
"enum_titles": [
"Done",
"In Progress"
],
"group": "outputs",
"enabled": false
},
{
"name": "output_k1_status",
"reg_type": "holding",
"address": "4:8:2",
"readonly": true,
"type": "value",
"enum": [
0,
1,
2,
3
],
"enum_titles": [
"Closed",
"Opened",
"Undefined",
"Disconnected"
],
"group": "outputs",
"enabled": true
},
{
"name": "output_k1_status_switch",
"reg_type": "holding",
"address": "4:8:2",
"readonly": true,
"type": "switch",
"off_value": 0,
"group": "outputs",
"enabled": true
},
{
"name": "output_k2",
"reg_type": "holding",
"write_address": 7,
"type": "switch",
"on_value": 3,
"off_value": 1,
"group": "outputs",
"enabled": true
},
{
"name": "output_k2_flag",
"reg_type": "holding",
"address": "7:0:1",
"readonly": true,
"type": "value",
"enum": [
0,
1
],
"enum_titles": [
"Done",
"In Progress"
],
"group": "outputs",
"enabled": false
},
{
"name": "output_k2_status",
"reg_type": "holding",
"address": "4:10:2",
"readonly": true,
"type": "value",
"enum": [
0,
1,
2,
3
],
"enum_titles": [
"Closed",
"Opened",
"Undefined",
"Disconnected"
],
"group": "outputs",
"enabled": true
},
{
"name": "output_k2_status_switch",
"reg_type": "holding",
"address": "4:10:2",
"readonly": true,
"type": "switch",
"off_value": 0,
"group": "outputs",
"enabled": true
},
{
"name": "output_k3",
"reg_type": "holding",
"write_address": 8,
"type": "switch",
"on_value": 3,
"off_value": 1,
"group": "outputs",
"enabled": false
},
{
"name": "output_k3_flag",
"reg_type": "holding",
"address": "8:0:1",
"readonly": true,
"type": "value",
"enum": [
0,
1
],
"enum_titles": [
"Done",
"In Progress"
],
"group": "outputs",
"enabled": false
},
{
"name": "output_k3_status",
"reg_type": "holding",
"address": "4:12:2",
"readonly": true,
"type": "value",
"enum": [
0,
1,
2,
3
],
"enum_titles": [
"Closed",
"Opened",
"Undefined",
"Disconnected"
],
"group": "outputs",
"enabled": false
},
{
"name": "output_k3_status_switch",
"reg_type": "holding",
"address": "4:12:2",
"readonly": true,
"type": "switch",
"off_value": 0,
"group": "outputs",
"enabled": false
},
{
"name": "output_k4",
"reg_type": "holding",
"write_address": 9,
"type": "switch",
"on_value": 3,
"off_value": 1,
"group": "outputs",
"enabled": false
},
{
"name": "output_k4_flag",
"reg_type": "holding",
"address": "9:0:1",
"readonly": true,
"type": "value",
"enum": [
0,
1
],
"enum_titles": [
"Done",
"In Progress"
],
"group": "outputs",
"enabled": false
},
{
"name": "output_k4_status",
"reg_type": "holding",
"address": "4:14:2",
"readonly": true,
"type": "value",
"enum": [
0,
1,
2,
3
],
"enum_titles": [
"Closed",
"Opened",
"Undefined",
"Disconnected"
],
"group": "outputs",
"enabled": false
},
{
"name": "output_k4_status_switch",
"reg_type": "holding",
"address": "4:14:2",
"readonly": true,
"type": "switch",
"off_value": 0,
"group": "outputs",
"enabled": false
},
{
"name": "external_led_control",
"reg_type": "holding",
"address": "14:4:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_1",
"reg_type": "holding",
"address": "14:6:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_2",
"reg_type": "holding",
"address": "14:7:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_3",
"reg_type": "holding",
"address": "14:8:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_4",
"reg_type": "holding",
"address": "14:9:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_5",
"reg_type": "holding",
"address": "14:10:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_6",
"reg_type": "holding",
"address": "14:11:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_7",
"reg_type": "holding",
"address": "14:12:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_8",
"reg_type": "holding",
"address": "14:13:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_9",
"reg_type": "holding",
"address": "14:14:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "led_10",
"reg_type": "holding",
"address": "14:15:1",
"type": "switch",
"on_value": 0,
"off_value": 1,
"group": "general",
"enabled": false
},
{
"name": "software_version",
"reg_type": "holding",
"address": "127:8:0",
"readonly": true,
"type": "value",
"group": "hw_info",
"enabled": false
},
{
"name": "hardware_version",
"reg_type": "holding",
"address": "127:8:8",
"readonly": true,
"type": "value",
"group": "hw_info",
"enabled": false
}
],
"translations": {
"en": {
"template_title": "Ensystec Leak Protect",
"address_description": "Make sure that communication with device is established before changing this parameter. Select required address, save configuration and then change device address to the same value",
"baud_rate_description": "Make sure that communication with device is established before changing this parameter. Select required baud rate, save configuration and then change port baud rate to the same value",
"input_1": "Input 1",
"input_1_counter": "Counter 1",
"input_1_open_circuit": "Input 1 - Open Circuit",
"input_2": "Input 2",
"input_2_counter": "Counter 2",
"input_2_open_circuit": "Input 2 - Open Circuit",
"input_3": "Input 3",
"input_3_counter": "Counter 3",
"input_3_open_circuit": "Input 3 - Open Circuit",
"input_4": "Input 4",
"input_4_counter": "Counter 4",
"input_4_open_circuit": "Input 4 - Open Circuit",
"input_5": "Input 5",
"input_5_counter": "Counter 5",
"input_5_open_circuit": "Input 5 - Open Circuit",
"input_6": "Input 6",
"input_6_counter": "Counter 6",
"input_6_open_circuit": "Input 6 - Open Circuit",
"input_7": "Input 7",
"input_7_counter": "Counter 7",
"input_7_open_circuit": "Input 7 - Open Circuit",
"input_8": "Input 8",
"input_8_counter": "Counter 8",
"input_8_open_circuit": "Input 8 - Open Circuit",
"input_9": "Input 9",
"input_9_counter": "Counter 9",
"input_9_open_circuit": "Input 9 - Open Circuit",
"input_10": "Input 10",
"input_10_counter": "Counter 10",
"input_10_open_circuit": "Input 10 - Open Circuit",
"output_k1": "Output K1",
"output_k1_flag": "Output K1 Flag",
"output_k1_status": "Output K1 State",
"output_k2": "Output K2",
"output_k2_flag": "Output K2 Flag",
"output_k2_status": "Output K2 State",
"output_k3": "Output K3",
"output_k3_flag": "Output K3 Flag",
"output_k3_status": "Output K3 State",
"output_k4": "Output K4",
"output_k4_flag": "Output K4 Flag",
"output_k4_status": "Output K4 State",
"external_power_220_ac": "External Power 220 AC",
"low_battery_voltage": "Low Battery Voltage",
"leakage_sensor": "Leak Detected",
"failure_sensor": "Failure Sensor",
"external_led_control": "External LED Control",
"led_1": "LED 1",
"led_2": "LED 2",
"led_3": "LED 3",
"led_4": "LED 4",
"led_5": "LED 5",
"led_6": "LED 6",
"led_7": "LED 7",
"led_8": "LED 8",
"led_9": "LED 9",
"led_10": "LED 10",
"software_version": "Software Version",
"hardware_version": "Hardware Version",
"alarm_reset": "Alarm Reset",
"leak_protection_enabled": "Leak Protection Status",
"leak_protection_disable_30min": "Disable Leak Protection for 30 min",
"leak_protection_control": "Leak Protection Control",
"leakage_sensor_control": "Leak Reset",
"output_k1_status_switch": "Output K1 Status",
"output_k2_status_switch": "Output K2 Status",
"output_k3_status_switch": "Output K3 Status",
"output_k4_status_switch": "Output K4 Status"
},
"ru": {
"template_title": "Ensystec - защита от протечки",
"Input 1": "Вход 1",
"Input 2": "Вход 2",
"Input 3": "Вход 3",
"Input 4": "Вход 4",
"Input 5": "Вход 5",
"Input 6": "Вход 6",
"Input 7": "Вход 7",
"Input 8": "Вход 8",
"Input 9": "Вход 9",
"Input 10": "Вход 10",
"Outputs": "Выходы",
"General": "Общее",
"HW Info": "Данные модуля",
"input_1": "Вход 1",
"input_1_counter": "Счетчик 1",
"input_1_open_circuit": "Вход 1 - обрыв",
"input_2": "Вход 2",
"input_2_counter": "Счетчик 2",
"input_2_open_circuit": "Вход 2 - обрыв",
"input_3": "Вход 3",
"input_3_counter": "Счетчик 3",
"input_3_open_circuit": "Вход 3 - обрыв",
"input_4": "Вход 4",
"input_4_counter": "Счетчик 4",
"input_4_open_circuit": "Вход 4 - обрыв",
"input_5": "Вход 5",
"input_5_counter": "Счетчик 5",
"input_5_open_circuit": "Вход 5 - обрыв",
"input_6": "Вход 6",
"input_6_counter": "Счетчик 6",
"input_6_open_circuit": "Вход 6 - обрыв",
"input_7": "Вход 7",
"input_7_counter": "Счетчик 7",
"input_7_open_circuit": "Вход 7 - обрыв",
"input_8": "Вход 8",
"input_8_counter": "Счетчик 8",
"input_8_open_circuit": "Вход 8 - обрыв",
"input_9": "Вход 9",
"input_9_counter": "Счетчик 9",
"input_9_open_circuit": "Вход 9 - обрыв",
"input_10": "Вход 10",
"input_10_counter": "Счетчик 10",
"input_10_open_circuit": "Вход 10 - обрыв",
"output_k1": "Кран 1",
"output_k1_flag": "Кран 1 - команда",
"output_k1_status": "Кран 1 состояние",
"output_k2": "Кран 2",
"output_k2_flag": "Кран 2 - команда",
"output_k2_status": "Кран 2 состояние",
"output_k3": "Кран 3",
"output_k3_flag": "Кран 3 - команда",
"output_k3_status": "Кран 3 состояние",
"output_k4": "Кран 4",
"output_k4_flag": "Кран 4 - команда",
"output_k4_status": "Кран 4 состояние",
"Done": "Выполнено",
"In Progress": "Выполнение",
"Closed": "Закрыт",
"Opened": "Открыт",
"Undefined": "Не определено",
"Disconnected": "Не подключен",
"Address": "Адрес",
"Baud Rate": "Скорость обмена",
"9600 bps": "9600 бит/с",
"19200 bps": "19200 бит/с",
"57600 bps": "57600 бит/с",
"115200 bps": "115200 бит/с",
"address_description": "Перед изменением параметра убедитесь, что связь с устройством установлена. Выберите нужный адрес, сохраните конфигурацию, а затем укажите в настройках устройства этот же адрес",
"baud_rate_description": "Перед изменением параметра убедитесь, что связь с устройством установлена. Выберите нужную скорость обмена, сохраните конфигурацию, а затем укажите в настройках порта эту же скорость",
"external_power_220_ac": "Внешнее питание 220 В",
"low_battery_voltage": "Низкий уровень заряда",
"leakage_sensor": "Обнаружена протечка",
"failure_sensor": "Обрыв датчика",
"external_led_control": "Управление светодиодами",
"led_1": "Светодиод 1",
"led_2": "Светодиод 2",
"led_3": "Светодиод 3",
"led_4": "Светодиод 4",
"led_5": "Светодиод 5",
"led_6": "Светодиод 6",
"led_7": "Светодиод 7",
"led_8": "Светодиод 8",
"led_9": "Светодиод 9",
"led_10": "Светодиод 10",
"software_version": "Версия прошивки",
"hardware_version": "Версия контроллера",
"alarm_reset": "Сброс аварии",
"leak_protection_enabled": "Статус защиты от протечки",
"leak_protection_disable_30min": "Отключить защиту на 30 минут",
"leak_protection_control": "Управление защитой от протечки",
"leakage_sensor_control": "Сброс протечки",
"output_k1_status_switch": "Кран 1 статус",
"output_k2_status_switch": "Кран 2 статус",
"output_k3_status_switch": "Кран 3 статус",
"output_k4_status_switch": "Кран 4 статус"
}
}
}
}