docs review

This commit is contained in:
2026-10-11 01:27:15 +03:00
parent e460ca647c
commit f787a16270
77 changed files with 1408 additions and 957 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Аналоговые входы и преобразования map
> Источник: Wiki LightHub (lazyhome.ru), страницы «аналоговые_входы» и «использование_преобразований_map». Снапшот от 2026-10-02.
> Источник: Wiki LightHub (lazyhome.ru), страницы «аналоговые\_входы» и «использование\_преобразований\_map». Снапшот от 2026-10-02.
## Общая информация
+1 -1
View File
@@ -1,6 +1,6 @@
# Двойные, тройные, длительные нажатия
> Источник: Wiki LightHub (lazyhome.ru), страницы «двойные_тройные_длительные_нажатия» и «несколько_кнопок_на_одном_входе». Снапшот от 2026-10-02.
> Источник: Wiki LightHub (lazyhome.ru), страницы «двойные\_тройные\_длительные\_нажатия» и «несколько\_кнопок\_на\_одном\_входе». Снапшот от 2026-10-02.
Начиная с [этого коммита](https://github.com/anklimov/lighthub/commit/0044b741ac9f6fb8fc4b1ff8388e47c8bb8efd9b) у прошивки появилась возможность отслеживать одинарные, двойные, тройные, долгие нажатия
+26 -26
View File
@@ -18,7 +18,7 @@
| **5** | `THERMO` | Simple Thermostat | ON/OFF термостат с гистерезисом | `[GPIO_pin, целевая_температура_°C]` |
| **6** | `RELAY` | Relay Output | Электромагнитное реле ON/OFF | GPIO пин |
| **7** | `GROUP` | Group Channel | Логическая группа каналов для синхронного управления | Массив строк с именами каналов |
| **8** | `VCTEMP` | Vacom PID Thermo | Температура из VC-канала Vacom (ссылка на item типа CH_VC) | `[имя_канала_VC]` (строка) |
| **8** | `VCTEMP` | Vacom PID Thermo | Температура из VC-канала Vacom (ссылка на item типа CH\_VC) | `[имя_канала_VC]` (строка) |
| **9** | `MBUSVC` | Vacom Modbus Motor | Управление мотор-регулятором вентилятора Vacom через Modbus | `[modbus_адрес, "имя_объекта"]` |
| **10** | `ACHAIER` | Air Conditioner Haier | Управление кондиционером Haier по проприетарному UART-протоколу (9600) | `[порт_serial(0-3)]` |
| **11** | `SPILED` | SPI LED Strip | Управление NeoPixel LED лентой (WS2812B и совместимые, один data-пин) | `[data_pin, numLeds(дефолт 43), ledsType]` |
@@ -29,7 +29,7 @@
| **16** | `RELAYPWM` | Relay PWM | Медленный PWM через реле для инертных систем | `[GPIO_pin, период_цикла_сек(дефолт 5)]` |
| **17** | `DMXRGBWW` | DMX RGBWW | DMX 512 выход RGB + теплый белый + холодный белый (5 каналов) | Номер стартового DMX канала |
| **18** | `VENTS` | Multiroom Ventilation | Многозональная вентиляция с каскадным управлением | `[объект_зон]` (без Modbus-адреса) |
| **19** | `ELEVATOR` | Elevator Control | Управление лифтом | `{"serial":"8N1","baud":19200,"log":...}` (компилируется с ELEVATOR_ENABLE) |
| **19** | `ELEVATOR` | Elevator Control | Управление лифтом | `{"serial":"8N1","baud":19200,"log":...}` (компилируется с ELEVATOR\_ENABLE) |
| **20** | `COUNTER` | Generic Counter | Счётчик импульсов (электроэнергия, газ, вода) | `[коэффициент_импульса, период_автосуммирования_сек]` |
| **21** | `HUM` | Humidifier | Управление увлажнителем воздуха (только один в системе) | `[[pumpPin, flushPin, pressurePin, maxPumpTime, idleTime, capacity, minLevel, startLevel], {зоны_краны}, motorExec, faultExec]` |
| **22** | `MERCURY` | Mercury Energy Meter | Счётчик энергии Mercury по RS485/Modbus | `[адрес, baud, "8N1", уровень_доступа, пароль, pollingInterval_ms(дефолт 10000)]` |
@@ -53,33 +53,33 @@
## Примеры конфигурации по типам
### CH_DIMMER (0) - DMX выход с регулировкой
### CH\_DIMMER (0) - DMX выход с регулировкой
```json
"dimmer1": [0, 5], // DMX канал 5
"dimmer2": [0, [1, 2, 3, 4]] // 4-канальный (RGBW), DMX 1-4
```
### CH_RGBW (1) - DMX RGB+White
### CH\_RGBW (1) - DMX RGB+White
```json
"rgb_light": [1, 10] // RGB+W на DMX 10-13
```
### CH_RGB (2) - DMX RGB
### CH\_RGB (2) - DMX RGB
```json
"rgb_light": [2, 15] // RGB начиная с 15-го (на DMX 15-17)
```
### CH_PWM (3) - GPIO PWM
### CH\_PWM (3) - GPIO PWM
```json
"pwm1": [3, 9], // PWM на GPIO pin 9
"pwm_4ch": [3, [11, 12, 13, 14]] // 4-х канальный PWM
```
### CH_MODBUS (4) - AC Dimmer (Legacy)
### CH\_MODBUS (4) - AC Dimmer (Legacy)
```json
"mbus_dim": [4, [96, 0, 0, 255]]
@@ -89,20 +89,20 @@
// Макс значение: 255
```
### CH_THERMO (5) - Термостат
### CH\_THERMO (5) - Термостат
```json
"thermo_bath": [5, 24, 33] // GPIO 24, уставка 33°C
```
### CH_RELAY (6) - Реле
### CH\_RELAY (6) - Реле
```json
"relay1": [6, 23], // Реле на GPIO 23
"relay2": ["RELAY", 28, 1, 1] // Реле, по умолчанию ON
```
### CH_GROUP (7) - Группа каналов
### CH\_GROUP (7) - Группа каналов
```json
"lights_all": [7, [
@@ -112,19 +112,19 @@
"lights_bedroom": [7, ["lamp1", "rgb1"]]
```
### CH_VCTEMP (8) - Vacom PID терморегулятор
### CH\_VCTEMP (8) - Vacom PID терморегулятор
```json
"fm_t": [8, "fm"] // строка-имя item типа CH_VC (9)
```
### CH_VC (9) - Vacom мотор регулятор
### CH\_VC (9) - Vacom мотор регулятор
```json
"fan_speed": [9, [96, "a_ext"]] // Modbus адрес 96, "имя_объекта" (строка)
```
### CH_AC (10) - Кондиционер Haier
### CH\_AC (10) - Кондиционер Haier
```json
"ac_main": [10, 1] // номер порта serial (0-3)
@@ -132,13 +132,13 @@
// также доступны подканалы lock/swing/quiet/raw (/mode — число, текстовые режимы — в /cmd)
```
### CH_SPILED (11) - SPI LED лента
### CH\_SPILED (11) - SPI LED лента
```json
"led_strip": [11, [7, 8]] // data-пин GPIO7, 8 светодиодов
```
### CH_MOTOR (12) - Моторная задвижка с обратной связью
### CH\_MOTOR (12) - Моторная задвижка с обратной связью
```json
"gate_motor": [12, [9, 10, 11, 0, 255, 30000]]
@@ -146,7 +146,7 @@
// fbOpen: 0, fbClosed: 255, maxOnTime_ms: 30000
```
### CH_PID (13) - PID регулятор
### CH\_PID (13) - PID регулятор
```json
"pid_temp": [13, [
@@ -159,7 +159,7 @@
// min_out=0, max_out=255
```
### CH_MBUS (14) - Универсальный Modbus
### CH\_MBUS (14) - Универсальный Modbus
```json
"mbus_generic": [14, [96, "temperature_sensor", {
@@ -168,7 +168,7 @@
}]]
```
### CH_UARTBRIDGE (15) - UART мост
### CH\_UARTBRIDGE (15) - UART мост
```json
"uart_debug": [15, {
@@ -180,19 +180,19 @@
}]
```
### CH_RELAYX (16) - Медленный PWM через реле
### CH\_RELAYX (16) - Медленный PWM через реле
```json
"relay_pwm": [16, [22, 60]] // GPIO 22, период цикла 60 сек
```
### CH_RGBWW (17) - DMX RGBWW
### CH\_RGBWW (17) - DMX RGBWW
```json
"led_warm_cold": [17, 30] // DMX 30-34 (RGBWW, 5 каналов)
```
### CH_MULTIVENT (18) - Многозональная вентиляция
### CH\_MULTIVENT (18) - Многозональная вентиляция
```json
"multivent_system": [18, {
@@ -206,14 +206,14 @@
}]
```
### CH_COUNTER (20) - Счётчик по импульсам/времени
### CH\_COUNTER (20) - Счётчик по импульсам/времени
```json
"energy_meter": [20, [0.02, 1.2]] // коэфф 0.02, период автосуммирования 1.2 с
"gas_counter": [20, 0] // без калибровки
```
### CH_HUMIDIFIER (21) - Увлажнитель
### CH\_HUMIDIFIER (21) - Увлажнитель
```json
"humidifier1": [21, [13, 14, 15, 120, 15, 50, 5, 25]]
@@ -221,7 +221,7 @@
// (только один humidifier в системе; компилируется с HUMIDIFIER_ENABLE)
```
### CH_MERCURY (22) - Счётчик энергии Mercury
### CH\_MERCURY (22) - Счётчик энергии Mercury
```json
"mercury_meter": [22, [1, 9600, "8N1", 2, "123456", 10000]]
@@ -233,7 +233,7 @@
// Интервал опроса: 10000 мс (дефолт)
```
### CH_SPRINKLR (23) - Система полива
### CH\_SPRINKLR (23) - Система полива
```json
"irrigation_system": [23, {
@@ -281,7 +281,7 @@
- `HIGH` / `MEDIUM` / `LOW` — скорость вентилятора
- `RGB` / `HSV` / `RESET` — цветовые команды (для RGB каналов) и сброс
Полный список команд: ON OFF REST TOGGLE HALT XON XOFF INCREASE DECREASE ENABLE DISABLE UNFREEZE FREEZE AUTO FAN_ONLY HIGH MEDIUM LOW HEAT_COOL HEAT COOL DRY RGB HSV RESET.
Полный список команд: ON OFF REST TOGGLE HALT XON XOFF INCREASE DECREASE ENABLE DISABLE UNFREEZE FREEZE AUTO FAN\_ONLY HIGH MEDIUM LOW HEAT\_COOL HEAT COOL DRY RGB HSV RESET.
---
+1 -1
View File
@@ -1,6 +1,6 @@
# Command Line Interface
> Источник: Wiki LightHub (lazyhome.ru), страница «cli_интерфейс». Снапшот от 2026-10-02.
> Источник: Wiki LightHub (lazyhome.ru), страница «cli\_интерфейс». Снапшот от 2026-10-02.
Иначе, интерфейс командной строки.
+5 -5
View File
@@ -1,10 +1,10 @@
# Криптоподпись команды
> Источник: Wiki LightHub (lazyhome.ru), страница «криптоподпись_команды». Снапшот от 2026-10-02.
> Источник: Wiki LightHub (lazyhome.ru), страница «криптоподпись\_команды». Снапшот от 2026-10-02.
В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, MQTT брокеру или HTTP API, потенциальный злоумышленник не сможет выполнить критичную команду (например, открытие ворот), можно использовать механизм цифровой подписи команды.
Для задействования режима, необходимо пересобрать прошивку, добавив в приватный файл опций компиляции ([опции компиляции](https://www.lazyhome.ru/dokuwiki/doku.php?id=опции_компиляции)) (пример custom-build-flags/build_flags_lighthub21 для сборки под lighthub21) следующие опции (приведен пример):
Для задействования режима, необходимо пересобрать прошивку, добавив в приватный файл опций компиляции ([опции компиляции](https://www.lazyhome.ru/dokuwiki/doku.php?id=опции_компиляции)) (пример custom-build-flags/build\_flags\_lighthub21 для сборки под lighthub21) следующие опции (приведен пример):
```
-D CRYPT
@@ -18,11 +18,11 @@
* Авторизованная сторона, желающая выполнить команду, вычисляет SHA256 хэш от строки, содержащей `<Salt><SHAREDSECRET><Команда>`
* при отправке MQTT команды, авторизованная сторона добавляет в MQTT Payload полученный хэш цифровой подписи ДО команды, отделив подпись от тела команды знаком @
* Контроллер, получив команду с подписью, производит аналогичную операцию по вычислению подписи и, если значения совпали, запрос считается авторизованным
* Если команда направлена на управление пином контроллера, из перечня PROTECTED_PINS, заданного при компиляции прошивки, то она будет выполнена только том случае, если является авторизованной
* Если команда направлена на управление пином контроллера, из перечня PROTECTED\_PINS, заданного при компиляции прошивки, то она будет выполнена только том случае, если является авторизованной
### Ограничения
Если пин входит в перечень, заданный при компиляции в опции PROTECTED_PINS, то для него действуют следующие ограничения, смысл которых в том, чтобы сделать крайне сложным подачу высокого логического уровня на выход контроллера (открытие мощных ключей) не имея физического доступа к самому устройству:
Если пин входит в перечень, заданный при компиляции в опции PROTECTED\_PINS, то для него действуют следующие ограничения, смысл которых в том, чтобы сделать крайне сложным подачу высокого логического уровня на выход контроллера (открытие мощных ключей) не имея физического доступа к самому устройству:
* Он не будет работать на канале типа термостат (THERMO)
* Для канала типа RELAY вывод работает только в не инверсном режиме. То есть, настройками не получится добиться перевода в состояние с высоким уровнем по-умолчанию, не получив подписанной команды. Настройки команды по умолчанию в файле конфигурации, также, будут проигнорированы. требуется цифровая подпись команде для управления таким каналом
@@ -40,4 +40,4 @@
- Корректно: механизм реализован под флагом `CRYPT`: ключ `cryptoKey[] = QUOTE(SHAREDSECRET)` (`lighthub/main.cpp:110`), публикация `$salt` в топике устройства — `lighthub/main.cpp:2793-2804` (функция `publishStat()`, вызывается раз в 30 секунд из `thermoLoop()`, период `THERMOSTAT_CHECK_PERIOD=30000`, `lighthub/options.h:147`).
- Корректно: подпись вычисляется как SHA256 от `<Salt><SHAREDSECRET><Команда>` — `checkToken()` в `lighthub/utils.cpp:901-942` (sha256.update: saltStr, cryptoKey, data).
- Корректно: формат payload «подпись@команда» — разбор по символу `@` в `lighthub/item.cpp:752` (`char * authPos = strchr(payload,'@'); //token@command`).
- Корректно: ограничения для PROTECTED_PINS подтверждены в коде: THERMO — `main.cpp:3237`; RELAY — `modules/out_relay.cpp:39,110`; MOTOR — `modules/out_motor.cpp:53,77,102`; PWM требует авторизованную команду — `modules/out_pwm.cpp:129-165`; SPRINKLER (увлажнитель) — `modules/out_sprinkler.cpp:50`. Перечень пинов задается опцией `PROTECTED_PINS` (`lighthub/options.h:390-403`).
- Корректно: ограничения для PROTECTED\_PINS подтверждены в коде: THERMO — `main.cpp:3237`; RELAY — `modules/out_relay.cpp:39,110`; MOTOR — `modules/out_motor.cpp:53,77,102`; PWM требует авторизованную команду — `modules/out_pwm.cpp:129-165`; SPRINKLER (увлажнитель) — `modules/out_sprinkler.cpp:50`. Перечень пинов задается опцией `PROTECTED_PINS` (`lighthub/options.h:390-403`).
+5 -5
View File
@@ -1,13 +1,13 @@
# Как LightHub работает с файлом конфигурации
> Источник: Wiki LightHub (lazyhome.ru), страница «как_lighthub_работает_с_файлом_конфигурации». Снапшот от 2026-10-02.
> Источник: Wiki LightHub (lazyhome.ru), страница «как\_lighthub\_работает\_с\_файлом\_конфигурации». Снапшот от 2026-10-02.
## Первое включение
По-умолчанию, контроллер получает динамический адрес локальной сети по DHCP
При этом, он записывает его в энергонезависимую память. И если при очередном перезапуске, DHCP сервер не доступен - он будет использовать последний известный IP адрес.
Если надо определить статический адрес (а, также, GW, DNS, NetMask), это можно сделать при помощи команды ip в [cli_интерфейс](cli_interface.md)
Если надо определить статический адрес (а, также, GW, DNS, NetMask), это можно сделать при помощи команды ip в [cli\_интерфейс](cli_interface.md)
Адрес будет сохранен в энергонезависимую память контроллера.
При включении, контроллер сначала проверяет наличие записанного в памяти конфигурационного файла. (У нового контроллера, а также, после перезаливки прошивки, конфигурационный файл отсутствует (кроме mega2560, в случае этого контроллера, конфигурация не утрачивается в процессе перепрошивки)). Затем контроллер поднимает сетевые интерфейсы, подключается к интернету, идет на сайт lazyhome.ru и пытается скачать конфигурационный файл JSON для своего МАС-адреса. (данное поведение можно отключить при помощи cli команды get OFF)
@@ -26,7 +26,7 @@
Для того, чтобы быстро начать работу, этого достаточно.
В дальнейшем, Автоматическую загрузку конфига можно отменить при помощи команды `get OFF` в [cli_интерфейс](cli_interface.md) или изменив конфиг через web интерфейс контроллера
В дальнейшем, Автоматическую загрузку конфига можно отменить при помощи команды `get OFF` в [cli\_интерфейс](cli_interface.md) или изменив конфиг через web интерфейс контроллера
### Автономный метод настройки - веб интерфейс/плагин браузера
@@ -35,7 +35,7 @@
### Дополнительные возможности
Также можно разместить настройки на своем собственном http сервере, в папке cnf. Формат имени файла: http://MY_CONFIG_SERVER/cnf/12-12-12-12-12-12.config.json (вместо 12-12-12-12-12-12 ваш mac адрес)
Также можно разместить настройки на своем собственном http сервере, в папке cnf. Формат имени файла: http://MY\_CONFIG\_SERVER/cnf/12-12-12-12-12-12.config.json (вместо 12-12-12-12-12-12 ваш mac адрес)
После этого выполнить через CLI команду `get <MY_CONFIG_SERVER>`
Контроллер запомнит ваш сервер и далее, будет загружать обновление конфига из этого источника. (на платформах STM, NRF пока не сохраняется)
@@ -46,7 +46,7 @@
После этого контроллер готов к автономной работе.
При загрузке конфигурации проверяется наличие изменений - если в памяти сохранен тот же конфиг, что имеется на портале, повторная загрузка и сохранение не происходит.
Данное поведение можно изменить при помощи команды save в [cli_интерфейс](cli_interface.md)
Данное поведение можно изменить при помощи команды save в [cli\_интерфейс](cli_interface.md)
```
save ON - включить автосохранение конфига (по умолчанию)
+50 -50
View File
@@ -7,34 +7,34 @@
## Содержание
- [CH_DIMMER (0)](#ch_dimmer-0---dmx-диммер)
- [CH_RGBW (1)](#ch_rgbw-1---dmx-rgbwhite)
- [CH_RGB (2)](#ch_rgb-2---dmx-rgb)
- [CH_PWM (3)](#ch_pwm-3---gpio-pwm)
- [CH_MODBUS (4)](#ch_modbus-4---modbus-ac-dimmer-legacy)
- [CH_THERMO (5)](#ch_thermo-5---onoff-термостат)
- [CH_RELAY (6)](#ch_relay-6---gpio-реле)
- [CH_GROUP (7)](#ch_group-7---группа-каналов)
- [CH_VCTEMP (8)](#ch_vctemp-8---vacom-pid-терморегулятор)
- [CH_VC (9)](#ch_vc-9---vacom-мотор-регулятор)
- [CH_AC (10)](#ch_ac-10---кондиционер-haier)
- [CH_SPILED (11)](#ch_spiled-11---spi-led-лента)
- [CH_MOTOR (12)](#ch_motor-12---шаговый-двигатель)
- [CH_PID (13)](#ch_pid-13---pid-регулятор)
- [CH_MBUS (14)](#ch_mbus-14---universal-modbus)
- [CH_UARTBRIDGE (15)](#ch_uartbridge-15---uart-мост)
- [CH_RELAYX (16)](#ch_relayx-16---медленный-pwm-через-реле)
- [CH_RGBWW (17)](#ch_rgbww-17---dmx-rgbww)
- [CH_MULTIVENT (18)](#ch_multivent-18---многозональная-вентиляция)
- [CH_ELEVATOR (19)](#ch_elevator-19---управление-лифтом)
- [CH_COUNTER (20)](#ch_counter-20---счётчик-импульсов)
- [CH_HUMIDIFIER (21)](#ch_humidifier-21---управление-увлажнителем)
- [CH_MERCURY (22)](#ch_mercury-22---счётчик-энергии-mercury)
- [CH_SPRINKLER (23)](#ch_sprinkler-23---система-полива)
- [CH\_DIMMER (0)](#ch_dimmer-0---dmx-диммер)
- [CH\_RGBW (1)](#ch_rgbw-1---dmx-rgbwhite)
- [CH\_RGB (2)](#ch_rgb-2---dmx-rgb)
- [CH\_PWM (3)](#ch_pwm-3---gpio-pwm)
- [CH\_MODBUS (4)](#ch_modbus-4---modbus-ac-dimmer-legacy)
- [CH\_THERMO (5)](#ch_thermo-5---onoff-термостат)
- [CH\_RELAY (6)](#ch_relay-6---gpio-реле)
- [CH\_GROUP (7)](#ch_group-7---группа-каналов)
- [CH\_VCTEMP (8)](#ch_vctemp-8---vacom-pid-терморегулятор)
- [CH\_VC (9)](#ch_vc-9---vacom-мотор-регулятор)
- [CH\_AC (10)](#ch_ac-10---кондиционер-haier)
- [CH\_SPILED (11)](#ch_spiled-11---spi-led-лента)
- [CH\_MOTOR (12)](#ch_motor-12---шаговый-двигатель)
- [CH\_PID (13)](#ch_pid-13---pid-регулятор)
- [CH\_MBUS (14)](#ch_mbus-14---universal-modbus)
- [CH\_UARTBRIDGE (15)](#ch_uartbridge-15---uart-мост)
- [CH\_RELAYX (16)](#ch_relayx-16---медленный-pwm-через-реле)
- [CH\_RGBWW (17)](#ch_rgbww-17---dmx-rgbww)
- [CH\_MULTIVENT (18)](#ch_multivent-18---многозональная-вентиляция)
- [CH\_ELEVATOR (19)](#ch_elevator-19---управление-лифтом)
- [CH\_COUNTER (20)](#ch_counter-20---счётчик-импульсов)
- [CH\_HUMIDIFIER (21)](#ch_humidifier-21---управление-увлажнителем)
- [CH\_MERCURY (22)](#ch_mercury-22---счётчик-энергии-mercury)
- [CH\_SPRINKLER (23)](#ch_sprinkler-23---система-полива)
---
## CH_DIMMER (0) - DMX диммер
## CH\_DIMMER (0) - DMX диммер
**Назначение**: Регулировка яркости одного или нескольких DMX каналов
@@ -69,7 +69,7 @@ myhome/s_out/lamp_bedroom/val → опубликованная яркость
---
## CH_RGBW (1) - DMX RGBW
## CH\_RGBW (1) - DMX RGBW
**Назначение**: Управление RGB + White каналом через DMX (4 канала DMX)
@@ -105,7 +105,7 @@ myhome/dev/rgb_light/RGB ← 255,0,0,100 (RGB+White)
---
## CH_RGB (2) - DMX RGB
## CH\_RGB (2) - DMX RGB
**Назначение**: Управление RGB каналом через DMX (3 канала DMX)
@@ -128,7 +128,7 @@ myhome/dev/mood_light/HSV ← 120,100,100 (зелёный в HSV)
---
## CH_PWM (3) - GPIO PWM
## CH\_PWM (3) - GPIO PWM
**Назначение**: PWM выход через GPIO пины (для плат Arduino, ESP)
@@ -159,9 +159,9 @@ myhome/dev/pwm_dim/cmd ← ON
---
## CH_MODBUS (4) - Modbus AC Dimmer (Legacy)
## CH\_MODBUS (4) - Modbus AC Dimmer (Legacy)
**Назначение**: Управление AC-диммером через Modbus RTU (устаревший тип, использовать CH_MBUS (14))
**Назначение**: Управление AC-диммером через Modbus RTU (устаревший тип, использовать CH\_MBUS (14))
### Синтаксис
@@ -183,11 +183,11 @@ myhome/dev/pwm_dim/cmd ← ON
}
```
⚠️ **Примечание**: Для новых проектов используйте CH_MBUS (14) вместо этого
⚠️ **Примечание**: Для новых проектов используйте CH\_MBUS (14) вместо этого
---
## CH_THERMO (5) - ON/OFF Термостат
## CH\_THERMO (5) - ON/OFF Термостат
**Назначение**: Простой ON/OFF термостат с гистерезисом
@@ -219,7 +219,7 @@ myhome/dev/thermo_bath/cmd ← ON, OFF
---
## CH_RELAY (6) - GPIO Реле
## CH\_RELAY (6) - GPIO Реле
**Назначение**: Простое электромагнитное реле ON/OFF или иное дискретное устройство
@@ -250,7 +250,7 @@ myhome/dev/relay_water/cmd ← ON, OFF, TOGGLE
---
## CH_GROUP (7) - Группа каналов
## CH\_GROUP (7) - Группа каналов
**Назначение**: Логическая группа для синхронного управления несколькими каналами
@@ -291,7 +291,7 @@ myhome/dev/lights_all/cmd ← SET 100 (установит яркость
---
## CH_VCTEMP (8) - Vacom PID Терморегулятор
## CH\_VCTEMP (8) - Vacom PID Терморегулятор
**Назначение**: PID регулятор температуры для систем вентиляции Vacom
@@ -317,7 +317,7 @@ myhome/dev/lights_all/cmd ← SET 100 (установит яркость
---
## CH_VC (9) - Vacom Мотор-регулятор
## CH\_VC (9) - Vacom Мотор-регулятор
**Назначение**: Управление мотор-регулятором вентилятора Vacom
@@ -333,7 +333,7 @@ myhome/dev/lights_all/cmd ← SET 100 (установит яркость
---
## CH_AC (10) - Кондиционер Haier
## CH\_AC (10) - Кондиционер Haier
**Назначение**: Управление кондиционером Haier по UART (проприетарный протокол Haier, 9600 baud, не Modbus)
@@ -374,7 +374,7 @@ myhome/dev/ac_hall/fan ← 0, 1, 2, 3 (скорость)
---
## CH_SPILED (11) - SPI LED Лента
## CH\_SPILED (11) - SPI LED Лента
**Назначение**: Управление адресуемой SPI LED лентой (WS2812B, APA102)
@@ -399,7 +399,7 @@ myhome/dev/ac_hall/fan ← 0, 1, 2, 3 (скорость)
---
## CH_MOTOR (12) - Шаговый двигатель
## CH\_MOTOR (12) - Шаговый двигатель
**Назначение**: Управление шаговым двигателем с обратной связью (для задвижек, жалюзи)
@@ -436,7 +436,7 @@ myhome/dev/gate_motor/val ← текущая позиция обратно
---
## CH_PID (13) - PID Регулятор
## CH\_PID (13) - PID Регулятор
**Назначение**: Универсальный PID контроллер для процессов
@@ -484,7 +484,7 @@ myhome/dev/gate_motor/val ← текущая позиция обратно
---
## CH_MBUS (14) - Universal Modbus
## CH\_MBUS (14) - Universal Modbus
**Назначение**: Универсальный Modbus канал с полной поддержкой шаблонизации
@@ -532,7 +532,7 @@ myhome/dev/gate_motor/val ← текущая позиция обратно
---
## CH_UARTBRIDGE (15) - UART Мост
## CH\_UARTBRIDGE (15) - UART Мост
**Назначение**: Мост между двумя UART портами с отладкой через UDP
@@ -558,7 +558,7 @@ myhome/dev/gate_motor/val ← текущая позиция обратно
---
## CH_RELAYX (16) - Медленный PWM через реле
## CH\_RELAYX (16) - Медленный PWM через реле
**Назначение**: Медленный PWM через реле для инертных систем (тепловые системы, комплексы)
@@ -591,7 +591,7 @@ myhome/dev/floor_heating/val ← текущий PWM
---
## CH_RGBWW (17) - DMX RGBWW
## CH\_RGBWW (17) - DMX RGBWW
**Назначение**: DMX управление RGB + тёплый белый + холодный белый (5 каналов)
@@ -615,7 +615,7 @@ myhome/dev/led_tunable_white/RGB ← 255,128,0,200,50
---
## CH_MULTIVENT (18) - Многозональная вентиляция
## CH\_MULTIVENT (18) - Многозональная вентиляция
**Назначение**: Каскадная система вентиляции с независимым регулированием по зонам
@@ -670,7 +670,7 @@ myhome/dev/multivent_main/bedroom/mode ← HEAT, COOL, FAN
---
## CH_ELEVATOR (19) - Управление лифтом
## CH\_ELEVATOR (19) - Управление лифтом
**Назначение**: Управление лифтом (зарезервировано для будущего использования)
@@ -678,7 +678,7 @@ myhome/dev/multivent_main/bedroom/mode ← HEAT, COOL, FAN
---
## CH_COUNTER (20) - Счётчик импульсов
## CH\_COUNTER (20) - Счётчик импульсов
**Назначение**: Счётчик импульсов (электроэнергия, газ, вода)
@@ -710,7 +710,7 @@ myhome/dev/gas_meter/val ← текущее значение (м³)
---
## CH_HUMIDIFIER (21) - Управление увлажнителем
## CH\_HUMIDIFIER (21) - Управление увлажнителем
**Назначение**: Управление форсуночным увлажнителем воздуха
@@ -743,7 +743,7 @@ myhome/dev/humidifier_room/cmd ← ON, OFF
---
## CH_MERCURY (22) - Счётчик энергии Mercury
## CH\_MERCURY (22) - Счётчик энергии Mercury
**Назначение**: Счётчик энергии Mercury по RS485/Modbus
@@ -777,7 +777,7 @@ myhome/dev/energy_mercury/val ← текущие показания энерг
---
## CH_SPRINKLER (23) - Система полива
## CH\_SPRINKLER (23) - Система полива
**Назначение**: Многозональная система автоматического полива с контролем воды и насосов
@@ -1,6 +1,6 @@
# LightHub: Полное инженерное описание JSON‑конфигурации контроллера
> **Документ актуален для ядра LightHub с типами каналов CH_DIMMER (0) - CH_SPRINKLER (23)**
> **Документ актуален для ядра LightHub с типами каналов CH\_DIMMER (0) - CH\_SPRINKLER (23)**
>
> Предназначен для инженеров автоматизации, интеграторов и разработчиков.
> Основан **строго** на официальной документации LazyHome / LightHub и исходном коде.
@@ -188,7 +188,7 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
| Параметр | Описание |
|--|--|
| GPIO pin | Не используется: пин фиксирован (AVR_DMXOUT_PIN) |
| GPIO pin | Не используется: пин фиксирован (AVR\_DMXOUT\_PIN) |
| Кол-во каналов | Число DMX каналов (обычно 512) — берётся только последний элемент массива |
---
@@ -400,7 +400,7 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
### Типы каналов (0-23)
**Полный справочник типов каналов см. в [channel_types_reference.md](channel_types_reference.md)**
**Полный справочник типов каналов см. в [channel\_types\_reference.md](channel_types_reference.md)**
| Код | Тип | Описание | Конфигурация |
|--|--|--|--|
@@ -423,15 +423,15 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
| **16** | `RELAYX` | Медленный PWM | `[GPIO_pin, период_сек]` |
| **17** | `DMXRGBWW` | DMX RGBWW | Стартовый DMX канал |
| **18** | `VENTS` | Многозональная вентиляция | `{зоны}` (объект; рабочая форма `[[18,5], {зоны}]`) |
| **19** | `ELEVATOR` | Лифт (ELEVATOR_ENABLE) | `{serial, baud, log}` |
| **19** | `ELEVATOR` | Лифт (ELEVATOR\_ENABLE) | `{serial, baud, log}` |
| **20** | `COUNTER` | Автосуммирующий счётчик | `[коэффициент_импульса, период_автосуммирования_сек]` |
| **21** | `HUM` | Увлажнитель (HUMIDIFIER_ENABLE) | `[[пины...], {зоны}, motorExecObj, faultExecObj]` |
| **21** | `HUM` | Увлажнитель (HUMIDIFIER\_ENABLE) | `[[пины...], {зоны}, motorExecObj, faultExecObj]` |
| **22** | `MERCURY` | Счётчик энергии Mercury | `[адрес, baudrate, ...]` |
| **23** | `SPRINKLR` | Система полива | `{конфиг}` (корневой объект `""` + зоны с `pin`) |
### Примеры конфигурации items
#### CH_RELAY (6) — Простое реле
#### CH\_RELAY (6) — Простое реле
```json
"relay1": [6, 23], // Реле на GPIO 23
@@ -439,7 +439,7 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
"relay3": [6, 28, 1, 1] // С начальным значением и командой
```
#### CH_DMX (0) — DMX выход
#### CH\_DMX (0) — DMX выход
```json
"lamp1": [0, 5], // DMX канал 5
@@ -447,20 +447,20 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
"dmx_4ch": ["DMX", [1, 2, 3, 4]] // 4-х канальный диммер
```
#### CH_RGBW (1) — RGB+White
#### CH\_RGBW (1) — RGB+White
```json
"rgb_light": [1, 10] // RGB+W на DMX 10-13
```
#### CH_PWM (3) — GPIO PWM
#### CH\_PWM (3) — GPIO PWM
```json
"pwm1": [3, 9], // PWM на GPIO 9
"pwm_4ch": [3, [11, 12, 13, 14]] // 4-х канальный PWM
```
#### CH_GROUP (7) — Группа каналов
#### CH\_GROUP (7) — Группа каналов
```json
"lights_all": [7, [
@@ -470,13 +470,13 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
"lights_bedroom": [7, ["lamp1", "rgb1", "relay1"]]
```
#### CH_THERMO (5) — Термостат
#### CH\_THERMO (5) — Термостат
```json
"thermo_bath": [5, 24, 33] // GPIO 24, уставка 33°C
```
#### CH_ACHAIER (10) — Кондиционер Haier
#### CH\_ACHAIER (10) — Кондиционер Haier
Проприетарный UART-протокол (НЕ Modbus):
@@ -484,14 +484,14 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
"ac_haier": [10, 0] // portNum 0-3
```
#### CH_COUNTER (20) — Счётчик энергии
#### CH\_COUNTER (20) — Счётчик энергии
```json
"energy": [20, [0.02, 60]], // импульс, период автосуммирования (сек)
"gas": [20, 0] // без калибровки
```
#### CH_MULTIVENT (18) — Многозональная вентиляция
#### CH\_MULTIVENT (18) — Многозональная вентиляция
```json
"multivent": [[18, 5], {
@@ -684,5 +684,5 @@ LightHub использует **жёстко структурированную,
**Версия документа**: 2.0
**Дата обновления**: 2025-01-24
**Актуально для**: LightHub с CH_DIMMER (0) - CH_SPRINKLER (23)
**Актуально для**: LightHub с CH\_DIMMER (0) - CH\_SPRINKLER (23)
**Источник**: [item.h](../../lighthub/item.h), [item.cpp](../../lighthub/item.cpp)
+70 -70
View File
@@ -8,29 +8,29 @@
## Содержание
1. [Выходные модули (Out)](#выходные-модули)
- [out_Multivent](#out_multivent---многоканальный-кондиционер-вентиляция)
- [out_AC](#out_ac---управление-кондиционером)
- [out_PID](#out_pid---пид-регулятор)
- [out_Relay](#out_relay---электромагнитное-реле)
- [out_PWM](#out_pwm---широтно-импульсная-модуляция)
- [out_DMX](#out_dmx---dmx512-управление-светом)
- [out_Motor](#out_motor---управление-двигателем)
- [out_Elevator](#out_elevator---управление-лифтом)
- [out_Humidifier](#out_humidifier---управление-увлажнителем)
- [out_Counter](#out_counter---автосуммирующий-счётчик)
- [out_SPILed](#out_spiled---управление-светодиодами)
- [out_Mercury](#out_mercury---счётчик-меркурий)
- [out_Sprinkler](#out_sprinkler---система-полива)
- [out_UARTBridge](#out_uartbridge---uart-мост)
- [out\_Multivent](#out_multivent---многоканальный-кондиционер-вентиляция)
- [out\_AC](#out_ac---управление-кондиционером)
- [out\_PID](#out_pid---пид-регулятор)
- [out\_Relay](#out_relay---электромагнитное-реле)
- [out\_PWM](#out_pwm---широтно-импульсная-модуляция)
- [out\_DMX](#out_dmx---dmx512-управление-светом)
- [out\_Motor](#out_motor---управление-двигателем)
- [out\_Elevator](#out_elevator---управление-лифтом)
- [out\_Humidifier](#out_humidifier---управление-увлажнителем)
- [out\_Counter](#out_counter---автосуммирующий-счётчик)
- [out\_SPILed](#out_spiled---управление-светодиодами)
- [out\_Mercury](#out_mercury---счётчик-меркурий)
- [out\_Sprinkler](#out_sprinkler---система-полива)
- [out\_UARTBridge](#out_uartbridge---uart-мост)
2. [Входные модули (In)](#входные-модули)
- [in_CCS811_HDC1080](#in_ccs811_hdc1080---датчик-качества-воздуха)
- [in\_CCS811\_HDC1080](#in_ccs811_hdc1080---датчик-качества-воздуха)
---
# Выходные модули
## out_Multivent — Многоканальный кондиционер/вентиляция
## out\_Multivent — Многоканальный кондиционер/вентиляция
### Описание
@@ -100,7 +100,7 @@
| XON | 6 |
| XOFF | 7 |
| AUTO | 0xE (14) |
| FAN_ONLY | 0xF (15) |
| FAN\_ONLY | 0xF (15) |
| HIGH | 0x10 (16) |
| MEDIUM | 0x11 (17) |
| LOW | 0x12 (18) |
@@ -110,18 +110,18 @@
### Примеры
Полное описание с примерами: [multivent_module_description.md](../modules/multivent_module_description.md)
Полное описание с примерами: [multivent\_module\_description.md](../modules/multivent_module_description.md)
---
## out_AC — Управление кондиционером
## out\_AC — Управление кондиционером
### Описание
Управление одиночным кондиционером через проприетарный UART-протокол Haier (9600, кадры 13 байт — команда / 37 байт — ответ). НЕ Modbus.
**Основные функции:**
- Управление режимом (HEAT, COOL, FAN_ONLY, DRY, AUTO)
- Управление режимом (HEAT, COOL, FAN\_ONLY, DRY, AUTO)
- Управление скоростью вентилятора (LOW, MEDIUM, HIGH, OFF или число)
- Управление температурой
- Поддержка качания жалюзей (SWING)
@@ -158,8 +158,8 @@
| `portNum` | 0-3 | Номер UART-порта (0 = основной Serial) |
| `/set` | 16-40 | Установка температуры |
| `/fan` | LOW/MEDIUM/HIGH/OFF или число | Скорость вентилятора |
| `/cmd` | AUTO/HEAT/COOL/FAN_ONLY/DRY | Текстовые режимы (payload команды) |
| `/mode` | число (B_MODE) | Режим |
| `/cmd` | AUTO/HEAT/COOL/FAN\_ONLY/DRY | Текстовые режимы (payload команды) |
| `/mode` | число (B\_MODE) | Режим |
| `/lock` | ON/OFF | Блокировка пульта |
| `/swing` | ON/OFF | Качание жалюзей |
| `/quiet` | ON/OFF | Тихий режим (legacy «queit» принимается; статус публикуется в `/quiet`) |
@@ -167,7 +167,7 @@
---
## out_PID — PID-регулятор
## out\_PID — PID-регулятор
### Описание
@@ -215,7 +215,7 @@
---
## out_Relay — Электромагнитное реле
## out\_Relay — Электромагнитное реле
### Описание
@@ -254,7 +254,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_PWM — Широтно-импульсная модуляция
## out\_PWM — Широтно-импульсная модуляция
### Описание
@@ -263,7 +263,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
**Основные функции:**
- Регулирование от 0% до 100%
- Поддержка RGB-управления (в base-классе colorChannel)
- Число пинов (1-5) определяет режим: CH_PWM / RGB / RGBW / RGBWW
- Число пинов (1-5) определяет режим: CH\_PWM / RGB / RGBW / RGBWW
### Тип в JSON
```
@@ -289,7 +289,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_DMX — DMX512 управление светом
## out\_DMX — DMX512 управление светом
### Описание
@@ -324,7 +324,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_Motor — Управление двигателем
## out\_Motor — Управление двигателем
### Описание
@@ -374,7 +374,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_Elevator — Управление лифтом
## out\_Elevator — Управление лифтом
### Описание
@@ -390,7 +390,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
```
[19, {"serial": "8N1", "baud": 19200, "log": ...}]
```
Реализован (компилируется с ELEVATOR_ENABLE). itemArg — объект. Порты фиксированные (MODULE_UATRBRIDGE_UARTA/B).
Реализован (компилируется с ELEVATOR\_ENABLE). itemArg — объект. Порты фиксированные (MODULE\_UATRBRIDGE\_UARTA/B).
### Формат конфигурации
@@ -415,7 +415,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_Humidifier — Управление увлажнителем
## out\_Humidifier — Управление увлажнителем
### Описание
@@ -453,25 +453,25 @@ RELAYX: [16, [pin, period_сек], val, cmd]
| Состояние | Код | Описание |
|-----------|-----|---------|
| H_UNKNOWN | 0 | Неизвестное |
| H_READY | 1 | Готов к работе |
| H_PREPARE_FOR_START | 2 | Подготовка к пуску |
| H_PREPARE_VALVES | 3 | Подготовка клапанов |
| H_MOTOR_ON | 4 | Мотор работает |
| H_OPERATE | 5 | В режиме увлажнения |
| H_MOTOR_PAUSE | 6 | Пауза мотора |
| H_MOTOR_OFF | 7 | Мотор выключен |
| H_FLUSH | 8 | Промывка системы |
| H_IDLE | 9 | Ожидание |
| H_MOTOR_OFF_OK | 10 | Мотор выключен (окончательно) |
| H_FAULT_PRESSURE | -1 | Ошибка давления |
| H_FAULT_PRESSURE_KEEP | -2 | Давление не удерживается |
| H_FAULT_OVERPRESSURE | -3 | Перепад давления |
| H_FAULT_MOTOR_OFF | -4 | Ошибка: мотор не выключился |
| H\_UNKNOWN | 0 | Неизвестное |
| H\_READY | 1 | Готов к работе |
| H\_PREPARE\_FOR\_START | 2 | Подготовка к пуску |
| H\_PREPARE\_VALVES | 3 | Подготовка клапанов |
| H\_MOTOR\_ON | 4 | Мотор работает |
| H\_OPERATE | 5 | В режиме увлажнения |
| H\_MOTOR\_PAUSE | 6 | Пауза мотора |
| H\_MOTOR\_OFF | 7 | Мотор выключен |
| H\_FLUSH | 8 | Промывка системы |
| H\_IDLE | 9 | Ожидание |
| H\_MOTOR\_OFF\_OK | 10 | Мотор выключен (окончательно) |
| H\_FAULT\_PRESSURE | -1 | Ошибка давления |
| H\_FAULT\_PRESSURE\_KEEP | -2 | Давление не удерживается |
| H\_FAULT\_OVERPRESSURE | -3 | Перепад давления |
| H\_FAULT\_MOTOR\_OFF | -4 | Ошибка: мотор не выключился |
---
## out_Counter — Автосуммирующий счётчик
## out\_Counter — Автосуммирующий счётчик
### Описание
@@ -504,7 +504,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_SPILed — Управление светодиодами
## out\_SPILed — Управление светодиодами
### Описание
@@ -539,7 +539,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
|----------|-----|---------|
| `data_pin` | int | GPIO пин (данные) |
| `numLeds` | int | Количество светодиодов, деф 43 |
| `ledsType` | int | Код NeoPixel (NEO_BRG+NEO_KHZ800 и т.п.) |
| `ledsType` | int | Код NeoPixel (NEO\_BRG+NEO\_KHZ800 и т.п.) |
### Управление
@@ -553,7 +553,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_Mercury — Счётчик Меркурий
## out\_Mercury — Счётчик Меркурий
### Описание
@@ -562,7 +562,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
**Основные функции:**
- Чтение энергопотребления (активная/реактивная)
- Контроль связи и состояния счётчика
- Тарифные (пиковое/полупиковое/ночное) данные НЕ читаются — только M_NOW
- Тарифные (пиковое/полупиковое/ночное) данные НЕ читаются — только M\_NOW
### Тип в JSON
```
@@ -612,7 +612,7 @@ RELAYX: [16, [pin, period_сек], val, cmd]
---
## out_Sprinkler — Система полива
## out\_Sprinkler — Система полива
### Описание
@@ -782,7 +782,7 @@ root/s_out/sprinkler/south/val # Выполненный объём/вре
---
## out_UARTBridge — UART мост
## out\_UARTBridge — UART мост
### Описание
@@ -790,7 +790,7 @@ root/s_out/sprinkler/south/val # Выполненный объём/вре
**Основные функции:**
- Прозрачная маршрутизация UART↔UART
- Буферизация пакетов (MAX_PDU = 64 байт)
- Буферизация пакетов (MAX\_PDU = 64 байт)
- Логирование трафика
- Одна скорость на оба порта. Порты фиксированные: Serial1/Serial2
@@ -827,7 +827,7 @@ root/s_out/sprinkler/south/val # Выполненный объём/вре
# Входные модули
## in_CCS811_HDC1080 — Датчик качества воздуха
## in\_CCS811\_HDC1080 — Датчик качества воздуха
### Описание
@@ -916,21 +916,21 @@ root/s_out/sprinkler/south/val # Выполненный объём/вре
| Модуль | Тип | Назначение | Управление |
|--------|-----|-----------|-----------|
| out_Multivent | 18 | Многоканальный кондиционер | PID + MQTT |
| out_AC | 10 | Одиночный кондиционер | Проприетарный UART (Haier) |
| out_PID | 13 | PID-регулятор | MQTT |
| out_Relay | 6 | Электромагнитное реле | GPIO |
| out_PWM | 3 | ШИМ-управление | GPIO-PWM |
| out_DMX | 0 | DMX512 освещение | DMX512 |
| out_Motor | 12 | Управление двигателем | GPIO-пары |
| out_Elevator | 19 | Управление лифтом | UART |
| out_Humidifier | 21 | Управление увлажнителем | GPIO + датчики |
| out_Counter | 20 | Автосуммирующий счётчик | MQTT |
| out_SPILed | 11 | Адресуемые светодиоды | SPI/GPIO |
| out_Mercury | 22 | Электросчётчик | Modbus RTU |
| out_Sprinkler | 23 | Система полива | GPIO + MQTT |
| out_UARTBridge | 15 | UART-мост | UART↔UART |
| in_CCS811_HDC1080 | входы T=5 (CCS811) / T=6 (HDC1080) | Качество воздуха | I2C |
| out\_Multivent | 18 | Многоканальный кондиционер | PID + MQTT |
| out\_AC | 10 | Одиночный кондиционер | Проприетарный UART (Haier) |
| out\_PID | 13 | PID-регулятор | MQTT |
| out\_Relay | 6 | Электромагнитное реле | GPIO |
| out\_PWM | 3 | ШИМ-управление | GPIO-PWM |
| out\_DMX | 0 | DMX512 освещение | DMX512 |
| out\_Motor | 12 | Управление двигателем | GPIO-пары |
| out\_Elevator | 19 | Управление лифтом | UART |
| out\_Humidifier | 21 | Управление увлажнителем | GPIO + датчики |
| out\_Counter | 20 | Автосуммирующий счётчик | MQTT |
| out\_SPILed | 11 | Адресуемые светодиоды | SPI/GPIO |
| out\_Mercury | 22 | Электросчётчик | Modbus RTU |
| out\_Sprinkler | 23 | Система полива | GPIO + MQTT |
| out\_UARTBridge | 15 | UART-мост | UART↔UART |
| in\_CCS811\_HDC1080 | входы T=5 (CCS811) / T=6 (HDC1080) | Качество воздуха | I2C |
---
+53 -53
View File
@@ -9,27 +9,27 @@
| Type | Модуль | Класс | Описание |
|------|--------|-------|---------|
| 0 | DMX | out_dmx | DMX512 управление освещением |
| 3 | PWM | out_pwm | Широтно-импульсная модуляция |
| 4 | Modbus Dimmer | out_Modbus | AC-диммер через Modbus RTU (legacy) |
| 6 | Реле | out_relay | Управление электромагнитным реле |
| 10 | AC | out_AC | Управление кондиционером (Haier, UART) |
| 11 | SPI LED | out_SPILed | Адресуемые светодиоды WS2812/APA102 |
| 12 | Мотор | out_Motor | Управление моторами с обратной связью |
| 13 | PID | out_pid | PID-регулятор |
| 14 | Modbus | out_Modbus | Modbus устройства (general) |
| 15 | UART Bridge | out_UARTbridge | UART-мост между портами |
| 16 | RELAYX | out_relay | Медленный PWM через реле |
| 18 | Multivent | out_Multivent | Многозональная вентиляция |
| 19 | Лифт | out_Elevator | Управление лифтом (UART) |
| 20 | Счётчик | out_counter | Счётчик импульсов |
| 21 | Увлажнитель | out_humidifier | Форсуночное увлажнение |
| 22 | Меркурий | out_Mercury | Счётчик электроэнергии Меркурий |
| 23 | Полив | out_sprinkler | Система полива |
| 0 | DMX | out\_dmx | DMX512 управление освещением |
| 3 | PWM | out\_pwm | Широтно-импульсная модуляция |
| 4 | Modbus Dimmer | out\_Modbus | AC-диммер через Modbus RTU (legacy) |
| 6 | Реле | out\_relay | Управление электромагнитным реле |
| 10 | AC | out\_AC | Управление кондиционером (Haier, UART) |
| 11 | SPI LED | out\_SPILed | Адресуемые светодиоды WS2812/APA102 |
| 12 | Мотор | out\_Motor | Управление моторами с обратной связью |
| 13 | PID | out\_pid | PID-регулятор |
| 14 | Modbus | out\_Modbus | Modbus устройства (general) |
| 15 | UART Bridge | out\_UARTbridge | UART-мост между портами |
| 16 | RELAYX | out\_relay | Медленный PWM через реле |
| 18 | Multivent | out\_Multivent | Многозональная вентиляция |
| 19 | Лифт | out\_Elevator | Управление лифтом (UART) |
| 20 | Счётчик | out\_counter | Счётчик импульсов |
| 21 | Увлажнитель | out\_humidifier | Форсуночное увлажнение |
| 22 | Меркурий | out\_Mercury | Счётчик электроэнергии Меркурий |
| 23 | Полив | out\_sprinkler | Система полива |
---
## 1. out_counter — Счётчик импульсов
## 1. out\_counter — Счётчик импульсов
### Конфигурация (Type 20)
@@ -47,9 +47,9 @@
### Логика работы
1. Модуль ждёт команду (S_SET или любой CMD)
1. Модуль ждёт команду (S\_SET или любой CMD)
2. При получении команды с процентом > 0 запускается таймер
3. По истечении периода [1] добавляется значение [0] * TENS_BASE
3. По истечении периода [1] добавляется значение [0] * TENS\_BASE
4. Считанное значение публикуется в MQTT
### Пример использования
@@ -65,7 +65,7 @@
---
## 2. out_relay — Электромагнитное реле (Type 6)
## 2. out\_relay — Электромагнитное реле (Type 6)
### Конфигурация
@@ -96,7 +96,7 @@
---
## 3. out_Motor — Управление моторами (Type 12)
## 3. out\_Motor — Управление моторами (Type 12)
### Конфигурация
@@ -118,11 +118,11 @@
### Логика работы
1. Модуль сравнивает **targetPos** (из команды 0-255) с **curPos** (из обратной связи)
2. Если разница > POS_ERR (10):
2. Если разница > POS\_ERR (10):
- Если targetPos < curPos → движение вниз (pinDown)
- Если targetPos > curPos → движение вверх (pinUp)
3. При достижении targetPos или maxOnTime мотор останавливается
4. Защита от перегрузки: одновременно работают макс. MOTOR_QUOTE моторов (обычно 2)
4. Защита от перегрузки: одновременно работают макс. MOTOR\_QUOTE моторов (обычно 2)
### Примеры
@@ -141,7 +141,7 @@
---
## 4. out_PID — PID-регулятор (Type 13)
## 4. out\_PID — PID-регулятор (Type 13)
### Конфигурация
@@ -189,7 +189,7 @@
---
## 5. out_PWM — ШИМ управление (Type 3)
## 5. out\_PWM — ШИМ управление (Type 3)
### Конфигурация
@@ -215,7 +215,7 @@
---
## 6. out_relay (Type 6) — детально
## 6. out\_relay (Type 6) — детально
### Загружаемые параметры (getConfig)
@@ -233,7 +233,7 @@ if (!period) period = 5000UL; // по умолчанию 5 сек
---
## 7. out_counter (Type 20) — детально
## 7. out\_counter (Type 20) — детально
### Загружаемые параметры (Poll)
@@ -250,7 +250,7 @@ uint32_t period = item->getFloatArg(1) * 1000.0; // [1] в мс
---
## 8. out_Motor (Type 12) — детально
## 8. out\_Motor (Type 12) — детально
### Загружаемые параметры (getConfig)
@@ -278,7 +278,7 @@ if (pinDown < 0) {
---
## 9. out_PID (Type 13) — детально
## 9. out\_PID (Type 13) — детально
### Загружаемые параметры (getConfig)
@@ -308,7 +308,7 @@ store->setpoint = item->itemVal->valuefloat; // Установка из JSON va
---
## 11. out_humidifier (Type 21) — Форсуночное увлажнение
## 11. out\_humidifier (Type 21) — Форсуночное увлажнение
### Конфигурация
@@ -380,30 +380,30 @@ MAX_OPERATION_PRESSURE = 600 // максимальное рабочее д
| Состояние | Код | Описание |
|-----------|-----|---------|
| H_UNKNOWN | 0 | Неизвестное состояние |
| H_READY | 1 | Готов к работе |
| H_PREPARE_FOR_START | 2 | Подготовка к пуску |
| H_PREPARE_VALVES | 3 | Открытие форсунок |
| H_MOTOR_ON | 4 | Включение насоса |
| H_OPERATE | 5 | В режиме увлажнения |
| H_MOTOR_PAUSE | 6 | Пауза насоса |
| H_MOTOR_OFF | 7 | Выключение насоса |
| H_MOTOR_OFF_OK | 10 | Насос остановлен |
| H_FLUSH | 8 | Промывка системы |
| H_IDLE | 9 | Ожидание |
| H_FAULT_PRESSURE | -1 | Ошибка давления |
| H_FAULT_PRESSURE_KEEP | -2 | Потеря давления во время работы |
| H_FAULT_OVERPRESSURE | -3 | Перепад давления |
| H_FAULT_MOTOR_OFF | -4 | Отказ насоса |
| H\_UNKNOWN | 0 | Неизвестное состояние |
| H\_READY | 1 | Готов к работе |
| H\_PREPARE\_FOR\_START | 2 | Подготовка к пуску |
| H\_PREPARE\_VALVES | 3 | Открытие форсунок |
| H\_MOTOR\_ON | 4 | Включение насоса |
| H\_OPERATE | 5 | В режиме увлажнения |
| H\_MOTOR\_PAUSE | 6 | Пауза насоса |
| H\_MOTOR\_OFF | 7 | Выключение насоса |
| H\_MOTOR\_OFF\_OK | 10 | Насос остановлен |
| H\_FLUSH | 8 | Промывка системы |
| H\_IDLE | 9 | Ожидание |
| H\_FAULT\_PRESSURE | -1 | Ошибка давления |
| H\_FAULT\_PRESSURE\_KEEP | -2 | Потеря давления во время работы |
| H\_FAULT\_OVERPRESSURE | -3 | Перепад давления |
| H\_FAULT\_MOTOR\_OFF | -4 | Отказ насоса |
### Логика работы
1. **Инициализация**: модуль ждёт команду включения или когда уровень влажности > startLevel
2. **Подготовка**: открывает клапаны форсунок, ждёт достижения давления
3. **Работа**: включает насос, поддерживает давление в диапазоне [MIN_OPERATION_PRESSURE, MAX_OPERATION_PRESSURE]
3. **Работа**: включает насос, поддерживает давление в диапазоне [MIN\_OPERATION\_PRESSURE, MAX\_OPERATION\_PRESSURE]
4. **Балансировка**: одновременно открыто не более `capacity` форсунок из группы `N`
5. **Очистка**: периодическая промывка при давлении FLUSH_PRESSURE
6. **Контроль**: отключение при падении давления ниже MIN_OPERATION_PRESSURE
5. **Очистка**: периодическая промывка при давлении FLUSH\_PRESSURE
6. **Контроль**: отключение при падении давления ниже MIN\_OPERATION\_PRESSURE
### Примеры конфигурации
@@ -453,7 +453,7 @@ MAX_OPERATION_PRESSURE = 600 // максимальное рабочее д
---
## 12. out_Mercury (Type 22) — Счётчик электроэнергии
## 12. out\_Mercury (Type 22) — Счётчик электроэнергии
### Конфигурация
@@ -497,7 +497,7 @@ MAX_OPERATION_PRESSURE = 600 // максимальное рабочее д
---
## 13. out_AC (Type 10) — Управление кондиционером
## 13. out\_AC (Type 10) — Управление кондиционером
### Конфигурация
@@ -535,7 +535,7 @@ portNum = item->getArg(0); // 0=Serial, 1=Serial1, 2=Serial2, 3=Serial3
---
## 14. out_Modbus (тип MBUS) — Modbus устройства
## 14. out\_Modbus (тип MBUS) — Modbus устройства
### Конфигурация общая
@@ -625,7 +625,7 @@ pollingInterval = delayObj->valueint; // по умолчанию 1000 мс
---
## 15. out_Multivent (Type 18) — Многозональная вентиляция
## 15. out\_Multivent (Type 18) — Многозональная вентиляция
### Конфигурация
+9 -9
View File
@@ -34,7 +34,7 @@ root/[id-устройства или bcst или out]/имя_item/[subitem/]suff
- `out` — контроллер публикует статус в эти топики
- **Пример**: `myhome/s_out/lamp1/set` (где `s_out` — значение `out`)
#### 3. **item_name** — имя объекта (канала)
#### 3. **item\_name** — имя объекта (канала)
Определяется в разделе `items` конфигурации.
@@ -59,7 +59,7 @@ myhome/in/multivent/bedroom/set (установить T в спальне)
myhome/in/multivent/kitchen/fan (управление вентилятором кухни)
```
**Пример для LED ленты (пиксели 10-20; работает ТОЛЬКО для CH_SPILED, тип 11 — DMX-драйвер subitem игнорирует)**:
**Пример для LED ленты (пиксели 10-20; работает ТОЛЬКО для CH\_SPILED, тип 11 — DMX-драйвер subitem игнорирует)**:
```
myhome/in/led_strip/10-20/set (установить значение пиксели 10-20)
```
@@ -87,16 +87,16 @@ myhome/in/floor/OFF/set (применится для теплых
| **`/hue`** | Command | Оттенок (0-365°, HSV формат) | RGB/RGBW/RGBWW |
| **`/sat`** | Command | Насыщенность (0-100%, HSV формат) | RGB/RGBW/RGBWW |
| **`/HSV`** | Command | Полный цвет (hue,saturation,volume). Суффикс ЗАГЛАВНЫЙ, строчный `/hsv` игнорируется | RGB/RGBW/RGBWW |
| **`/rgb`** | Command | **Не обрабатывается** в текущей сборке (S_RGB) | — |
| **`/rgb`** | Command | **Не обрабатывается** в текущей сборке (S\_RGB) | — |
| **`/temp`** | Command | Цветовая температура 153-500 mireds (RGBWW); у AC — текущая T | RGBWW, AC |
| **`/raw`** | Command | «Сырые» данные, передаваемые драйверу без интерпретации | AC, ELEVATOR |
| **`/fan`** | Command, Status | Скорость вентилятора 0-255 или (HIGH, MEDIUM, LOW, OFF) | AC, Multivent |
| **`/mode`** | Command, Status | Режим работы — число 0-4 (AC). Команды FAN нет — есть FAN_ONLY. Текстовые режимы (HEAT, COOL, DRY, AUTO) — payload в /cmd | AC, Multivent |
| **`/mode`** | Command, Status | Режим работы — число 0-4 (AC). Команды FAN нет — есть FAN\_ONLY. Текстовые режимы (HEAT, COOL, DRY, AUTO) — payload в /cmd | AC, 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 | Команда с задержкой — только команды ON…FAN_ONLY (код ≤ 0x0F); HIGH/MEDIUM/LOW/HEAT_COOL/HEAT/COOL/DRY запланировать нельзя | ON…FAN_ONLY |
| **`/del`** | Command | Команда с задержкой — только команды ON…FAN\_ONLY (код ≤ 0x0F); HIGH/MEDIUM/LOW/HEAT\_COOL/HEAT/COOL/DRY запланировать нельзя | ON…FAN\_ONLY |
---
@@ -138,7 +138,7 @@ myhome/lighthub01/lamp1/set ← 150
root/out/item[/subitem]/suffix
```
**Примеры** (при out="s_out"):
**Примеры** (при out="s\_out"):
```
myhome/s_out/lamp1/set → 255 (текущая яркость, 0-255; общий топик s_out/lamp1 — 0-100)
myhome/s_out/lamp1/cmd → ON (последняя команда)
@@ -311,7 +311,7 @@ myhome/in/light/cmd → "ON 3000"
### Восстановление состояния при старте
1. Контроллер подписывается на **статусные топики** на **8 секунд** после старта (TIMEOUT_RETAIN = 8000 мс)
1. Контроллер подписывается на **статусные топики** на **8 секунд** после старта (TIMEOUT\_RETAIN = 8000 мс)
2. Брокер отправляет **последний актуальный статус**
3. Контроллер восстанавливает все значения: яркость, цвет, температуру и т.д.
@@ -394,7 +394,7 @@ curl --user arduino:password -X POST http://192.168.1.10/item/ac_main/mode -d "
1. **Командные широковещательные**: `root/bcst/#`
2. **Командные индивидуальные**: `root/id-устройства/#`
3. **Статусные** (только при старте, на 8 сек, TIMEOUT_RETAIN = 8000 мс): `root/out/+/+/#`
3. **Статусные** (только при старте, на 8 сек, TIMEOUT\_RETAIN = 8000 мс): `root/out/+/+/#`
4. **Служебные**: `$command` ловится общей подпиской `root/id-устройства/#` (отдельной подписки нет)
---
@@ -471,5 +471,5 @@ mosquitto_sub -h 192.168.1.100 -t "myhome/s_out/#" -v
---
**Версия документа**: 2.1 (актуально для работа_с_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)
+5 -5
View File
@@ -92,7 +92,7 @@ mosquitto_pub -h 192.168.1.100 -t "myhome/in/rgb/HSV" -m "240,100,200"
### Цвет по RGB (не поддерживается)
> Суффикс `/rgb` **не поддерживается** в текущей сборке (S_RGB не обрабатывается).
> Суффикс `/rgb` **не поддерживается** в текущей сборке (S\_RGB не обрабатывается).
> Цвет задаётся через `/HSV` или строкой «h,s,v[,ct]» в общем топике без суффикса.
```bash
@@ -288,7 +288,7 @@ curl http://192.168.1.10/ram/lamp1
| `/hue` | Оттенок RGB | 0-365° |
| `/sat` | Насыщенность RGB | 0-100% |
| `/HSV` | Полный HSV (ЗАГЛАВНЫЙ) | hue,sat,value |
| `/rgb` | **Не поддерживается** (S_RGB не обрабатывается) | — |
| `/rgb` | **Не поддерживается** (S\_RGB не обрабатывается) | — |
| `/fan` | Вентилятор | LOW, MEDIUM, HIGH, OFF или число|
| `/mode` | Режим работы — число 0-4 (AC); текстовые режимы — через /cmd | 0-4 |
| `/ctrl` | Управление | ENABLE, DISABLE, FREEZE, UNFREEZE |
@@ -297,6 +297,6 @@ curl http://192.168.1.10/ram/lamp1
---
**Дополнительно**:
- Полный справочник: [mqtt_api_reference.md](mqtt_api_reference.md)
- Справочник суффиксов: [suffixes_reference.md](suffixes_reference.md)
- Примеры конфигураций: [configuration_examples.md](configuration_examples.md)
- Полный справочник: [mqtt\_api\_reference.md](mqtt_api_reference.md)
- Справочник суффиксов: [suffixes\_reference.md](suffixes_reference.md)
- Примеры конфигураций: [configuration\_examples.md](configuration_examples.md)
+4 -4
View File
@@ -1,6 +1,6 @@
# OTA — обновление прошивки по воздуху
> Источник: Wiki LightHub (lazyhome.ru), страница «ota_обновление_прошивки_по_воздуху». Снапшот от 2026-10-02.
> Источник: Wiki LightHub (lazyhome.ru), страница «ota\_обновление\_прошивки\_по\_воздуху». Снапшот от 2026-10-02.
### OTA
@@ -19,7 +19,7 @@
Чтобы прошивка могла успешно обновиться, она должна занимать строго не более 50% flash памяти. Это не является проблемой для всех архитектур, исключая MEGA2560. Данный контроллер имеет очень скромные характеристики, поэтому приходится ужиматься. В пред-компилированной версии для этой архитектуры отключены почти все опциональные модули (DMX, Modbus, 1-wire). Но перекомпилировав проект, можно подключить нужные опции, пожертвовав чем-то еще (например, MDNS)
См файл build-flags/build_flags_mega2560-optiboot с опциями по умолчанию, которые можно переопределить в custom-build-flags/build_flags_mega2560-optiboot
См файл build-flags/build\_flags\_mega2560-optiboot с опциями по умолчанию, которые можно переопределить в custom-build-flags/build\_flags\_mega2560-optiboot
Подробнее про опции компиляции в разделе [опции компиляции](https://www.lazyhome.ru/dokuwiki/doku.php?id=опции_компиляции)
@@ -51,9 +51,9 @@ arduinoOTA -address 192.168.1.2 -port 80 -username arduino -password password -s
В примере приведены username и password по-умолчанию
Пароль необходимо сменить на свой
Задать пароль и сохранить его в NVRAM можно при помощи команды otapwd [cli_интерфейс](cli_interface.md)
Задать пароль и сохранить его в NVRAM можно при помощи команды otapwd [cli\_интерфейс](cli_interface.md)
для коммита прошивки от 20/05/24 и позднее, можно воспользоваться опциями компиляции DEFAULT_OTA_USERNAME и DEFAULT_OTA_PASSWORD
для коммита прошивки от 20/05/24 и позднее, можно воспользоваться опциями компиляции DEFAULT\_OTA\_USERNAME и DEFAULT\_OTA\_PASSWORD
Примечание (2026-10-02): OTA в актуальных версиях прошивки переделана. Механизм управляется опцией компиляции `OTA_ENABLE` (флаг в `build-flags/build_flags_*` и код под `#ifdef OTA_ENABLE` в `lighthub/main.cpp`), обновление по воздуху для ESP-платформ осуществляется через библиотеку ArduinoOTA (форк https://github.com/anklimov/ArduinoOTA). Для ESP32/ESP8266 в `platformio.ini` задана таблица разделов `board_build.partitions = min_spiffs.csv`, выделенная под обновление прошивка больше не ограничена правилом «строго не более 50% flash» (комментарий в platformio.ini: «>50% space - ok for ESP due spare partition»). Правило 50% flash по-прежнему актуально для AVR-платформ (MEGA2560). Порт OTA по умолчанию 65280 (`OTA_PORT`, `lighthub/options.h:28-29`), для esp32-wifi задан `-DOTA_PORT=80`. В wiki не упомянута сборка esp32c3-wifi, также поддерживающая OTA.
+1 -1
View File
@@ -25,7 +25,7 @@
Параметр `T` соответствует значению **32** — это тип входа «rotary encoder».
Параметр `"+-"` определяет обработчик, вызываемый при вращении рукоятки энкодера по или против часовой стрелки. Обработчик аналогичен описанному в разделе «диммирование с использованием кнопок» ([button_presses.md](button_presses.md)). Но там пары параметров `icmd`/`irev` и `ecmd`/`erev` используются поочередно, а в случае энкодера первый параметр используется в случае вращения по часовой стрелке, а второй — против часовой.
Параметр `"+-"` определяет обработчик, вызываемый при вращении рукоятки энкодера по или против часовой стрелки. Обработчик аналогичен описанному в разделе «диммирование с использованием кнопок» ([button\_presses.md](button_presses.md)). Но там пары параметров `icmd`/`irev` и `ecmd`/`erev` используются поочередно, а в случае энкодера первый параметр используется в случае вращения по часовой стрелке, а второй — против часовой.
Настройка в примере ниже переключает локальное устройство `dimmer` между состояниями ON и OFF (команда `toggle`) по однократному клику на энкодер (параметр `click`), а при вращении рукоятки по и против часовой стрелки увеличивает или уменьшает яркость локального устройства `dimmer` соответственно (команды `%+1` и `%-1`):
+29 -29
View File
@@ -29,7 +29,7 @@ myhome/in/lamp_bedroom/set
| `/set` | ✅ | ✅ | Установка численного значения | 0-255 (шкала 0-100 — только в общем топике без суффикса) |
| `/val` | ✅ | ❌ | Вход сенсора (THERMO, PID, MULTIVENT, SPRINKLER) | Число (T / значение) |
| `/raw` | ✅ | ✅ | «Сырые» данные, передаваемые драйверу без интерпретации | Текст / число |
| `/del` | ✅ | ❌ | Команда с задержкой. Только команды ON…FAN_ONLY (код ≤ 0x0F); HIGH/MEDIUM/LOW/HEAT_COOL/HEAT/COOL/DRY запланировать нельзя | Текст (команда + время) |
| `/del` | ✅ | ❌ | Команда с задержкой. Только команды ON…FAN\_ONLY (код ≤ 0x0F); HIGH/MEDIUM/LOW/HEAT\_COOL/HEAT/COOL/DRY запланировать нельзя | Текст (команда + время) |
> **Полный список команд** (payload `/cmd`): `ON`, `OFF`, `REST`, `TOGGLE`, `HALT`, `XON`, `XOFF`, `INCREASE`, `DECREASE`, `ENABLE`, `DISABLE`, `UNFREEZE`, `FREEZE`, `AUTO`, `FAN_ONLY`, `HIGH`, `MEDIUM`, `LOW`, `HEAT_COOL`, `HEAT`, `COOL`, `DRY`, `RGB`, `HSV`, `RESET`.
> `TOGGLE` в `/ctrl` не включает/выключает, а **инвертирует флаг DISABLE**.
@@ -41,7 +41,7 @@ myhome/in/lamp_bedroom/set
| `/hue` | ✅ | ✅ | Оттенок (HSV) | 0-365° |
| `/sat` | ✅ | ✅ | Насыщенность (HSV) | 0-100% |
| `/HSV` | ✅ | ✅ | Полный цвет (hue,sat,val). Суффикс ЗАГЛАВНЫЙ, строчный `/hsv` игнорируется | `H,S,V` |
| `/rgb` | ❌ | ❌ | **Не поддерживается** в текущей сборке (S_RGB нигде не обрабатывается) | — |
| `/rgb` | ❌ | ❌ | **Не поддерживается** в текущей сборке (S\_RGB нигде не обрабатывается) | — |
| `/temp` | ✅ | ✅ | Цветовая температура 153-500 mireds (RGBWW); у AC — текущая T | 153-500 |
**Примеры**:
@@ -108,7 +108,7 @@ myhome/in/ac_main/quiet → ON
| `/cmd` | ✅ | ✅ | Включить/выключить | ON, OFF, TOGGLE |
| `/set` | ✅ | ✅ | Установленная температура | Текущее значение |
| `/fan` | ✅ | ✅ | Скорость вентилятора (HIGH/MEDIUM/LOW → 255/128/64) | HIGH, MEDIUM, LOW |
| `/mode` | ✅ | ❌ | Только у основного item (обратная связь от AC). У зон S_MODE не обрабатывается — режим зоны задаётся командой в `zone/cmd` | — |
| `/mode` | ✅ | ❌ | Только у основного item (обратная связь от AC). У зон S\_MODE не обрабатывается — режим зоны задаётся командой в `zone/cmd` | — |
**Структура многозональной вентиляции**:
@@ -227,30 +227,30 @@ myhome/in/ac/HEAT/set → 25
| Номер | Тип канала | Суффиксы | Примеры |
|:-----:|-----------|----------|---------|
| 0 | CH_DIMMER (DMX 1-4 ch) | `/cmd`, `/set` (subitem-адресация игнорируется) | Лампа, светодиод |
| 1 | CH_RGBW (DMX 4 ch) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV`, `/temp` | RGBW люстра |
| 2 | CH_RGB (DMX 3 ch) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` | RGB лента, LED |
| 3 | CH_PWM | `/cmd`, `/set` | PWM вывод |
| 4 | CH_MODBUS | `/cmd`, `/set` | Modbus диммер |
| 5 | CH_THERMO | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | Термостат |
| 6 | CH_RELAY | `/cmd`, `/set`, `/del` | Реле, розетка |
| 7 | CH_GROUP | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` | Группа каналов |
| 8 | CH_VCTEMP | — | Регулятор Vacon (PID) |
| 9 | CH_VC | — | Привод Vacon (Modbus) |
| 10 | CH_AC (Haier) | `/cmd`, `/set` (16-40), `/mode` (0-4), `/fan`, `/lock`, `/swing`, `/quiet` (legacy `queit`), `/temp`, `/raw` | Кондиционер |
| 11 | CH_SPILED | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` + subitem-пиксели 10-20 | Адресуемая LED лента |
| 12 | CH_MOTOR | `/cmd`, `/set` | Сервопривод |
| 13 | CH_PID | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | PID регулятор, теплые полы |
| 14 | CH_MBUS | `/cmd`, `/set` | Modbus устройство |
| 15 | CH_UARTBRIDGE | `/cmd`, `/set` | UART-мост |
| 16 | CH_RELAYX | `/cmd`, `/set`, `/del` | Реле + ШИМ |
| 17 | CH_RGBWW (DMXRGBWW) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV`, `/temp` | Теплый+холодный белый |
| 18 | CH_MULTIVENT | `/cmd`, `/set`, `/fan` + zone-subitem-ы (`set`, `fan`, `cmd`) | Многозональная вентиляция |
| 19 | CH_ELEVATOR | `/cmd`, `/set`, `/raw` | Лифт |
| 20 | CH_COUNTER | `/cmd`, `/set` | Счетчик |
| 21 | CH_HUMIDIFIER | `/cmd` | Увлажнитель |
| 22 | CH_MERCURY | — | Счетчик электроэнергии |
| 23 | CH_SPRINKLER | `/cmd`, `/set`, `/val` | Полив (ирригатор) |
| 0 | CH\_DIMMER (DMX 1-4 ch) | `/cmd`, `/set` (subitem-адресация игнорируется) | Лампа, светодиод |
| 1 | CH\_RGBW (DMX 4 ch) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV`, `/temp` | RGBW люстра |
| 2 | CH\_RGB (DMX 3 ch) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` | RGB лента, LED |
| 3 | CH\_PWM | `/cmd`, `/set` | PWM вывод |
| 4 | CH\_MODBUS | `/cmd`, `/set` | Modbus диммер |
| 5 | CH\_THERMO | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | Термостат |
| 6 | CH\_RELAY | `/cmd`, `/set`, `/del` | Реле, розетка |
| 7 | CH\_GROUP | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` | Группа каналов |
| 8 | CH\_VCTEMP | — | Регулятор Vacon (PID) |
| 9 | CH\_VC | — | Привод Vacon (Modbus) |
| 10 | CH\_AC (Haier) | `/cmd`, `/set` (16-40), `/mode` (0-4), `/fan`, `/lock`, `/swing`, `/quiet` (legacy `queit`), `/temp`, `/raw` | Кондиционер |
| 11 | CH\_SPILED | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` + subitem-пиксели 10-20 | Адресуемая LED лента |
| 12 | CH\_MOTOR | `/cmd`, `/set` | Сервопривод |
| 13 | CH\_PID | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | PID регулятор, теплые полы |
| 14 | CH\_MBUS | `/cmd`, `/set` | Modbus устройство |
| 15 | CH\_UARTBRIDGE | `/cmd`, `/set` | UART-мост |
| 16 | CH\_RELAYX | `/cmd`, `/set`, `/del` | Реле + ШИМ |
| 17 | CH\_RGBWW (DMXRGBWW) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV`, `/temp` | Теплый+холодный белый |
| 18 | CH\_MULTIVENT | `/cmd`, `/set`, `/fan` + zone-subitem-ы (`set`, `fan`, `cmd`) | Многозональная вентиляция |
| 19 | CH\_ELEVATOR | `/cmd`, `/set`, `/raw` | Лифт |
| 20 | CH\_COUNTER | `/cmd`, `/set` | Счетчик |
| 21 | CH\_HUMIDIFIER | `/cmd` | Увлажнитель |
| 22 | CH\_MERCURY | — | Счетчик электроэнергии |
| 23 | CH\_SPRINKLER | `/cmd`, `/set`, `/val` | Полив (ирригатор) |
---
@@ -319,7 +319,7 @@ myhome/s_out/ac_hallway/fan → HIGH
], 22]
}
```
(13 — CH_PID; 2-й аргумент — массив `[kP,kI,kD,dT,…], {выходной execObj}, {каскад}]`; 3-й — стартовый setpoint 22°C)
(13 — CH\_PID; 2-й аргумент — массив `[kP,kI,kD,dT,…], {выходной execObj}, {каскад}]`; 3-й — стартовый setpoint 22°C)
**Команды**:
```
@@ -472,4 +472,4 @@ light:
**Версия документа**: 2.0 (обновлено для соответствия wiki.lazyhome.ru)
**Последнее обновление**: 2024
**Источник**: https://www.lazyhome.ru/dokuwiki/doku.php?id=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_mqtt
**Источник**: https://www.lazyhome.ru/dokuwiki/doku.php?id=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0\_%D1%81\_mqtt
@@ -17,7 +17,7 @@
| 5 | THERMO | Thermostat | ON/OFF термостат | array | `[24, 33]` (GPIO, T°C) |
| 6 | RELAY | Relay Output | GPIO реле | int | `23` (GPIO pin) |
| 7 | GROUP | Group Channel | Логическая группа каналов | array | `["lamp1", "lamp2"]` |
| 8 | VCTEMP | Vacom Temp | Температура из VC-канала | string | `"fm"` (имя CH_VC канала) |
| 8 | VCTEMP | Vacom Temp | Температура из VC-канала | string | `"fm"` (имя CH\_VC канала) |
| 9 | MBUSVC | Vacom Motor | Vacom мотор регулятор | array | `[96, "a_ext"]` (адрес, имя) |
| 10 | ACHAIER | AC Haier | Кондиционер Haier (UART) | int | `1` (порт 0-3) |
| 11 | SPILED | SPI LED | NeoPixel LED лента | array | `[7, 8]` (data-пин 7, 8 светодиодов) |
@@ -25,7 +25,7 @@
| 13 | PID | PID Regulator | PID регулятор | array | `[[1.0,0.05,...],{...}]` |
| 14 | MBUS | Modbus | Universal Modbus v2 | array | `[96, "template", {...}]` |
| 15 | UARTBRDG | UART Bridge | UART мост | object | `{"serial","baud","ip","port","hd","log","bond"}` |
| 16 | RELAYX | Relay PWM | Медленный PWM реле | array | `[22, 60]` (GPIO, период_сек) |
| 16 | RELAYX | Relay PWM | Медленный PWM реле | array | `[22, 60]` (GPIO, период\_сек) |
| 17 | DMXRGBWW | DMX RGBWW | DMX RGB+2White (5 каналов) | int | `30` (DMX 30-34) |
| 18 | VENTS | Multivent | Многозональная вентиляция | object | `{зоны}` (без Modbus-адреса) |
| 19 | ELEVATOR | Elevator | Лифт (реализован) | object | `{"serial":"8N1","baud":19200}` |
@@ -70,7 +70,7 @@
## Детальная таблица (с командами и суффиксами)
### CH_DIMMER (0) — DMX Диммер
### CH\_DIMMER (0) — DMX Диммер
| Параметр | Значение |
|----------|----------|
@@ -83,7 +83,7 @@
| **Начальное значение** | Опционально (элемент 3) |
| **MQTT примеры** | `myhome/<имя_контроллера>/lamp/cmd ← ON`, `myhome/<имя_контроллера>/lamp/set ← 150` (индивидуальный командный топик) |
### CH_RGBW (1) — DMX RGB+White
### CH\_RGBW (1) — DMX RGB+White
| Параметр | Значение |
|----------|----------|
@@ -96,7 +96,7 @@
| **MQTT формат RGBW** | `255,128,0,100` (R,G,B,W) |
| **MQTT команды** | `/HSV`, `/RGB`, `/hue`, `/sat`, `/temp` |
### CH_RGB (2) — DMX RGB
### CH\_RGB (2) — DMX RGB
| Параметр | Значение |
|----------|----------|
@@ -105,7 +105,7 @@
| **Формат конфига** | `[2, 15]` (DMX каналы 15-17) |
| **Суффиксы** | /cmd, /val, /set, /hue, /sat, /temp, /RGB |
### CH_PWM (3) — GPIO PWM
### CH\_PWM (3) — GPIO PWM
| Параметр | Значение |
|----------|----------|
@@ -117,16 +117,16 @@
| **Частота** | 4000 Гц (Mega2560, таймеры 3/4); на ESP32 PWM недоступен (stub) |
| **Суффиксы** | /cmd, /val, /set |
### CH_MODBUS (4) — AC Dimmer (Legacy)
### CH\_MODBUS (4) — AC Dimmer (Legacy)
| Параметр | Значение |
|----------|----------|
| **Назначение** | Управление AC-диммером через Modbus (устаревшее) |
| **Конфигурация** | array `[addr, reg, mask, max_val]` |
| **Параметры** | - addr: Modbus адрес (1-247)<br>- reg: регистр (обычно 0)<br>- mask: маска (0, 1, 2 (пропуск 16 бит), 3 (Modbus relay), 4 (swap байтов), -1/отсутствует — без поллинга)<br>- max_val: максимальное значение (обычно 255) |
| **Примечание** | **Использовать CH_MBUS (14) для новых проектов** |
| **Параметры** | - addr: Modbus адрес (1-247)<br>- reg: регистр (обычно 0)<br>- mask: маска (0, 1, 2 (пропуск 16 бит), 3 (Modbus relay), 4 (swap байтов), -1/отсутствует — без поллинга)<br>- max\_val: максимальное значение (обычно 255) |
| **Примечание** | **Использовать CH\_MBUS (14) для новых проектов** |
### CH_THERMO (5) — ON/OFF Термостат
### CH\_THERMO (5) — ON/OFF Термостат
| Параметр | Значение |
|----------|----------|
@@ -137,7 +137,7 @@
| **Гистерезис** | Включение при T<уставка−1, выключение при T≥уставка |
| **MQTT команды** | `/set` (целевая T), `/val` (вход текущей температуры) |
### CH_RELAY (6) — GPIO Реле
### CH\_RELAY (6) — GPIO Реле
| Параметр | Значение |
|----------|----------|
@@ -148,7 +148,7 @@
| **Макс. ток** | 40 мА на pin (требуется транзистор для реле) |
| **Состояния** | 0 = OFF, 1 = ON |
### CH_GROUP (7) — Группа каналов
### CH\_GROUP (7) — Группа каналов
| Параметр | Значение |
|----------|----------|
@@ -158,15 +158,15 @@
| **Команды** | ON, OFF, TOGGLE, SET (для диммеров) |
| **Рекурсия** | Поддерживается (группы в группах) |
### CH_VCTEMP (8) — Vacom PID Терморегулятор
### CH\_VCTEMP (8) — Vacom PID Терморегулятор
| Параметр | Значение |
|----------|----------|
| **Назначение** | Публикация температуры из VC-канала Vacom |
| **Конфигурация** | string — имя_канала_VC (itemArg — строка-имя item типа CH_VC (9)) |
| **Конфигурация** | string — имя\_канала\_VC (itemArg — строка-имя item типа CH\_VC (9)) |
| **Пример** | `[8, "fm"]` |
### CH_VC (9) — Vacom Мотор-регулятор
### CH\_VC (9) — Vacom Мотор-регулятор
| Параметр | Значение |
|----------|----------|
@@ -174,17 +174,17 @@
| **Конфигурация** | array `[modbus_адрес, "имя_объекта"]` |
| **Пример** | `[9, [96, "a_ext"]]` |
### CH_AC (10) — Кондиционер Haier
### CH\_AC (10) — Кондиционер Haier
| Параметр | Значение |
|----------|----------|
| **Назначение** | Управление кондиционером Haier |
| **Конфигурация** | `[10, portNum(0-3)]` |
| **Порт** | Номер serial порта (0-3) |
| **Режимы** | AUTO, FAN_ONLY, HEAT, COOL, DRY, HEAT_COOL (текст — в payload /cmd; /mode — число); fan: LOW/MEDIUM/HIGH; /set 16-40 |
| **Режимы** | AUTO, FAN\_ONLY, HEAT, COOL, DRY, HEAT\_COOL (текст — в payload /cmd; /mode — число); fan: LOW/MEDIUM/HIGH; /set 16-40 |
| **Требует** | Проприетарный UART-протокол Haier (9600, кадры 13/37 байт) |
### CH_SPILED (11) — SPI LED Лента
### CH\_SPILED (11) — SPI LED Лента
| Параметр | Значение |
|----------|----------|
@@ -193,7 +193,7 @@
| **Протокол** | NeoPixel (один data-пин); по умолчанию Adafruit NeoPixel, при FASTLED — TM1809 |
| **Диапазон пинов** | 0-53 |
### CH_MOTOR (12) — Моторная задвижка с обратной связью
### CH\_MOTOR (12) — Моторная задвижка с обратной связью
| Параметр | Значение |
|----------|----------|
@@ -204,7 +204,7 @@
| **maxOnTime** | Максимальное время движения (мс, дефолт 10000) |
| **Команды** | ON — к заданной позиции, OFF — в позицию 0, HALT |
### CH_PID (13) — PID Регулятор
### CH\_PID (13) — PID Регулятор
| Параметр | Значение |
|----------|----------|
@@ -218,7 +218,7 @@
| **alarm** | Значение аварии |
| **min/max** | Диапазон выхода |
### CH_MBUS (14) — Universal Modbus
### CH\_MBUS (14) — Universal Modbus
| Параметр | Значение |
|----------|----------|
@@ -229,7 +229,7 @@
| **Params** | Привязка параметров к MQTT/items |
| **Тип данных** | i16, i32, u16, u32, i8h, i8l, u8h, u8l, x10, 100 |
### CH_UARTBRIDGE (15) — UART Мост
### CH\_UARTBRIDGE (15) — UART Мост
| Параметр | Значение |
|----------|----------|
@@ -237,7 +237,7 @@
| **Конфигурация** | object `{serial, baud, ip, port, hd, log, bond}` (порты фиксированы) |
| **Отладка** | Может логировать через UDP |
### CH_RELAYX (16) — Медленный PWM через реле
### CH\_RELAYX (16) — Медленный PWM через реле
| Параметр | Значение |
|----------|----------|
@@ -247,16 +247,16 @@
| **Период** | Цикл коммутации в секундах (дефолт 5 с, ограничений нет) |
| **Применение** | Система напольного отопления, тепловые системы |
### CH_RGBWW (17) — DMX RGBWW
### CH\_RGBWW (17) — DMX RGBWW
| Параметр | Значение |
|----------|----------|
| **Назначение** | RGB + Тёплый белый + Холодный белый |
| **Конфигурация** | int (стартовый DMX) |
| **Каналов DMX** | 5 (R, G, B, W_warm, W_cold) |
| **Каналов DMX** | 5 (R, G, B, W\_warm, W\_cold) |
| **Формат** | DMX 30-34 (5 каналов) |
### CH_MULTIVENT (18) — Многозональная вентиляция
### CH\_MULTIVENT (18) — Многозональная вентиляция
| Параметр | Значение |
|----------|----------|
@@ -266,15 +266,15 @@
| **PID** | Для каждой зоны свои коэффициенты |
| **itemArg** | объект зон (не массив с адресом) |
### CH_ELEVATOR (19) — Лифт
### CH\_ELEVATOR (19) — Лифт
| Параметр | Значение |
|----------|----------|
| **Назначение** | Управление лифтом |
| **Конфигурация** | `[19, {"serial":"8N1","baud":19200,"log":...}]` |
| **Статус** | Реализован; компилируется с ELEVATOR_ENABLE (включён только в custom-build mega2560-optiboot) |
| **Статус** | Реализован; компилируется с ELEVATOR\_ENABLE (включён только в custom-build mega2560-optiboot) |
### CH_COUNTER (20) — Счётчик импульсов
### CH\_COUNTER (20) — Счётчик импульсов
| Параметр | Значение |
|----------|----------|
@@ -284,15 +284,15 @@
| **Период** | Период автосуммирования (сек) |
| **Вход** | Внешние импульсы (GPIO-входа в конфиге нет) |
### CH_HUMIDIFIER (21) — Увлажнитель
### CH\_HUMIDIFIER (21) — Увлажнитель
| Параметр | Значение |
|----------|----------|
| **Назначение** | Управление увлажнителем воздуха (только один в системе) |
| **Конфигурация** | array `[[pumpPin, flushPin, pressurePin, maxPumpTime, idleTime, capacity, minLevel, startLevel], {зоны_краны}, motorExecObj, faultExecObj]` |
| **Сборка** | Компилируется с HUMIDIFIER_ENABLE (custom lighthub21) |
| **Сборка** | Компилируется с HUMIDIFIER\_ENABLE (custom lighthub21) |
### CH_MERCURY (22) — Счётчик энергии Mercury
### CH\_MERCURY (22) — Счётчик энергии Mercury
| Параметр | Значение |
|----------|----------|
@@ -305,7 +305,7 @@
| **Пароль** | Строка из 6 цифр или массив 6 цифр |
| **PollingInterval** | Интервал опроса (мс, дефолт 10000) |
### CH_SPRINKLER (23) — Система полива
### CH\_SPRINKLER (23) — Система полива
| Параметр | Значение |
|----------|----------|
@@ -425,9 +425,9 @@
|-----|---------------------------|
| SPRINKLER (23) | due, esp32-wifi, esp32c3-wifi, lighthub21, nrf52840 |
| MERCURY (22) | due, lighthub21, stm32 |
| ELEVATOR (19) | только custom-build mega2560-optiboot (ELEVATOR_ENABLE) |
| HUMIDIFIER (21) | только custom-build lighthub21 (HUMIDIFIER_ENABLE) |
| UARTBRIDGE (15) | закомментирован во всех стандартных build-flags (UARTBRIDGE_ENABLE) |
| ELEVATOR (19) | только custom-build mega2560-optiboot (ELEVATOR\_ENABLE) |
| HUMIDIFIER (21) | только custom-build lighthub21 (HUMIDIFIER\_ENABLE) |
| UARTBRIDGE (15) | закомментирован во всех стандартных build-flags (UARTBRIDGE\_ENABLE) |
---
+6 -6
View File
@@ -1,6 +1,6 @@
# Интерфейс настройки контроллера
> Источник: Wiki LightHub (lazyhome.ru), страница «интерфейс_настройки». Снапшот от 2026-10-02.
> Источник: Wiki LightHub (lazyhome.ru), страница «интерфейс\_настройки». Снапшот от 2026-10-02.
### Интерфейс настройки контроллера
@@ -34,7 +34,7 @@
* Появляется возможность поиска контроллеров в вашей локальной сети, так как в них давно реализован протокол MDNS
Недостаток тут только один - надо потратить 5 минут на установку этого плагина.
Так как браузер не имеет прав просканировать локальную сеть на предмет наличия контроллеров, плагин использует утилиту zeroconf_lookup которая была разработана в рамках открытого проекта https://github.com/railduino/zeroconf-lookup
Так как браузер не имеет прав просканировать локальную сеть на предмет наличия контроллеров, плагин использует утилиту zeroconf\_lookup которая была разработана в рамках открытого проекта https://github.com/railduino/zeroconf-lookup
На базе этого проекта, я сделал прототип плагина для конфигурирования контроллеров lighthub
https://github.com/anklimov/zeroconf-lighthub
@@ -58,21 +58,21 @@ https://github.com/anklimov/zeroconf-lighthub
* Для этого открываем браузер chrome, в меню "расширения" выбираем "управление расширениями".
* Включаем переключатель "режим разработчика",
* нажимаем кнопку"Загрузить распакованное расширение".
* Выбираем папку __zeroconf-lighthub-master/Chrome__ в распакованном на предыдущем этапе архиве
* Выбираем папку _\_zeroconf-lighthub-master/Chrome_\_ в распакованном на предыдущем этапе архиве
* Расширение устанавливается, заглядываем на страницу его свойств и копируем идентификатор расширения (например gepnlbipogackhpjkojhkonkijdgpgji ) это нам пригодится чуть позже
### Как установить утилиту:
### Windows
- Переходите в каталог __zeroconf-lighthub-master\Windows_Go__
- Переходите в каталог _\_zeroconf-lighthub-master\Windows\_Go_\_
- Из командной строки запускаете - `zeroconf_lookup.exe -i -с gepnlbipogackhpjkojhkonkijdgpgji` (тут укажите ваш идентификатор расширения, скопированный на предыдущем этапе)
- После этого переносить данный файл с этого места или удалять папку нельзя
- Если ставили плагин из магазина приложений - можно при запуске не указывать идентификатор расширения. `zeroconf_lookup.exe -i`
### MacOS
то же самое, только выполнимый файл лежит в директории __zeroconf-lighthub/Apple_Go__
то же самое, только выполнимый файл лежит в директории _\_zeroconf-lighthub/Apple\_Go_\_
### Использование
@@ -83,6 +83,6 @@ https://github.com/anklimov/zeroconf-lighthub
## Сверка с кодом (2026-10-02)
- Корректно: обращение по адресу контроллера (`http://<ip>` / `http://<имя>.local`) приводит к 301-редиректу на страницу управления с публичного ресурса: `httpHandler` в `lighthub/main.cpp:264-286` отвечает `Location: http://<REDIRECTION_URL>?mac=...&ip=...&port=...&name=...`. По умолчанию `REDIRECTION_URL` для esp32-wifi задан как `http://lazyhome.ru/pwa` (`build-flags/build_flags_esp32-wifi`), то есть «портал» подгружается с lazyhome.ru и дальше использует HTTP API контроллера.
- Корректно: MDNS-анонс контроллера реализован (`MDNS.addService("http", "tcp", OTA_PORT)`, main.cpp:650; на STM — `mdns.addServiceRecord`, main.cpp:1332), на этом основан поиск плагина через zeroconf_lookup.
- Корректно: MDNS-анонс контроллера реализован (`MDNS.addService("http", "tcp", OTA_PORT)`, main.cpp:650; на STM — `mdns.addServiceRecord`, main.cpp:1332), на этом основан поиск плагина через zeroconf\_lookup.
- Корректно: веб-контент не размещается в памяти контроллера — в коде есть только HTTP API: `GET/POST /item/<имя>`, `GET /ram/[<имя>]`, `POST /command/<команда>` (подача CLI-команд по HTTP), `POST /config.json` (локальное изменение конфига отключает загрузку с портала, main.cpp:368-374).
- Примечание: ограничение Chrome на доступ внешних страниц к локальной сети — особенность браузеров, описана верно; рекомендация по fireFox/плагину актуальна.