Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
47fe53db41 | ||
|
|
0afe8bc866 | ||
|
|
e442001ec9 |
@@ -8,7 +8,7 @@ Useful links:
|
||||
|
||||
* [WIKI/RU](https://www.lazyhome.ru/dokuwiki/doku.php?id=start)
|
||||
|
||||
* [Doxygen autodocumentation for developers](https://anklimov.github.io/lighthub/docs/html/index.html) (litle bit outdated)
|
||||
* [Doxygen autodocumentation for developers](https://anklimov.github.io/lighthub/doxygen-docs/html/index.html) (litle bit outdated)
|
||||
|
||||
It may operate both:
|
||||
* On [especially designed hardware board](http://www.lazyhome.ru/index.php/featurerequest) with 16 optocoupled digital inputs, 16 ESD protected digital/analog Inputs/outputs, 8 open-collector outputs (up to 0.5A/50V), DMX IN/OUT, MODBUS RTU and hardware 1-wire support circuit.
|
||||
@@ -30,7 +30,7 @@ Lighthub allows connecting together:
|
||||

|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
Where is possible both, to configure local control/mapping between inputs and outputs (light, floor heating thermostats) and remote control from MQTT enabled software and between controllers. At the moment, LightHub tested and perfectly working with following set of complementary free software:
|
||||
* [HomeAssistant](https://www.home-assistant.io) - the best choice of HomeAutomation system
|
||||
@@ -49,7 +49,7 @@ Scalability of Lighthub is virtually unlimited: Setup so many controllers you ne
|
||||
* [Browser Plugin for searching and configure controllers](https://github.com/anklimov/zeroconf-lighthub)
|
||||
* [Channel commands](https://github.com/anklimov/lighthub/wiki/Channel-commands)
|
||||
* [OpenHab integration](https://github.com/anklimov/lighthub/wiki/OpenHab--integration)
|
||||
* [Doxygen developers documentation](https://anklimov.github.io/lighthub/docs/html/index.html)
|
||||
* [Doxygen developers documentation](https://anklimov.github.io/lighthub/doxygen-docs/html/index.html)
|
||||
* [Latest Release notes](https://github.com/anklimov/lighthub/releases/tag/v3.0.0)
|
||||
|
||||
# Platforms specific details:
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#-DFLASH_DATA_SECTOR
|
||||
#-DFLASH_PAGE_NUMBER
|
||||
|
||||
-D PIO_FRAMEWORK_ARDUINO_ENABLE_MASS_STORAGE
|
||||
-D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC_AND_MSC
|
||||
#-D PIO_FRAMEWORK_ARDUINO_ENABLE_MASS_STORAGE
|
||||
#-D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC_AND_MSC
|
||||
|
||||
#-DdebugSerialPort=SerialUSB
|
||||
#-DSerialPortType=USBSerial
|
||||
@@ -36,8 +36,8 @@
|
||||
#-D USBD_USE_CDC
|
||||
|
||||
-D HAL_CAN_MODULE_ENABLED
|
||||
#HAL_ETH_MODULE_DISABLED
|
||||
-D HAL_ETH_MODULE_DISABLED
|
||||
#HAL_SD_MODULE_DISABLED
|
||||
#HAL_DAC_MODULE_DISABLED
|
||||
#-DMERCURY_ENABLE
|
||||
-DMERCURY_ENABLE
|
||||
-D ROTARYENCODER
|
||||
@@ -1,3 +1,3 @@
|
||||
export PORT=cu.usbmodem14201
|
||||
export PORT=cu.usbmodem21301
|
||||
echo . | stty -f /dev/$PORT speed 1200
|
||||
../tools/mac/tool-bossac/bossac -U false -p $PORT -i -e -w -v -b firmware.bin -R
|
||||
../tools/mac/tool-bossac/bossac -U false -p $PORT -i -e -w -v -b firmware.bin -R
|
||||
|
||||
@@ -1 +1 @@
|
||||
../tools/mac/arduinoOTA -address 192.168.88.21 -port 80 -username arduino -password password -sketch firmware.bin -b -upload /sketch
|
||||
../tools/mac/arduinoOTA -address 192.168.11.188 -port 80 -username arduino -password password -sketch firmware.bin -b -upload /sketch
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"mqtt":["garden","192.168.10.115",1883,"test","test"],
|
||||
"ow":{
|
||||
"28FFADCE601705A3":{"emit":"t_soil1","item":"h_relay6"},
|
||||
"286164123FF96F55":{"emit":"t_soil2"},
|
||||
"28FFEF6D60170335":{"emit":"t_soil3"}
|
||||
},
|
||||
"items":{
|
||||
"h_relay1":[6,39,1,1],
|
||||
"h_relay2":[6,38,1,1],
|
||||
"h_relay3":[6,37,1,1],
|
||||
"h_relay4":[6,36,1,1],
|
||||
"h_relay5":[6,35,1,1],
|
||||
"h_relay6":[5,34,23],
|
||||
"h_relay7":[6,33,1,1],
|
||||
"h_relay8":[6,32,1,1],
|
||||
"h_auto":[6,29,1,1]
|
||||
},
|
||||
"in":{
|
||||
"40":{"emit":"/garden/s_in/1"},
|
||||
"41":{"emit":"/garden/s_in/2"},
|
||||
"42":{"emit":"/garden/s_in/3"},
|
||||
"43":{"emit":"/garden/s_in/4"},
|
||||
"44":{"emit":"/garden/s_in/5"},
|
||||
"45":{"emit":"/garden/s_in/6"},
|
||||
"46":{"emit":"/garden/s_in/7"},
|
||||
"47":{"emit":"/garden/s_in/8"}
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
{
|
||||
"dmxin":["kuhm","kuhwin","gost","bthr"],
|
||||
"dmx":[3,60],
|
||||
"modbus": [96,97],
|
||||
"items": {
|
||||
"light":[7,["kuh","ktc","gst","gost"]],
|
||||
"kuhwin":[1,5],
|
||||
"kuhline":[1,13],
|
||||
"kuhfre":[1,25],
|
||||
"kuhwork":[1,1],
|
||||
"gost":[1,47],
|
||||
"sasha1":[1,17],
|
||||
"sasha2":[1,21],
|
||||
"vika1":[1,31],
|
||||
"vika2":[1,35],
|
||||
"bedr1":[1,39],
|
||||
"bedr2":[1,43],
|
||||
"kuhm":[7,["kuhline","kuhfre","kuhwork"]],
|
||||
"kuh":[7,["kuhline","kuhfre","kuhwork","kuhwin"]],
|
||||
"sasha":[7,["sasha1","sasha2"]],
|
||||
"vika":[7,["vika1","vika2"]],
|
||||
"bedr":[7,["bedr1","bedr2"]],
|
||||
"balk1":[7,["balk11","balk12"]],
|
||||
"balk2":[0,53],
|
||||
"balk11":[0,51],
|
||||
"balk12":[0,52],
|
||||
"all":[7,["kuh","gost","vika","sasha","bedr","bth","gst","ktc","balk1","balk2","fm"]],
|
||||
"bth1":[4,[96,0,0]],
|
||||
"bth2":[4,[96,0,1]],
|
||||
"bthr":[1,57],
|
||||
"bth":[7,["bth1","bth2"]],
|
||||
"ktc":[4,[97,0,0]],
|
||||
"gst":[4,[97,0,1]],
|
||||
"a_vika":[3,8],
|
||||
"a_sasha":[3,7],
|
||||
"a_bedr":[3,6],
|
||||
"a_ext":[3,5],
|
||||
"fm":[9,10],
|
||||
"fm_t":[8,"fm"],
|
||||
"fm_h":[8,"fm"]
|
||||
|
||||
},
|
||||
"mqtt":["public_test2","m2m.eclipse.org"]
|
||||
}
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
{
|
||||
"mqtt":["public_test1","m2m.eclipse.org"],
|
||||
"ow":{
|
||||
"2807FFD503000036":{"emit":"t_balk1","item":"h_balk1"},
|
||||
"284811170400005B":{"emit":"t_entr"},
|
||||
"28FFF95533160459":{"emit":"t_bath1","item":"h_bath1"},
|
||||
"28D2FD1604000051":{"emit":"t_exbath2"},
|
||||
"28EE634F13160255":{"emit":"t_bath2","item":"h_bath2"},
|
||||
"28FFB3B02316030C":{"emit":"t_balk2","item":"h_balk2"},
|
||||
"28EE4A571316027A":{"emit":"t_sasha"},
|
||||
"28FF0C6A331604FF":{"emit":"t_ext"},
|
||||
"28FFDD8C3316042C":{"emit":"t_abath2"},
|
||||
"28FFAEAC3316047F":{"emit":"t_abath1"},
|
||||
"28EE736E131602D6":{"emit":"t_vika"},
|
||||
"28EED85C131602DA":{"emit":"t_kitchen"},
|
||||
"28EE5A62131602CF":{"emit":"t_ac"},
|
||||
"28EEA76713160204":{"emit":"t_aentr"},
|
||||
"28EE8A5B1616019D":{"emit":"t_entr2","item":"h_entr"},
|
||||
"28EED16A13160268":{"emit":"t_bedr"}
|
||||
},
|
||||
"items":{
|
||||
"all":[7,["h_entr","h_bath1","h_bath2","h_balk1","h_balk2","h_boil1","h_boil2","h_polotenc","spots_en","light_en"]],
|
||||
"h_bath1":[5,24,33],
|
||||
"h_bath2":[5,34,32],
|
||||
"h_entr":[5,35,32],
|
||||
"h_balk1":[5,25,28],
|
||||
"h_balk2":[5,27,28],
|
||||
"h_boil1":[6,23],
|
||||
"h_boil2":[6,28,1,1],
|
||||
"h_polotenc":[6,26,1,1],
|
||||
"spots_en":[6,22,1,1],
|
||||
"light_en":[6,29,1,1],
|
||||
"water":[6,36,1,1]
|
||||
},
|
||||
"in":{
|
||||
"41":{"T":0,"emit":"/myhome/in/all","scmd":"HALT","rcmd":"REST"},
|
||||
"37":{"item":"spots_en","scmd":"TOGGLE","rcmd":"TOGGLE"},
|
||||
"38":{"emit":"/myhome/in/light","scmd":"TOGGLE","rcmd":"TOGGLE"},
|
||||
"40":{"T":1,"emit":"/myhome/out/all","scmd":"HALT","rcmd":"REST"},
|
||||
"39":{"emit":"/myhome/s_out/water_leak"}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
{
|
||||
"syslog":["192.168.88.2"],
|
||||
"mqtt1":["esp32","m2m.eclipse.org"],
|
||||
"mqtt":["elevator","192.168.88.2"],
|
||||
"mqtt4":["esp32","test.mosquitto.org"],
|
||||
"dmx":[30],
|
||||
"items": {
|
||||
"relay1":[6,32],
|
||||
"relay2":[6,33],
|
||||
"relays":[7,["relay1","relay2"]],
|
||||
"sensair1":[44,[254,
|
||||
"sensair",
|
||||
{"co2":{"emit":"co2"}},
|
||||
{"mode":"auto"}
|
||||
]
|
||||
],
|
||||
"elevator":[15,{"baud":9600,"serial":"8N1","ip":"192.168.88.255","port":502}],
|
||||
|
||||
"aaa1":[44,[254,
|
||||
"aaa",
|
||||
{"aaa1":{"emit":"aaa2"}},
|
||||
{"mode":"auto"}
|
||||
]
|
||||
]
|
||||
},
|
||||
"modbus":
|
||||
{
|
||||
"aaa":
|
||||
{"baud":19200,
|
||||
"poll":{"irs":[1]},
|
||||
"par":{
|
||||
"aaa1":{"ir":1}
|
||||
}
|
||||
|
||||
},
|
||||
"sensair":{"baud":9600,
|
||||
"poll":{"irs":[[0,3],21,[25,30]],"regs":[0,1,31],"delay":1000},
|
||||
"par":{
|
||||
"co2":{"ir":3},
|
||||
"meterStat":{"ir":0},
|
||||
"alarmStat":{"ir":1},
|
||||
"outStat":{"ir":0},
|
||||
"pwm":{"ir":21},
|
||||
"typeid":{"ir":25,"type":"u32"},
|
||||
"mapver":{"ir":27},
|
||||
"fwver":{"ir":28},
|
||||
"sensorid":{"ir":29,"type":"u32"},
|
||||
"ack":{"reg":0},
|
||||
"command":{"reg":1},
|
||||
"abc":{"reg":31}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
"in":{ "34":{"item":"relays","emit":"myhome/in/bedr","scmd":"TOGGLE","rcmd":""},
|
||||
|
||||
"17":{"T":64,"emit":"analog","map":[0,1024,0,100,15]}
|
||||
}
|
||||
}
|
||||
@@ -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 | Все типы |
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
@@ -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 поддерживает нужные типы
|
||||
|
||||
---
|
||||
|
||||
@@ -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)
|
||||
**Статус**: ✅ Актуально и готово к использованию
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 |
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) | - | ✓ | - | - | - | - | - | - | - |
|
||||
|
||||
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 231 KiB After Width: | Height: | Size: 231 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 676 B After Width: | Height: | Size: 676 B |
|
Before Width: | Height: | Size: 147 B After Width: | Height: | Size: 147 B |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 381 B |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |