sprinkler - dry mode presistence, states initial publishing. Mercury - longer timer, dox

This commit is contained in:
2026-09-27 22:12:27 +03:00
parent 1c839091b6
commit e442001ec9
1557 changed files with 3281 additions and 2870 deletions
+7 -6
View File
@@ -1,8 +1,9 @@
# 📚 Полный индекс документации LightHub (v2.0)
# 📚 Полный индекс документации LightHub (v2.1)
> **Версия**: 2.0 (Актуально согласно wiki.lazyhome.ru)
> **Дата обновления**: 2025-01-24
> **Всего документов**: 17
> **Версия**: 2.1 (Актуально согласно wiki.lazyhome.ru)
> **Дата обновления**: 2026-06-17
> **Всего документов**: 18
> **Типов каналов**: 24 (CH_DIMMER 0 - CH_SPRINKLER 23)
---
@@ -54,7 +55,7 @@
| Файл | Размер | Описание |
|------|--------|---------|
| **[channel_types_reference.md](channel_types_reference.md)** | 400 стр | Справочник типов каналов (0-22) |
| **[channel_types_reference.md](channel_types_reference.md)** | 400 стр | Справочник типов каналов (0-23) |
| **[technical_channel_types_table.md](technical_channel_types_table.md)** | 350 стр | Технические таблицы параметров |
**Использование**: При создании новых каналов, для понимания параметров
@@ -218,7 +219,7 @@
| Управлять AC через MQTT | mqtt_quick_reference.md | Управление кондиционером |
| Создать конфигурацию JSON | light_hub_полное_инженерное_описание_json_конфигурации_v2.md | Все секции |
| Найти суффикс для типа | suffixes_reference_v2.md | Таблица применимости |
| Увидеть все примеры | configuration_examples.md | Все типы (0-22) |
| Увидеть все примеры | configuration_examples.md | Все типы (0-23) |
| Интегрировать с Home Assistant | mqtt_api_reference.md | MQTT структура |
| Перейти со старой версии | MIGRATION_GUIDE.md | Все типы |
Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

+42 -36
View File
@@ -1,8 +1,8 @@
# LightHub: Инженерная документация (Индекс)
> **Полная инженерная документация системы LightHub**
> Версия ядра: CH_DIMMER (0) - CH_MERCURY (22)
> Дата актуализации: 2025-01-24
> Версия ядра: CH_DIMMER (0) - CH_SPRINKLER (23)
> Дата актуализации: 2025-06-17
---
@@ -10,7 +10,7 @@
### Основные документы
1. **[light_hub_полное_инженерное_описание_json_конфигурации_v2.md](light_hub_полное_инженерное_описание_json_конфигурации_v2.md)** ⭐ **НАЧНИТЕ ОТСЮДА**
1. **[light\_hub\_полное\_инженерное\_описание\_json\_конфигурации_v2.md](light_hub_полное_инженерное_описание_json_конфигурации_v2.md)** ⭐ **НАЧНИТЕ ОТСЮДА**
- Полное описание структуры JSON конфигурации
- Все секции: mqtt, topics, modbus, items, in
- Инженерные принципы конфигурирования
@@ -20,50 +20,50 @@
**🆕 MQTT API и топики:**
2. **[mqtt_api_reference.md](mqtt_api_reference.md)** — ⭐ ПОЛНЫЙ справочник MQTT API
2. **[mqtt\_api\_reference.md](mqtt_api_reference.md)** — ⭐ ПОЛНЫЙ справочник MQTT API
- Структура MQTT топиков: `root/[id или bcst или out]/item/[subitem]/suffix`
- Три типа топиков: широковещательные команды, индивидуальные команды, статусные
- Таблица суффиксов с применимостью
- HTTP API endpoints (`/item/<name>`, `/config.json`, `/command`)
- HTTP API endpoints (`/item/<name>`, `/config.json`, `/$command`)
- Примеры MQTT команд и HTTP curl запросов
- Восстановление состояния при старте контроллера
- Диагностика MQTT подключения
3. **[suffixes_reference_v2.md](suffixes_reference_v2.md)** — ⭐ ИСПРАВЛЕННЫЙ справочник суффиксов
3. **[suffixes\_reference\_v2.md](suffixes_reference_v2.md)** — ⭐ ИСПРАВЛЕННЫЙ справочник суффиксов
- Правильная структура суффиксов согласно wiki.lazyhome.ru
- 7 категорий: основные, цветовые, AC, Multivent, PID, ШИМ, управление состоянием
- Таблица применимости по типам каналов (CH_DIMMER, CH_RGB, CH_AC и др.)
- Таблица применимости по типам каналов (CH\_DIMMER, CH\_RGB, CH\_AC и др.)
- Диапазоны значений: 0-100 vs 0-255, /hue 0-365°, /sat 0-100%
- Примеры сценариев для каждого типа канала
**Основные справочники:**
4. **[channel_types_reference.md](channel_types_reference.md)** — Справочник типов каналов (0-22)
4. **[channel\_types\_reference.md](channel_types_reference.md)** — Справочник типов каналов (0-23)
- Таблица всех типов каналов с кодами
- Текстовые обозначения и английские названия
- Синтаксис конфигурации для каждого типа
- Визуализация иерархии типов
5. **[suffixes_reference.md](suffixes_reference.md)** — Справочник суффиксов параметров (архив)
- Старая версия справочника (см. suffixes_reference_v2.md)
5. **[suffixes\_reference.md](suffixes_reference_v2.md)** — Справочник суффиксов параметров
6. **[technical_channel_types_table.md](technical_channel_types_table.md)** — Подробные технические таблицы
6. **[technical\_channel\_types\_table.md](technical_channel_types_table.md)** — Подробные технические таблицы
- Таблицы параметров для каждого типа
- Значения по умолчанию и ограничения
- Специфика работы каждого типа
### Модули и компоненты
7. **[modules_description.md](modules_description.md)** — Описание модулей
7. **[modules\_description.md](modules_description.md)** — Описание модулей
- out_Multivent — многозональная вентиляция
- out_AC — управление кондиционером
- out_PID — PID регулятор
- out_Motor — управление двигателем
- И другие модули...
8. **[multivent_module_description.md](multivent_module_description.md)** — Многозональная вентиляция (подробно)
8. **[multivent\_module\_description.md](multivent_module_description.md)** — Многозональная вентиляция (подробно)
9. **[modules_real_config.md](modules_real_config.md)** — Реальные конфигурации модулей
9. **[modules\_real\_config.md](modules_real_config.md)** — Реальные конфигурации модулей
---
@@ -71,10 +71,10 @@
### Задача: Управлять LED светом через MQTT
1. Откройте [mqtt_api_reference.md](mqtt_api_reference.md) — чтобы понять структуру топиков
1. Откройте [mqtt\_api\_reference.md](mqtt_api_reference.md) — чтобы понять структуру топиков
2. Выберите тип канала: CH_RGB (10), CH_RGBW (11) или CH_RGBWW (12)
3. Найдите примеры в [configuration_examples.md](configuration_examples.md)
4. Используйте MQTT команды из [suffixes_reference_v2.md](suffixes_reference_v2.md):
3. Найдите примеры в [configuration\_examples.md](configuration_examples.md)
4. Используйте MQTT команды из [suffixes\_reference_v2.md](suffixes_reference_v2.md):
```
myhome/in/rgb_lamp/hue → 240 (установить синий)
myhome/in/rgb_lamp/sat → 100 (полная насыщенность)
@@ -89,9 +89,9 @@
### Задача: Управлять кондиционером через MQTT
1. Откройте [mqtt_api_reference.md](mqtt_api_reference.md) — раздел "Суффиксы кондиционера (AC)"
2. Найдите CH_AC (13) в [configuration_examples.md](configuration_examples.md)
3. Используйте MQTT команды из [suffixes_reference_v2.md](suffixes_reference_v2.md):
1. Откройте [mqtt\_api\_reference.md](mqtt_api_reference.md) — раздел "Суффиксы кондиционера (AC)"
2. Найдите CH_AC (13) в [configuration\_examples.md](configuration_examples.md)
3. Используйте MQTT команды из [suffixes\_reference_v2.md](suffixes\_reference_v2.md):
```
myhome/in/ac_main/cmd → ON (включить)
myhome/in/ac_main/mode → HEAT (режим нагрева)
@@ -107,15 +107,15 @@
### Задача: Настроить многозональную вентиляцию
1. Прочитайте [multivent_module_description.md](multivent_module_description.md)
2. Найдите CH_MULTIVENT (18) в [configuration_examples.md](configuration_examples.md)
1. Прочитайте [multivent\_module\_description.md](multivent_module_description.md)
2. Найдите CH_MULTIVENT (18) в [configuration\_examples.md](configuration_examples.md)
3. Добавьте зоны в массив `"зоны": {...}`
4. Настройте PID параметры `[Kp, Ki, Kd, dT]`
5. Привяжите MQTT топики через `"emit"`
### Задача: Создать систему с входами (кнопки, датчики)
1. Прочитайте раздел "Секция `in`" в [light_hub_полное_инженерное_описание_json_конфигурации_v2.md](light_hub_полное_инженерное_описание_json_конфигурации_v2.md)
1. Прочитайте раздел "Секция `in`" в [light\_hub\_полное\_инженерное\_описание\_json\_конфигурации\_v2.md](light_hub_полное_инженерное_описание_json_конфигурации_v2.md)
2. Определите GPIO пины входов (37, 38, 39, и т.д.)
3. Привяжите их к объектам через `"item": "имя_канала"`
4. Используйте команды `scmd`, `rcmd` для действий
@@ -145,12 +145,12 @@
| 15 | UARTBRDG | UART Мост | [⬇️](configuration_examples.md#ch_uartbridge-15---uart-мост) |
| 16 | RELAYX | Медленный PWM реле | [⬇️](configuration_examples.md#ch_relayx-16---медленный-pwm-через-реле) |
| 17 | DMXRGBWW | RGBWW через DMX | [⬇️](configuration_examples.md#ch_rgbww-17---dmx-rgbww) |
| 18 | VENTS | Многозональная вентиляция | [⬇️](configuration_examples.md#ch_multivent-18---многозональная-вентиляция) |
| 18 | VENTS | Многозональная вентиляция/кондиционер | [⬇️](configuration_examples.md#ch_multivent-18---многозональная-вентиляция) |
| 19 | ELEVATOR | Лифт | - (TBD) |
| 20 | COUNTER | Счётчик импульсов | [⬇️](configuration_examples.md#ch_counter-20---счётчик-импульсов) |
| 20 | COUNTER | Счётчик импульсов или времени | [⬇️](configuration_examples.md#ch_counter-20---счётчик-импульсов) |
| 21 | HUM | Увлажнитель | [⬇️](configuration_examples.md#ch_humidifier-21---управление-увлажнителем) |
| 22 | MERCURY | Счётчик энергии | [⬇️](configuration_examples.md#ch_mercury-22---счётчик-энергии-mercury) |
| 23 | SPRINKLER| многозональная система полива
---
## 📊 Таблица суффиксов MQTT
@@ -158,14 +158,14 @@
| Суффикс | Назначение | Применимо к |
|---------|-----------|-----------|
| `/cmd` | Команда управления | Все типы |
| `/val` | Текущее значение (статус) | Все типы |
| `/val` | Входное значение | THERMO, PID, MBUS, SPRINKLER|
| `/set` | Установка значения | Диммеры, регуляторы |
| `/hue` | Оттенок (0-359°) | RGB/RGBW/RGBWW |
| `/sat` | Насыщенность (0-100%) | RGB/RGBW/RGBWW |
| `/temp` | Температура цвета (K) | RGB/RGBW/RGBWW |
| `/fan` | Скорость вентилятора | AC, Multivent, Vacom |
| `/temp` | Температура цвета (Mirids) | RGB/RGBW/RGBWW |
| `/fan` | Скорость вентилятора 0-255| AC, Multivent, Vacom |
| `/mode` | Режим работы | AC, Multivent |
| `/raw` | JSON формат (отладка) | Все типы |
| `/raw` | JSON формат (отладка) | TBD |
---
@@ -195,10 +195,12 @@ python3 -m json.tool config.json
### Логирование Modbus
Если Modbus устройство не отвечает:
1. Проверьте baudrate (по умолчанию 9600)
2. Проверьте адрес устройства
3. Проверьте регистры (должны быть доступны для чтения)
4. Включите syslog для отладки
4. Включите уровень логгирование 9 для отладки
5. Можно откомпилировать прошивку с ключем, выдающим обмен Modbus в порт консоли в 16-ти ричном виде
### MQTT Отладка
@@ -241,11 +243,14 @@ MQTT привязка (через "emit")
// myhome/dev/lights_all/cmd → ON
```
### Правило 4: Подробное имя = легче найти
### Правило 4: Слишком длинное имя = меньше влезет
```json
"lamp_bedroom_ceiling": [0, 1], // ✓ Хорошо
"lamp1": [0, 1] // ✗ Плохо
"lamp1": [0, 1] // ✗ Плохо, слишком коротко и непонятно
"lamp_bedroom_ceiling": [0, 1], // ✗ Плохо, занимает много оперативной памяти, дольше в поиске
"lampbedr1": [0, 1], // ✓ Нормально
"ledbedr1": [0, 1], // ✓ Нормально
```
---
@@ -263,6 +268,7 @@ MQTT привязка (через "emit")
| Версия | Дата | Изменения |
|--------|------|----------|
| 2.0 | 2025-01-24 | Полная актуализация документации для ядра CH_DIMMER (0) - CH_MERCURY (22) |
| 2.1 | 2026-06-17 | Добавлен новый тип канала CH_SPRINKLER (23) — система полива |
| 1.0 | 2024-12-16 | Исходная версия |
---
@@ -273,7 +279,7 @@ MQTT привязка (через "emit")
- [ ] Все GPIO пины уникальны (нет конфликтов)
- [ ] Все Modbus адреса доступны
- [ ] MQTT брокер доступен и запущен
- [ ] Все типы каналов в диапазоне 0-22
- [x] Все типы каналов в диапазоне 0-23
- [ ] Содержатся ли необходимые секции (mqtt, items)
- [ ] Проверены все MQTT топики
- [ ] Запасная копия конфигурации сохранена
@@ -291,7 +297,7 @@ MQTT привязка (через "emit")
- Не устанавливайте poll менее 50 мс для RS485
⚠️ **СОВМЕСТИМОСТЬ**:
- Эта документация актуальна для ядра с типами 0-22
- Эта документация актуальна для ядра с типами 0-23
- Убедитесь, что ваша версия LightHub поддерживает нужные типы
---
+9 -8
View File
@@ -1,8 +1,9 @@
# ⭐ ДОКУМЕНТАЦИЯ ОБНОВЛЕНА — Версия 2.0
# ⭐ ДОКУМЕНТАЦИЯ ОБНОВЛЕНА — Версия 2.1
> **Важно**: Документация LightHub полностью актуализирована для ядра с типами каналов CH_DIMMER (0) - CH_MERCURY (22)
> **Важно**: Документация LightHub полностью актуализирована для ядра с типами каналов CH_DIMMER (0) - CH_SPRINKLER (23)
>
> **🆕 Новое**: Добавлена полная документация MQTT API согласно wiki.lazyhome.ru
> **🆕 Новое**: Добавлен новый тип канала — система полива (CH_SPRINKLER)
---
@@ -36,7 +37,7 @@
### 3️⃣ [light_hub_полное_инженерное_описание_json_конфигурации_v2.md](light_hub_полное_инженерное_описание_json_конфигурации_v2.md) ⭐ **АКТУАЛЬНО**
- **Полное описание JSON конфигурации**
- Все 23 типа каналов (0-22)
- Все 24 типа каналов (0-23)
- Все секции: mqtt, topics, modbus, items, in
- Инженерные правила
- Полный пример системы
@@ -46,7 +47,7 @@
## 🔍 Справочники (используйте как шпаргалку)
### 4️⃣ [channel_types_reference.md](channel_types_reference.md)
- **Справочник типов каналов 0-22**
- **Справочник типов каналов 0-23**
- Таблица с кодами и текстовыми обозначениями
- Синтаксис конфигурации для каждого типа
- Визуализация иерархии
@@ -62,7 +63,7 @@
## 💡 Примеры (готовые к использованию)
### 6️⃣ [configuration_examples.md](configuration_examples.md)
- **JSON примеры для всех 23 типов каналов**
- **JSON примеры для всех 24 типов каналов**
- Для каждого типа: синтаксис + MQTT команды
- Полная реальная система
- **Скопируй-вставь готовые примеры**
@@ -123,7 +124,7 @@
---
## 📋 Таблица типов каналов (0-22)
## 📋 Таблица типов каналов (0-23)
| № | Тип | Описание | Справочник |
|---|-----|---------|-----------|
@@ -176,7 +177,7 @@
- [ ] Все GPIO пины уникальны
- [ ] Все Modbus адреса доступны
- [ ] MQTT брокер запущен
- [ ] Все типы каналов в диапазоне 0-22
- [x] Все типы каналов в диапазоне 0-23
- [ ] Необходимые секции присутствуют
- [ ] MQTT топики проверены
- [ ] Резервная копия конфигурации сохранена
@@ -184,5 +185,5 @@
---
**Документация обновлена**: 24 января 2026 г.
**Версия ядра**: LightHub с CH_DIMMER (0) - CH_MERCURY (22)
**Версия ядра**: LightHub с CH_DIMMER (0) - CH_SPRINKLER (23)
**Статус**: ✅ Актуально и готово к использованию
+35 -1
View File
@@ -1,7 +1,7 @@
# LightHub: Справочник типов каналов (Items)
> **Инженерный справочник** соответствия цифровых кодов типов каналов к текстовым обозначениям и функциональности.
> Актуально для версии ядра с типами DIMMER (0) до MERCURY (22).
> Актуально для версии ядра с типами DIMMER (0) до SPRINKLER (23).
> Источник: [lighthub/item.h](../lighthub/item.h)
---
@@ -33,6 +33,7 @@
| **20** | `COUNTER` | Generic Counter | Счётчик импульсов (электроэнергия, газ, вода) | `[инкремент_на_один_отсчет, период_для_автоинкремента_режим_ON]` |
| **21** | `HUM` | Humidifier | Управление увлажнителем воздуха | Конфигурация по типу увлажнителя |
| **22** | `MERCURY` | Mercury Energy Meter | Счётчик энергии Mercury по RS485/Modbus | `[адрес, baudrate, формат, сдвиг, [флаги], timeout]` |
| **23** | `SPRINKLER` | Irrigation System | Система автоматического полива с многозональным управлением | `[имя_устройства, конфигурация_зон]` |
---
@@ -230,6 +231,38 @@
// Timeout: 10000 мс
```
### CH_SPRINKLER (23) - Система полива
```json
"irrigation_system": [23, [
"main_sprinkler",
{
"": {
"cmd": {"emit": "sprinkler/cmd"},
"val": {"emit": "sprinkler/state"}
},
"north_zone": {
"enabled": {"emit": "sprinkler/north/enabled"},
"time": {"emit": "sprinkler/north/time"},
"progress": {"emit": "sprinkler/north/progress"},
"cycle": {"emit": "sprinkler/north/cycle"}
},
"south_zone": {
"enabled": {"emit": "sprinkler/south/enabled"},
"time": {"emit": "sprinkler/south/time"},
"progress": {"emit": "sprinkler/south/progress"},
"cycle": {"emit": "sprinkler/south/cycle"}
},
"drip_zone": {
"enabled": {"emit": "sprinkler/drip/enabled"},
"time": {"emit": "sprinkler/drip/time"},
"progress": {"emit": "sprinkler/drip/progress"},
"cycle": {"emit": "sprinkler/drip/cycle"}
}
}
]]
```
---
## Заметки по конфигурации
@@ -284,6 +317,7 @@ ITEMS (каналы)
├── Каналы с множеством подканалов
│ ├── CH_SPILED "SPILED"(11)
│ ├── CH_MULTIVENT "VENTS"(18)
│ ├── CH_SPRINKLER "SPRINKLER"(23)
│ └── CH_HUMIDIFIER "HUM"(21)
│
├── Modbus/RS485 Slaves/UART
+276 -21
View File
@@ -1,4 +1,4 @@
# LightHub: Примеры конфигурации для всех типов каналов (0-22)
# LightHub: Примеры конфигурации для всех типов каналов (0-23)
> **Практический справочник** с готовыми примерами JSON конфигурации для каждого типа канала.
> Каждый пример показывает полный синтаксис, включая MQTT топики и все параметры.
@@ -30,6 +30,7 @@
- [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---система-полива)
---
@@ -61,7 +62,6 @@
```
myhome/dev/lamp_bedroom/cmd ← ON, OFF, TOGGLE, SET
myhome/dev/lamp_bedroom/set ← 150 (яркость 0-255)
myhome/dev/lamp_bedroom/val ← текущая яркость
myhome/s_out/lamp_bedroom/val → опубликованная яркость
```
@@ -96,7 +96,7 @@ myhome/s_out/lamp_bedroom/val → опубликованная яркость
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 (температура цвета, K)
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)
```
@@ -152,7 +152,7 @@ myhome/dev/mood_light/HSV ← 120,100,100 (зелёный в HSV)
```
myhome/dev/pwm_dim/set ← 128
myhome/dev/pwm_dim/val ← текущее значение
myhome/dev/pwm_dim/cmd ← ON
```
---
@@ -211,7 +211,7 @@ myhome/dev/pwm_dim/val ← текущее значение
```
myhome/dev/thermo_bath/set ← 35 (установить целевую T)
myhome/dev/thermo_bath/val ← 1 (нагревается) или 0
myhome/dev/thermo_bath/val ← передать измерянную температуру с удаленного сенсора
myhome/dev/thermo_bath/cmd ← ON, OFF
```
@@ -219,7 +219,7 @@ myhome/dev/thermo_bath/cmd ← ON, OFF
## CH_RELAY (6) - GPIO Реле
**Назначение**: Простое электромагнитное реле ON/OFF
**Назначение**: Простое электромагнитное реле ON/OFF или иное дискретное устройство
### Синтаксис
@@ -244,7 +244,6 @@ myhome/dev/thermo_bath/cmd ← ON, OFF
```
myhome/dev/relay_water/cmd ← ON, OFF, TOGGLE
myhome/dev/relay_water/val ← 1 (включено) или 0 (выключено)
```
---
@@ -304,13 +303,7 @@ myhome/dev/lights_all/cmd ← SET 100 (установит яркость
```json
{
"modbus": {
"vacom_10": {
"baud": 9600,
"serial": "8N1",
"poll": {"regs": [[0, 50]], "delay": 1000}
}
},
"items": {
"fan_heat": [8, [96, 0]], // Vacom адрес 96, экземпляр 0
"fan_cool": [8, [96, 1]] // Vacom адрес 96, экземпляр 1
@@ -329,10 +322,7 @@ myhome/dev/lights_all/cmd ← SET 100 (установит яркость
```json
{
"items": {
"vent_motor": [9, [96, {
"mode": {"emit": "vent/mode"},
"speed": {"emit": "vent/speed"}
}]]
"vent_motor": [9, [96, ??]]
}
}
```
@@ -779,6 +769,271 @@ myhome/dev/energy_mercury/val ← текущие показания энерг
---
## CH_SPRINKLER (23) - Система полива
**Назначение**: Многозональная система автоматического полива с контролем воды и насосов
### Синтаксис
```json
"sprinkler_name": [23, [{параметры_системы}, {зоны_полива}]]
```
### Полный пример конфигурации
```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
@@ -845,12 +1100,12 @@ myhome/dev/energy_mercury/val ← текущие показания энерг
## Полезные ссылки
- [Справочник типов каналов](channel_types_reference.md) — типы 0-22
- [Справочник типов каналов](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.0
**Дата обновления**: 2025-01-24
**Версия документа**: 1.2
**Дата обновления**: 2025-06-17
@@ -1,6 +1,6 @@
# LightHub: Полное инженерное описание JSON‑конфигурации контроллера
> **Документ актуален для ядра LightHub с типами каналов CH_DIMMER (0) - CH_MERCURY (22)**
> **Документ актуален для ядра LightHub с типами каналов CH_DIMMER (0) - CH_SPRINKLER (23)**
>
> Предназначен для инженеров автоматизации, интеграторов и разработчиков.
> Основан **строго** на официальной документации LazyHome / LightHub и исходном коде.
@@ -31,7 +31,7 @@ JSON‑конфигурация LightHub — это **единственный
- **Сетевую интеграцию** (MQTT, syslog)
- **Подключённые физические интерфейсы** (DMX, RS485, GPIO, 1-Wire)
- **Библиотеки Modbus‑устройств** (шаблоны с параметрами)
- **Логические объекты (items)** — каналы управления (0-22 типов)
- **Логические объекты (items)** — каналы управления (0-23 типов)
- **Маршрутизацию данных и команд** между MQTT и локальными объектами
❗ **В LightHub нет runtime‑конфигурации** — всё задаётся декларативно при загрузке файла.
@@ -79,6 +79,7 @@ JSON‑конфигурация LightHub — это **единственный
### Параметры (позиционные!)
| № | Назначение | Тип | Обязателен | Пример |
|--|--|--|--|--|
| 0 | MQTT Client ID | string | **✓** | `"lighthub-07"` |
@@ -392,12 +393,12 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
| Элемент | Назначение | Обязателен | Тип |
|--|--|--|--|
| 0 | **TYPE** — тип канала (0-22) | **✓** | int или string |
| 0 | **TYPE** — тип канала (0-23) | **✓** | int или string |
| 1 | **CONFIG** — конфигурация (зависит от типа) | **✓** | int, string, или array |
| 2 | Начальное значение (preset) | - | int или array |
| 3 | Начальная команда | - | int |
### Типы каналов (0-22)
### Типы каналов (0-23)
**Полный справочник типов каналов см. в [channel_types_reference.md](channel_types_reference.md)**
@@ -689,5 +690,5 @@ LightHub использует **жёстко структурированную,
**Версия документа**: 2.0
**Дата обновления**: 2025-01-24
**Актуально для**: LightHub с CH_DIMMER (0) - CH_MERCURY (22)
**Актуально для**: LightHub с CH_DIMMER (0) - CH_SPRINKLER (23)
**Источник**: [item.h](../lighthub/item.h), [item.cpp](../lighthub/item.cpp)
+178
View File
@@ -20,6 +20,7 @@
- [out_Counter](#out_counter---счётчик-импульсов)
- [out_SPILed](#out_spiled---управление-светодиодами)
- [out_Mercury](#out_mercury---счётчик-меркурий)
- [out_Sprinkler](#out_sprinkler---система-полива)
- [out_UARTBridge](#out_uartbridge---uart-мост)
2. [Входные модули (In)](#входные-модули)
@@ -628,6 +629,182 @@ home/meter/night_power - Ночное потребление
---
---
## out_Sprinkler — Система полива
### Описание
Модуль управления многозональной системой автоматического полива с независимым управлением каждой зоной, таймерами и мониторингом.
**Основные функции:**
- Управление несколькими зонами полива независимо
- Установка длительности полива для каждой зоны
- Таймеры и расписания для автоматизации
- Мониторинг прогресса выполнения
- Поддержка ручного управления и автоматических режимов
- Контроль состояния клапанов и электромагнитных выключателей
### Тип в JSON
```
[23, ["device_name", {zones_configuration}]]
```
### Формат конфигурации
```json
"irrigation_system": [
23,
[
"main_sprinkler",
{
"": {
"cmd": {"emit": "sprinkler/cmd"},
"val": {"emit": "sprinkler/state"}
},
"north_zone": {
"enabled": {"emit": "sprinkler/north/enabled"},
"time": {"emit": "sprinkler/north/time"},
"progress": {"emit": "sprinkler/north/progress"},
"cycle": {"emit": "sprinkler/north/cycle"}
},
"south_zone": {
"enabled": {"emit": "sprinkler/south/enabled"},
"time": {"emit": "sprinkler/south/time"},
"progress": {"emit": "sprinkler/south/progress"},
"cycle": {"emit": "sprinkler/south/cycle"}
},
"drip_zone": {
"enabled": {"emit": "sprinkler/drip/enabled"},
"time": {"emit": "sprinkler/drip/time"},
"progress": {"emit": "sprinkler/drip/progress"},
"cycle": {"emit": "sprinkler/drip/cycle"}
}
}
]
]
```
### Компоненты системы
| Компонент | Выход/Вход | Назначение |
|-----------|-----------|-----------|
| **Бак полива** | wMax, wMin | Поплавки макс/мин уровня воды |
| **Основной насос** | rPump, fbPump | Реле включения, датчик тока |
| **Клапаны зон** | pin (для каждой зоны) | Оптореле открытия клапана |
| **Клапан налива** | vIn | Оптореле подачи воды из водопровода |
| **Дренажный насос** | rDren, fbDren | Реле включения, датчик тока |
| **Водосчётчик** | wCtr (опционально) | Счётчик объёма воды |
### Параметры конфигурации
| Параметр | Тип | Описание |
|----------|-----|---------|
| `vIn` | int | GPIO клапана налива из водопровода |
| `wMax` | int | GPIO поплавка максимума в баке |
| `wMin` | int | GPIO поплавка минимума в баке |
| `rDren` | int | GPIO реле дренажного насоса |
| `fbDren` | int | GPIO датчика дренажного насоса |
| `rPump` | int | GPIO реле основного насоса полива |
| `fbPump` | int | GPIO датчика основного насоса |
| `wCtr` | int | GPIO счётчика воды (опционально) |
### Параметры зоны полива
| Параметр | Тип | Описание |
|----------|-----|---------|
| `pin` | int | GPIO клапана зоны |
| `set` | int | Требуемый объём полива или время (сек). 0 = неограниченно |
| `cmd` | int | Начальное состояние (0=OFF, 1=ON, 2=другое) |
### Состояния системы налива
| Состояние | Описание |
|-----------|---------|
| `SP_UNKNOWN` | Неизвестное состояние |
| `SP_OFF` | Система выключена |
| `SP_DREN_ON` | Дренажный насос включен |
| `SP_DREN_OPERATE` | Дренажный насос работает |
| `SP_DREN_EMPTY` | Дренажный колодец пуст |
| `SP_VIN` | Наполнение из водопровода |
| `SP_FULL` | Бак наполнен |
| `SP_FAULT_VIN` | Ошибка: бак не наполнился из водопровода |
| `SP_FAULT_DREN` | Ошибка: бак не наполнился из дренажа |
### MQTT топики управления
#### Управление циклом полива (команды)
```
root/name/sprinkler/cmd ← ON # Запустить цикл полива
root/name/sprinkler/cmd ← OFF # Остановить цикл полива
root/name/sprinkler/cmd ← XON # Включить (может быть заблокировано DISABLE)
root/name/sprinkler/cmd ← XOFF # Выключить
root/name/sprinkler/cmd ← RESET # Сбросить счётчики всех зон
root/name/sprinkler/cmd ← FREEZE # Блокировка на зиму
root/name/sprinkler/cmd ← UNFREEZE # Разблокировка
root/name/sprinkler/cmd ← DRY # Режим осушения системы
```
#### Управление конкретной зоной (например, "north")
```
root/name/sprinkler/north/cmd ← ON # Включить полив зоны
root/name/sprinkler/north/cmd ← OFF # Выключить полив зоны
root/name/sprinkler/north/set ← 60 # Требуемый объём/время полива (секунды или единицы счётчика)
```
#### Режимы системы (установка в /ctrl)
```
root/name/sprinkler/ctrl ← ENABLE # Разрешить полив
root/name/sprinkler/ctrl ← DISABLE # Запретить полив (например, после дождя)
root/name/sprinkler/ctrl ← FREEZE # Полная блокировка на зиму
root/name/sprinkler/ctrl ← UNFREEZE # Снять блокировку зимы
```
#### Автоматическая блокировка по температуре
```
root/name/sprinkler/val ← -1 # При температуре < 0 система автоматически переходит в FREEZE
```
### MQTT топики мониторинга (статус)
```
root/s_out/sprinkler/$state # Состояние системы налива воды (SP_*)
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/north/$state # ON/OFF - зона поливается в настоящее время
root/s_out/sprinkler/north/cmd # ON/OFF - состояние команды включения зоны
root/s_out/sprinkler/north/set # Требуемый объём/время полива
root/s_out/sprinkler/north/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 # Выполненный объём/время
# Аналогично для остальных зон (например, "trees", "outlets" и т.д.)
```
### Особенности
| Особенность | Описание |
|-----------|---------|
| **Динамическое управление** | Все параметры можно изменять через MQTT в реальном времени |
| **Восстановление состояния** | Значения `set` и `val` восстанавливаются из топиков `s_out` при перезагрузке |
| **Водяная розетка** | Зона с `set=0` работает неограниченно (используется для розеток с шлангом) |
| **Приоритет дренажа** | Система сначала пытается наполнить бак из дренажного колодца, затем из водопровода |
| **Автозащита от мороза** | Значение `/val < 0` автоматически активирует режим FREEZE |
| **Двухступенчатая блокировка** | DISABLE блокирует команды, FREEZE полностью заморозит систему |
---
## out_UARTBridge — UART мост
### Описание
@@ -791,6 +968,7 @@ home/meter/night_power - Ночное потребление
| out_Counter | 6 | Счётчик импульсов | GPIO-счёт |
| out_SPILed | 10 | Адресуемые светодиоды | SPI/GPIO |
| out_Mercury | 45 | Электросчётчик | Modbus RTU |
| out_Sprinkler | 23 | Система полива | GPIO + MQTT |
| out_UARTBridge | 55 | UART-мост | UART↔UART |
| in_CCS811_HDC1080 | 100 | Качество воздуха | I2C |
+58 -55
View File
@@ -65,9 +65,10 @@ myhome/in/led_strip/10-20/set (установить значение пи
```
**Пример для состояния (условное выполнение)**:
```
myhome/in/floor/AUTO/set (команда для теплых полов в режиме AUTO)
myhome/in/floor/OFF/set (команда для теплых полов в режиме OFF)
myhome/in/floor/AUTO/set (применится для теплых полов в режиме AUTO)
myhome/in/floor/OFF/set (применится для теплых полов в режиме OFF)
```
#### 5. **suffix** (суффикс) — параметр объекта
@@ -80,20 +81,20 @@ myhome/in/floor/OFF/set (команда для теплых пол
| Суффикс | Тип | Назначение | Применимость |
|---------|-----|-----------|--------------|
| **`/cmd`** | Command | Основная команда управления (ON, OFF, TOGGLE и др.) | Все типы |
| **`/set`** | Parameter | Установка параметра (яркость, температура и др.) | Диммеры, регуляторы, термостаты |
| **`/val`** | Status | Текущее значение (в статусных топиках) | Все типы |
| **`/hue`** | Color | Оттенок (0-365°, HSV формат) | RGB/RGBW/RGBWW |
| **`/sat`** | Color | Насыщенность (0-100%, HSV формат) | RGB/RGBW/RGBWW |
| **`/hsv`** | Color | Полный цвет (hue,saturation,volume) | RGB/RGBW/RGBWW |
| **`/rgb`** | Color | Цвет в RGB/RGBW нотации | RGB/RGBW/RGBWW |
| **`/fan`** | Control | Скорость вентилятора (HIGH, MEDIUM, LOW) | AC, Multivent |
| **`/mode`** | Control | Режим работы (HEAT, COOL, DRY, FAN, AUTO) | AC, Thermostat, Multivent |
| **`/lock`** | Control | Блокировка (ON, OFF) | AC |
| **`/swing`** | Control | Направление воздушного потока (ON, OFF) | AC |
| **`/quiet`** | Control | Тихий режим (ON, OFF) | AC |
| **`/ctrl`** | Control | Управление состоянием (FREEZE, UNFREEZE, ENABLE, DISABLE) | Специальное |
| **`/del`** | Delayed | Команда с задержкой | Все команды |
| **`/cmd`** | Command, Status | Основная команда управления (ON, OFF, TOGGLE и др.) | Все типы |
| **`/set`** | Command, Status | Установка параметра (яркость, температура и др.) | Диммеры, регуляторы, термостаты |
| **`/val`** | Command | Текущее значение регулируемого параметра направляется с сенсора сюда | PID, MULTIVENT, THERMOSTAT, SPRINKLER|
| **`/hue`** | Command | Оттенок (0-365°, HSV формат) | RGB/RGBW/RGBWW |
| **`/sat`** | Command | Насыщенность (0-100%, HSV формат) | RGB/RGBW/RGBWW |
| **`/hsv`** | Command | Полный цвет (hue,saturation,volume) | RGB/RGBW/RGBWW |
| **`/rgb`** | Command | Цвет в RGB/RGBW нотации | RGB/RGBW/RGBWW |
| **`/fan`** | Command, Status | Скорость вентилятора 0-255 или (HIGH, MEDIUM, LOW, OFF) | AC, Multivent |
| **`/mode`** | Command, Status | Режим работы (HEAT, COOL, DRY, FAN, AUTO) | AC, Thermostat, Multivent |
| **`/lock`** | Command, Status | Блокировка (ON, OFF) | AC |
| **`/swing`** | Command, Status | Направление воздушного потока (ON, OFF) | AC |
| **`/quiet`** | Command, Status | Тихий режим (ON, OFF) | AC |
| **`/ctrl`** | Command, Status | Управление состоянием (FREEZE, UNFREEZE, ENABLE, DISABLE) | Специальное |
| **`/del`** | Command, Status | Команда с задержкой | Все команды |
---
@@ -237,13 +238,13 @@ myhome/s_out/<item>/<суффикс>
| Формат | Описание | Пример |
|--------|---------|--------|
| `<0..100>` | Яркость (OpenHab стиль) | `myhome/in/lamp/set → 50` |
| `<0..255>` | Яркость/PWM (новый стиль) | `myhome/in/lamp/set → 128` |
| `<H>,<S>,<V>` | HSV формат | `myhome/in/rgb/hsv → 240,100,200` |
| `<H>,<S>` | HSV без изменения яркости | `myhome/in/rgb/hsv → 240,100` |
| `#RRGGBB` | RGB hex (Home Remote) | `myhome/in/rgb/cmd → #FF0000` |
| `<R>,<G>,<B>` | RGB формат | `myhome/in/rgb/rgb → 255,0,0` |
| `<R>,<G>,<B>,<W>` | RGBW формат | `myhome/in/rgb/rgb → 255,0,0,100` |
| `<0..100>` | Яркость (OpenHab стиль) | `myhome/in/lamp → 50` |
| `<0..255>` | Яркость/PWM/температура/значение счетчика/... (новый стиль) | `myhome/in/lamp/set → 128` |
| `<H>,<S>,<V>` | HSV формат | `myhome/in/led/hsv → 240,100,200` |
| `<H>,<S>` | HSV без изменения яркости | `myhome/in/led/hsv → 240,100` |
| `#RRGGBB` | RGB hex (Home Remote) | `myhome/in/led/rgb → #FF0000` |
| `<R>,<G>,<B>` | RGB формат | `myhome/in/led/rgb → 255,0,0` |
| `<R>,<G>,<B>,<W>` | RGBW формат | `myhome/in/led/rgb → 255,0,0,100` |
### Расширенные команды
@@ -264,12 +265,12 @@ myhome/s_out/<item>/<суффикс>
| Команда | Описание | Применимость |
|---------|---------|--------------|
| `AUTO` | Автоматический режим | AC, Thermostat |
| `HEAT` | Нагрев | AC, Thermostat |
| `COOL` | Охлаждение | AC |
| `DRY` | Осушение | AC |
| `FAN_ONLY` | Только вентилятор | AC |
| `HIGH`, `MED`, `LOW` | Скорость вентилятора | AC |
| `AUTO` | Автоматический режим | AC, Thermostat, Multivent |
| `HEAT` | Нагрев | AC, Thermostat, Multivent |
| `COOL` | Охлаждение | AC, Multivent |
| `DRY` | Осушение | AC, Multivent, IRRIGATOR |
| `FAN_ONLY` | Только вентилятор | AC, Multivent |
| `HIGH`, `MED`, `LOW` | Скорость вентилятора | AC, MULTIVENT |
### Команды с задержкой
@@ -294,6 +295,7 @@ myhome/in/light/cmd → "ON 3000"
```
**Взаимно-обратные команды**:
- `ON` ↔ `OFF`
- `TOGGLE` ↔ `TOGGLE`
- `REST` ↔ `HALT`
@@ -319,20 +321,19 @@ myhome/in/light/cmd → "ON 3000"
**Пример**:
- Получена команда: `ON` на RGB канал
- Контроллер восстанавливает последний цвет (HSV из памяти)
- Публикует в статусный топик: `hue=240, sat=100, val=200` (вместо просто `ON`)
- Публикует в статусный топик: `240,100,200` (вместо просто `ON`)
### Различие /set и /cmd (с версии 3.0.0)
| Что | /cmd | /set |
### Различие нового подхода (/set и /cmd) и старого (общий топик, совместимо с шиной OpenHab)
| Что | новый | openHab |
|-----|:----:|:----:|
| Команда управления | ✓ | - |
| Диапазон значений | 0-255 | 0-255 (новый) или 0-100 (старый) |
| Для OpenHab совместимости | Используется конец топика | 0-100 |
| Для новых систем | - | 0-255 |
| Команда управления | в /cmd| в общем топике |
| Команда установки значения | в /set| в общем топике |
| Диапазон значений | 0-255 | 0-100 |
**Практика**:
- `/set` используется для установки **значения** (яркость 0-255)
- `/cmd` используется для **команд** (ON, OFF, TOGGLE)
- `/set` используется для установки **значения** (например, яркость 0-255)
- `/cmd` используется для **команд** (ON, OFF, TOGGLE ...)
---
@@ -355,22 +356,22 @@ http://<controller_ip>/item/<item_name>[/subitem][/suffix]
```bash
# Включить лампу
curl -X POST http://192.168.1.10/item/lamp1/cmd -d "ON"
curl --user arduino:password -X POST http://192.168.1.10/item/lamp1/cmd -d "ON"
# Установить яркость
curl -X POST http://192.168.1.10/item/lamp1/set -d "150"
curl --user arduino:password -X POST http://192.168.1.10/item/lamp1/set -d "150"
# Установить цвет RGB
curl -X POST http://192.168.1.10/item/rgb_light/rgb -d "255,0,0"
curl --user arduino:password -X POST http://192.168.1.10/item/rgb_light/rgb -d "255,0,0"
# Получить текущий статус
curl -X GET http://192.168.1.10/item/lamp1/val
curl --user arduino:password -X GET http://192.168.1.10/item/lamp1
# Многозональная вентиляция - установить T в спальне
curl -X POST http://192.168.1.10/item/multivent/bedroom/set -d "22"
curl --user arduino:password -X POST http://192.168.1.10/item/multivent/bedroom/set -d "22"
# Кондиционер - установить режим
curl -X POST http://192.168.1.10/item/ac_main/mode -d "HEAT"
curl --user arduino:password -X POST http://192.168.1.10/item/ac_main/mode -d "HEAT"
```
### Дополнительные endpoints
@@ -380,7 +381,7 @@ curl -X POST http://192.168.1.10/item/ac_main/mode -d "HEAT"
| `/config.json` | GET, POST | Загрузить/сохранить конфигурацию |
| `/config.bin` | GET, POST | Системная конфигурация |
| `/sketch` | POST | Загрузить прошивку (OTA) |
| `/command/<cmd>` | POST | Выполнить CLI команду |
| `/$command/<cmd>` | POST | Выполнить CLI команду |
| `/` | GET | Переадресация на PWA приложение |
---
@@ -421,26 +422,28 @@ curl -X POST http://192.168.1.10/item/ac_main/mode -d "HEAT"
```
# Включить лампу
→ myhome/in/lamp_bedroom/cmd: ON
← myhome/s_out/lamp_bedroom/val: 100 (восстановленная яркость)
← myhome/s_out/lamp_bedroom/set: 100 (восстановленная яркость)
← myhome/s_out/lamp_bedroom/cmd: ON
# Установить яркость RGB
→ myhome/in/rgb_light/set: 200
← myhome/s_out/rgb_light/val: 200
← myhome/s_out/rgb_light/set: 0,0,200,500 (в статусный топик запишется полный набор параметров канала)
# Установить цвет
→ myhome/in/rgb_light/hue: 240
← myhome/s_out/rgb_light/hue: 240
← myhome/s_out/rgb_light/set: 240,100,200,500 (в статусный топик запишется полный набор параметров канала)
# Установить насыщенность
→ myhome/in/rgb_light/sat: 50
← myhome/s_out/rgb_light/set: 240,50,200,500 (в статусный топик запишется полный набор параметров канала)
# Включить кондиционер в режим HEAT
→ myhome/in/ac_main/cmd: ON
← myhome/s_out/ac_main/cmd: ON
→ myhome/in/ac_main/mode: HEAT
← myhome/s_out/ac_main/mode: HEAT
→ myhome/in/ac_main/cmd: HEAT
← myhome/s_out/ac_main/cmd: HEAT (запишется в статусный топик)
# Установить температуру
→ myhome/in/ac_main/set: 22
← myhome/s_out/ac_main/set: 22
← myhome/s_out/ac_main/set: 22 (запишется в статусный топик)
```
---
@@ -466,5 +469,5 @@ mosquitto_sub -h 192.168.1.100 -t "myhome/s_out/#" -v
---
**Версия документа**: 2.0 (актуально для работа_с_mqtt из wiki.lazyhome.ru)
**Версия документа**: 2.1 (актуально для работа_с_mqtt из wiki.lazyhome.ru)
**Источники**: [MQTT wiki](https://www.lazyhome.ru/dokuwiki/doku.php?id=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_mqtt), [API wiki](https://www.lazyhome.ru/dokuwiki/doku.php?id=api)
+20 -4
View File
@@ -1,7 +1,7 @@
# LightHub: Полная техническая таблица типов каналов
> **Инженерный справочник** — полная таблица всех типов каналов (0-22) с параметрами, синтаксисом и примерами кода.
> Источник: [lighthub/item.h](../lighthub/item.h), строки 47-69
> **Инженерный справочник** — полная таблица всех типов каналов (0-23) с параметрами, синтаксисом и примерами кода.
> Источник: [lighthub/item.h](../lighthub/item.h), строки 47-72
---
@@ -32,6 +32,7 @@
| 20 | COUNTER | Counter | Счётчик импульсов | int/array | `0` или `[0.02, 1.2]` |
| 21 | HUM | Humidifier | Увлажнитель | object | `{humidity:{...}}` |
| 22 | MERCURY | Mercury Meter | Счётчик энергии Mercury | array | `[1, 9600, "8N1", ...]` |
| 23 | SPRINKLER | Irrigation System | Система полива | array | `["main", {zones}]` |
---
@@ -61,7 +62,8 @@
#define CH_COUNTER 20
#define CH_HUMIDIFIER 21
#define CH_MERCURY 22
#define CH_MAX 22
#define CH_SPRINKLER 23
#define CH_MAX 23
```
---
@@ -305,9 +307,22 @@
| **Flags** | Массив флагов (обычно [2,2,2,2,2,2]) |
| **Timeout** | Таймаут опроса (мс) |
### CH_SPRINKLER (23) — Система полива
| Параметр | Значение |
|----------|----------|
| **Назначение** | Многозональная система автоматического полива |
| **Конфигурация** | array `["device_name", {zones_config}]` |
| **Зоны** | Независимое управление каждой зоной |
| **Параметры зоны** | enabled (вкл/выкл), time (длит. полива), progress (прогресс), cycle (режим) |
| **Команды** | ON, OFF, START_ZONE, STOP_ZONE, SCHEDULE |
| **События** | Изменение состояния, завершение полива, ошибки |
| **Интеграция** | MQTT топики для каждой зоны |
| **Таймер** | Встроенные таймеры для автоматизации |
---
## Суффиксы (Suffixes)
Из [item.h](../lighthub/item.h):
@@ -346,6 +361,7 @@
| 13 (PID) | ✓ | ✓ | ✓ | - | - | - | - | - | - |
| 14 (MBUS) | ✓ | ✓ | ✓ | - | - | - | - | - | - |
| 16 (RELAYX) | ✓ | ✓ | ✓ | - | - | - | - | - | - |
| 23 (SPRINKLER) | ✓ | ✓ | ✓ | - | - | - | - | - | - |
| 17 (RGBWW) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | ✓ |
| 18 (MULTIVENT) | ✓ | ✓ | ✓ | - | - | - | ✓ | ✓ | - |
| 20 (COUNTER) | - | ✓ | - | - | - | - | - | - | - |