Files
lighthub/documentation/core/configuration_examples.md
andry f496e30600 Add configuration examples for various devices and functionalities
- Introduced multivent ventilation configuration for managing multiple zones.
- Added PID heating batteries configuration for temperature control.
- Created relay GPIO switch configuration for controlling relays.
- Implemented RGBW LED strip configuration for lighting control.
- Added Modbus CO2 sensor configuration for environmental monitoring.
- Introduced Sonoff S26 humidity controller example for humidity management.
- Created sprinkler irrigation configuration for garden management.
- Added thermostat on/off relay configuration for heating and cooling control.
- Implemented ventilation fan monitoring configuration for performance tracking.
- Added core concepts documentation for LightHub, detailing items, commands, and execution objects.
2026-10-15 19:11:34 +03:00

1167 lines
35 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LightHub: Примеры конфигурации для всех типов каналов (0-23)
> **Практический справочник** с готовыми примерами JSON конфигурации для каждого типа канала.
> Каждый пример показывает полный синтаксис, включая MQTT топики и все параметры.
---
## Содержание
- [CH\_DIMMER (0)](#ch_dimmer-0---dmx-диммер)
- [CH\_RGBW (1)](#ch_rgbw-1---dmx-rgbwhite)
- [CH\_RGB (2)](#ch_rgb-2---dmx-rgb)
- [CH\_PWM (3)](#ch_pwm-3---gpio-pwm)
- [CH\_MODBUS (4)](#ch_modbus-4---modbus-ac-dimmer-legacy)
- [CH\_THERMO (5)](#ch_thermo-5---onoff-термостат)
- [CH\_RELAY (6)](#ch_relay-6---gpio-реле)
- [CH\_GROUP (7)](#ch_group-7---группа-каналов)
- [CH\_VCTEMP (8)](#ch_vctemp-8---vacom-pid-терморегулятор)
- [CH\_VC (9)](#ch_vc-9---vacom-мотор-регулятор)
- [CH\_AC (10)](#ch_ac-10---кондиционер-haier)
- [CH\_SPILED (11)](#ch_spiled-11---spi-led-лента)
- [CH\_MOTOR (12)](#ch_motor-12---шаговый-двигатель)
- [CH\_PID (13)](#ch_pid-13---pid-регулятор)
- [CH\_MBUS (14)](#ch_mbus-14---universal-modbus)
- [CH\_UARTBRIDGE (15)](#ch_uartbridge-15---uart-мост)
- [CH\_RELAYX (16)](#ch_relayx-16---медленный-pwm-через-реле)
- [CH\_RGBWW (17)](#ch_rgbww-17---dmx-rgbww)
- [CH\_MULTIVENT (18)](#ch_multivent-18---многозональная-вентиляция)
- [CH\_ELEVATOR (19)](#ch_elevator-19---управление-лифтом)
- [CH\_COUNTER (20)](#ch_counter-20---счётчик)
- [CH\_HUMIDIFIER (21)](#ch_humidifier-21---управление-увлажнителем)
- [CH\_MERCURY (22)](#ch_mercury-22---счётчик-энергии-mercury)
- [CH\_SPRINKLER (23)](#ch_sprinkler-23---система-полива)
---
## CH\_DIMMER (0) - DMX диммер
**Назначение**: Регулировка яркости одного или нескольких DMX каналов
### Синтаксис
```json
"dimmer_name": [0, дмx_канал_или_массив]
```
Число элементов в arg задаёт число DMX каналов: 1 → одно-канальный диммер, 3 → RGB, 4 → RGBW, 5 → RGBWW.
### Примеры
```json
{
"items": {
"lamp_bedroom": [0, 1], // 1 канал: DMX 1
"lamp_kitchen": [0, 2], // 1 канал: DMX 2
"lamp_hall": [0, [3, 4, 5]], // 3 канала: RGB (DMX 3-5)
"lamp_stage": [0, 10, 255, 1] // с начальными значениями
}
}
```
### MQTT команды
```
myhome/dev/lamp_bedroom/cmd ← ON, OFF, TOGGLE, SET
myhome/dev/lamp_bedroom/set ← 150 (яркость 0-255)
myhome/s_out/lamp_bedroom/val → опубликованная яркость
```
---
## CH\_RGBW (1) - DMX RGBW
**Назначение**: Управление RGB + White каналом через DMX (4 канала DMX)
### Синтаксис
```json
"rgb_name": [1, стартовый_dmx_канал]
```
### Пример
```json
{
"mqtt": ["lighthub", "192.168.88.2"],
"dmx": [512],
"items": {
"rgb_light": [1, 10], // RGB+W на DMX 10-13
"rgb_light2": [1, 20, 255, 0] // с начальной яркостью 255
}
}
```
### MQTT команды
```
myhome/dev/rgb_light/hue ← 240 (0-359°)
myhome/dev/rgb_light/sat ← 100 (0-100%)
myhome/dev/rgb_light/val ← 200 (0-255)
myhome/dev/rgb_light/temp ← 6500 (температура цвета, Mirids)
myhome/dev/rgb_light/RGB ← 255,0,0 (красный)
myhome/dev/rgb_light/RGB ← 255,0,0,100 (RGB+White)
```
---
## CH\_RGB (2) - DMX RGB
**Назначение**: Управление RGB каналом через DMX (3 канала DMX)
### Пример
```json
{
"items": {
"mood_light": [2, 15] // RGB на DMX 15-17
}
}
```
### MQTT команды
```
myhome/dev/mood_light/RGB ← 0,255,0 (зелёный)
myhome/dev/mood_light/HSV ← 120,100,100 (зелёный в HSV)
```
---
## CH\_PWM (3) - GPIO PWM
**Назначение**: PWM выход через GPIO пины (для плат Arduino, ESP)
### Синтаксис
```json
"pwm_name": [3, gpio_пин_или_массив]
```
### Примеры
```json
{
"items": {
"pwm_dim": [3, 9], // PWM на GPIO D9
"pwm_4ch": [3, [11, 12, 13, 14]], // RGBW: 4 канала PWM (GPIO 11-14)
"led_pwm": [3, 5, 255, 1] // с начальным значением
}
}
```
### MQTT команды
```
myhome/dev/pwm_dim/set ← 128
myhome/dev/pwm_dim/cmd ← ON
```
---
## CH\_MODBUS (4) - Modbus AC Dimmer (Legacy)
**Назначение**: Управление AC-диммером через Modbus RTU (устаревший тип, использовать CH\_MBUS (14))
### Синтаксис
```json
"mbus_dim": [4, [адрес, регистр, маска, макс_значение]]
```
### Пример
```json
{
"items": {
"ac_dimmer": [4, [96, 0, 0, 255]]
// Адрес: 96 (0x60)
// Регистр: 0
// Маска: 0 (LSB)
// Макс значение: 255
}
}
```
⚠️ **Примечание**: Для новых проектов используйте CH\_MBUS (14) вместо этого
---
## CH\_THERMO (5) - ON/OFF Термостат
**Назначение**: Простой ON/OFF термостат с гистерезисом
### Синтаксис
```json
"thermo_name": [5, gpio_пин, целевая_температура°C]
```
### Примеры
```json
{
"items": {
"thermo_bath": [5, 24, 33], // GPIO 24, уставка 33°C
"thermo_bedroom": [5, 25, 22], // GPIO 25, уставка 22°C
"floor_heating": [5, 26, 28, 1, 1] // с начальным значением
}
}
```
### MQTT команды
```
myhome/dev/thermo_bath/set ← 35 (установить целевую T)
myhome/dev/thermo_bath/val ← передать измерянную температуру с удаленного сенсора
myhome/dev/thermo_bath/cmd ← ON, OFF
```
---
## CH\_RELAY (6) - GPIO Реле
**Назначение**: Простое электромагнитное реле ON/OFF или иное дискретное устройство
### Синтаксис
```json
"relay_name": [6, gpio_пин]
"relay_name": [6, gpio_пин, начальное_значение, начальная_команда]
```
### Примеры
```json
{
"items": {
"relay_water": [6, 23], // Реле на GPIO 23
"relay_pump": [6, 24, 0, 0], // начально OFF
"relay_heat": [6, 28, 1, 1] // начально ON, команда ON
}
}
```
### MQTT команды
```
myhome/dev/relay_water/cmd ← ON, OFF, TOGGLE
```
---
## CH\_GROUP (7) - Группа каналов
**Назначение**: Логическая группа для синхронного управления несколькими каналами
### Синтаксис
```json
"group_name": [7, [канал1, канал2, канал3, ...]]
```
### Примеры
```json
{
"items": {
"lamps": [0, 1],
"lamps2": [0, 2],
"rgb1": [1, 10],
"lights_all": [7, [
"lamps",
"lamps2",
"rgb1"
]],
"lights_bedroom": [7, ["lamps"]],
"lights_common": [7, ["lamps", "lamps2"]]
}
}
```
### MQTT команды
```
myhome/dev/lights_all/cmd ← ON (включит ВСЕ в группе)
myhome/dev/lights_all/cmd ← OFF (выключит ВСЕ в группе)
myhome/dev/lights_all/cmd ← SET 100 (установит яркость для диммеров)
```
---
## CH\_VCTEMP (8) - Vacom PID Терморегулятор
**Назначение**: PID регулятор температуры для систем вентиляции Vacom
### Синтаксис
```json
"vacom_heat": [8, "имя_item_VC"]
```
Аргумент VCTEMP (8) — **строка**: имя item типа VC (9), к которому привязывается термостат.
### Пример
```json
{
"items": {
"fm": [9, [10, "a_ext"]], // VC: modbus-адрес 10, объект "a_ext"
"fan_heat": [8, "fm"], // VCTEMP, привязан к item "fm"
"fan_cool": [8, "fm"] // второй термостат на том же VC
}
}
```
---
## CH\_VC (9) - Vacom Мотор-регулятор
**Назначение**: Управление мотор-регулятором вентилятора Vacom
### Пример
```json
{
"items": {
"vent_motor": [9, [96, "имя_объекта"]]
}
}
```
---
## CH\_AC (10) - Кондиционер Haier
**Назначение**: Управление кондиционером Haier по UART (проприетарный протокол Haier, 9600 baud, не Modbus)
### Синтаксис
```json
"ac_name": [10, номер_порта]
"ac_name": [10, [номер_порта, {объект_колбэков}]]
```
Номер порта: 0-3 (0 = Serial, 1 = Serial1, 2 = Serial2, 3 = Serial3).
Ключи объекта колбэков: `fan`, `set`, `temp`, `cmd`.
### Полный пример
```json
{
"mqtt": ["lighthub", "192.168.88.2"],
"items": {
"ac_hall": [10, [1, {
"cmd": {"emit": "ac/cmd"},
"set": {"emit": "ac/set"},
"temp": {"emit": "ac/temp"},
"fan": {"emit": "ac/fan"}
}]]
}
}
```
### MQTT команды
```
myhome/dev/ac_hall/cmd ← ON, OFF
myhome/dev/ac_hall/mode ← COOL, HEAT, DRY, FAN
myhome/dev/ac_hall/set ← 22 (температура)
myhome/dev/ac_hall/fan ← 0, 1, 2, 3 (скорость)
```
---
## CH\_SPILED (11) - SPI LED Лента
**Назначение**: Управление адресуемой SPI LED лентой (WS2812B, APA102)
### Синтаксис
```json
"led_name": [11, [data_pin, число_светодиодов, тип_лент]]
```
`число_светодиодов` (по умолчанию 43) и `тип_лент` — опциональны. Отдельного CLK-пина нет.
### Пример
```json
{
"items": {
"led_strip": [11, [7, 8]], // пин 7, 8 светодиодов
"led_bar": [11, [10, 11]] // пин 10, 11 светодиодов
}
}
```
---
## CH\_MOTOR (12) - Шаговый двигатель
**Назначение**: Управление шаговым двигателем с обратной связью (для задвижек, жалюзи)
### Синтаксис
```json
"motor_name": [12, [pinUp, pinDown, pinFeedback, fbOpen, fbClosed, maxOnTime_ms]]
```
### Пример
```json
{
"items": {
"gate_motor": [12, [9, 10, 11, 0, 255, 30000]],
// pinUp: 9
// pinDown: 10
// pinFeedback: 11
// fbOpen: 0
// fbClosed: 255
// maxOnTime: 30000 мс
"blinds": [12, [5, 6, 7, 100, 900, 20000]]
}
}
```
### MQTT команды
```
myhome/dev/gate_motor/cmd ← ON (открыть), OFF (закрыть)
myhome/dev/gate_motor/val ← текущая позиция обратной связи
```
---
## CH\_PID (13) - PID Регулятор
**Назначение**: Универсальный PID контроллер для процессов
### Синтаксис
```json
"pid_name": [13, [
[Kp, Ki, Kd, dT, timeout, alarm_val, min_out, max_out],
{выходной_execObj},
{каскадный_execObj}
]]
```
### Пример
```json
{
"items": {
"pid_heater": [13, [
[1.0, 0.05, 0.02, 5.0, 3600, 50, 0, 255],
{"emit": "heater/output"},
{"emit": "heater/cascade"}
]],
"pid_cooler": [13, [
[0.8, 0.03, 0.01, 5.0, 1800, 100, 0, 200],
{"item": "fan_speed/set"},
null
]]
}
}
```
### Параметры
| Параметр | Описание |
|--|--|
| `Kp` | Коэффициент пропорциональности |
| `Ki` | Коэффициент интеграла |
| `Kd` | Коэффициент дифференциала |
| `dT` | Интервал расчёта (секунды) |
| `timeout` | Время срабатывания аварии (сек) |
| `alarm_val` | Значение аварии |
| `min_out`, `max_out` | Диапазон выхода |
---
## CH\_MBUS (14) - Universal Modbus
**Назначение**: Универсальный Modbus канал с полной поддержкой шаблонизации
### Полный пример
```json
{
"mqtt": ["lighthub", "192.168.88.2"],
"modbus": {
"temperature_sensor": {
"baud": 9600,
"serial": "8N1",
"poll": {
"regs": [[0, 10]],
"delay": 2000
},
"par": {
"temperature": {
"reg": 0,
"type": "x10"
},
"humidity": {
"reg": 1,
"type": "100"
}
}
}
},
"items": {
"sensor_outdoor": [14, [96, "temperature_sensor", {
"temperature": {"emit": "sensors/outdoor/temp"},
"humidity": {"emit": "sensors/outdoor/humidity"}
}]],
"sensor_indoor": [14, [97, "temperature_sensor", {
"temperature": {"item": "thermo_room/set"},
"humidity": {"emit": "sensors/indoor/humidity"}
}]]
}
}
```
> Формат item: `[14, [адрес, "имя_шаблона", {параметры}]]` — modbus-адрес обязателен.
> Масштаб значения задаётся типом регистра: `"x10"` (×0.1), `"100"` (×0.01); ключа `scale` нет.
---
## CH\_UARTBRIDGE (15) - UART Мост
**Назначение**: Мост между двумя UART портами с отладкой через UDP
### Пример
```json
{
"items": {
"uart_debug": [15, {
"serial": "8N1",
"baud": 9600,
"ip": "192.168.88.2",
"port": 12345,
"hd": 1,
"log": 1,
"bond": ","
}]
}
}
```
`serial` (кадр, по умолчанию 8N1), `baud` (по умолчанию 9600), `ip`/`port` (UDP-дамп трафика для отладки), `hd` (half-duplex, по умолчанию 1), `log` (уровень логирования), `bond` (границы PDU).
---
## CH\_RELAYX (16) - Медленный PWM через реле
**Назначение**: Медленный PWM через реле для инертных систем (тепловые системы, комплексы)
### Синтаксис
```json
"relay_pwm": [16, [gpio_pin, период_цикла_сек]]
```
### Пример
```json
{
"items": {
"floor_heating": [16, [22, 60]], // GPIO 22, период цикла 60 сек
"radiator": [16, [23, 120]], // GPIO 23, период цикла 120 сек
"underfloor": [16, [24, 300], 128] // GPIO 24, период 300 сек, начальный PWM 128
}
}
```
Период цикла задаётся в **секундах**. Начальное значение PWM — третий элемент item (не внутри массива arg).
### MQTT команды
```
myhome/dev/floor_heating/set ← 200 (PWM 0-255)
myhome/dev/floor_heating/val ← текущий PWM
```
---
## CH\_RGBWW (17) - DMX RGBWW
**Назначение**: DMX управление RGB + тёплый белый + холодный белый (5 каналов)
### Пример
```json
{
"dmx": [512],
"items": {
"led_tunable_white": [17, 30] // RGB+WW+CW на DMX 30-34
}
}
```
### MQTT команды
```
myhome/dev/led_tunable_white/RGB ← 255,128,0,200,50
// R, G, B, Warm White, Cold White
```
---
## CH\_MULTIVENT (18) - Многозональная вентиляция
**Назначение**: Каскадная система вентиляции с независимым регулированием по зонам
**Синтаксис**: itemArg — **объект** с зонами, формат `[[18, нач_значение], {зоны}]`.
Зона `""` — AC-узел (ключи `fan`/`set`/`cmd`/`temp`/`V`/`turnbyfan`/`boost`/`supress`/`overridecmd`,
привязка к AC item — ключ `item`), остальные зоны: `set` (число, уставка), `fan`, `cmd`, `V`,
`pid` ([kP, kI, kD, dT]), `AlarmTime` (деф 120), `AlarmValue` (деф 0).
### Полный пример
```json
{
"mqtt": ["lighthub", "192.168.88.2"],
"items": {
"ac_hall": [10, 0],
"multivent_main": [[18, 5], {
"": {
"item": "ac_hall",
"fan": {"emit": "vents/main/fan"},
"set": {"emit": "vents/main/set"},
"cmd": {"emit": "vents/main/cmd"},
"temp": {"emit": "vents/main/temp"}
},
"bedroom": {
"fan": {"emit": "vents/bedroom/fan"},
"set": 21,
"V": 40,
"pid": [1.0, 0.05, 0.02, 5.0]
},
"living_room": {
"fan": {"emit": "vents/living/fan"},
"set": 21,
"V": 60
},
"kitchen": {
"fan": {"emit": "vents/kitchen/fan"},
"set": 20,
"V": 30
}
}]
}
}
```
### MQTT команды
```
myhome/dev/multivent_main/bedroom/set ← 22 (уставка T)
myhome/dev/multivent_main/bedroom/fan ← 50 (открытие жалюзи)
myhome/dev/multivent_main/bedroom/mode ← HEAT, COOL, FAN
```
---
## CH\_ELEVATOR (19) - Управление лифтом
**Назначение**: Управление лифтом (зарезервировано для будущего использования)
**Статус**: TBD (To Be Determined)
---
## CH\_COUNTER (20) - Счётчик
**Назначение**: накопление показаний — вода, газ, электроэнергия,
моторчасы оборудования. GPIO не используется: значение хранится в самих
данных канала (I\_VAL) и переживает перезагрузку. Работает в двух
режимах.
### Режим 1: внешние импульсы (вода, газ)
Канал просто **держит накопленное значение**, а вход контроллера
(геркон водосчётчика, контакт газосчётчика) инкрементирует его
относительной командой `%X`, где `X` — вес одного импульса в единицах
измерения.
```json
{
"items": {
"waterctr": [20, 0], // 0 — автосуммирования нет
"gasctr": [20, 0],
"fillctr": [20, 0.01, 0] // с начальным значением 0
},
"in": {
"41": { "item": "waterctr/set", "scmd": "%0.01", "rcmd": "" },
"39": { "item": "gasctr/set", "scmd": "%0.1", "rcmd": "" }
}
}
```
Каждое срабатывание геркона (передний фронт) отправляет в `/set`
команду `%0.01` — значение растёт на 0.01 м³. Показание читается из
статусного топика `/set`.
```
myhome/dev/waterctr/set ← 123.45 (текущее показание, м³)
```
### Режим 2: автоинкремент старт-стоп (моторчасы)
Если задан массив `[импульс, период_сек]`, канал превращается в
**счётчик времени работы**: по команде `ON` (также HEAT/COOL/AUTO/FAN/
DRY/HEATCOOL) стартует таймер, и каждые `период` секунд к значению
добавляется `импульс`. Команда `OFF` останавливает счёт. Установка
ненулевого значения в `/set` также запускает счёт, нулевое —
останавливает.
```json
{
"items": {
"pumpctr": [20, [0.02, 1.2]] // каждые 1.2 сек добавляет 0.02
}
}
```
Запуск/остановка обычно привязываются к управляемому оборудованию
через execObj. Например, счётчик наработки насоса увлажнителя (тип 21
вызывает свой `motorExecObj` с командой `ON` при включении насоса и
`OFF` при выключении):
```json
{
"items": {
"hum": [21, [
[22, 23, 54, 200, 600, 11, 20, 50],
{ "bedroom": { "N": 1, "pin": 25 } },
{ "item": "pumpctr" }
]],
"pumpctr": [20, [0.02, 1.2]]
}
}
```
С 0.02 за 1.2 секунды канал набирает 1 «минуту» за минуту реального
времени работы насоса — показание в `/set` и есть наработка в минутах.
```
myhome/dev/pumpctr/set ← 1523.6 (наработка, мин)
```
### Синтаксис
```json
"counter_name": [20] // режим 1, без аргументов
"counter_name": [20, вес_импульса] // режим 1 (вес для справки)
"counter_name": [20, [импульс, период_сек]] // режим 2: автоинкремент
"counter_name": [20, ..., начальное_значение] // + стартовое показание (I_VAL)
```
---
## CH\_HUMIDIFIER (21) - Управление увлажнителем
**Назначение**: Управление форсуночным увлажнителем воздуха
**Синтаксис**: itemArg — **массив** (не объект):
`[21, [[pumpPin, flushPin, pressurePin, maxPumpTime, idleTime, capacity, minLevel, startLevel], {зоны}, motorExecObj, faultExecObj]]`
### Пример
```json
{
"items": {
"humidifier_room": [21, [
[22, 23, 54, 255, 2500, 4, 10, 20],
{
"bedroom": {"N": 1, "pin": 24},
"living": {"N": 2, "pin": 25}
},
{"item": "pumpctr"}
]]
}
}
```
### MQTT команды
```
myhome/dev/humidifier_room/set ← 60 (целевая влажность %)
myhome/dev/humidifier_room/cmd ← ON, OFF
```
---
## CH\_MERCURY (22) - Счётчик энергии Mercury
**Назначение**: Счётчик энергии Mercury по RS485/Modbus
### Синтаксис
```json
"mercury": [22, [адрес, baudrate, формат, уровень_доступа, пароль, pollingInterval_ms]]
```
### Пример
```json
{
"items": {
"energy_mercury": [22, [1, 9600, "8N1", 2, [2,2,2,2,2,2], 10000]]
// Адрес: 1
// Baudrate: 9600
// Формат: 8N1
// Уровень доступа: 2
// Пароль: [2,2,2,2,2,2] (6 цифр)
// Интервал опроса: 10000 мс (по умолчанию)
}
}
```
### MQTT команды
```
myhome/dev/energy_mercury/val ← текущие показания энергии
```
---
## CH\_SPRINKLER (23) - Система полива
**Назначение**: Многозональная система автоматического полива с контролем воды и насосов
### Синтаксис
```json
"sprinkler_name": [23, {конфиг}]
```
Где `{конфиг}` — объект: в корне (зона `""`) пин системы (`vIn`, `rDren`, `rPump`, `wMax`, `wMin`, `fbDren`, `fbPump`, `wCtr`), далее — зоны полива с `pin`.
### Полный пример конфигурации
```json
{
"items": {
"sprinkler": [23, {
"": {
"vIn": 3,
"wMax": 44,
"wMin": 46,
"rDren": 23,
"fbDren": 63,
"rPump": 24,
"fbPump": 62,
"wCtr": 49
},
"nord": {
"pin": 6,
"set": 60,
"cmd": 1
},
"south": {
"pin": 7,
"set": 100,
"cmd": 1
},
"trees": {
"pin": 10,
"set": 60,
"cmd": 2
},
"outlets": {}
}]
}
}
```
### MQTT Команды управления
#### Запуск/остановка цикла полива
```
root/name/sprinkler/cmd ← ON # Запустить цикл полива всех зон
root/name/sprinkler/cmd ← OFF # Остановить полив
root/name/sprinkler/cmd ← RESET # Сбросить счётчики - инициирует старт полива
root/name/sprinkler/cmd ← FREEZE # Полная блокировка на зиму
root/name/sprinkler/cmd ← UNFREEZE # Разблокировка
root/name/sprinkler/cmd ← DRY # Режим осушения системы перед зимой
root/name/sprinkler/cmd ← ENABLE # Разрешить полив
root/name/sprinkler/cmd ← DISABLE # Запретить полив (например, после дождя)
```
#### Управление конкретной зоной
```
root/name/sprinkler/nord/cmd ← ON # Включить полив северной зоны
root/name/sprinkler/nord/cmd ← OFF # Выключить полив
root/name/sprinkler/nord/set ← 60 # Требуемый объём полива
root/name/sprinkler/nord/set ← 0 # Без лимита (для розеток)
root/name/sprinkler/south/cmd ← ON # Включить южную зону
root/name/sprinkler/south/set ← 100 # Требуемый объём
root/name/sprinkler/trees/cmd ← ON # Включить капельное орошение
root/name/sprinkler/trees/set ← 60 # Требуемый объём
```
#### Специальные команды
```
root/name/sprinkler/val ← -1 # Температура < 0 → автоматический FREEZE
root/name/sprinkler/ctrl ← FREEZE # Установить режим FREEZE
root/name/sprinkler/ctrl ← UNFREEZE # Снять режим FREEZE
```
### MQTT Статусные топики (выходные)
#### Состояние системы
```
root/s_out/sprinkler/$state → SP_UNKNOWN, SP_OFF, SP_DREN_ON, SP_DREN_OPERATE,
SP_DREN_EMPTY, SP_VIN, SP_FULL, SP_FAULT_VIN, SP_FAULT_DREN
root/s_out/sprinkler/$fault → код ошибки (если есть)
root/s_out/sprinkler/$wMax → ON/OFF - бак полный (поплавок макс)
root/s_out/sprinkler/$wMin → ON/OFF - бак пуст (поплавок мин)
```
#### Состояние насосов и клапанов
```
root/s_out/sprinkler/$rPump → ON/OFF - реле основного насоса включено
root/s_out/sprinkler/$fbPump → ON/OFF - основной насос работает (датчик)
root/s_out/sprinkler/$rDren → ON/OFF - реле дренажного насоса включено
root/s_out/sprinkler/$fbDren → ON/OFF - дренажный насос работает (датчик)
root/s_out/sprinkler/$rVIN → ON/OFF - клапан налива из водопровода открыт
root/s_out/sprinkler/set → текущее значение счётчика воды
```
#### Состояние зон полива
```
root/s_out/sprinkler/nord/$state → ON/OFF - зона в данный момент поливается
root/s_out/sprinkler/nord/cmd → ON/OFF - состояние команды включения
root/s_out/sprinkler/nord/set → требуемый объём полива
root/s_out/sprinkler/nord/val → выполненный объём полива (накапливается)
root/s_out/sprinkler/south/$state → ON/OFF - южная зона поливается
root/s_out/sprinkler/south/cmd → ON/OFF
root/s_out/sprinkler/south/set → требуемый объём
root/s_out/sprinkler/south/val → выполненный объём
root/s_out/sprinkler/trees/$state → ON/OFF - капельная зона поливается
root/s_out/sprinkler/trees/cmd → ON/OFF
root/s_out/sprinkler/trees/set → требуемый объём
root/s_out/sprinkler/trees/val → выполненный объём
root/s_out/sprinkler/outlets/$state → ON/OFF - розетка активна
```
### Примеры использования
#### Запуск полива с установкой объёмов
```bash
# Установить объёмы для каждой зоны
mosquitto_pub -t root/name/sprinkler/nord/set -m 60
mosquitto_pub -t root/name/sprinkler/south/set -m 100
mosquitto_pub -t root/name/sprinkler/trees/set -m 60
# Запустить цикл полива
mosquitto_pub -t root/name/sprinkler/cmd -m ON
```
#### Запрет полива после дождя и восстановление
```bash
# Запретить полив
mosquitto_pub -t root/name/sprinkler/cmd -m DISABLE
# Разрешить полив
mosquitto_pub -t root/name/sprinkler/cmd -m ENABLE
```
#### Подготовка к зиме (блокировка + осушение)
```bash
# 1. Перейти в режим DRY для осушения
mosquitto_pub -t root/name/sprinkler/cmd -m DRY
# 2. Открыть розетки для слива
mosquitto_pub -t root/name/sprinkler/outlets/cmd -m ON
# 3. После полного слива - заморозить систему
mosquitto_pub -t root/name/sprinkler/cmd -m FREEZE
```
#### Сброс счётчиков (инициирует новый цикл полива)
```bash
mosquitto_pub -t root/name/sprinkler/cmd -m RESET
```
### Интеграция с Home Assistant
```yaml
sensor:
- name: "Полив бак Макс"
state_topic: "root/s_out/sprinkler/$wMax"
- name: "Полив бак Мин"
state_topic: "root/s_out/sprinkler/$wMin"
- name: "Полив состояние"
state_topic: "root/s_out/sprinkler/$state"
- name: "Полив ошибка"
state_topic: "root/s_out/sprinkler/$fault"
- name: "Полив север выполнено"
state_topic: "root/s_out/sprinkler/nord/val"
- name: "Полив юг выполнено"
state_topic: "root/s_out/sprinkler/south/val"
- name: "Полив капельный выполнено"
state_topic: "root/s_out/sprinkler/trees/val"
switch:
- name: "Полив"
state_topic: "root/s_out/sprinkler/cmd"
command_topic: "root/air/sprinkler/cmd"
availability_topic: "root/air/$state"
payload_available: "ready"
payload_not_available: "disconnected"
- name: "Полив север"
state_topic: "root/s_out/sprinkler/nord/cmd"
command_topic: "root/air/sprinkler/nord/cmd"
- name: "Полив юг"
state_topic: "root/s_out/sprinkler/south/cmd"
command_topic: "root/air/sprinkler/south/cmd"
- name: "Полив капельный"
state_topic: "root/s_out/sprinkler/trees/cmd"
command_topic: "root/air/sprinkler/trees/cmd"
button:
- name: "Полив сброс"
command_topic: "root/air/sprinkler/cmd"
payload_press: "RESET"
- name: "Полив блокировка (FREEZE)"
command_topic: "root/air/sprinkler/cmd"
payload_press: "FREEZE"
- name: "Полив разблокировка"
command_topic: "root/air/sprinkler/cmd"
payload_press: "UNFREEZE"
- name: "Полив запретить (дождь)"
command_topic: "root/air/sprinkler/cmd"
payload_press: "DISABLE"
- name: "Полив разрешить"
command_topic: "root/air/sprinkler/cmd"
payload_press: "ENABLE"
- name: "Полив осушение (DRY)"
command_topic: "root/air/sprinkler/cmd"
payload_press: "DRY"
number:
- name: "Полив север объём"
state_topic: "root/s_out/sprinkler/nord/set"
command_topic: "root/air/sprinkler/nord/set"
min: 0
max: 6000
- name: "Полив юг объём"
state_topic: "root/s_out/sprinkler/south/set"
command_topic: "root/air/sprinkler/south/set"
min: 0
max: 6000
- name: "Полив капельный объём"
state_topic: "root/s_out/sprinkler/trees/set"
command_topic: "root/air/sprinkler/trees/set"
min: 0
max: 6000
```
### Особенности и советы
| Особенность | Описание |
|-----------|---------|
| **Водяная розетка** | Настройте зону с `set: 0` — она будет работать неограниченно и всегда под давлением |
| **Счётчик воды** | Если `wCtr` не установлен, система отсчитывает время в секундах вместо объёма |
| **Приоритет дренажа** | Система сначала наполняет бак из дренажного колодца, потом из водопровода |
| **Автозащита от мороза** | Отправьте `/val ← -1` или `FREEZE` при угрозе мороза |
| **DISABLE vs FREEZE** | DISABLE блокирует только запуск, FREEZE полностью замораживает систему |
| **Режим DRY** | Используйте перед зимой: включает насос без наполнения, зоны можно открыть вручную |
| **RESET** | Сбрасывает счётчики всех зон в 0 и инициирует новый цикл полива |
## Полная реальная конфигурация (интеграция всех типов)
```json
{
"mqtt": ["lh-smart-home", "192.168.88.2", 1883, "mqtt_user", "mqtt_pass"],
"topics": {"root": "myhome", "out": "s_out"},
"syslog": ["192.168.88.2", 514],
"dmx": [512],
"items": {
"lights_all": [7, ["lamp1", "lamp2", "rgb1", "rgb2"]],
"lamp1": [0, 1],
"lamp2": [0, 2],
"rgb1": [1, 10],
"rgb2": [1, 20],
"relay_water": [6, 23],
"relay_pump": [6, 24],
"relay_heat": [6, 25],
"pwm_fan": [3, 9],
"thermo_bath": [5, 26, 33],
"thermo_hall": [5, 27, 22],
"ac_main": [10, [0, {
"cmd": {"emit": "ac/cmd"},
"set": {"emit": "ac/set"},
"temp": {"emit": "ac/temp"},
"fan": {"emit": "ac/fan"}
}]],
"energy_counter": [20, [0.02, 1.2]],
"multivent": [[18, 5], {
"": {"item": "ac_main", "fan": {"emit": "vent/main/fan"}},
"bedroom": {"fan": {"emit": "vent/bedroom/fan"}, "set": 21, "V": 40},
"kitchen": {"fan": {"emit": "vent/kitchen/fan"}, "set": 20, "V": 60}
}]
},
"in": {
"37": {"item": "lights_all", "scmd": "TOGGLE"},
"38": {"item": "relay_water", "scmd": "OFF"},
"39": {"emit": "/status/water_leak"}
}
}
```
---
## Полезные ссылки
- [Справочник типов каналов](channel_types_reference.md) — типы 0-23
- [Справочник суффиксов](suffixes_reference.md) — /cmd, /val, /set, /hue, /sat, /temp
- [Полное описание конфигурации](light_hub_полное_инженерное_описание_json_конфигурации_v2.md)
- [Исходный код item.h](../../lighthub/item.h)
---
**Версия документа**: 1.2
**Дата обновления**: 2025-06-17