docs review
@@ -26,8 +26,13 @@ lighthub/modules/out_humidifier.h
|
|||||||
spare_files/*
|
spare_files/*
|
||||||
spare_files/ArduinoOTA/*
|
spare_files/ArduinoOTA/*
|
||||||
lib/*
|
lib/*
|
||||||
|
# site tools: WP session state (cookies, nonce, password) — never commit
|
||||||
|
tools/wp/state/
|
||||||
|
|
||||||
# doxygen generated output (published to lighthub.github.io, not to repo)
|
# doxygen generated output (published to lighthub.github.io, not to repo)
|
||||||
doxygen-docs/html/
|
doxygen-docs/html/
|
||||||
doxygen-docs/latex/
|
doxygen-docs/latex/
|
||||||
doxygen-docs/rtf/
|
doxygen-docs/rtf/
|
||||||
doxygen-docs/doxygen-warnings.log
|
doxygen-docs/doxygen-warnings.log
|
||||||
|
privateconf/*
|
||||||
|
tools/*
|
||||||
@@ -8,56 +8,56 @@
|
|||||||
|
|
||||||
| Файл | Я | Описание |
|
| Файл | Я | Описание |
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
| [light_hub_полное_инженерное_описание_json_конфигурации_v2.md](core/light_hub_полное_инженерное_описание_json_конфигурации_v2.md) | RU | Полное описание JSON-конфигурации: секции, 24 типа каналов (0-23), примеры |
|
| [light\_hub\_полное\_инженерное\_описание\_json\_конфигурации\_v2.md](core/light_hub_полное_инженерное_описание_json_конфигурации_v2.md) | RU | Полное описание JSON-конфигурации: секции, 24 типа каналов (0-23), примеры |
|
||||||
| [channel_types_reference.md](core/channel_types_reference.md) | RU | Справочник типов каналов: коды, форматы настройки, команды, доступность по целям |
|
| [channel\_types\_reference.md](core/channel_types_reference.md) | RU | Справочник типов каналов: коды, форматы настройки, команды, доступность по целям |
|
||||||
| [technical_channel_types_table.md](core/technical_channel_types_table.md) | RU | Техническая таблица типов каналов (формат item.h, суффиксы, матрица) |
|
| [technical\_channel\_types\_table.md](core/technical_channel_types_table.md) | RU | Техническая таблица типов каналов (формат item.h, суффиксы, матрица) |
|
||||||
| [suffixes_reference.md](core/suffixes_reference.md) | RU | Справочник MQTT-суффиксов и команд, таблицы по типам каналов |
|
| [suffixes\_reference.md](core/suffixes_reference.md) | RU | Справочник MQTT-суффиксов и команд, таблицы по типам каналов |
|
||||||
| [mqtt_api_reference.md](core/mqtt_api_reference.md) | RU | Полный справочник MQTT: топики, команды, HTTP API, $command/$stats, homie |
|
| [mqtt\_api\_reference.md](core/mqtt_api_reference.md) | RU | Полный справочник MQTT: топики, команды, HTTP API, $command/$stats, homie |
|
||||||
| [mqtt_quick_reference.md](core/mqtt_quick_reference.md) | RU | Быстрая шпаргалка по MQTT и HTTP |
|
| [mqtt\_quick\_reference.md](core/mqtt_quick_reference.md) | RU | Быстрая шпаргалка по MQTT и HTTP |
|
||||||
| [configuration_examples.md](core/configuration_examples.md) | RU | Примеры JSON-конфигураций по всем типам каналов |
|
| [configuration\_examples.md](core/configuration_examples.md) | RU | Примеры JSON-конфигураций по всем типам каналов |
|
||||||
| [modules_real_config.md](core/modules_real_config.md) | RU | Реальные конфигурации по драйверам |
|
| [modules\_real\_config.md](core/modules_real_config.md) | RU | Реальные конфигурации по драйверам |
|
||||||
| [modules_description.md](core/modules_description.md) | RU | Описание драйверов (out_*, in_*) с параметрами getConfig() |
|
| [modules\_description.md](core/modules_description.md) | RU | Описание драйверов (out\_*, in\_*) с параметрами getConfig() |
|
||||||
| [cli_interface.md](core/cli_interface.md) | RU | CLI-интерфейс (USB-сериал) |
|
| [cli\_interface.md](core/cli_interface.md) | RU | CLI-интерфейс (USB-сериал) |
|
||||||
| [web_ui.md](core/web_ui.md) | RU | Web-интерфейс и HTTP API настройки |
|
| [web\_ui.md](core/web_ui.md) | RU | Web-интерфейс и HTTP API настройки |
|
||||||
| [config_file_workflow.md](core/config_file_workflow.md) | RU | Как контроллер загружает/сохраняет файл конфигурации |
|
| [config\_file\_workflow.md](core/config_file_workflow.md) | RU | Как контроллер загружает/сохраняет файл конфигурации |
|
||||||
| [button_presses.md](core/button_presses.md) | RU | Двойные/тройные/длительные нажатия, несколько кнопок на одном входе |
|
| [button\_presses.md](core/button_presses.md) | RU | Двойные/тройные/длительные нажатия, несколько кнопок на одном входе |
|
||||||
| [rotary_encoder.md](core/rotary_encoder.md) | RU | Rotary encoder (T:32): профили, примеры |
|
| [rotary\_encoder.md](core/rotary_encoder.md) | RU | Rotary encoder (T:32): профили, примеры |
|
||||||
| [analog_inputs_and_map.md](core/analog_inputs_and_map.md) | RU | Аналоговые входы, преобразования `map` |
|
| [analog\_inputs\_and\_map.md](core/analog_inputs_and_map.md) | RU | Аналоговые входы, преобразования `map` |
|
||||||
| [command_signature.md](core/command_signature.md) | RU | Криптоподпись команд (SHA256, protected pins) |
|
| [command\_signature.md](core/command_signature.md) | RU | Криптоподпись команд (SHA256, protected pins) |
|
||||||
| [ota.md](core/ota.md) | RU | OTA-обновление прошивки по воздуху |
|
| [ota.md](core/ota.md) | RU | OTA-обновление прошивки по воздуху |
|
||||||
|
|
||||||
## integrations/ — внешние системы
|
## integrations/ — внешние системы
|
||||||
|
|
||||||
| Файл | Я | Описание |
|
| Файл | Я | Описание |
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
| [can_lightspot.md](integrations/can_lightspot.md) | RU | CAN-шина, lightspot, протокол datagram, шлюз |
|
| [can\_lightspot.md](integrations/can_lightspot.md) | RU | CAN-шина, lightspot, протокол datagram, шлюз |
|
||||||
| [modbus_setup.md](integrations/modbus_setup.md) | RU | Настройка Modbus (v2), режим шлюза IP-Modbus |
|
| [modbus\_setup.md](integrations/modbus_setup.md) | RU | Настройка Modbus (v2), режим шлюза IP-Modbus |
|
||||||
| [1wire_sensors.md](integrations/1wire_sensors.md) | RU | Подключение 1-wire датчиков |
|
| [1wire\_sensors.md](integrations/1wire_sensors.md) | RU | Подключение 1-wire датчиков |
|
||||||
| [homeassistant.md](integrations/homeassistant.md) | RU | Интеграция с Home Assistant |
|
| [homeassistant.md](integrations/homeassistant.md) | RU | Интеграция с Home Assistant |
|
||||||
| [openhab.md](integrations/openhab.md) | RU | Интеграция с OpenHAB |
|
| [openhab.md](integrations/openhab.md) | RU | Интеграция с OpenHAB |
|
||||||
| [work_remotely.md](integrations/work_remotely.md) | RU | Работа дистанционно (cloud-брокеры) |
|
| [work\_remotely.md](integrations/work_remotely.md) | RU | Работа дистанционно (cloud-брокеры) |
|
||||||
|
|
||||||
## modules/ — функциональные модули
|
## modules/ — функциональные модули
|
||||||
|
|
||||||
| Файл | Я | Описание |
|
| Файл | Я | Описание |
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
| [multivent_module_description.md](modules/multivent_module_description.md) | RU | Многозональная вентиляция/кондиционирование (CH 18) |
|
| [multivent\_module\_description.md](modules/multivent_module_description.md) | RU | Многозональная вентиляция/кондиционирование (CH 18) |
|
||||||
| [Sprinkler_module.md](modules/Sprinkler_module.md) | RU | Контроллер полива (CH 23): состояния, команды, FA |
|
| [Sprinkler\_module.md](modules/Sprinkler_module.md) | RU | Контроллер полива (CH 23): состояния, команды, FA |
|
||||||
| [Sprinkler_HomeAssistant.md](modules/Sprinkler_HomeAssistant.md) | RU | HA-дашборд для поливального модуля |
|
| [Sprinkler\_HomeAssistant.md](modules/Sprinkler_HomeAssistant.md) | RU | HA-дашборд для поливального модуля |
|
||||||
|
|
||||||
## hardware/ — железо
|
## hardware/ — железо
|
||||||
|
|
||||||
| Файл | Я | Описание |
|
| Файл | Я | Описание |
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
| [hardware_platforms.md](hardware/hardware_platforms.md) | RU | LightHub на разных платах/чипах |
|
| [hardware\_platforms.md](hardware/hardware_platforms.md) | RU | LightHub на разных платах/чипах |
|
||||||
| [pins_io.md](hardware/pins_io.md) | RU | Карта входов/выходов платы LightHub (rev 2.0 / 2.2) |
|
| [pins\_io.md](hardware/pins_io.md) | RU | Карта входов/выходов платы LightHub (rev 2.0 / 2.2) |
|
||||||
| [mac_address.md](hardware/mac_address.md) | RU | MAC-адрес контроллера: генерация, замена |
|
| [mac\_address.md](hardware/mac_address.md) | RU | MAC-адрес контроллера: генерация, замена |
|
||||||
| [flashing.md](hardware/flashing.md) | RU | Заливка прошивки, список целей |
|
| [flashing.md](hardware/flashing.md) | RU | Заливка прошивки, список целей |
|
||||||
|
|
||||||
## reference/ — справочные материалы
|
## reference/ — справочные материалы
|
||||||
|
|
||||||
- [dokuwiki-2026-10-02/](reference/dokuwiki-2026-10-02/README.md) — замороженный снапшот официальной Wiki (источник истины уровня 2)
|
- [dokuwiki-2026-10-02/](reference/dokuwiki-2026-10-02/README.md) — замороженный снапшот официальной Wiki (источник истины уровня 2)
|
||||||
- [config_samples/](reference/config_samples/) — эталонные JSON-конфигурации
|
- [config\_samples/](reference/config_samples/) — эталонные JSON-конфигурации
|
||||||
- [images/](reference/images/) — иллюстрации
|
- [images/](reference/images/) — иллюстрации
|
||||||
|
|
||||||
## Прочее
|
## Прочее
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Аналоговые входы и преобразования map
|
# Аналоговые входы и преобразования map
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страницы «аналоговые_входы» и «использование_преобразований_map». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страницы «аналоговые\_входы» и «использование\_преобразований\_map». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
## Общая информация
|
## Общая информация
|
||||||
|
|
||||||
|
|||||||
@@ -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) у прошивки появилась возможность отслеживать одинарные, двойные, тройные, долгие нажатия
|
Начиная с [этого коммита](https://github.com/anklimov/lighthub/commit/0044b741ac9f6fb8fc4b1ff8388e47c8bb8efd9b) у прошивки появилась возможность отслеживать одинарные, двойные, тройные, долгие нажатия
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
| **5** | `THERMO` | Simple Thermostat | ON/OFF термостат с гистерезисом | `[GPIO_pin, целевая_температура_°C]` |
|
| **5** | `THERMO` | Simple Thermostat | ON/OFF термостат с гистерезисом | `[GPIO_pin, целевая_температура_°C]` |
|
||||||
| **6** | `RELAY` | Relay Output | Электромагнитное реле ON/OFF | GPIO пин |
|
| **6** | `RELAY` | Relay Output | Электромагнитное реле ON/OFF | GPIO пин |
|
||||||
| **7** | `GROUP` | Group Channel | Логическая группа каналов для синхронного управления | Массив строк с именами каналов |
|
| **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_адрес, "имя_объекта"]` |
|
| **9** | `MBUSVC` | Vacom Modbus Motor | Управление мотор-регулятором вентилятора Vacom через Modbus | `[modbus_адрес, "имя_объекта"]` |
|
||||||
| **10** | `ACHAIER` | Air Conditioner Haier | Управление кондиционером Haier по проприетарному UART-протоколу (9600) | `[порт_serial(0-3)]` |
|
| **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]` |
|
| **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)]` |
|
| **16** | `RELAYPWM` | Relay PWM | Медленный PWM через реле для инертных систем | `[GPIO_pin, период_цикла_сек(дефолт 5)]` |
|
||||||
| **17** | `DMXRGBWW` | DMX RGBWW | DMX 512 выход RGB + теплый белый + холодный белый (5 каналов) | Номер стартового DMX канала |
|
| **17** | `DMXRGBWW` | DMX RGBWW | DMX 512 выход RGB + теплый белый + холодный белый (5 каналов) | Номер стартового DMX канала |
|
||||||
| **18** | `VENTS` | Multiroom Ventilation | Многозональная вентиляция с каскадным управлением | `[объект_зон]` (без Modbus-адреса) |
|
| **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 | Счётчик импульсов (электроэнергия, газ, вода) | `[коэффициент_импульса, период_автосуммирования_сек]` |
|
| **20** | `COUNTER` | Generic Counter | Счётчик импульсов (электроэнергия, газ, вода) | `[коэффициент_импульса, период_автосуммирования_сек]` |
|
||||||
| **21** | `HUM` | Humidifier | Управление увлажнителем воздуха (только один в системе) | `[[pumpPin, flushPin, pressurePin, maxPumpTime, idleTime, capacity, minLevel, startLevel], {зоны_краны}, motorExec, faultExec]` |
|
| **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)]` |
|
| **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
|
```json
|
||||||
"dimmer1": [0, 5], // DMX канал 5
|
"dimmer1": [0, 5], // DMX канал 5
|
||||||
"dimmer2": [0, [1, 2, 3, 4]] // 4-канальный (RGBW), DMX 1-4
|
"dimmer2": [0, [1, 2, 3, 4]] // 4-канальный (RGBW), DMX 1-4
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_RGBW (1) - DMX RGB+White
|
### CH\_RGBW (1) - DMX RGB+White
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"rgb_light": [1, 10] // RGB+W на DMX 10-13
|
"rgb_light": [1, 10] // RGB+W на DMX 10-13
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_RGB (2) - DMX RGB
|
### CH\_RGB (2) - DMX RGB
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"rgb_light": [2, 15] // RGB начиная с 15-го (на DMX 15-17)
|
"rgb_light": [2, 15] // RGB начиная с 15-го (на DMX 15-17)
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_PWM (3) - GPIO PWM
|
### CH\_PWM (3) - GPIO PWM
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"pwm1": [3, 9], // PWM на GPIO pin 9
|
"pwm1": [3, 9], // PWM на GPIO pin 9
|
||||||
"pwm_4ch": [3, [11, 12, 13, 14]] // 4-х канальный PWM
|
"pwm_4ch": [3, [11, 12, 13, 14]] // 4-х канальный PWM
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_MODBUS (4) - AC Dimmer (Legacy)
|
### CH\_MODBUS (4) - AC Dimmer (Legacy)
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"mbus_dim": [4, [96, 0, 0, 255]]
|
"mbus_dim": [4, [96, 0, 0, 255]]
|
||||||
@@ -89,20 +89,20 @@
|
|||||||
// Макс значение: 255
|
// Макс значение: 255
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_THERMO (5) - Термостат
|
### CH\_THERMO (5) - Термостат
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"thermo_bath": [5, 24, 33] // GPIO 24, уставка 33°C
|
"thermo_bath": [5, 24, 33] // GPIO 24, уставка 33°C
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_RELAY (6) - Реле
|
### CH\_RELAY (6) - Реле
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"relay1": [6, 23], // Реле на GPIO 23
|
"relay1": [6, 23], // Реле на GPIO 23
|
||||||
"relay2": ["RELAY", 28, 1, 1] // Реле, по умолчанию ON
|
"relay2": ["RELAY", 28, 1, 1] // Реле, по умолчанию ON
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_GROUP (7) - Группа каналов
|
### CH\_GROUP (7) - Группа каналов
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"lights_all": [7, [
|
"lights_all": [7, [
|
||||||
@@ -112,19 +112,19 @@
|
|||||||
"lights_bedroom": [7, ["lamp1", "rgb1"]]
|
"lights_bedroom": [7, ["lamp1", "rgb1"]]
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_VCTEMP (8) - Vacom PID терморегулятор
|
### CH\_VCTEMP (8) - Vacom PID терморегулятор
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"fm_t": [8, "fm"] // строка-имя item типа CH_VC (9)
|
"fm_t": [8, "fm"] // строка-имя item типа CH_VC (9)
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_VC (9) - Vacom мотор регулятор
|
### CH\_VC (9) - Vacom мотор регулятор
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"fan_speed": [9, [96, "a_ext"]] // Modbus адрес 96, "имя_объекта" (строка)
|
"fan_speed": [9, [96, "a_ext"]] // Modbus адрес 96, "имя_объекта" (строка)
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_AC (10) - Кондиционер Haier
|
### CH\_AC (10) - Кондиционер Haier
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"ac_main": [10, 1] // номер порта serial (0-3)
|
"ac_main": [10, 1] // номер порта serial (0-3)
|
||||||
@@ -132,13 +132,13 @@
|
|||||||
// также доступны подканалы lock/swing/quiet/raw (/mode — число, текстовые режимы — в /cmd)
|
// также доступны подканалы lock/swing/quiet/raw (/mode — число, текстовые режимы — в /cmd)
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_SPILED (11) - SPI LED лента
|
### CH\_SPILED (11) - SPI LED лента
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"led_strip": [11, [7, 8]] // data-пин GPIO7, 8 светодиодов
|
"led_strip": [11, [7, 8]] // data-пин GPIO7, 8 светодиодов
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_MOTOR (12) - Моторная задвижка с обратной связью
|
### CH\_MOTOR (12) - Моторная задвижка с обратной связью
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"gate_motor": [12, [9, 10, 11, 0, 255, 30000]]
|
"gate_motor": [12, [9, 10, 11, 0, 255, 30000]]
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
// fbOpen: 0, fbClosed: 255, maxOnTime_ms: 30000
|
// fbOpen: 0, fbClosed: 255, maxOnTime_ms: 30000
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_PID (13) - PID регулятор
|
### CH\_PID (13) - PID регулятор
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"pid_temp": [13, [
|
"pid_temp": [13, [
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
// min_out=0, max_out=255
|
// min_out=0, max_out=255
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_MBUS (14) - Универсальный Modbus
|
### CH\_MBUS (14) - Универсальный Modbus
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"mbus_generic": [14, [96, "temperature_sensor", {
|
"mbus_generic": [14, [96, "temperature_sensor", {
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
}]]
|
}]]
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_UARTBRIDGE (15) - UART мост
|
### CH\_UARTBRIDGE (15) - UART мост
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"uart_debug": [15, {
|
"uart_debug": [15, {
|
||||||
@@ -180,19 +180,19 @@
|
|||||||
}]
|
}]
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_RELAYX (16) - Медленный PWM через реле
|
### CH\_RELAYX (16) - Медленный PWM через реле
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"relay_pwm": [16, [22, 60]] // GPIO 22, период цикла 60 сек
|
"relay_pwm": [16, [22, 60]] // GPIO 22, период цикла 60 сек
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_RGBWW (17) - DMX RGBWW
|
### CH\_RGBWW (17) - DMX RGBWW
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"led_warm_cold": [17, 30] // DMX 30-34 (RGBWW, 5 каналов)
|
"led_warm_cold": [17, 30] // DMX 30-34 (RGBWW, 5 каналов)
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_MULTIVENT (18) - Многозональная вентиляция
|
### CH\_MULTIVENT (18) - Многозональная вентиляция
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"multivent_system": [18, {
|
"multivent_system": [18, {
|
||||||
@@ -206,14 +206,14 @@
|
|||||||
}]
|
}]
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_COUNTER (20) - Счётчик по импульсам/времени
|
### CH\_COUNTER (20) - Счётчик по импульсам/времени
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"energy_meter": [20, [0.02, 1.2]] // коэфф 0.02, период автосуммирования 1.2 с
|
"energy_meter": [20, [0.02, 1.2]] // коэфф 0.02, период автосуммирования 1.2 с
|
||||||
"gas_counter": [20, 0] // без калибровки
|
"gas_counter": [20, 0] // без калибровки
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_HUMIDIFIER (21) - Увлажнитель
|
### CH\_HUMIDIFIER (21) - Увлажнитель
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"humidifier1": [21, [13, 14, 15, 120, 15, 50, 5, 25]]
|
"humidifier1": [21, [13, 14, 15, 120, 15, 50, 5, 25]]
|
||||||
@@ -221,7 +221,7 @@
|
|||||||
// (только один humidifier в системе; компилируется с HUMIDIFIER_ENABLE)
|
// (только один humidifier в системе; компилируется с HUMIDIFIER_ENABLE)
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_MERCURY (22) - Счётчик энергии Mercury
|
### CH\_MERCURY (22) - Счётчик энергии Mercury
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"mercury_meter": [22, [1, 9600, "8N1", 2, "123456", 10000]]
|
"mercury_meter": [22, [1, 9600, "8N1", 2, "123456", 10000]]
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
// Интервал опроса: 10000 мс (дефолт)
|
// Интервал опроса: 10000 мс (дефолт)
|
||||||
```
|
```
|
||||||
|
|
||||||
### CH_SPRINKLR (23) - Система полива
|
### CH\_SPRINKLR (23) - Система полива
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"irrigation_system": [23, {
|
"irrigation_system": [23, {
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
- `HIGH` / `MEDIUM` / `LOW` — скорость вентилятора
|
- `HIGH` / `MEDIUM` / `LOW` — скорость вентилятора
|
||||||
- `RGB` / `HSV` / `RESET` — цветовые команды (для RGB каналов) и сброс
|
- `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,6 +1,6 @@
|
|||||||
# Command Line Interface
|
# Command Line Interface
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «cli_интерфейс». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «cli\_интерфейс». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
Иначе, интерфейс командной строки.
|
Иначе, интерфейс командной строки.
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# Криптоподпись команды
|
# Криптоподпись команды
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «криптоподпись_команды». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «криптоподпись\_команды». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, MQTT брокеру или HTTP API, потенциальный злоумышленник не сможет выполнить критичную команду (например, открытие ворот), можно использовать механизм цифровой подписи команды.
|
В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, 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
|
-D CRYPT
|
||||||
@@ -18,11 +18,11 @@
|
|||||||
* Авторизованная сторона, желающая выполнить команду, вычисляет SHA256 хэш от строки, содержащей `<Salt><SHAREDSECRET><Команда>`
|
* Авторизованная сторона, желающая выполнить команду, вычисляет SHA256 хэш от строки, содержащей `<Salt><SHAREDSECRET><Команда>`
|
||||||
* при отправке MQTT команды, авторизованная сторона добавляет в MQTT Payload полученный хэш цифровой подписи ДО команды, отделив подпись от тела команды знаком @
|
* при отправке MQTT команды, авторизованная сторона добавляет в MQTT Payload полученный хэш цифровой подписи ДО команды, отделив подпись от тела команды знаком @
|
||||||
* Контроллер, получив команду с подписью, производит аналогичную операцию по вычислению подписи и, если значения совпали, запрос считается авторизованным
|
* Контроллер, получив команду с подписью, производит аналогичную операцию по вычислению подписи и, если значения совпали, запрос считается авторизованным
|
||||||
* Если команда направлена на управление пином контроллера, из перечня PROTECTED_PINS, заданного при компиляции прошивки, то она будет выполнена только том случае, если является авторизованной
|
* Если команда направлена на управление пином контроллера, из перечня PROTECTED\_PINS, заданного при компиляции прошивки, то она будет выполнена только том случае, если является авторизованной
|
||||||
|
|
||||||
### Ограничения
|
### Ограничения
|
||||||
|
|
||||||
Если пин входит в перечень, заданный при компиляции в опции PROTECTED_PINS, то для него действуют следующие ограничения, смысл которых в том, чтобы сделать крайне сложным подачу высокого логического уровня на выход контроллера (открытие мощных ключей) не имея физического доступа к самому устройству:
|
Если пин входит в перечень, заданный при компиляции в опции PROTECTED\_PINS, то для него действуют следующие ограничения, смысл которых в том, чтобы сделать крайне сложным подачу высокого логического уровня на выход контроллера (открытие мощных ключей) не имея физического доступа к самому устройству:
|
||||||
|
|
||||||
* Он не будет работать на канале типа термостат (THERMO)
|
* Он не будет работать на канале типа термостат (THERMO)
|
||||||
* Для канала типа RELAY вывод работает только в не инверсном режиме. То есть, настройками не получится добиться перевода в состояние с высоким уровнем по-умолчанию, не получив подписанной команды. Настройки команды по умолчанию в файле конфигурации, также, будут проигнорированы. требуется цифровая подпись команде для управления таким каналом
|
* Для канала типа 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`).
|
- Корректно: механизм реализован под флагом `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).
|
- Корректно: подпись вычисляется как 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`).
|
- Корректно: формат 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`).
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Как LightHub работает с файлом конфигурации
|
# Как LightHub работает с файлом конфигурации
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «как_lighthub_работает_с_файлом_конфигурации». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «как\_lighthub\_работает\_с\_файлом\_конфигурации». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
## Первое включение
|
## Первое включение
|
||||||
|
|
||||||
По-умолчанию, контроллер получает динамический адрес локальной сети по DHCP
|
По-умолчанию, контроллер получает динамический адрес локальной сети по DHCP
|
||||||
При этом, он записывает его в энергонезависимую память. И если при очередном перезапуске, DHCP сервер не доступен - он будет использовать последний известный IP адрес.
|
При этом, он записывает его в энергонезависимую память. И если при очередном перезапуске, 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)
|
При включении, контроллер сначала проверяет наличие записанного в памяти конфигурационного файла. (У нового контроллера, а также, после перезаливки прошивки, конфигурационный файл отсутствует (кроме 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>`
|
После этого выполнить через CLI команду `get <MY_CONFIG_SERVER>`
|
||||||
Контроллер запомнит ваш сервер и далее, будет загружать обновление конфига из этого источника. (на платформах STM, NRF пока не сохраняется)
|
Контроллер запомнит ваш сервер и далее, будет загружать обновление конфига из этого источника. (на платформах STM, NRF пока не сохраняется)
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
После этого контроллер готов к автономной работе.
|
После этого контроллер готов к автономной работе.
|
||||||
При загрузке конфигурации проверяется наличие изменений - если в памяти сохранен тот же конфиг, что имеется на портале, повторная загрузка и сохранение не происходит.
|
При загрузке конфигурации проверяется наличие изменений - если в памяти сохранен тот же конфиг, что имеется на портале, повторная загрузка и сохранение не происходит.
|
||||||
|
|
||||||
Данное поведение можно изменить при помощи команды save в [cli_интерфейс](cli_interface.md)
|
Данное поведение можно изменить при помощи команды save в [cli\_интерфейс](cli_interface.md)
|
||||||
|
|
||||||
```
|
```
|
||||||
save ON - включить автосохранение конфига (по умолчанию)
|
save ON - включить автосохранение конфига (по умолчанию)
|
||||||
|
|||||||
@@ -7,34 +7,34 @@
|
|||||||
|
|
||||||
## Содержание
|
## Содержание
|
||||||
|
|
||||||
- [CH_DIMMER (0)](#ch_dimmer-0---dmx-диммер)
|
- [CH\_DIMMER (0)](#ch_dimmer-0---dmx-диммер)
|
||||||
- [CH_RGBW (1)](#ch_rgbw-1---dmx-rgbwhite)
|
- [CH\_RGBW (1)](#ch_rgbw-1---dmx-rgbwhite)
|
||||||
- [CH_RGB (2)](#ch_rgb-2---dmx-rgb)
|
- [CH\_RGB (2)](#ch_rgb-2---dmx-rgb)
|
||||||
- [CH_PWM (3)](#ch_pwm-3---gpio-pwm)
|
- [CH\_PWM (3)](#ch_pwm-3---gpio-pwm)
|
||||||
- [CH_MODBUS (4)](#ch_modbus-4---modbus-ac-dimmer-legacy)
|
- [CH\_MODBUS (4)](#ch_modbus-4---modbus-ac-dimmer-legacy)
|
||||||
- [CH_THERMO (5)](#ch_thermo-5---onoff-термостат)
|
- [CH\_THERMO (5)](#ch_thermo-5---onoff-термостат)
|
||||||
- [CH_RELAY (6)](#ch_relay-6---gpio-реле)
|
- [CH\_RELAY (6)](#ch_relay-6---gpio-реле)
|
||||||
- [CH_GROUP (7)](#ch_group-7---группа-каналов)
|
- [CH\_GROUP (7)](#ch_group-7---группа-каналов)
|
||||||
- [CH_VCTEMP (8)](#ch_vctemp-8---vacom-pid-терморегулятор)
|
- [CH\_VCTEMP (8)](#ch_vctemp-8---vacom-pid-терморегулятор)
|
||||||
- [CH_VC (9)](#ch_vc-9---vacom-мотор-регулятор)
|
- [CH\_VC (9)](#ch_vc-9---vacom-мотор-регулятор)
|
||||||
- [CH_AC (10)](#ch_ac-10---кондиционер-haier)
|
- [CH\_AC (10)](#ch_ac-10---кондиционер-haier)
|
||||||
- [CH_SPILED (11)](#ch_spiled-11---spi-led-лента)
|
- [CH\_SPILED (11)](#ch_spiled-11---spi-led-лента)
|
||||||
- [CH_MOTOR (12)](#ch_motor-12---шаговый-двигатель)
|
- [CH\_MOTOR (12)](#ch_motor-12---шаговый-двигатель)
|
||||||
- [CH_PID (13)](#ch_pid-13---pid-регулятор)
|
- [CH\_PID (13)](#ch_pid-13---pid-регулятор)
|
||||||
- [CH_MBUS (14)](#ch_mbus-14---universal-modbus)
|
- [CH\_MBUS (14)](#ch_mbus-14---universal-modbus)
|
||||||
- [CH_UARTBRIDGE (15)](#ch_uartbridge-15---uart-мост)
|
- [CH\_UARTBRIDGE (15)](#ch_uartbridge-15---uart-мост)
|
||||||
- [CH_RELAYX (16)](#ch_relayx-16---медленный-pwm-через-реле)
|
- [CH\_RELAYX (16)](#ch_relayx-16---медленный-pwm-через-реле)
|
||||||
- [CH_RGBWW (17)](#ch_rgbww-17---dmx-rgbww)
|
- [CH\_RGBWW (17)](#ch_rgbww-17---dmx-rgbww)
|
||||||
- [CH_MULTIVENT (18)](#ch_multivent-18---многозональная-вентиляция)
|
- [CH\_MULTIVENT (18)](#ch_multivent-18---многозональная-вентиляция)
|
||||||
- [CH_ELEVATOR (19)](#ch_elevator-19---управление-лифтом)
|
- [CH\_ELEVATOR (19)](#ch_elevator-19---управление-лифтом)
|
||||||
- [CH_COUNTER (20)](#ch_counter-20---счётчик-импульсов)
|
- [CH\_COUNTER (20)](#ch_counter-20---счётчик-импульсов)
|
||||||
- [CH_HUMIDIFIER (21)](#ch_humidifier-21---управление-увлажнителем)
|
- [CH\_HUMIDIFIER (21)](#ch_humidifier-21---управление-увлажнителем)
|
||||||
- [CH_MERCURY (22)](#ch_mercury-22---счётчик-энергии-mercury)
|
- [CH\_MERCURY (22)](#ch_mercury-22---счётчик-энергии-mercury)
|
||||||
- [CH_SPRINKLER (23)](#ch_sprinkler-23---система-полива)
|
- [CH\_SPRINKLER (23)](#ch_sprinkler-23---система-полива)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CH_DIMMER (0) - DMX диммер
|
## CH\_DIMMER (0) - DMX диммер
|
||||||
|
|
||||||
**Назначение**: Регулировка яркости одного или нескольких 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)
|
**Назначение**: Управление 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)
|
**Назначение**: Управление 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)
|
**Назначение**: 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 термостат с гистерезисом
|
**Назначение**: Простой ON/OFF термостат с гистерезисом
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ myhome/dev/thermo_bath/cmd ← ON, OFF
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CH_RELAY (6) - GPIO Реле
|
## CH\_RELAY (6) - GPIO Реле
|
||||||
|
|
||||||
**Назначение**: Простое электромагнитное реле ON/OFF или иное дискретное устройство
|
**Назначение**: Простое электромагнитное реле 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
|
**Назначение**: PID регулятор температуры для систем вентиляции Vacom
|
||||||
|
|
||||||
@@ -317,7 +317,7 @@ myhome/dev/lights_all/cmd ← SET 100 (установит яркость
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CH_VC (9) - Vacom Мотор-регулятор
|
## CH\_VC (9) - Vacom Мотор-регулятор
|
||||||
|
|
||||||
**Назначение**: Управление мотор-регулятором вентилятора 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)
|
**Назначение**: Управление кондиционером 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)
|
**Назначение**: Управление адресуемой 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 контроллер для процессов
|
**Назначение**: Универсальный PID контроллер для процессов
|
||||||
|
|
||||||
@@ -484,7 +484,7 @@ myhome/dev/gate_motor/val ← текущая позиция обратно
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CH_MBUS (14) - Universal Modbus
|
## CH\_MBUS (14) - Universal Modbus
|
||||||
|
|
||||||
**Назначение**: Универсальный Modbus канал с полной поддержкой шаблонизации
|
**Назначение**: Универсальный Modbus канал с полной поддержкой шаблонизации
|
||||||
|
|
||||||
@@ -532,7 +532,7 @@ myhome/dev/gate_motor/val ← текущая позиция обратно
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CH_UARTBRIDGE (15) - UART Мост
|
## CH\_UARTBRIDGE (15) - UART Мост
|
||||||
|
|
||||||
**Назначение**: Мост между двумя UART портами с отладкой через UDP
|
**Назначение**: Мост между двумя UART портами с отладкой через UDP
|
||||||
|
|
||||||
@@ -558,7 +558,7 @@ myhome/dev/gate_motor/val ← текущая позиция обратно
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## CH_RELAYX (16) - Медленный PWM через реле
|
## CH\_RELAYX (16) - Медленный PWM через реле
|
||||||
|
|
||||||
**Назначение**: Медленный 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 каналов)
|
**Назначение**: 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
|
**Назначение**: Счётчик энергии 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: Полное инженерное описание JSON‑конфигурации контроллера
|
||||||
|
|
||||||
> **Документ актуален для ядра LightHub с типами каналов CH_DIMMER (0) - CH_SPRINKLER (23)**
|
> **Документ актуален для ядра LightHub с типами каналов CH\_DIMMER (0) - CH\_SPRINKLER (23)**
|
||||||
>
|
>
|
||||||
> Предназначен для инженеров автоматизации, интеграторов и разработчиков.
|
> Предназначен для инженеров автоматизации, интеграторов и разработчиков.
|
||||||
> Основан **строго** на официальной документации LazyHome / LightHub и исходном коде.
|
> Основан **строго** на официальной документации LazyHome / LightHub и исходном коде.
|
||||||
@@ -188,7 +188,7 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
|
|||||||
|
|
||||||
| Параметр | Описание |
|
| Параметр | Описание |
|
||||||
|--|--|
|
|--|--|
|
||||||
| GPIO pin | Не используется: пин фиксирован (AVR_DMXOUT_PIN) |
|
| GPIO pin | Не используется: пин фиксирован (AVR\_DMXOUT\_PIN) |
|
||||||
| Кол-во каналов | Число DMX каналов (обычно 512) — берётся только последний элемент массива |
|
| Кол-во каналов | Число DMX каналов (обычно 512) — берётся только последний элемент массива |
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -400,7 +400,7 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
|
|||||||
|
|
||||||
### Типы каналов (0-23)
|
### Типы каналов (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, период_сек]` |
|
| **16** | `RELAYX` | Медленный PWM | `[GPIO_pin, период_сек]` |
|
||||||
| **17** | `DMXRGBWW` | DMX RGBWW | Стартовый DMX канал |
|
| **17** | `DMXRGBWW` | DMX RGBWW | Стартовый DMX канал |
|
||||||
| **18** | `VENTS` | Многозональная вентиляция | `{зоны}` (объект; рабочая форма `[[18,5], {зоны}]`) |
|
| **18** | `VENTS` | Многозональная вентиляция | `{зоны}` (объект; рабочая форма `[[18,5], {зоны}]`) |
|
||||||
| **19** | `ELEVATOR` | Лифт (ELEVATOR_ENABLE) | `{serial, baud, log}` |
|
| **19** | `ELEVATOR` | Лифт (ELEVATOR\_ENABLE) | `{serial, baud, log}` |
|
||||||
| **20** | `COUNTER` | Автосуммирующий счётчик | `[коэффициент_импульса, период_автосуммирования_сек]` |
|
| **20** | `COUNTER` | Автосуммирующий счётчик | `[коэффициент_импульса, период_автосуммирования_сек]` |
|
||||||
| **21** | `HUM` | Увлажнитель (HUMIDIFIER_ENABLE) | `[[пины...], {зоны}, motorExecObj, faultExecObj]` |
|
| **21** | `HUM` | Увлажнитель (HUMIDIFIER\_ENABLE) | `[[пины...], {зоны}, motorExecObj, faultExecObj]` |
|
||||||
| **22** | `MERCURY` | Счётчик энергии Mercury | `[адрес, baudrate, ...]` |
|
| **22** | `MERCURY` | Счётчик энергии Mercury | `[адрес, baudrate, ...]` |
|
||||||
| **23** | `SPRINKLR` | Система полива | `{конфиг}` (корневой объект `""` + зоны с `pin`) |
|
| **23** | `SPRINKLR` | Система полива | `{конфиг}` (корневой объект `""` + зоны с `pin`) |
|
||||||
|
|
||||||
### Примеры конфигурации items
|
### Примеры конфигурации items
|
||||||
|
|
||||||
#### CH_RELAY (6) — Простое реле
|
#### CH\_RELAY (6) — Простое реле
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"relay1": [6, 23], // Реле на GPIO 23
|
"relay1": [6, 23], // Реле на GPIO 23
|
||||||
@@ -439,7 +439,7 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
|
|||||||
"relay3": [6, 28, 1, 1] // С начальным значением и командой
|
"relay3": [6, 28, 1, 1] // С начальным значением и командой
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_DMX (0) — DMX выход
|
#### CH\_DMX (0) — DMX выход
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"lamp1": [0, 5], // DMX канал 5
|
"lamp1": [0, 5], // DMX канал 5
|
||||||
@@ -447,20 +447,20 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
|
|||||||
"dmx_4ch": ["DMX", [1, 2, 3, 4]] // 4-х канальный диммер
|
"dmx_4ch": ["DMX", [1, 2, 3, 4]] // 4-х канальный диммер
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_RGBW (1) — RGB+White
|
#### CH\_RGBW (1) — RGB+White
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"rgb_light": [1, 10] // RGB+W на DMX 10-13
|
"rgb_light": [1, 10] // RGB+W на DMX 10-13
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_PWM (3) — GPIO PWM
|
#### CH\_PWM (3) — GPIO PWM
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"pwm1": [3, 9], // PWM на GPIO 9
|
"pwm1": [3, 9], // PWM на GPIO 9
|
||||||
"pwm_4ch": [3, [11, 12, 13, 14]] // 4-х канальный PWM
|
"pwm_4ch": [3, [11, 12, 13, 14]] // 4-х канальный PWM
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_GROUP (7) — Группа каналов
|
#### CH\_GROUP (7) — Группа каналов
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"lights_all": [7, [
|
"lights_all": [7, [
|
||||||
@@ -470,13 +470,13 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
|
|||||||
"lights_bedroom": [7, ["lamp1", "rgb1", "relay1"]]
|
"lights_bedroom": [7, ["lamp1", "rgb1", "relay1"]]
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_THERMO (5) — Термостат
|
#### CH\_THERMO (5) — Термостат
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"thermo_bath": [5, 24, 33] // GPIO 24, уставка 33°C
|
"thermo_bath": [5, 24, 33] // GPIO 24, уставка 33°C
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_ACHAIER (10) — Кондиционер Haier
|
#### CH\_ACHAIER (10) — Кондиционер Haier
|
||||||
|
|
||||||
Проприетарный UART-протокол (НЕ Modbus):
|
Проприетарный UART-протокол (НЕ Modbus):
|
||||||
|
|
||||||
@@ -484,14 +484,14 @@ myhome/s_out/lamp1/hue # текущий оттенок RGB лампы
|
|||||||
"ac_haier": [10, 0] // portNum 0-3
|
"ac_haier": [10, 0] // portNum 0-3
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_COUNTER (20) — Счётчик энергии
|
#### CH\_COUNTER (20) — Счётчик энергии
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"energy": [20, [0.02, 60]], // импульс, период автосуммирования (сек)
|
"energy": [20, [0.02, 60]], // импульс, период автосуммирования (сек)
|
||||||
"gas": [20, 0] // без калибровки
|
"gas": [20, 0] // без калибровки
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CH_MULTIVENT (18) — Многозональная вентиляция
|
#### CH\_MULTIVENT (18) — Многозональная вентиляция
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"multivent": [[18, 5], {
|
"multivent": [[18, 5], {
|
||||||
@@ -684,5 +684,5 @@ LightHub использует **жёстко структурированную,
|
|||||||
|
|
||||||
**Версия документа**: 2.0
|
**Версия документа**: 2.0
|
||||||
**Дата обновления**: 2025-01-24
|
**Дата обновления**: 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)
|
**Источник**: [item.h](../../lighthub/item.h), [item.cpp](../../lighthub/item.cpp)
|
||||||
|
|||||||
@@ -8,29 +8,29 @@
|
|||||||
## Содержание
|
## Содержание
|
||||||
|
|
||||||
1. [Выходные модули (Out)](#выходные-модули)
|
1. [Выходные модули (Out)](#выходные-модули)
|
||||||
- [out_Multivent](#out_multivent---многоканальный-кондиционер-вентиляция)
|
- [out\_Multivent](#out_multivent---многоканальный-кондиционер-вентиляция)
|
||||||
- [out_AC](#out_ac---управление-кондиционером)
|
- [out\_AC](#out_ac---управление-кондиционером)
|
||||||
- [out_PID](#out_pid---пид-регулятор)
|
- [out\_PID](#out_pid---пид-регулятор)
|
||||||
- [out_Relay](#out_relay---электромагнитное-реле)
|
- [out\_Relay](#out_relay---электромагнитное-реле)
|
||||||
- [out_PWM](#out_pwm---широтно-импульсная-модуляция)
|
- [out\_PWM](#out_pwm---широтно-импульсная-модуляция)
|
||||||
- [out_DMX](#out_dmx---dmx512-управление-светом)
|
- [out\_DMX](#out_dmx---dmx512-управление-светом)
|
||||||
- [out_Motor](#out_motor---управление-двигателем)
|
- [out\_Motor](#out_motor---управление-двигателем)
|
||||||
- [out_Elevator](#out_elevator---управление-лифтом)
|
- [out\_Elevator](#out_elevator---управление-лифтом)
|
||||||
- [out_Humidifier](#out_humidifier---управление-увлажнителем)
|
- [out\_Humidifier](#out_humidifier---управление-увлажнителем)
|
||||||
- [out_Counter](#out_counter---автосуммирующий-счётчик)
|
- [out\_Counter](#out_counter---автосуммирующий-счётчик)
|
||||||
- [out_SPILed](#out_spiled---управление-светодиодами)
|
- [out\_SPILed](#out_spiled---управление-светодиодами)
|
||||||
- [out_Mercury](#out_mercury---счётчик-меркурий)
|
- [out\_Mercury](#out_mercury---счётчик-меркурий)
|
||||||
- [out_Sprinkler](#out_sprinkler---система-полива)
|
- [out\_Sprinkler](#out_sprinkler---система-полива)
|
||||||
- [out_UARTBridge](#out_uartbridge---uart-мост)
|
- [out\_UARTBridge](#out_uartbridge---uart-мост)
|
||||||
|
|
||||||
2. [Входные модули (In)](#входные-модули)
|
2. [Входные модули (In)](#входные-модули)
|
||||||
- [in_CCS811_HDC1080](#in_ccs811_hdc1080---датчик-качества-воздуха)
|
- [in\_CCS811\_HDC1080](#in_ccs811_hdc1080---датчик-качества-воздуха)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Выходные модули
|
# Выходные модули
|
||||||
|
|
||||||
## out_Multivent — Многоканальный кондиционер/вентиляция
|
## out\_Multivent — Многоканальный кондиционер/вентиляция
|
||||||
|
|
||||||
### Описание
|
### Описание
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
| XON | 6 |
|
| XON | 6 |
|
||||||
| XOFF | 7 |
|
| XOFF | 7 |
|
||||||
| AUTO | 0xE (14) |
|
| AUTO | 0xE (14) |
|
||||||
| FAN_ONLY | 0xF (15) |
|
| FAN\_ONLY | 0xF (15) |
|
||||||
| HIGH | 0x10 (16) |
|
| HIGH | 0x10 (16) |
|
||||||
| MEDIUM | 0x11 (17) |
|
| MEDIUM | 0x11 (17) |
|
||||||
| LOW | 0x12 (18) |
|
| 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.
|
Управление одиночным кондиционером через проприетарный UART-протокол Haier (9600, кадры 13 байт — команда / 37 байт — ответ). НЕ Modbus.
|
||||||
|
|
||||||
**Основные функции:**
|
**Основные функции:**
|
||||||
- Управление режимом (HEAT, COOL, FAN_ONLY, DRY, AUTO)
|
- Управление режимом (HEAT, COOL, FAN\_ONLY, DRY, AUTO)
|
||||||
- Управление скоростью вентилятора (LOW, MEDIUM, HIGH, OFF или число)
|
- Управление скоростью вентилятора (LOW, MEDIUM, HIGH, OFF или число)
|
||||||
- Управление температурой
|
- Управление температурой
|
||||||
- Поддержка качания жалюзей (SWING)
|
- Поддержка качания жалюзей (SWING)
|
||||||
@@ -158,8 +158,8 @@
|
|||||||
| `portNum` | 0-3 | Номер UART-порта (0 = основной Serial) |
|
| `portNum` | 0-3 | Номер UART-порта (0 = основной Serial) |
|
||||||
| `/set` | 16-40 | Установка температуры |
|
| `/set` | 16-40 | Установка температуры |
|
||||||
| `/fan` | LOW/MEDIUM/HIGH/OFF или число | Скорость вентилятора |
|
| `/fan` | LOW/MEDIUM/HIGH/OFF или число | Скорость вентилятора |
|
||||||
| `/cmd` | AUTO/HEAT/COOL/FAN_ONLY/DRY | Текстовые режимы (payload команды) |
|
| `/cmd` | AUTO/HEAT/COOL/FAN\_ONLY/DRY | Текстовые режимы (payload команды) |
|
||||||
| `/mode` | число (B_MODE) | Режим |
|
| `/mode` | число (B\_MODE) | Режим |
|
||||||
| `/lock` | ON/OFF | Блокировка пульта |
|
| `/lock` | ON/OFF | Блокировка пульта |
|
||||||
| `/swing` | ON/OFF | Качание жалюзей |
|
| `/swing` | ON/OFF | Качание жалюзей |
|
||||||
| `/quiet` | ON/OFF | Тихий режим (legacy «queit» принимается; статус публикуется в `/quiet`) |
|
| `/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%
|
- Регулирование от 0% до 100%
|
||||||
- Поддержка RGB-управления (в base-классе colorChannel)
|
- Поддержка RGB-управления (в base-классе colorChannel)
|
||||||
- Число пинов (1-5) определяет режим: CH_PWM / RGB / RGBW / RGBWW
|
- Число пинов (1-5) определяет режим: CH\_PWM / RGB / RGBW / RGBWW
|
||||||
|
|
||||||
### Тип в JSON
|
### Тип в 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": ...}]
|
[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\_UNKNOWN | 0 | Неизвестное |
|
||||||
| H_READY | 1 | Готов к работе |
|
| H\_READY | 1 | Готов к работе |
|
||||||
| H_PREPARE_FOR_START | 2 | Подготовка к пуску |
|
| H\_PREPARE\_FOR\_START | 2 | Подготовка к пуску |
|
||||||
| H_PREPARE_VALVES | 3 | Подготовка клапанов |
|
| H\_PREPARE\_VALVES | 3 | Подготовка клапанов |
|
||||||
| H_MOTOR_ON | 4 | Мотор работает |
|
| H\_MOTOR\_ON | 4 | Мотор работает |
|
||||||
| H_OPERATE | 5 | В режиме увлажнения |
|
| H\_OPERATE | 5 | В режиме увлажнения |
|
||||||
| H_MOTOR_PAUSE | 6 | Пауза мотора |
|
| H\_MOTOR\_PAUSE | 6 | Пауза мотора |
|
||||||
| H_MOTOR_OFF | 7 | Мотор выключен |
|
| H\_MOTOR\_OFF | 7 | Мотор выключен |
|
||||||
| H_FLUSH | 8 | Промывка системы |
|
| H\_FLUSH | 8 | Промывка системы |
|
||||||
| H_IDLE | 9 | Ожидание |
|
| H\_IDLE | 9 | Ожидание |
|
||||||
| H_MOTOR_OFF_OK | 10 | Мотор выключен (окончательно) |
|
| H\_MOTOR\_OFF\_OK | 10 | Мотор выключен (окончательно) |
|
||||||
| H_FAULT_PRESSURE | -1 | Ошибка давления |
|
| H\_FAULT\_PRESSURE | -1 | Ошибка давления |
|
||||||
| H_FAULT_PRESSURE_KEEP | -2 | Давление не удерживается |
|
| H\_FAULT\_PRESSURE\_KEEP | -2 | Давление не удерживается |
|
||||||
| H_FAULT_OVERPRESSURE | -3 | Перепад давления |
|
| H\_FAULT\_OVERPRESSURE | -3 | Перепад давления |
|
||||||
| H_FAULT_MOTOR_OFF | -4 | Ошибка: мотор не выключился |
|
| 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 пин (данные) |
|
| `data_pin` | int | GPIO пин (данные) |
|
||||||
| `numLeds` | int | Количество светодиодов, деф 43 |
|
| `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
|
### Тип в 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
|
- Прозрачная маршрутизация UART↔UART
|
||||||
- Буферизация пакетов (MAX_PDU = 64 байт)
|
- Буферизация пакетов (MAX\_PDU = 64 байт)
|
||||||
- Логирование трафика
|
- Логирование трафика
|
||||||
- Одна скорость на оба порта. Порты фиксированные: Serial1/Serial2
|
- Одна скорость на оба порта. Порты фиксированные: 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\_Multivent | 18 | Многоканальный кондиционер | PID + MQTT |
|
||||||
| out_AC | 10 | Одиночный кондиционер | Проприетарный UART (Haier) |
|
| out\_AC | 10 | Одиночный кондиционер | Проприетарный UART (Haier) |
|
||||||
| out_PID | 13 | PID-регулятор | MQTT |
|
| out\_PID | 13 | PID-регулятор | MQTT |
|
||||||
| out_Relay | 6 | Электромагнитное реле | GPIO |
|
| out\_Relay | 6 | Электромагнитное реле | GPIO |
|
||||||
| out_PWM | 3 | ШИМ-управление | GPIO-PWM |
|
| out\_PWM | 3 | ШИМ-управление | GPIO-PWM |
|
||||||
| out_DMX | 0 | DMX512 освещение | DMX512 |
|
| out\_DMX | 0 | DMX512 освещение | DMX512 |
|
||||||
| out_Motor | 12 | Управление двигателем | GPIO-пары |
|
| out\_Motor | 12 | Управление двигателем | GPIO-пары |
|
||||||
| out_Elevator | 19 | Управление лифтом | UART |
|
| out\_Elevator | 19 | Управление лифтом | UART |
|
||||||
| out_Humidifier | 21 | Управление увлажнителем | GPIO + датчики |
|
| out\_Humidifier | 21 | Управление увлажнителем | GPIO + датчики |
|
||||||
| out_Counter | 20 | Автосуммирующий счётчик | MQTT |
|
| out\_Counter | 20 | Автосуммирующий счётчик | MQTT |
|
||||||
| out_SPILed | 11 | Адресуемые светодиоды | SPI/GPIO |
|
| out\_SPILed | 11 | Адресуемые светодиоды | SPI/GPIO |
|
||||||
| out_Mercury | 22 | Электросчётчик | Modbus RTU |
|
| out\_Mercury | 22 | Электросчётчик | Modbus RTU |
|
||||||
| out_Sprinkler | 23 | Система полива | GPIO + MQTT |
|
| out\_Sprinkler | 23 | Система полива | GPIO + MQTT |
|
||||||
| out_UARTBridge | 15 | UART-мост | UART↔UART |
|
| out\_UARTBridge | 15 | UART-мост | UART↔UART |
|
||||||
| in_CCS811_HDC1080 | входы T=5 (CCS811) / T=6 (HDC1080) | Качество воздуха | I2C |
|
| in\_CCS811\_HDC1080 | входы T=5 (CCS811) / T=6 (HDC1080) | Качество воздуха | I2C |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -9,27 +9,27 @@
|
|||||||
|
|
||||||
| Type | Модуль | Класс | Описание |
|
| Type | Модуль | Класс | Описание |
|
||||||
|------|--------|-------|---------|
|
|------|--------|-------|---------|
|
||||||
| 0 | DMX | out_dmx | DMX512 управление освещением |
|
| 0 | DMX | out\_dmx | DMX512 управление освещением |
|
||||||
| 3 | PWM | out_pwm | Широтно-импульсная модуляция |
|
| 3 | PWM | out\_pwm | Широтно-импульсная модуляция |
|
||||||
| 4 | Modbus Dimmer | out_Modbus | AC-диммер через Modbus RTU (legacy) |
|
| 4 | Modbus Dimmer | out\_Modbus | AC-диммер через Modbus RTU (legacy) |
|
||||||
| 6 | Реле | out_relay | Управление электромагнитным реле |
|
| 6 | Реле | out\_relay | Управление электромагнитным реле |
|
||||||
| 10 | AC | out_AC | Управление кондиционером (Haier, UART) |
|
| 10 | AC | out\_AC | Управление кондиционером (Haier, UART) |
|
||||||
| 11 | SPI LED | out_SPILed | Адресуемые светодиоды WS2812/APA102 |
|
| 11 | SPI LED | out\_SPILed | Адресуемые светодиоды WS2812/APA102 |
|
||||||
| 12 | Мотор | out_Motor | Управление моторами с обратной связью |
|
| 12 | Мотор | out\_Motor | Управление моторами с обратной связью |
|
||||||
| 13 | PID | out_pid | PID-регулятор |
|
| 13 | PID | out\_pid | PID-регулятор |
|
||||||
| 14 | Modbus | out_Modbus | Modbus устройства (general) |
|
| 14 | Modbus | out\_Modbus | Modbus устройства (general) |
|
||||||
| 15 | UART Bridge | out_UARTbridge | UART-мост между портами |
|
| 15 | UART Bridge | out\_UARTbridge | UART-мост между портами |
|
||||||
| 16 | RELAYX | out_relay | Медленный PWM через реле |
|
| 16 | RELAYX | out\_relay | Медленный PWM через реле |
|
||||||
| 18 | Multivent | out_Multivent | Многозональная вентиляция |
|
| 18 | Multivent | out\_Multivent | Многозональная вентиляция |
|
||||||
| 19 | Лифт | out_Elevator | Управление лифтом (UART) |
|
| 19 | Лифт | out\_Elevator | Управление лифтом (UART) |
|
||||||
| 20 | Счётчик | out_counter | Счётчик импульсов |
|
| 20 | Счётчик | out\_counter | Счётчик импульсов |
|
||||||
| 21 | Увлажнитель | out_humidifier | Форсуночное увлажнение |
|
| 21 | Увлажнитель | out\_humidifier | Форсуночное увлажнение |
|
||||||
| 22 | Меркурий | out_Mercury | Счётчик электроэнергии Меркурий |
|
| 22 | Меркурий | out\_Mercury | Счётчик электроэнергии Меркурий |
|
||||||
| 23 | Полив | out_sprinkler | Система полива |
|
| 23 | Полив | out\_sprinkler | Система полива |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. out_counter — Счётчик импульсов
|
## 1. out\_counter — Счётчик импульсов
|
||||||
|
|
||||||
### Конфигурация (Type 20)
|
### Конфигурация (Type 20)
|
||||||
|
|
||||||
@@ -47,9 +47,9 @@
|
|||||||
|
|
||||||
### Логика работы
|
### Логика работы
|
||||||
|
|
||||||
1. Модуль ждёт команду (S_SET или любой CMD)
|
1. Модуль ждёт команду (S\_SET или любой CMD)
|
||||||
2. При получении команды с процентом > 0 запускается таймер
|
2. При получении команды с процентом > 0 запускается таймер
|
||||||
3. По истечении периода [1] добавляется значение [0] * TENS_BASE
|
3. По истечении периода [1] добавляется значение [0] * TENS\_BASE
|
||||||
4. Считанное значение публикуется в MQTT
|
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** (из обратной связи)
|
1. Модуль сравнивает **targetPos** (из команды 0-255) с **curPos** (из обратной связи)
|
||||||
2. Если разница > POS_ERR (10):
|
2. Если разница > POS\_ERR (10):
|
||||||
- Если targetPos < curPos → движение вниз (pinDown)
|
- Если targetPos < curPos → движение вниз (pinDown)
|
||||||
- Если targetPos > curPos → движение вверх (pinUp)
|
- Если targetPos > curPos → движение вверх (pinUp)
|
||||||
3. При достижении targetPos или maxOnTime мотор останавливается
|
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)
|
### Загружаемые параметры (getConfig)
|
||||||
|
|
||||||
@@ -233,7 +233,7 @@ if (!period) period = 5000UL; // по умолчанию 5 сек
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7. out_counter (Type 20) — детально
|
## 7. out\_counter (Type 20) — детально
|
||||||
|
|
||||||
### Загружаемые параметры (Poll)
|
### Загружаемые параметры (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)
|
### Загружаемые параметры (getConfig)
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@ if (pinDown < 0) {
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 9. out_PID (Type 13) — детально
|
## 9. out\_PID (Type 13) — детально
|
||||||
|
|
||||||
### Загружаемые параметры (getConfig)
|
### Загружаемые параметры (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\_UNKNOWN | 0 | Неизвестное состояние |
|
||||||
| H_READY | 1 | Готов к работе |
|
| H\_READY | 1 | Готов к работе |
|
||||||
| H_PREPARE_FOR_START | 2 | Подготовка к пуску |
|
| H\_PREPARE\_FOR\_START | 2 | Подготовка к пуску |
|
||||||
| H_PREPARE_VALVES | 3 | Открытие форсунок |
|
| H\_PREPARE\_VALVES | 3 | Открытие форсунок |
|
||||||
| H_MOTOR_ON | 4 | Включение насоса |
|
| H\_MOTOR\_ON | 4 | Включение насоса |
|
||||||
| H_OPERATE | 5 | В режиме увлажнения |
|
| H\_OPERATE | 5 | В режиме увлажнения |
|
||||||
| H_MOTOR_PAUSE | 6 | Пауза насоса |
|
| H\_MOTOR\_PAUSE | 6 | Пауза насоса |
|
||||||
| H_MOTOR_OFF | 7 | Выключение насоса |
|
| H\_MOTOR\_OFF | 7 | Выключение насоса |
|
||||||
| H_MOTOR_OFF_OK | 10 | Насос остановлен |
|
| H\_MOTOR\_OFF\_OK | 10 | Насос остановлен |
|
||||||
| H_FLUSH | 8 | Промывка системы |
|
| H\_FLUSH | 8 | Промывка системы |
|
||||||
| H_IDLE | 9 | Ожидание |
|
| H\_IDLE | 9 | Ожидание |
|
||||||
| H_FAULT_PRESSURE | -1 | Ошибка давления |
|
| H\_FAULT\_PRESSURE | -1 | Ошибка давления |
|
||||||
| H_FAULT_PRESSURE_KEEP | -2 | Потеря давления во время работы |
|
| H\_FAULT\_PRESSURE\_KEEP | -2 | Потеря давления во время работы |
|
||||||
| H_FAULT_OVERPRESSURE | -3 | Перепад давления |
|
| H\_FAULT\_OVERPRESSURE | -3 | Перепад давления |
|
||||||
| H_FAULT_MOTOR_OFF | -4 | Отказ насоса |
|
| H\_FAULT\_MOTOR\_OFF | -4 | Отказ насоса |
|
||||||
|
|
||||||
### Логика работы
|
### Логика работы
|
||||||
|
|
||||||
1. **Инициализация**: модуль ждёт команду включения или когда уровень влажности > startLevel
|
1. **Инициализация**: модуль ждёт команду включения или когда уровень влажности > startLevel
|
||||||
2. **Подготовка**: открывает клапаны форсунок, ждёт достижения давления
|
2. **Подготовка**: открывает клапаны форсунок, ждёт достижения давления
|
||||||
3. **Работа**: включает насос, поддерживает давление в диапазоне [MIN_OPERATION_PRESSURE, MAX_OPERATION_PRESSURE]
|
3. **Работа**: включает насос, поддерживает давление в диапазоне [MIN\_OPERATION\_PRESSURE, MAX\_OPERATION\_PRESSURE]
|
||||||
4. **Балансировка**: одновременно открыто не более `capacity` форсунок из группы `N`
|
4. **Балансировка**: одновременно открыто не более `capacity` форсунок из группы `N`
|
||||||
5. **Очистка**: периодическая промывка при давлении FLUSH_PRESSURE
|
5. **Очистка**: периодическая промывка при давлении FLUSH\_PRESSURE
|
||||||
6. **Контроль**: отключение при падении давления ниже MIN_OPERATION_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) — Многозональная вентиляция
|
||||||
|
|
||||||
### Конфигурация
|
### Конфигурация
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ root/[id-устройства или bcst или out]/имя_item/[subitem/]suff
|
|||||||
- `out` — контроллер публикует статус в эти топики
|
- `out` — контроллер публикует статус в эти топики
|
||||||
- **Пример**: `myhome/s_out/lamp1/set` (где `s_out` — значение `out`)
|
- **Пример**: `myhome/s_out/lamp1/set` (где `s_out` — значение `out`)
|
||||||
|
|
||||||
#### 3. **item_name** — имя объекта (канала)
|
#### 3. **item\_name** — имя объекта (канала)
|
||||||
|
|
||||||
Определяется в разделе `items` конфигурации.
|
Определяется в разделе `items` конфигурации.
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ myhome/in/multivent/bedroom/set (установить T в спальне)
|
|||||||
myhome/in/multivent/kitchen/fan (управление вентилятором кухни)
|
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)
|
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 |
|
| **`/hue`** | Command | Оттенок (0-365°, HSV формат) | RGB/RGBW/RGBWW |
|
||||||
| **`/sat`** | Command | Насыщенность (0-100%, HSV формат) | RGB/RGBW/RGBWW |
|
| **`/sat`** | Command | Насыщенность (0-100%, HSV формат) | RGB/RGBW/RGBWW |
|
||||||
| **`/HSV`** | Command | Полный цвет (hue,saturation,volume). Суффикс ЗАГЛАВНЫЙ, строчный `/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 |
|
| **`/temp`** | Command | Цветовая температура 153-500 mireds (RGBWW); у AC — текущая T | RGBWW, AC |
|
||||||
| **`/raw`** | Command | «Сырые» данные, передаваемые драйверу без интерпретации | AC, ELEVATOR |
|
| **`/raw`** | Command | «Сырые» данные, передаваемые драйверу без интерпретации | AC, ELEVATOR |
|
||||||
| **`/fan`** | Command, Status | Скорость вентилятора 0-255 или (HIGH, MEDIUM, LOW, OFF) | AC, Multivent |
|
| **`/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 |
|
| **`/lock`** | Command, Status | Блокировка (ON, OFF) | AC |
|
||||||
| **`/swing`** | Command, Status | Направление воздушного потока (ON, OFF) | AC |
|
| **`/swing`** | Command, Status | Направление воздушного потока (ON, OFF) | AC |
|
||||||
| **`/quiet`** | Command, Status | Тихий режим (ON, OFF) | AC |
|
| **`/quiet`** | Command, Status | Тихий режим (ON, OFF) | AC |
|
||||||
| **`/ctrl`** | Command, Status | Управление состоянием (FREEZE, UNFREEZE, ENABLE, DISABLE) | Специальное |
|
| **`/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
|
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/set → 255 (текущая яркость, 0-255; общий топик s_out/lamp1 — 0-100)
|
||||||
myhome/s_out/lamp1/cmd → ON (последняя команда)
|
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. Брокер отправляет **последний актуальный статус**
|
2. Брокер отправляет **последний актуальный статус**
|
||||||
3. Контроллер восстанавливает все значения: яркость, цвет, температуру и т.д.
|
3. Контроллер восстанавливает все значения: яркость, цвет, температуру и т.д.
|
||||||
|
|
||||||
@@ -394,7 +394,7 @@ curl --user arduino:password -X POST http://192.168.1.10/item/ac_main/mode -d "
|
|||||||
|
|
||||||
1. **Командные широковещательные**: `root/bcst/#`
|
1. **Командные широковещательные**: `root/bcst/#`
|
||||||
2. **Командные индивидуальные**: `root/id-устройства/#`
|
2. **Командные индивидуальные**: `root/id-устройства/#`
|
||||||
3. **Статусные** (только при старте, на 8 сек, TIMEOUT_RETAIN = 8000 мс): `root/out/+/+/#`
|
3. **Статусные** (только при старте, на 8 сек, TIMEOUT\_RETAIN = 8000 мс): `root/out/+/+/#`
|
||||||
4. **Служебные**: `$command` ловится общей подпиской `root/id-устройства/#` (отдельной подписки нет)
|
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)
|
**Источники**: [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)
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ mosquitto_pub -h 192.168.1.100 -t "myhome/in/rgb/HSV" -m "240,100,200"
|
|||||||
|
|
||||||
### Цвет по RGB (не поддерживается)
|
### Цвет по RGB (не поддерживается)
|
||||||
|
|
||||||
> Суффикс `/rgb` **не поддерживается** в текущей сборке (S_RGB не обрабатывается).
|
> Суффикс `/rgb` **не поддерживается** в текущей сборке (S\_RGB не обрабатывается).
|
||||||
> Цвет задаётся через `/HSV` или строкой «h,s,v[,ct]» в общем топике без суффикса.
|
> Цвет задаётся через `/HSV` или строкой «h,s,v[,ct]» в общем топике без суффикса.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -288,7 +288,7 @@ curl http://192.168.1.10/ram/lamp1
|
|||||||
| `/hue` | Оттенок RGB | 0-365° |
|
| `/hue` | Оттенок RGB | 0-365° |
|
||||||
| `/sat` | Насыщенность RGB | 0-100% |
|
| `/sat` | Насыщенность RGB | 0-100% |
|
||||||
| `/HSV` | Полный HSV (ЗАГЛАВНЫЙ) | hue,sat,value |
|
| `/HSV` | Полный HSV (ЗАГЛАВНЫЙ) | hue,sat,value |
|
||||||
| `/rgb` | **Не поддерживается** (S_RGB не обрабатывается) | — |
|
| `/rgb` | **Не поддерживается** (S\_RGB не обрабатывается) | — |
|
||||||
| `/fan` | Вентилятор | LOW, MEDIUM, HIGH, OFF или число|
|
| `/fan` | Вентилятор | LOW, MEDIUM, HIGH, OFF или число|
|
||||||
| `/mode` | Режим работы — число 0-4 (AC); текстовые режимы — через /cmd | 0-4 |
|
| `/mode` | Режим работы — число 0-4 (AC); текстовые режимы — через /cmd | 0-4 |
|
||||||
| `/ctrl` | Управление | ENABLE, DISABLE, FREEZE, UNFREEZE |
|
| `/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)
|
- Полный справочник: [mqtt\_api\_reference.md](mqtt_api_reference.md)
|
||||||
- Справочник суффиксов: [suffixes_reference.md](suffixes_reference.md)
|
- Справочник суффиксов: [suffixes\_reference.md](suffixes_reference.md)
|
||||||
- Примеры конфигураций: [configuration_examples.md](configuration_examples.md)
|
- Примеры конфигураций: [configuration\_examples.md](configuration_examples.md)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# OTA — обновление прошивки по воздуху
|
# OTA — обновление прошивки по воздуху
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «ota_обновление_прошивки_по_воздуху». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «ota\_обновление\_прошивки\_по\_воздуху». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
### OTA
|
### OTA
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
Чтобы прошивка могла успешно обновиться, она должна занимать строго не более 50% flash памяти. Это не является проблемой для всех архитектур, исключая MEGA2560. Данный контроллер имеет очень скромные характеристики, поэтому приходится ужиматься. В пред-компилированной версии для этой архитектуры отключены почти все опциональные модули (DMX, Modbus, 1-wire). Но перекомпилировав проект, можно подключить нужные опции, пожертвовав чем-то еще (например, MDNS)
|
Чтобы прошивка могла успешно обновиться, она должна занимать строго не более 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=опции_компиляции)
|
Подробнее про опции компиляции в разделе [опции компиляции](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 по-умолчанию
|
В примере приведены 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.
|
Примечание (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.
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
Параметр `T` соответствует значению **32** — это тип входа «rotary encoder».
|
Параметр `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`):
|
Настройка в примере ниже переключает локальное устройство `dimmer` между состояниями ON и OFF (команда `toggle`) по однократному клику на энкодер (параметр `click`), а при вращении рукоятки по и против часовой стрелки увеличивает или уменьшает яркость локального устройства `dimmer` соответственно (команды `%+1` и `%-1`):
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ myhome/in/lamp_bedroom/set
|
|||||||
| `/set` | ✅ | ✅ | Установка численного значения | 0-255 (шкала 0-100 — только в общем топике без суффикса) |
|
| `/set` | ✅ | ✅ | Установка численного значения | 0-255 (шкала 0-100 — только в общем топике без суффикса) |
|
||||||
| `/val` | ✅ | ❌ | Вход сенсора (THERMO, PID, MULTIVENT, SPRINKLER) | Число (T / значение) |
|
| `/val` | ✅ | ❌ | Вход сенсора (THERMO, PID, MULTIVENT, SPRINKLER) | Число (T / значение) |
|
||||||
| `/raw` | ✅ | ✅ | «Сырые» данные, передаваемые драйверу без интерпретации | Текст / число |
|
| `/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`.
|
> **Полный список команд** (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**.
|
> `TOGGLE` в `/ctrl` не включает/выключает, а **инвертирует флаг DISABLE**.
|
||||||
@@ -41,7 +41,7 @@ myhome/in/lamp_bedroom/set
|
|||||||
| `/hue` | ✅ | ✅ | Оттенок (HSV) | 0-365° |
|
| `/hue` | ✅ | ✅ | Оттенок (HSV) | 0-365° |
|
||||||
| `/sat` | ✅ | ✅ | Насыщенность (HSV) | 0-100% |
|
| `/sat` | ✅ | ✅ | Насыщенность (HSV) | 0-100% |
|
||||||
| `/HSV` | ✅ | ✅ | Полный цвет (hue,sat,val). Суффикс ЗАГЛАВНЫЙ, строчный `/hsv` игнорируется | `H,S,V` |
|
| `/HSV` | ✅ | ✅ | Полный цвет (hue,sat,val). Суффикс ЗАГЛАВНЫЙ, строчный `/hsv` игнорируется | `H,S,V` |
|
||||||
| `/rgb` | ❌ | ❌ | **Не поддерживается** в текущей сборке (S_RGB нигде не обрабатывается) | — |
|
| `/rgb` | ❌ | ❌ | **Не поддерживается** в текущей сборке (S\_RGB нигде не обрабатывается) | — |
|
||||||
| `/temp` | ✅ | ✅ | Цветовая температура 153-500 mireds (RGBWW); у AC — текущая T | 153-500 |
|
| `/temp` | ✅ | ✅ | Цветовая температура 153-500 mireds (RGBWW); у AC — текущая T | 153-500 |
|
||||||
|
|
||||||
**Примеры**:
|
**Примеры**:
|
||||||
@@ -108,7 +108,7 @@ myhome/in/ac_main/quiet → ON
|
|||||||
| `/cmd` | ✅ | ✅ | Включить/выключить | ON, OFF, TOGGLE |
|
| `/cmd` | ✅ | ✅ | Включить/выключить | ON, OFF, TOGGLE |
|
||||||
| `/set` | ✅ | ✅ | Установленная температура | Текущее значение |
|
| `/set` | ✅ | ✅ | Установленная температура | Текущее значение |
|
||||||
| `/fan` | ✅ | ✅ | Скорость вентилятора (HIGH/MEDIUM/LOW → 255/128/64) | HIGH, MEDIUM, LOW |
|
| `/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-адресация игнорируется) | Лампа, светодиод |
|
| 0 | CH\_DIMMER (DMX 1-4 ch) | `/cmd`, `/set` (subitem-адресация игнорируется) | Лампа, светодиод |
|
||||||
| 1 | CH_RGBW (DMX 4 ch) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV`, `/temp` | RGBW люстра |
|
| 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 |
|
| 2 | CH\_RGB (DMX 3 ch) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` | RGB лента, LED |
|
||||||
| 3 | CH_PWM | `/cmd`, `/set` | PWM вывод |
|
| 3 | CH\_PWM | `/cmd`, `/set` | PWM вывод |
|
||||||
| 4 | CH_MODBUS | `/cmd`, `/set` | Modbus диммер |
|
| 4 | CH\_MODBUS | `/cmd`, `/set` | Modbus диммер |
|
||||||
| 5 | CH_THERMO | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | Термостат |
|
| 5 | CH\_THERMO | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | Термостат |
|
||||||
| 6 | CH_RELAY | `/cmd`, `/set`, `/del` | Реле, розетка |
|
| 6 | CH\_RELAY | `/cmd`, `/set`, `/del` | Реле, розетка |
|
||||||
| 7 | CH_GROUP | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` | Группа каналов |
|
| 7 | CH\_GROUP | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` | Группа каналов |
|
||||||
| 8 | CH_VCTEMP | — | Регулятор Vacon (PID) |
|
| 8 | CH\_VCTEMP | — | Регулятор Vacon (PID) |
|
||||||
| 9 | CH_VC | — | Привод Vacon (Modbus) |
|
| 9 | CH\_VC | — | Привод Vacon (Modbus) |
|
||||||
| 10 | CH_AC (Haier) | `/cmd`, `/set` (16-40), `/mode` (0-4), `/fan`, `/lock`, `/swing`, `/quiet` (legacy `queit`), `/temp`, `/raw` | Кондиционер |
|
| 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 лента |
|
| 11 | CH\_SPILED | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV` + subitem-пиксели 10-20 | Адресуемая LED лента |
|
||||||
| 12 | CH_MOTOR | `/cmd`, `/set` | Сервопривод |
|
| 12 | CH\_MOTOR | `/cmd`, `/set` | Сервопривод |
|
||||||
| 13 | CH_PID | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | PID регулятор, теплые полы |
|
| 13 | CH\_PID | `/cmd`, `/set`, `/val` (вход сенсора), `/ctrl` | PID регулятор, теплые полы |
|
||||||
| 14 | CH_MBUS | `/cmd`, `/set` | Modbus устройство |
|
| 14 | CH\_MBUS | `/cmd`, `/set` | Modbus устройство |
|
||||||
| 15 | CH_UARTBRIDGE | `/cmd`, `/set` | UART-мост |
|
| 15 | CH\_UARTBRIDGE | `/cmd`, `/set` | UART-мост |
|
||||||
| 16 | CH_RELAYX | `/cmd`, `/set`, `/del` | Реле + ШИМ |
|
| 16 | CH\_RELAYX | `/cmd`, `/set`, `/del` | Реле + ШИМ |
|
||||||
| 17 | CH_RGBWW (DMXRGBWW) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV`, `/temp` | Теплый+холодный белый |
|
| 17 | CH\_RGBWW (DMXRGBWW) | `/cmd`, `/set`, `/hue`, `/sat`, `/HSV`, `/temp` | Теплый+холодный белый |
|
||||||
| 18 | CH_MULTIVENT | `/cmd`, `/set`, `/fan` + zone-subitem-ы (`set`, `fan`, `cmd`) | Многозональная вентиляция |
|
| 18 | CH\_MULTIVENT | `/cmd`, `/set`, `/fan` + zone-subitem-ы (`set`, `fan`, `cmd`) | Многозональная вентиляция |
|
||||||
| 19 | CH_ELEVATOR | `/cmd`, `/set`, `/raw` | Лифт |
|
| 19 | CH\_ELEVATOR | `/cmd`, `/set`, `/raw` | Лифт |
|
||||||
| 20 | CH_COUNTER | `/cmd`, `/set` | Счетчик |
|
| 20 | CH\_COUNTER | `/cmd`, `/set` | Счетчик |
|
||||||
| 21 | CH_HUMIDIFIER | `/cmd` | Увлажнитель |
|
| 21 | CH\_HUMIDIFIER | `/cmd` | Увлажнитель |
|
||||||
| 22 | CH_MERCURY | — | Счетчик электроэнергии |
|
| 22 | CH\_MERCURY | — | Счетчик электроэнергии |
|
||||||
| 23 | CH_SPRINKLER | `/cmd`, `/set`, `/val` | Полив (ирригатор) |
|
| 23 | CH\_SPRINKLER | `/cmd`, `/set`, `/val` | Полив (ирригатор) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -319,7 +319,7 @@ myhome/s_out/ac_hallway/fan → HIGH
|
|||||||
], 22]
|
], 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)
|
**Версия документа**: 2.0 (обновлено для соответствия wiki.lazyhome.ru)
|
||||||
**Последнее обновление**: 2024
|
**Последнее обновление**: 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) |
|
| 5 | THERMO | Thermostat | ON/OFF термостат | array | `[24, 33]` (GPIO, T°C) |
|
||||||
| 6 | RELAY | Relay Output | GPIO реле | int | `23` (GPIO pin) |
|
| 6 | RELAY | Relay Output | GPIO реле | int | `23` (GPIO pin) |
|
||||||
| 7 | GROUP | Group Channel | Логическая группа каналов | array | `["lamp1", "lamp2"]` |
|
| 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"]` (адрес, имя) |
|
| 9 | MBUSVC | Vacom Motor | Vacom мотор регулятор | array | `[96, "a_ext"]` (адрес, имя) |
|
||||||
| 10 | ACHAIER | AC Haier | Кондиционер Haier (UART) | int | `1` (порт 0-3) |
|
| 10 | ACHAIER | AC Haier | Кондиционер Haier (UART) | int | `1` (порт 0-3) |
|
||||||
| 11 | SPILED | SPI LED | NeoPixel LED лента | array | `[7, 8]` (data-пин 7, 8 светодиодов) |
|
| 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,...],{...}]` |
|
| 13 | PID | PID Regulator | PID регулятор | array | `[[1.0,0.05,...],{...}]` |
|
||||||
| 14 | MBUS | Modbus | Universal Modbus v2 | array | `[96, "template", {...}]` |
|
| 14 | MBUS | Modbus | Universal Modbus v2 | array | `[96, "template", {...}]` |
|
||||||
| 15 | UARTBRDG | UART Bridge | UART мост | object | `{"serial","baud","ip","port","hd","log","bond"}` |
|
| 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) |
|
| 17 | DMXRGBWW | DMX RGBWW | DMX RGB+2White (5 каналов) | int | `30` (DMX 30-34) |
|
||||||
| 18 | VENTS | Multivent | Многозональная вентиляция | object | `{зоны}` (без Modbus-адреса) |
|
| 18 | VENTS | Multivent | Многозональная вентиляция | object | `{зоны}` (без Modbus-адреса) |
|
||||||
| 19 | ELEVATOR | Elevator | Лифт (реализован) | object | `{"serial":"8N1","baud":19200}` |
|
| 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) |
|
| **Начальное значение** | Опционально (элемент 3) |
|
||||||
| **MQTT примеры** | `myhome/<имя_контроллера>/lamp/cmd ← ON`, `myhome/<имя_контроллера>/lamp/set ← 150` (индивидуальный командный топик) |
|
| **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 формат RGBW** | `255,128,0,100` (R,G,B,W) |
|
||||||
| **MQTT команды** | `/HSV`, `/RGB`, `/hue`, `/sat`, `/temp` |
|
| **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) |
|
| **Формат конфига** | `[2, 15]` (DMX каналы 15-17) |
|
||||||
| **Суффиксы** | /cmd, /val, /set, /hue, /sat, /temp, /RGB |
|
| **Суффиксы** | /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) |
|
| **Частота** | 4000 Гц (Mega2560, таймеры 3/4); на ESP32 PWM недоступен (stub) |
|
||||||
| **Суффиксы** | /cmd, /val, /set |
|
| **Суффиксы** | /cmd, /val, /set |
|
||||||
|
|
||||||
### CH_MODBUS (4) — AC Dimmer (Legacy)
|
### CH\_MODBUS (4) — AC Dimmer (Legacy)
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
| **Назначение** | Управление AC-диммером через Modbus (устаревшее) |
|
| **Назначение** | Управление AC-диммером через Modbus (устаревшее) |
|
||||||
| **Конфигурация** | array `[addr, reg, mask, max_val]` |
|
| **Конфигурация** | 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) |
|
| **Параметры** | - 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\_MBUS (14) для новых проектов** |
|
||||||
|
|
||||||
### CH_THERMO (5) — ON/OFF Термостат
|
### CH\_THERMO (5) — ON/OFF Термостат
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
| **Гистерезис** | Включение при T<уставка−1, выключение при T≥уставка |
|
| **Гистерезис** | Включение при T<уставка−1, выключение при T≥уставка |
|
||||||
| **MQTT команды** | `/set` (целевая T), `/val` (вход текущей температуры) |
|
| **MQTT команды** | `/set` (целевая T), `/val` (вход текущей температуры) |
|
||||||
|
|
||||||
### CH_RELAY (6) — GPIO Реле
|
### CH\_RELAY (6) — GPIO Реле
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
| **Макс. ток** | 40 мА на pin (требуется транзистор для реле) |
|
| **Макс. ток** | 40 мА на pin (требуется транзистор для реле) |
|
||||||
| **Состояния** | 0 = OFF, 1 = ON |
|
| **Состояния** | 0 = OFF, 1 = ON |
|
||||||
|
|
||||||
### CH_GROUP (7) — Группа каналов
|
### CH\_GROUP (7) — Группа каналов
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -158,15 +158,15 @@
|
|||||||
| **Команды** | ON, OFF, TOGGLE, SET (для диммеров) |
|
| **Команды** | ON, OFF, TOGGLE, SET (для диммеров) |
|
||||||
| **Рекурсия** | Поддерживается (группы в группах) |
|
| **Рекурсия** | Поддерживается (группы в группах) |
|
||||||
|
|
||||||
### CH_VCTEMP (8) — Vacom PID Терморегулятор
|
### CH\_VCTEMP (8) — Vacom PID Терморегулятор
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
| **Назначение** | Публикация температуры из VC-канала Vacom |
|
| **Назначение** | Публикация температуры из VC-канала Vacom |
|
||||||
| **Конфигурация** | string — имя_канала_VC (itemArg — строка-имя item типа CH_VC (9)) |
|
| **Конфигурация** | string — имя\_канала\_VC (itemArg — строка-имя item типа CH\_VC (9)) |
|
||||||
| **Пример** | `[8, "fm"]` |
|
| **Пример** | `[8, "fm"]` |
|
||||||
|
|
||||||
### CH_VC (9) — Vacom Мотор-регулятор
|
### CH\_VC (9) — Vacom Мотор-регулятор
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -174,17 +174,17 @@
|
|||||||
| **Конфигурация** | array `[modbus_адрес, "имя_объекта"]` |
|
| **Конфигурация** | array `[modbus_адрес, "имя_объекта"]` |
|
||||||
| **Пример** | `[9, [96, "a_ext"]]` |
|
| **Пример** | `[9, [96, "a_ext"]]` |
|
||||||
|
|
||||||
### CH_AC (10) — Кондиционер Haier
|
### CH\_AC (10) — Кондиционер Haier
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
| **Назначение** | Управление кондиционером Haier |
|
| **Назначение** | Управление кондиционером Haier |
|
||||||
| **Конфигурация** | `[10, portNum(0-3)]` |
|
| **Конфигурация** | `[10, portNum(0-3)]` |
|
||||||
| **Порт** | Номер serial порта (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 байт) |
|
| **Требует** | Проприетарный 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 |
|
| **Протокол** | NeoPixel (один data-пин); по умолчанию Adafruit NeoPixel, при FASTLED — TM1809 |
|
||||||
| **Диапазон пинов** | 0-53 |
|
| **Диапазон пинов** | 0-53 |
|
||||||
|
|
||||||
### CH_MOTOR (12) — Моторная задвижка с обратной связью
|
### CH\_MOTOR (12) — Моторная задвижка с обратной связью
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
| **maxOnTime** | Максимальное время движения (мс, дефолт 10000) |
|
| **maxOnTime** | Максимальное время движения (мс, дефолт 10000) |
|
||||||
| **Команды** | ON — к заданной позиции, OFF — в позицию 0, HALT |
|
| **Команды** | ON — к заданной позиции, OFF — в позицию 0, HALT |
|
||||||
|
|
||||||
### CH_PID (13) — PID Регулятор
|
### CH\_PID (13) — PID Регулятор
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
| **alarm** | Значение аварии |
|
| **alarm** | Значение аварии |
|
||||||
| **min/max** | Диапазон выхода |
|
| **min/max** | Диапазон выхода |
|
||||||
|
|
||||||
### CH_MBUS (14) — Universal Modbus
|
### CH\_MBUS (14) — Universal Modbus
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
| **Params** | Привязка параметров к MQTT/items |
|
| **Params** | Привязка параметров к MQTT/items |
|
||||||
| **Тип данных** | i16, i32, u16, u32, i8h, i8l, u8h, u8l, x10, 100 |
|
| **Тип данных** | 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}` (порты фиксированы) |
|
| **Конфигурация** | object `{serial, baud, ip, port, hd, log, bond}` (порты фиксированы) |
|
||||||
| **Отладка** | Может логировать через UDP |
|
| **Отладка** | Может логировать через UDP |
|
||||||
|
|
||||||
### CH_RELAYX (16) — Медленный PWM через реле
|
### CH\_RELAYX (16) — Медленный PWM через реле
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -247,16 +247,16 @@
|
|||||||
| **Период** | Цикл коммутации в секундах (дефолт 5 с, ограничений нет) |
|
| **Период** | Цикл коммутации в секундах (дефолт 5 с, ограничений нет) |
|
||||||
| **Применение** | Система напольного отопления, тепловые системы |
|
| **Применение** | Система напольного отопления, тепловые системы |
|
||||||
|
|
||||||
### CH_RGBWW (17) — DMX RGBWW
|
### CH\_RGBWW (17) — DMX RGBWW
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
| **Назначение** | RGB + Тёплый белый + Холодный белый |
|
| **Назначение** | RGB + Тёплый белый + Холодный белый |
|
||||||
| **Конфигурация** | int (стартовый DMX) |
|
| **Конфигурация** | int (стартовый DMX) |
|
||||||
| **Каналов DMX** | 5 (R, G, B, W_warm, W_cold) |
|
| **Каналов DMX** | 5 (R, G, B, W\_warm, W\_cold) |
|
||||||
| **Формат** | DMX 30-34 (5 каналов) |
|
| **Формат** | DMX 30-34 (5 каналов) |
|
||||||
|
|
||||||
### CH_MULTIVENT (18) — Многозональная вентиляция
|
### CH\_MULTIVENT (18) — Многозональная вентиляция
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -266,15 +266,15 @@
|
|||||||
| **PID** | Для каждой зоны свои коэффициенты |
|
| **PID** | Для каждой зоны свои коэффициенты |
|
||||||
| **itemArg** | объект зон (не массив с адресом) |
|
| **itemArg** | объект зон (не массив с адресом) |
|
||||||
|
|
||||||
### CH_ELEVATOR (19) — Лифт
|
### CH\_ELEVATOR (19) — Лифт
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
| **Назначение** | Управление лифтом |
|
| **Назначение** | Управление лифтом |
|
||||||
| **Конфигурация** | `[19, {"serial":"8N1","baud":19200,"log":...}]` |
|
| **Конфигурация** | `[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-входа в конфиге нет) |
|
| **Вход** | Внешние импульсы (GPIO-входа в конфиге нет) |
|
||||||
|
|
||||||
### CH_HUMIDIFIER (21) — Увлажнитель
|
### CH\_HUMIDIFIER (21) — Увлажнитель
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
| **Назначение** | Управление увлажнителем воздуха (только один в системе) |
|
| **Назначение** | Управление увлажнителем воздуха (только один в системе) |
|
||||||
| **Конфигурация** | array `[[pumpPin, flushPin, pressurePin, maxPumpTime, idleTime, capacity, minLevel, startLevel], {зоны_краны}, motorExecObj, faultExecObj]` |
|
| **Конфигурация** | 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 цифр |
|
| **Пароль** | Строка из 6 цифр или массив 6 цифр |
|
||||||
| **PollingInterval** | Интервал опроса (мс, дефолт 10000) |
|
| **PollingInterval** | Интервал опроса (мс, дефолт 10000) |
|
||||||
|
|
||||||
### CH_SPRINKLER (23) — Система полива
|
### CH\_SPRINKLER (23) — Система полива
|
||||||
|
|
||||||
| Параметр | Значение |
|
| Параметр | Значение |
|
||||||
|----------|----------|
|
|----------|----------|
|
||||||
@@ -425,9 +425,9 @@
|
|||||||
|-----|---------------------------|
|
|-----|---------------------------|
|
||||||
| SPRINKLER (23) | due, esp32-wifi, esp32c3-wifi, lighthub21, nrf52840 |
|
| SPRINKLER (23) | due, esp32-wifi, esp32c3-wifi, lighthub21, nrf52840 |
|
||||||
| MERCURY (22) | due, lighthub21, stm32 |
|
| MERCURY (22) | due, lighthub21, stm32 |
|
||||||
| ELEVATOR (19) | только custom-build mega2560-optiboot (ELEVATOR_ENABLE) |
|
| ELEVATOR (19) | только custom-build mega2560-optiboot (ELEVATOR\_ENABLE) |
|
||||||
| HUMIDIFIER (21) | только custom-build lighthub21 (HUMIDIFIER_ENABLE) |
|
| HUMIDIFIER (21) | только custom-build lighthub21 (HUMIDIFIER\_ENABLE) |
|
||||||
| UARTBRIDGE (15) | закомментирован во всех стандартных build-flags (UARTBRIDGE_ENABLE) |
|
| UARTBRIDGE (15) | закомментирован во всех стандартных build-flags (UARTBRIDGE\_ENABLE) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Интерфейс настройки контроллера
|
# Интерфейс настройки контроллера
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «интерфейс_настройки». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «интерфейс\_настройки». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
### Интерфейс настройки контроллера
|
### Интерфейс настройки контроллера
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
* Появляется возможность поиска контроллеров в вашей локальной сети, так как в них давно реализован протокол MDNS
|
* Появляется возможность поиска контроллеров в вашей локальной сети, так как в них давно реализован протокол MDNS
|
||||||
|
|
||||||
Недостаток тут только один - надо потратить 5 минут на установку этого плагина.
|
Недостаток тут только один - надо потратить 5 минут на установку этого плагина.
|
||||||
Так как браузер не имеет прав просканировать локальную сеть на предмет наличия контроллеров, плагин использует утилиту zeroconf_lookup которая была разработана в рамках открытого проекта https://github.com/railduino/zeroconf-lookup
|
Так как браузер не имеет прав просканировать локальную сеть на предмет наличия контроллеров, плагин использует утилиту zeroconf\_lookup которая была разработана в рамках открытого проекта https://github.com/railduino/zeroconf-lookup
|
||||||
|
|
||||||
На базе этого проекта, я сделал прототип плагина для конфигурирования контроллеров lighthub
|
На базе этого проекта, я сделал прототип плагина для конфигурирования контроллеров lighthub
|
||||||
https://github.com/anklimov/zeroconf-lighthub
|
https://github.com/anklimov/zeroconf-lighthub
|
||||||
@@ -58,21 +58,21 @@ https://github.com/anklimov/zeroconf-lighthub
|
|||||||
* Для этого открываем браузер chrome, в меню "расширения" выбираем "управление расширениями".
|
* Для этого открываем браузер chrome, в меню "расширения" выбираем "управление расширениями".
|
||||||
* Включаем переключатель "режим разработчика",
|
* Включаем переключатель "режим разработчика",
|
||||||
* нажимаем кнопку"Загрузить распакованное расширение".
|
* нажимаем кнопку"Загрузить распакованное расширение".
|
||||||
* Выбираем папку __zeroconf-lighthub-master/Chrome__ в распакованном на предыдущем этапе архиве
|
* Выбираем папку _\_zeroconf-lighthub-master/Chrome_\_ в распакованном на предыдущем этапе архиве
|
||||||
* Расширение устанавливается, заглядываем на страницу его свойств и копируем идентификатор расширения (например gepnlbipogackhpjkojhkonkijdgpgji ) это нам пригодится чуть позже
|
* Расширение устанавливается, заглядываем на страницу его свойств и копируем идентификатор расширения (например gepnlbipogackhpjkojhkonkijdgpgji ) это нам пригодится чуть позже
|
||||||
|
|
||||||
### Как установить утилиту:
|
### Как установить утилиту:
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
- Переходите в каталог __zeroconf-lighthub-master\Windows_Go__
|
- Переходите в каталог _\_zeroconf-lighthub-master\Windows\_Go_\_
|
||||||
- Из командной строки запускаете - `zeroconf_lookup.exe -i -с gepnlbipogackhpjkojhkonkijdgpgji` (тут укажите ваш идентификатор расширения, скопированный на предыдущем этапе)
|
- Из командной строки запускаете - `zeroconf_lookup.exe -i -с gepnlbipogackhpjkojhkonkijdgpgji` (тут укажите ваш идентификатор расширения, скопированный на предыдущем этапе)
|
||||||
- После этого переносить данный файл с этого места или удалять папку нельзя
|
- После этого переносить данный файл с этого места или удалять папку нельзя
|
||||||
- Если ставили плагин из магазина приложений - можно при запуске не указывать идентификатор расширения. `zeroconf_lookup.exe -i`
|
- Если ставили плагин из магазина приложений - можно при запуске не указывать идентификатор расширения. `zeroconf_lookup.exe -i`
|
||||||
|
|
||||||
### MacOS
|
### MacOS
|
||||||
|
|
||||||
то же самое, только выполнимый файл лежит в директории __zeroconf-lighthub/Apple_Go__
|
то же самое, только выполнимый файл лежит в директории _\_zeroconf-lighthub/Apple\_Go_\_
|
||||||
|
|
||||||
### Использование
|
### Использование
|
||||||
|
|
||||||
@@ -83,6 +83,6 @@ https://github.com/anklimov/zeroconf-lighthub
|
|||||||
## Сверка с кодом (2026-10-02)
|
## Сверка с кодом (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 контроллера.
|
- Корректно: обращение по адресу контроллера (`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).
|
- Корректно: веб-контент не размещается в памяти контроллера — в коде есть только HTTP API: `GET/POST /item/<имя>`, `GET /ram/[<имя>]`, `POST /command/<команда>` (подача CLI-команд по HTTP), `POST /config.json` (локальное изменение конфига отключает загрузку с портала, main.cpp:368-374).
|
||||||
- Примечание: ограничение Chrome на доступ внешних страниц к локальной сети — особенность браузеров, описана верно; рекомендация по fireFox/плагину актуальна.
|
- Примечание: ограничение Chrome на доступ внешних страниц к локальной сети — особенность браузеров, описана верно; рекомендация по fireFox/плагину актуальна.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Заливка прошивки
|
# Заливка прошивки
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «заливка_прошивки». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «заливка\_прошивки». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
## Заливка уже откомпилированной прошивки
|
## Заливка уже откомпилированной прошивки
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
Далее, нажимаем зеленую кнопку "Clone or download"
|
Далее, нажимаем зеленую кнопку "Clone or download"
|
||||||
Выбираем пункт "Download ZIP", скачиваем и распаковываем архив
|
Выбираем пункт "Download ZIP", скачиваем и распаковываем архив
|
||||||
|
|
||||||
Переходим в директорию lighthub-master/compiled/<требуемая_платформа> (список платформ выше)
|
Переходим в директорию lighthub-master/compiled/<требуемая\_платформа> (список платформ выше)
|
||||||
|
|
||||||
Подключаете плату USB кабелем к компьютеру (кроме платформы NRF52 - там программирование только при помощи специального устройства JLink, об этом позже)
|
Подключаете плату USB кабелем к компьютеру (кроме платформы NRF52 - там программирование только при помощи специального устройства JLink, об этом позже)
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
В Atom или VSC выбираем пункт "Открыть директорию" (Open Folder), и указываем директорию lighthub.master (или в директорию lighthub если использовался git)
|
В Atom или VSC выбираем пункт "Открыть директорию" (Open Folder), и указываем директорию lighthub.master (или в директорию lighthub если использовался git)
|
||||||
|
|
||||||
Далее, выбираем файл platformio.ini и раскомментариваем в нем нужный вам вариант платформы (платы) в пункте env_default (убираем ; перед строкой, содержащей нужную платформу, добавляем - перед строкой, содержащей ненужные платформы)
|
Далее, выбираем файл platformio.ini и раскомментариваем в нем нужный вам вариант платформы (платы) в пункте env\_default (убираем ; перед строкой, содержащей нужную платформу, добавляем - перед строкой, содержащей ненужные платформы)
|
||||||
|
|
||||||
NEW - если используете среду VSC (рекомендуется) - то можете ничего не комментировать/раскомментировать а просто выбрать нужную платформу в меню "switch PlatformIO Project environment" (нажмите на Default (lighthub) в самом низу экрана)
|
NEW - если используете среду VSC (рекомендуется) - то можете ничего не комментировать/раскомментировать а просто выбрать нужную платформу в меню "switch PlatformIO Project environment" (нажмите на Default (lighthub) в самом низу экрана)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# LightHub на разном железе
|
# LightHub на разном железе
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «lighthub_на_разном_железе». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «lighthub\_на\_разном\_железе». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
Прошивка может компилироваться и работать на следующих аппаратных платформах:
|
Прошивка может компилироваться и работать на следующих аппаратных платформах:
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# MAC-адрес контроллера
|
# MAC-адрес контроллера
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «mac_адрес». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «mac\_адрес». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
Важно, чтобы у вашего контроллера был уникальный MAC адрес.
|
Важно, чтобы у вашего контроллера был уникальный MAC адрес.
|
||||||
Это важно не только потому, что в пределах одной локальной сети два контроллера с одинаковыми MAC не могут работать но еще и потому, что при старте, контроллер загружает с сервера конфигураций или с других контроллеров по шине CAN свою настройку, используя MAC как свой уникальный ключ.
|
Это важно не только потому, что в пределах одной локальной сети два контроллера с одинаковыми MAC не могут работать но еще и потому, что при старте, контроллер загружает с сервера конфигураций или с других контроллеров по шине CAN свою настройку, используя MAC как свой уникальный ключ.
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
| Платформа | Механизм в коде | Строки | Соответствие wiki |
|
| Платформа | Механизм в коде | Строки | Соответствие wiki |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| (все) `CUSTOM_FIRMWARE_MAC` | MAC разбирается из build-flag (`parseBytes(macStr, ':', ...)`), затем принудительно: `mac[0] &= 0xFE; mac[0] \|= 2;` (locally-administered, не multicast) | main.cpp:2823-2828 | ✅ «опция CUSTOM_FIRMWARE_MAC» |
|
| (все) `CUSTOM_FIRMWARE_MAC` | MAC разбирается из build-flag (`parseBytes(macStr, ':', ...)`), затем принудительно: `mac[0] &= 0xFE; mac[0] \|= 2;` (locally-administered, не multicast) | main.cpp:2823-2828 | ✅ «опция CUSTOM\_FIRMWARE\_MAC» |
|
||||||
| ESP8266/ESP32 (`WIFI_ENABLE`) | Используется штатный MAC чипа: `WiFi.macAddress(sysConf.mac)` | main.cpp:2830-2833 | ✅ «ESP и так имеют уникальные адреса» |
|
| ESP8266/ESP32 (`WIFI_ENABLE`) | Используется штатный MAC чипа: `WiFi.macAddress(sysConf.mac)` | main.cpp:2830-2833 | ✅ «ESP и так имеют уникальные адреса» |
|
||||||
| DUE (`__SAM3X8E__`) / STM32 (`ARDUINO_ARCH_STM32`) | MAC генерируется из серийного номера чипа: `mac[0]=0xDE;` остальные байты = сумма байтов `UniqueID.UID_Byte[]` | main.cpp:2835-2840 | ✅ «DUE и STM имеют уникальный ID чипа» |
|
| DUE (`__SAM3X8E__`) / STM32 (`ARDUINO_ARCH_STM32`) | MAC генерируется из серийного номера чипа: `mac[0]=0xDE;` остальные байты = сумма байтов `UniqueID.UID_Byte[]` | main.cpp:2835-2840 | ✅ «DUE и STM имеют уникальный ID чипа» |
|
||||||
| fallback `DEFAULT_FIRMWARE_MAC` | Хардкод `{0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xFF}` | options.h:180 | (доп. fallback, в wiki не описан) |
|
| fallback `DEFAULT_FIRMWARE_MAC` | Хардкод `{0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xFF}` | options.h:180 | (доп. fallback, в wiki не описан) |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Входы и выходы платы LightHub
|
# Входы и выходы платы LightHub
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «входы_выходы». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «входы\_выходы». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
## Электропитание
|
## Электропитание
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ DCDC преобразователь может работать в двух ре
|
|||||||
Режим питания платы Ардуино выбирается джампером J4 (желто-фиолетовый на рисунке ниже)
|
Режим питания платы Ардуино выбирается джампером J4 (желто-фиолетовый на рисунке ниже)
|
||||||
В "желтом" режиме, Ардуино питается с выхода DCDC, в фиолетовом - от входного питания.
|
В "желтом" режиме, Ардуино питается с выхода DCDC, в фиолетовом - от входного питания.
|
||||||
|
|
||||||
_Важно: при использовании второго (фиолетового) режима, контроллер следует питать от источника 12В. Использование источника 24В выведет процессорную плату из строя_~~
|
\_Важно: при использовании второго (фиолетового) режима, контроллер следует питать от источника 12В. Использование источника 24В выведет процессорную плату из строя\_~~
|
||||||
|
|
||||||
Внимание: Используйте контроллер версии 2.2 ТОЛЬКО в режиме, когда плата Ардуино питается от DCDC преобразователя. (J4 в Желтом режиме). Испытания показали, что DCDC преобразователь в ином случае работает нестабильно.
|
Внимание: Используйте контроллер версии 2.2 ТОЛЬКО в режиме, когда плата Ардуино питается от DCDC преобразователя. (J4 в Желтом режиме). Испытания показали, что DCDC преобразователь в ином случае работает нестабильно.
|
||||||
|
|
||||||
@@ -45,9 +45,9 @@ _Важно: при использовании второго (фиолетов
|
|||||||
|
|
||||||
Контроллер поставляется с перемычками, установленными для работе в диапазоне питающих напряжений 12-24В и UEXT 3,3В
|
Контроллер поставляется с перемычками, установленными для работе в диапазоне питающих напряжений 12-24В и UEXT 3,3В
|
||||||
|
|
||||||
_Внимание: логические уровни сигналов на разъеме UEXT соответствуют применяемой процессорной плате: 5В для MEGA2560 и 3,3В для DUE_
|
\_Внимание: логические уровни сигналов на разъеме UEXT соответствуют применяемой процессорной плате: 5В для MEGA2560 и 3,3В для DUE\_
|
||||||
|
|
||||||
_Подача уровней, превышающие данные значения, могут вывести процессор из строя._
|
\_Подача уровней, превышающие данные значения, могут вывести процессор из строя.\_
|
||||||
|
|
||||||
## Версия платы 2.2
|
## Версия платы 2.2
|
||||||
|
|
||||||
@@ -62,10 +62,10 @@ _Подача уровней, превышающие данные значени
|
|||||||
Выберете по таблице интересующий вход или выход, найдите в таблице номер MPU PIN, его используйте в конфиге
|
Выберете по таблице интересующий вход или выход, найдите в таблице номер MPU PIN, его используйте в конфиге
|
||||||
Также, таблица пригодится чтобы преобразовать названия аналоговых каналов в цифровой номер PIN
|
Также, таблица пригодится чтобы преобразовать названия аналоговых каналов в цифровой номер PIN
|
||||||
|
|
||||||
_Внимание: максимальные уровни сигналов на клеммниках PWM 0-3, PWM 10, и разъеме RJ-45 (UNPROT 0-7) соответствуют применяемой процессорной плате: 5В для MEGA2560 и 3,3В для DUE_
|
\_Внимание: максимальные уровни сигналов на клеммниках PWM 0-3, PWM 10, и разъеме RJ-45 (UNPROT 0-7) соответствуют применяемой процессорной плате: 5В для MEGA2560 и 3,3В для DUE\_
|
||||||
|
|
||||||
_Подача на данные разъемы напряжений, превышающие данные значения, могут вывести процессор из строя._
|
\_Подача на данные разъемы напряжений, превышающие данные значения, могут вывести процессор из строя.\_
|
||||||
_Данные входы не защищены. Подключайте к ним только локальную слаботочную нагрузку_
|
\_Данные входы не защищены. Подключайте к ним только локальную слаботочную нагрузку\_
|
||||||
|
|
||||||
| Mnemonic | MPU PIN # | Plug | Plug PIN | Gnd | Comment |
|
| Mnemonic | MPU PIN # | Plug | Plug PIN | Gnd | Comment |
|
||||||
|---|---|---|---|---|---|
|
|---|---|---|---|---|---|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Подключение 1-Wire датчиков
|
# Подключение 1-Wire датчиков
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «подключение_1-wire_датчиков». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «подключение\_1-wire\_датчиков». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
## Подключение к контроллеру
|
## Подключение к контроллеру
|
||||||
|
|
||||||
@@ -27,11 +27,11 @@
|
|||||||
},
|
},
|
||||||
```
|
```
|
||||||
|
|
||||||
АДРЕС_ДАТЧИКА в виде: 282DA307D6013C08
|
АДРЕС\_ДАТЧИКА в виде: 282DA307D6013C08
|
||||||
|
|
||||||
## MQTT
|
## MQTT
|
||||||
|
|
||||||
Подписываемся на топик "myhome/s_out/Temperature01" и получаем значения температуры.
|
Подписываемся на топик "myhome/s\_out/Temperature01" и получаем значения температуры.
|
||||||
|
|
||||||
## Простой релейный термостат (теплый пол)
|
## Простой релейный термостат (теплый пол)
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
|
|
||||||
Суффикс /val при передаче температуры локальным обьектам можно не добавлять
|
Суффикс /val при передаче температуры локальным обьектам можно не добавлять
|
||||||
|
|
||||||
Значение температуры, также, может быть принято с внешних систем или иных контроллеров по MQTT c использованием топика формата /myhome/controller-id/local_termostat/val
|
Значение температуры, также, может быть принято с внешних систем или иных контроллеров по MQTT c использованием топика формата /myhome/controller-id/local\_termostat/val
|
||||||
|
|
||||||
При отсутствии показаний в течение 10 мин термостат отключается и переходит в аварийный режим, выдавая аварию в топик /alarm
|
При отсутствии показаний в течение 10 мин термостат отключается и переходит в аварийный режим, выдавая аварию в топик /alarm
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ CAN-шины очень широко используются в промышл
|
|||||||
| 7 | `sysCmd` | Системные команды (см. commandType) |
|
| 7 | `sysCmd` | Системные команды (см. commandType) |
|
||||||
| 8 | `rawPinCtrl` | Прямое управление пинами |
|
| 8 | `rawPinCtrl` | Прямое управление пинами |
|
||||||
|
|
||||||
### Формат данных (datagram_t)
|
### Формат данных (datagram\_t)
|
||||||
|
|
||||||
```c
|
```c
|
||||||
enum metricType { MAC=1, IP=2, NetMask=3, GW=4, DNS=5, UpTime=6, Salt=7 };
|
enum metricType { MAC=1, IP=2, NetMask=3, GW=4, DNS=5, UpTime=6, Salt=7 };
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Интеграция с Home Assistant
|
# Интеграция с Home Assistant
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «интеграция_с_homeassistant». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «интеграция\_с\_homeassistant». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
Контроллер LightHub прекрасно интегрируется в систему Home Assistant с использованием MQTT
|
Контроллер LightHub прекрасно интегрируется в систему Home Assistant с использованием MQTT
|
||||||
|
|
||||||
|
|||||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 50 KiB |
@@ -1,6 +1,6 @@
|
|||||||
# Настройка Modbus
|
# Настройка Modbus
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страницы «настройка_modbus» и «режим_шлюза_ip_modbus». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страницы «настройка\_modbus» и «режим\_шлюза\_ip\_modbus». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
## Функциональность драйвера Modbus v2
|
## Функциональность драйвера Modbus v2
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ LightHub можно настроить на работу в качестве ш
|
|||||||
|
|
||||||
В примере выше:
|
В примере выше:
|
||||||
|
|
||||||
- "t_heat" - имя параметра устройства.
|
- "t\_heat" - имя параметра устройства.
|
||||||
- "reg" - регистр (или стартовый HOLDING REGISTER) параметра
|
- "reg" - регистр (или стартовый HOLDING REGISTER) параметра
|
||||||
- "ir" - INPUT REGISTER или "reg"- HOLDING REGISTER или "coil": COIL или "din" - DISCRETE INPUT
|
- "ir" - INPUT REGISTER или "reg"- HOLDING REGISTER или "coil": COIL или "din" - DISCRETE INPUT
|
||||||
- "map" - правила преобразования (TBD)
|
- "map" - правила преобразования (TBD)
|
||||||
@@ -162,10 +162,10 @@ LightHub можно настроить на работу в качестве ш
|
|||||||
Устройство опрашивается согласно настройкам в библиотеке. А вот результаты опроса используются согласно настройкам в items.
|
Устройство опрашивается согласно настройкам в библиотеке. А вот результаты опроса используются согласно настройкам в items.
|
||||||
В данном примере,
|
В данном примере,
|
||||||
|
|
||||||
- "ch1" передается в MQTT топик "myhome/s_out/aaa1" плюс локальному устройству "localdimmer1"
|
- "ch1" передается в MQTT топик "myhome/s\_out/aaa1" плюс локальному устройству "localdimmer1"
|
||||||
- "ch2" передается в MQTT топик "abc/aaa2" (если в названии топика есть / - он не дополняется слева статусным префиксом)
|
- "ch2" передается в MQTT топик "abc/aaa2" (если в названии топика есть / - он не дополняется слева статусным префиксом)
|
||||||
- "ch3" передается локальному устройству "localdimmer3"
|
- "ch3" передается локальному устройству "localdimmer3"
|
||||||
- "ch4" передается в MQTT топик "myhome/s_out/aaa4" и "myhome/s_out/aaa44", локальному устройству "localdimmer4" и "localdimmer44" (использован массив из двух JSON объектов)
|
- "ch4" передается в MQTT топик "myhome/s\_out/aaa4" и "myhome/s\_out/aaa44", локальному устройству "localdimmer4" и "localdimmer44" (использован массив из двух JSON объектов)
|
||||||
|
|
||||||
Строки ch1 - ch4 в данном примере, определенные в третем параметре массива конфигурации, далее будем называть "именованными параметрами modbus item"
|
Строки ch1 - ch4 в данном примере, определенные в третем параметре массива конфигурации, далее будем называть "именованными параметрами modbus item"
|
||||||
|
|
||||||
@@ -328,18 +328,18 @@ NB. Не надо именовать данные параметры имена
|
|||||||
items:{
|
items:{
|
||||||
"p_zal3":[14,[2,"panel",
|
"p_zal3":[14,[2,"panel",
|
||||||
{
|
{
|
||||||
"fan" :{"emit":"edem/air/vents/zal3/fan"},
|
"fan" :{"emit":"house/air/vents/zal3/fan"},
|
||||||
"mode":{"emit":"edem/air/vents/zal3/mode"},
|
"mode":{"emit":"house/air/vents/zal3/mode"},
|
||||||
"pwr" :{"emit":"edem/air/vents/zal3/pwr"},
|
"pwr" :{"emit":"house/air/vents/zal3/pwr"},
|
||||||
|
|
||||||
"sethum":{"emit":"edem/air/humzal3/set"},
|
"sethum":{"emit":"house/air/humzal3/set"},
|
||||||
"hum" :{"emit":"edem/air/humzal3/val","@S":null},
|
"hum" :{"emit":"house/air/humzal3/val","@S":null},
|
||||||
|
|
||||||
"setvoc":{"emit":"edem/air/voczal3/set"},
|
"setvoc":{"emit":"house/air/voczal3/set"},
|
||||||
"voc" :{"emit":"edem/air/voczal3/val"},
|
"voc" :{"emit":"house/air/voczal3/val"},
|
||||||
|
|
||||||
"settemp" :{"item":"tzal3/set"},
|
"settemp" :{"item":"tzal3/set"},
|
||||||
"roomtemp" :{"emit":"edem/fl2/term_bedr/1/val"},
|
"roomtemp" :{"emit":"house/fl2/term_bedr/1/val"},
|
||||||
"ch_temp":{},
|
"ch_temp":{},
|
||||||
"ch_hum":{},
|
"ch_hum":{},
|
||||||
"ext_temp":{},
|
"ext_temp":{},
|
||||||
@@ -359,7 +359,7 @@ NB. Не надо именовать данные параметры имена
|
|||||||
Например так:
|
Например так:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"fan" :{"emit":"edem/air/vents/zal3/fan","@V":null},
|
"fan" :{"emit":"house/air/vents/zal3/fan","@V":null},
|
||||||
```
|
```
|
||||||
|
|
||||||
В этом случае, после того, как мы что-то записали в регистр, при следующем же опросе устройства, это будет обнаружено (если значение изменилось) и будут предприняты настроенные действия (например, значение будет отправлено по MQTT и отобразится в мобильном приложении Home Assistant)
|
В этом случае, после того, как мы что-то записали в регистр, при следующем же опросе устройства, это будет обнаружено (если значение изменилось) и будут предприняты настроенные действия (например, значение будет отправлено по MQTT и отобразится в мобильном приложении Home Assistant)
|
||||||
@@ -433,12 +433,12 @@ RAW 14
|
|||||||
"vent":[14,[247,"airset",
|
"vent":[14,[247,"airset",
|
||||||
|
|
||||||
{
|
{
|
||||||
"tset":{"emit":"edem/s_out/vent/tset/set","@V":null},
|
"tset":{"emit":"house/s_out/vent/tset/set","@V":null},
|
||||||
"pmode":{"emit":"edem/s_out/vent/pmode/set","@V":null},
|
"pmode":{"emit":"house/s_out/vent/pmode/set","@V":null},
|
||||||
"fanspeed":{"emit":"edem/s_out/vent/fanspeed/set","@V":null},
|
"fanspeed":{"emit":"house/s_out/vent/fanspeed/set","@V":null},
|
||||||
"on":{"emit":"edem/s_out/vent/on/set","@V":null},
|
"on":{"emit":"house/s_out/vent/on/set","@V":null},
|
||||||
|
|
||||||
"rtemp":{"emit":"edem/s_out/vent/rtemp"},
|
"rtemp":{"emit":"house/s_out/vent/rtemp"},
|
||||||
|
|
||||||
"fanmin":{},
|
"fanmin":{},
|
||||||
"fanmax":{}
|
"fanmax":{}
|
||||||
@@ -460,7 +460,7 @@ RAW 14
|
|||||||
- AUTO
|
- AUTO
|
||||||
- ON
|
- ON
|
||||||
- HEAT
|
- HEAT
|
||||||
- FAN_ONLY
|
- FAN\_ONLY
|
||||||
Для команды OFF записываем 0
|
Для команды OFF записываем 0
|
||||||
|
|
||||||
Это реализуется строкой
|
Это реализуется строкой
|
||||||
@@ -527,20 +527,20 @@ RAW 14
|
|||||||
"vent":[14,[247,"airset",
|
"vent":[14,[247,"airset",
|
||||||
|
|
||||||
{
|
{
|
||||||
"tset":{"emit":"edem/s_out/vent/set","@V":null},
|
"tset":{"emit":"house/s_out/vent/set","@V":null},
|
||||||
"pmode":{"emit":"edem/s_out/vent/cmd","@V":null},
|
"pmode":{"emit":"house/s_out/vent/cmd","@V":null},
|
||||||
"fanspeed":{"emit":"edem/s_out/vent/fan","@V":null},
|
"fanspeed":{"emit":"house/s_out/vent/fan","@V":null},
|
||||||
"on":{"emit":"edem/s_out/vent/oncmd","@V":null},
|
"on":{"emit":"house/s_out/vent/oncmd","@V":null},
|
||||||
|
|
||||||
"ruheat":{"emit":"edem/s_out/vent/ruheat"},
|
"ruheat":{"emit":"house/s_out/vent/ruheat"},
|
||||||
"ruslow":{"emit":"edem/s_out/vent/rupump"},
|
"ruslow":{"emit":"house/s_out/vent/rupump"},
|
||||||
"ramode":{"emit":"edem/s_out/vent/ramode"},
|
"ramode":{"emit":"house/s_out/vent/ramode"},
|
||||||
"rfanspd":{"emit":"edem/s_out/vent/rfanspd"},
|
"rfanspd":{"emit":"house/s_out/vent/rfanspd"},
|
||||||
"rfanlvl":{"emit":"edem/s_out/vent/rfanlvl"},
|
"rfanlvl":{"emit":"house/s_out/vent/rfanlvl"},
|
||||||
"rpumpon":{"emit":"edem/s_out/vent/rpumpon"},
|
"rpumpon":{"emit":"house/s_out/vent/rpumpon"},
|
||||||
"rtemp":{"emit":"edem/s_out/vent/rtemp"},
|
"rtemp":{"emit":"house/s_out/vent/rtemp"},
|
||||||
"rtempset":{"emit":"edem/s_out/vent/rtempset"},
|
"rtempset":{"emit":"house/s_out/vent/rtempset"},
|
||||||
"fault":{"emit":"edem/s_out/vent/fault"},
|
"fault":{"emit":"house/s_out/vent/fault"},
|
||||||
|
|
||||||
"tautoheat":{},
|
"tautoheat":{},
|
||||||
"tautocool":{},
|
"tautocool":{},
|
||||||
@@ -554,7 +554,7 @@ RAW 14
|
|||||||
"twaterstart":{},
|
"twaterstart":{},
|
||||||
"twatershut":{},
|
"twatershut":{},
|
||||||
"twateridle":{},
|
"twateridle":{},
|
||||||
"fanauto":{"emit":"edem/s_out/vent/fanauto/set","@V":null},
|
"fanauto":{"emit":"house/s_out/vent/fanauto/set","@V":null},
|
||||||
"numspeed":{},
|
"numspeed":{},
|
||||||
"offbyfan":{}
|
"offbyfan":{}
|
||||||
}
|
}
|
||||||
@@ -587,13 +587,13 @@ RAW 14
|
|||||||
|
|
||||||
Сверено с `lighthub/modules/out_modbus.cpp`, `lighthub/modules/out_modbus.h`, `lighthub/ipmodbus.cpp`, `lighthub/ipmodbus.h`, `lighthub/options.h`, `lighthub/item.h`.
|
Сверено с `lighthub/modules/out_modbus.cpp`, `lighthub/modules/out_modbus.h`, `lighthub/ipmodbus.cpp`, `lighthub/ipmodbus.h`, `lighthub/options.h`, `lighthub/item.h`.
|
||||||
|
|
||||||
- Ключи шаблона устройства, подтвержденные в коде (`out_Modbus::getConfig`, out_modbus.cpp:139-249): `baud` (по умолчанию 9600), `serial` (по умолчанию `SERIAL_8N1`), `poll` с подклавишами `regs`, `irs`, `coils`, `dins` и `delay` (по умолчанию 1000 мс — в wiki значение по умолчанию не указано), `par`.
|
- Ключи шаблона устройства, подтвержденные в коде (`out_Modbus::getConfig`, out\_modbus.cpp:139-249): `baud` (по умолчанию 9600), `serial` (по умолчанию `SERIAL_8N1`), `poll` с подклавишами `regs`, `irs`, `coils`, `dins` и `delay` (по умолчанию 1000 мс — в wiki значение по умолчанию не указано), `par`.
|
||||||
- Ключи параметра в `par` (out_modbus.cpp:433-467, 1084-1085, 203-204): `reg`, `ir`, `coil`, `din`, `type`, `map`, `id`, `prefetch` (boolean). Ключ `prefetch` поддерживается кодом (при записи предварительно опрашивается регистр), но в wiki не описан.
|
- Ключи параметра в `par` (out\_modbus.cpp:433-467, 1084-1085, 203-204): `reg`, `ir`, `coil`, `din`, `type`, `map`, `id`, `prefetch` (boolean). Ключ `prefetch` поддерживается кодом (при записи предварительно опрашивается регистр), но в wiki не описан.
|
||||||
- Поддерживаемые типы (таблица `regSize_P`, out_modbus.cpp:47-60): `i16`, `i32`, `u16`, `u32`, `i8h`, `i8l`, `u8h`, `u8l`, `x10`, `100` — только эти типы. Список в wiki неполный: отсутствуют `u8h` и `u8l`.
|
- Поддерживаемые типы (таблица `regSize_P`, out\_modbus.cpp:47-60): `i16`, `i32`, `u16`, `u32`, `i8h`, `i8l`, `u8h`, `u8l`, `x10`, `100` — только эти типы. Список в wiki неполный: отсутствуют `u8h` и `u8l`.
|
||||||
- Ключ `mapcmd` (пример панели Zentec, раздел «Подавление повторных значений») в коде не найден — поддерживается только `map`; вероятно, опечатка/устаревшее имя.
|
- Ключ `mapcmd` (пример панели Zentec, раздел «Подавление повторных значений») в коде не найден — поддерживается только `map`; вероятно, опечатка/устаревшее имя.
|
||||||
- Ключ `"mode":"r"` в примере параметра `rtemp` в out_modbus.cpp не обрабатывается — вероятно, унаследован от драйвера Modbus v1.
|
- Ключ `"mode":"r"` в примере параметра `rtemp` в out\_modbus.cpp не обрабатывается — вероятно, унаследован от драйвера Modbus v1.
|
||||||
- В коде есть ключ `sendchanges` (out_modbus.cpp:1085), не упомянутый в wiki.
|
- В коде есть ключ `sendchanges` (out\_modbus.cpp:1085), не упомянутый в wiki.
|
||||||
- Перечень числовых идентификаторов суффиксов в wiki (HUE 9, SAT 10, TEMP 11, VAL 12, DELAYED 13, RAW 14) **не совпадает** с текущим кодом (item.h:27-39): `CMD 1, SET 2, VAL 3, DELAYED 4, HSV 5, RGB 6, FAN 7, MODE 8, CTRL 9, HUE 10, SAT 11, TEMP 12, RAW 13`. Примеры с `id` 11-18 (Zentec, вентустановка) соответствуют старой нумерации; при использовании на актуальной прошивке значения `id` нужно пересматривать.
|
- Перечень числовых идентификаторов суффиксов в wiki (HUE 9, SAT 10, TEMP 11, VAL 12, DELAYED 13, RAW 14) **не совпадает** с текущим кодом (item.h:27-39): `CMD 1, SET 2, VAL 3, DELAYED 4, HSV 5, RGB 6, FAN 7, MODE 8, CTRL 9, HUE 10, SAT 11, TEMP 12, RAW 13`. Примеры с `id` 11-18 (Zentec, вентустановка) соответствуют старой нумерации; при использовании на актуальной прошивке значения `id` нужно пересматривать.
|
||||||
- Описание типа `i8h`/`i8l` («при записи другие 8 бит будут заполнены 0xFF») не подтверждается кодом: запись идет целиком в 16-битный регистр смещенным байтом (`writeSingleRegister`, out_modbus.cpp:897-905), остальные биты обнуляются.
|
- Описание типа `i8h`/`i8l` («при записи другие 8 бит будут заполнены 0xFF») не подтверждается кодом: запись идет целиком в 16-битный регистр смещенным байтом (`writeSingleRegister`, out\_modbus.cpp:897-905), остальные биты обнуляются.
|
||||||
- Механика `@S`/`@V` (подавление повторных значений и «записали сами — не обрабатываем») подтверждена: `createLastMeasured`/`getLastMeasured`, сравнение с `@V` («Ignored - equal with setted val», out_modbus.cpp:676-701).
|
- Механика `@S`/`@V` (подавление повторных значений и «записали сами — не обрабатываем») подтверждена: `createLastMeasured`/`getLastMeasured`, сравнение с `@V` («Ignored - equal with setted val», out\_modbus.cpp:676-701).
|
||||||
- Шлюз IP-Modbus: компиляционная опция `IPMODBUS` (ipmodbus.h:1), порты TCP и UDP — оба 502 (ipmodbus.h:26-27), значения по умолчанию `MODBUS_SERIAL_BAUD 9600` и `MODBUS_SERIAL_PARAM SERIAL_8N1` (options.h:154-159) — совпадает с wiki.
|
- Шлюз IP-Modbus: компиляционная опция `IPMODBUS` (ipmodbus.h:1), порты TCP и UDP — оба 502 (ipmodbus.h:26-27), значения по умолчанию `MODBUS_SERIAL_BAUD 9600` и `MODBUS_SERIAL_PARAM SERIAL_8N1` (options.h:154-159) — совпадает с wiki.
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ And appropriate configuration of LightHub items
|
|||||||
Note:
|
Note:
|
||||||
There is not necessary to set-up persistent topics in Openhab nor configure persistent storage in OpenHab.
|
There is not necessary to set-up persistent topics in Openhab nor configure persistent storage in OpenHab.
|
||||||
|
|
||||||
LightHub using persistent MQTT publishing for Status topic /myhome/s_out. After "cold start" and establishing MQTT connection with broker, Lighthub subscribing on Status topic for 5 seconds interval to capture and retrieve previous status from persistent MQTT topic /myhome/s_out
|
LightHub using persistent MQTT publishing for Status topic /myhome/s\_out. After "cold start" and establishing MQTT connection with broker, Lighthub subscribing on Status topic for 5 seconds interval to capture and retrieve previous status from persistent MQTT topic /myhome/s\_out
|
||||||
|
|
||||||
## Сверка с кодом (2026-10-02)
|
## Сверка с кодом (2026-10-02)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Работаем дистанционно
|
# Работаем дистанционно
|
||||||
|
|
||||||
> Источник: Wiki LightHub (lazyhome.ru), страница «работаем_дистанционно». Снапшот от 2026-10-02.
|
> Источник: Wiki LightHub (lazyhome.ru), страница «работаем\_дистанционно». Снапшот от 2026-10-02.
|
||||||
|
|
||||||
## ОТА прошивка
|
## ОТА прошивка
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ password - значение по-умолчанию. Его можно заме
|
|||||||
|
|
||||||
## Работа с SYSLOG
|
## Работа с SYSLOG
|
||||||
|
|
||||||
Для Windows устанавливаем Visual Syslog Сервер для Windows [https://github.com/MaxBelkov/visualsyslog/blob/master/readme_rus.md](https://github.com/MaxBelkov/visualsyslog/blob/master/readme_rus.md)
|
Для Windows устанавливаем Visual Syslog Сервер для Windows [https://github.com/MaxBelkov/visualsyslog/blob/master/readme\_rus.md](https://github.com/MaxBelkov/visualsyslog/blob/master/readme_rus.md)
|
||||||
|
|
||||||
В корне конфигурационного файлa Lighthub указываем:
|
В корне конфигурационного файлa Lighthub указываем:
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ password - значение по-умолчанию. Его можно заме
|
|||||||
|
|
||||||
## Выполнение CLI команд через MQTT
|
## Выполнение CLI команд через MQTT
|
||||||
|
|
||||||
Достаточно в топик myhome/имя_контроллера/$command послать нужную команду [CLI интерфейс](../core/cli_interface.md)
|
Достаточно в топик myhome/имя\_контроллера/$command послать нужную команду [CLI интерфейс](../core/cli_interface.md)
|
||||||
|
|
||||||
Также, можно воспользоваться http [API](https://www.lazyhome.ru/dokuwiki/doku.php?id=api)
|
Также, можно воспользоваться http [API](https://www.lazyhome.ru/dokuwiki/doku.php?id=api)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,463 @@
|
|||||||
|
# Панель управления климатом Zentec Z031-2C0 — интеграция с LightHub
|
||||||
|
|
||||||
|
> Документ описывает настенную панель управления климатом **Z031-2C0** с
|
||||||
|
> нестандартной прошивкой **P190919LH** (адаптация стокового ПО P190919 под
|
||||||
|
> LightHub), её карту регистров Modbus и схему интеграции в умный дом
|
||||||
|
> LightHub + Home Assistant. Все примеры в документе — обобщённые рабочие
|
||||||
|
> конфигурации; имена топиков соответствуют схеме `house/<контроллер>/...`.
|
||||||
|
>
|
||||||
|
> Назначение переработанного ПО: с одной панели в помещении управлять
|
||||||
|
> кондиционером, приточной вентиляцией, увлажнителем, температурой воздуха
|
||||||
|
> (батареи отопления) и температурой тёплого пола.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Отличия от стоковой прошивки
|
||||||
|
|
||||||
|
Стоковая панель Z031 управляла одной вентустановкой и имела дежурный режим.
|
||||||
|
В прошивке P190919LH пользовательский интерфейс переработан:
|
||||||
|
|
||||||
|
| Функция | Стоковая прошивка | P190919LH |
|
||||||
|
|---|---|---|
|
||||||
|
| Кнопка «Питание» | Дежурный/рабочий режим | Вкл/выкл кондиционера (гл. экран); вкл/выкл увлажнителя (режим увлажнения); смена режима кондиционера (режим кондиционера) |
|
||||||
|
| Главный экран | Рабочий экран вентустановки | Попеременно: уставка температуры воздуха и текущее время |
|
||||||
|
| Стрелки ↑/↓ (гл. экран) | — | Уставка температуры воздуха: применяется одновременно к термостату батарей **и** к кондиционеру |
|
||||||
|
| Кнопка «Вентилятор» | Скорость вентустановки | Интенсивность многозональной приточной вентиляции (значок «A» — авторежим по датчику CO2) |
|
||||||
|
| Кнопка «Режим» | — | Циклическое переключение экранов: главный → увлажнение → качество воздуха → уличная температура → тёплый пол → кондиционер |
|
||||||
|
| Режим «температура отработанного теплоносителя» | Отображение | Заменён на **настройку температуры тёплого пола** |
|
||||||
|
| Режим «отображение и обработка воздуха» | Режим вентустановки | Заменён на **режим управления кондиционером** (уставка — стрелки, режим — «Питание», скорость вентилятора — «Вентилятор») |
|
||||||
|
|
||||||
|
Режимы дежурного/рабочего в новом ПО нет. При работе кондиционера его режим
|
||||||
|
индицируется вверху панели значками «охлаждение» / «нагрев» / «вентиляция».
|
||||||
|
Мигание значка «волнистая линия» у индикатора скорости вентиляции означает,
|
||||||
|
что вентилятор включён (даже если он обслуживает иную зону).
|
||||||
|
|
||||||
|
## 2. Органы управления и индикации
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
| Поз. | Назначение | Описание |
|
||||||
|
|---|---|---|
|
||||||
|
| 1 | Индикатор работы вентилятора |  В главном режиме — установленная скорость приточной вентиляции или авторежим. Мигает, когда работает приточная вентиляция в доме |
|
||||||
|
| 2 | «Фильтр» / «Авария» |  Требуется замена фильтра / серьёзная авария |
|
||||||
|
| 3 | Дополнительный режим |  /  режим увлажнения;  режим качества воздуха |
|
||||||
|
| 4 | Физические параметры |  встроенный датчик,  канальный,  улица,  помещение,  тёплый пол (с настройкой),  мощность нагревателя, % |
|
||||||
|
| 5 | День недели | |
|
||||||
|
| 6 | Режим кондиционера |  авто,  вентиляция,  охлаждение,  нагрев |
|
||||||
|
| 7 | Вспомогательный индикатор |  уставка температуры;  уставка влажности/качества воздуха;  сервисный режим параметризации |
|
||||||
|
| 8 | Главный индикатор |  время,  код ошибки,  температура,  влажность/качество воздуха |
|
||||||
|
| 9 | Индикатор таймера |  выполняется управление по расписанию |
|
||||||
|
| 10.1 | «Питание» | Главный экран — вкл/выкл кондиционера; увлажнение — вкл/выкл увлажнителя; кондиционер — смена режимов работы |
|
||||||
|
| 10.2 | «Таймер/Режим» | Циклическое переключение экранов: главный → увлажнение → качество воздуха → уличная температура → тёплый пол → кондиционер; настройка времени/даты в сервисных меню |
|
||||||
|
| 10.3 | «Вентилятор» | Главный экран — скорость приточной вентиляции; кондиционер — скорость вентилятора кондиционера; вход в меню параметризации (удержание 4 с) |
|
||||||
|
| 10.4/10.5 | «Стрелка вверх/вниз» | Изменение уставок и параметров, вход в дополнительные меню |
|
||||||
|
|
||||||
|
## 3. Меню параметризации
|
||||||
|
|
||||||
|
Вход: удержание кнопки «Вентилятор» 4 секунды, выбор пункта стрелками,
|
||||||
|
вход — кратковременное нажатие «Вентилятор».
|
||||||
|
|
||||||
|
| № | Пункт | Назначение |
|
||||||
|
|---|---|---|
|
||||||
|
| 1 | `o_1` | Настройка расписания (таймер, задачи t1–t9) |
|
||||||
|
| 2 | `o_2` | Настройка часов и календаря |
|
||||||
|
| 3 | `o_3` | Настройка параметров (группы A, B, C, D, E, F, U) |
|
||||||
|
|
||||||
|
Кнопки в меню: «Режим» — переход между полями (в о\_1 — активация записи
|
||||||
|
таймера), «Питание» — выход в главный экран, «Вентилятор» — переход к
|
||||||
|
следующему полю (в о\_3 — кольцевой переход группа → номер → значение).
|
||||||
|
|
||||||
|
## 4. Карта регистров Modbus
|
||||||
|
|
||||||
|
Протокол: Modbus RTU, `8E1` (8 бит, чётность Even, 1 стоп-бит), 9600 бод.
|
||||||
|
Тип регистра параметров: беззнаковый 2 байта, команда чтения
|
||||||
|
Read Holding Registers.
|
||||||
|
|
||||||
|
### 4.1 Группа A — технологические параметры (адреса 50000–50007)
|
||||||
|
|
||||||
|
| Параметр | Назначение | Нач. значение | Доступ | Адрес |
|
||||||
|
|---|---|---:|:---:|---:|
|
||||||
|
| A0 | Маска режима тёплого пола (аналог A6) | 10 | R/W | 50000 |
|
||||||
|
| A1 | Маска режима кондиционера (аналог A6) | 15 | R/W | 50001 |
|
||||||
|
| A2 | Конфигурация вентилятора кондиционера (аналог A5) | 3 | R/W | 50002 |
|
||||||
|
| A3 | Кол-во скоростей кондиционера | 3 | R/W | 50003 |
|
||||||
|
| A4 | Макс. кол-во скоростей вентилятора (1–7). При 0 — не выводится скорость, авторежим, знак вентилятора и обдува | 5 | R/W | 50004 |
|
||||||
|
| A5 | Конфигурация вентилятора: bit0 — разрешить авторежим; bit1 — значок вентилятора; bit2 — значок обдува | 5 | R/W | 50005 |
|
||||||
|
| A6 | Маска режима работы: bit0 — vent, bit1 — warm, bit2 — cool, bit3 — auto | 15 | R/W | 50006 |
|
||||||
|
| A7 | Маска дополнительных режимов: bit0 — влажность; bit1 — качество воздуха; bit2 — тёплый пол; bit3 — кондиционер | 15 | R/W | 50007 |
|
||||||
|
|
||||||
|
### 4.2 Группа B — технологические параметры (адреса 50008–50015)
|
||||||
|
|
||||||
|
| Параметр | Назначение | Нач. значение | Доступ | Адрес |
|
||||||
|
|---|---|---:|:---:|---:|
|
||||||
|
| B0 | Мин. уставка температуры (15–30) | 15 | R/W | 50008 |
|
||||||
|
| B1 | Макс. уставка температуры (30–255) | 35 | R/W | 50009 |
|
||||||
|
| B2 | Мин. уставка влажности (0–50) | 25 | R/W | 50010 |
|
||||||
|
| B3 | Макс. уставка влажности (50–100) | 70 | R/W | 50011 |
|
||||||
|
| B4 | Мин. уставка качества воздуха (0–50) | 10 | R/W | 50012 |
|
||||||
|
| B5 | Макс. уставка качества воздуха (50–100) | 99 | R/W | 50013 |
|
||||||
|
| B6 | Точка измерения температуры (вывод на гл. экран): 0 — встроенный датчик; 1 — канальный; 2 — вытяжка (домик) | 1 | R/W | 50014 |
|
||||||
|
| B7 | Маска вспомогательного вывода: bit0 — встроенная T; bit1 — канальная T; bit2 — вытяжка; bit3 — улица; bit4 — тёплый пол; bit5 — мощность нагревателя % | 24 | R/W | 50015 |
|
||||||
|
|
||||||
|
### 4.3 Группы C, D, E, F — параметры свободного назначения
|
||||||
|
|
||||||
|
Адреса 50016–50047 (C0–C7, D0–D7, E0–E7, F0–F7), по 8 ячеек в группе,
|
||||||
|
значения 0–255, R/W, начальное значение 0.
|
||||||
|
|
||||||
|
### 4.4 Группа U — системные параметры (адреса 50048–50055)
|
||||||
|
|
||||||
|
| Параметр | Назначение | Нач. значение | Доступ | Адрес |
|
||||||
|
|---|---|---:|:---:|---:|
|
||||||
|
| U0 | Флаг первого включения | 0 | R/W | 50048 |
|
||||||
|
| U1 | Корректировка встроенного датчика T (шаг 1 °C) | 10 | R/W | 50049 |
|
||||||
|
| U2 | Время автовыхода из вспомогательных меню, с (5–30) | 15 | R/W | 50050 |
|
||||||
|
| U3–U6 | Подсветка min/max дневная и ночная (0–100) | 20/100/0/20 | R/W | 50051–50054 |
|
||||||
|
| U7 | Резерв | 0 | R/W | 50055 |
|
||||||
|
|
||||||
|
### 4.5 Переменные управления (адреса 39993–40008)
|
||||||
|
|
||||||
|
| Назначение | ПЗУ | Пределы | Нач. значение | Доступ | Адрес |
|
||||||
|
|---|:---:|---|---:|:---:|---:|
|
||||||
|
| Авторежим вентилятора | — | 0/1 | — | R/W | 39999 |
|
||||||
|
| Авторежим вентилятора конд. | — | 0/1 | — | R/W | 39993 |
|
||||||
|
| Уставка скорости вентилятора (приток) | + | 1–7 | 1 | R/W | 40000 |
|
||||||
|
| Главный режим работы (битовая маска) | + | 1/2/4/8 | 1 | R/W | 40001 |
|
||||||
|
| Главная уставка температуры | + | 0–99 | 18 | R/W | 40002 |
|
||||||
|
| Главный пуск (питание кондиционера) | + | 0–1 | 0 | R/W | 40003 |
|
||||||
|
| Аварии 01–16 | — | битовая маска | — | R/W | 40004 |
|
||||||
|
| Аварии 17–32 | — | битовая маска | — | R/W | 40005 |
|
||||||
|
| Аварии 33–48 | — | битовая маска | — | R/W | 40006 |
|
||||||
|
| Главная уставка влажности | + | 0–99 | 0 | R/W | 40007 |
|
||||||
|
| Главная уставка VOC % | + | 0–99 | 0 | R/W | 40008 |
|
||||||
|
| Уставка температуры кондиционера | — | °C | — | R/W | 39994 |
|
||||||
|
| Режим работы тёплого пола | — | | — | R/W | 39995 |
|
||||||
|
| Уставка температуры тёплого пола | — | °C | 30 | R/W | 39996 |
|
||||||
|
| Скорость вентиляции кондиционера | — | | 0 | R/W | 39997 |
|
||||||
|
| Увлажнение включено | — | 0/1 | 0 | R/W | 39998 |
|
||||||
|
|
||||||
|
Битовая маска главного режима (40001): bit0 — vent (1), bit1 — warm (2),
|
||||||
|
bit2 — cool (4), bit3 — auto (8).
|
||||||
|
|
||||||
|
**ВАЖНО.** Регистры 40000, 40001, 40002, 40007, 40008 имеют прямой доступ к
|
||||||
|
ПЗУ (flash с ресурсом 10000 циклов записи). Частая запись недопустима.
|
||||||
|
Запись значения вне диапазона, ограниченного параметрами групп A/B, приводит
|
||||||
|
к циклической перезаписи ПЗУ и преждевременному выходу панели из строя.
|
||||||
|
Поэтому в LightHub для таких параметров включён `prefetch: true` —
|
||||||
|
контроллер пишет в регистр только при реальном изменении значения.
|
||||||
|
|
||||||
|
### 4.6 Аварии
|
||||||
|
|
||||||
|
Регистры 40004/40005/40006 — битовые маски аварий E01–E16, E17–E32,
|
||||||
|
E33–E48 (бит 0 = E01 и т.д.). Запись значения 1–15 блокирует клавиатуру,
|
||||||
|
останавливает систему («Главный пуск» = 0) и показывает «АВАРИЯ Exx».
|
||||||
|
Запись 0 возвращает экран в главный режим. Можно записывать несколько бит
|
||||||
|
одновременно — сообщения выводятся последовательно. В конфигурации Эдема
|
||||||
|
регистр 40005 (alm17) используется для отображения аварии увлажнителя,
|
||||||
|
40004 (alm01) — аварии вентустановки.
|
||||||
|
|
||||||
|
При отсутствии запросов к панели на экране выводится код «АВАРИЯ LN».
|
||||||
|
|
||||||
|
### 4.7 Технические переменные (только чтение, 30000–30002)
|
||||||
|
|
||||||
|
| Назначение | Тип | Доступ | Адрес |
|
||||||
|
|---|---|:---:|---:|
|
||||||
|
| Температура от встроенного датчика* | SInt16 | R | 30000 |
|
||||||
|
| Влажность от встроенного датчика** | UInt8 | R | 30001 |
|
||||||
|
| Встроенный датчик качества воздуха** | UInt8 | R | 30002 |
|
||||||
|
|
||||||
|
### 4.8 Технические переменные (R/W, 40009–40017)
|
||||||
|
|
||||||
|
| Назначение | Тип | Доступ | Адрес |
|
||||||
|
|---|---|:---:|---:|
|
||||||
|
| Канальный внешний датчик температуры (приточный воздух)* | SInt16 | R/W | 40009 |
|
||||||
|
| Температура наружного воздуха* | SInt16 | R/W | 40010 |
|
||||||
|
| Температура вытяжного воздуха* | SInt16 | R/W | 40011 |
|
||||||
|
| Температура тёплого пола* | SInt16 | R/W | 40012 |
|
||||||
|
| Канальный датчик влажности*** | UInt8 | R/W | 40013 |
|
||||||
|
| Общая мощность нагревателя, %*** | UInt8 | R/W | 40014 |
|
||||||
|
| Качество воздуха с внешнего датчика | UInt16 | R/W | 40015 |
|
||||||
|
| Текущая температура кондиционера* | SInt16 | R/W | 40016 |
|
||||||
|
| Скорость главной вентустановки | UInt8 | R/W | 40017 |
|
||||||
|
|
||||||
|
\* значение ×10 (267 → 26.7 °C). \*\* в модели Z031-2C0 не используется.
|
||||||
|
\*\*\* значение 0–99.
|
||||||
|
|
||||||
|
Часы/календарь панели также доступны по Modbus: 65512 — год, 65513 — месяц,
|
||||||
|
65514 — день, 65515 — день недели, 65516 — час, 65517 — минута, 65518 —
|
||||||
|
секунда, 65519 — часовой пояс (UInt8, R/W).
|
||||||
|
|
||||||
|
## 5. Интеграция с LightHub
|
||||||
|
|
||||||
|
Панель — Modbus RTU-абонент контроллера LightHub (тип канала **MBUS**,
|
||||||
|
канал-тип 14). Архитектура интеграции на примере объекта «Эдем»:
|
||||||
|
|
||||||
|
```
|
||||||
|
MQTT (Home Assistant, syslog)
|
||||||
|
▲ │
|
||||||
|
│ ▼
|
||||||
|
┌─────────────────────┐
|
||||||
|
│ LightHub "house3" │ CAN addr 13
|
||||||
|
│ - Modbus master │──── RTU 8E1 9600 ──► Панель Z031 №1 (зал) addr 31
|
||||||
|
│ - PID термостаты │──── RTU 8E1 9600 ──► Панель Z031 №2 (кабинет) addr 32
|
||||||
|
│ (батареи, тёплый │──── RTU 8E1 9600 ──► Панель Z031 №3 (спальня) addr 33
|
||||||
|
│ пол) │──── 1-Wire ──► датчики температуры помещений/полов
|
||||||
|
│ - датчики CO2 (S8) │
|
||||||
|
└─────────┬───────────┘
|
||||||
|
│ CAN (маршрутизация команд/статусов)
|
||||||
|
▼
|
||||||
|
┌─────────────────────┐
|
||||||
|
│ LightHub "air" │ CAN addr 15
|
||||||
|
│ - приточная │──── Modbus ──► вентустановка (приток, нагреватели, насос)
|
||||||
|
│ вентустановка │
|
||||||
|
│ - MULTIVENT: зоны │──── реле задвижек зон
|
||||||
|
│ - HUMIDIFIER: │──── клапаны зон, насос, датчик давления
|
||||||
|
│ увлажнение │
|
||||||
|
│ - PID по CO2 │───── CO2 датчики Sensair S8 по комнатам
|
||||||
|
└─────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.1 Modbus-шаблон панели
|
||||||
|
|
||||||
|
Шаблон `panel` задаётся в секции `modbus` конфига LightHub. Он описывает
|
||||||
|
линию (`serial: "8E1"`), расписание опроса (`poll`) и таблицу соответствия
|
||||||
|
параметров (`par`). Опрашиваются диапазоны 39993–40008 и 30000–30001
|
||||||
|
каждые 5 секунд:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"panel": {
|
||||||
|
"serial": "8E1",
|
||||||
|
"poll": {
|
||||||
|
"regs": [[39993, 40008], [30000, 30001]],
|
||||||
|
"delay": 5000
|
||||||
|
},
|
||||||
|
"par": { ... }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Каждый параметр `par` привязывает имя (subitem) к регистру и опциям:
|
||||||
|
|
||||||
|
| Имя (subitem) | Регистр | Опции | Смысл |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| `fanspeed` | 40000 | `prefetch`, `map`, `id: 7` (S\_FAN) | Скорость приточной вентиляции; `map.val` [1,255,1,5] масштабирует 1–7 в 0–255; команда OFF → 0 |
|
||||||
|
| `settemp` | 40002 | `prefetch`, `id: 12` | Уставка температуры воздуха (батареи + кондиционер) |
|
||||||
|
| `alm01` / `alm17` / `alm33` | 40004/40005/40006 | `id: 13/14/15` | Регистры аварий |
|
||||||
|
| `sethum` | 40007 | `prefetch`, `id: 16` | Уставка влажности |
|
||||||
|
| `setvoc` | 40008 | `prefetch`, `map.val` [400,2000,0,100], `id: 17` | Уставка качества воздуха: ppm CO2 ↔ % |
|
||||||
|
| `roomtemp` | 30000 | `type: "x10"` | Температура встроенного датчика (×10) |
|
||||||
|
| `hum` | 30001 | | Влажность встроенного датчика |
|
||||||
|
| `voc` | 30002 | | Качество воздуха встроенного датчика |
|
||||||
|
| `ch_temp` | 40009 | `type: "x10"` | Приточный (канальный) воздух |
|
||||||
|
| `ext_temp` | 40010 | `type: "x10"`, `id: 18` | Наружная температура |
|
||||||
|
| `out_temp` | 40011 | `type: "x10"`, `id: 19` | Температура вытяжки |
|
||||||
|
| `floor_temp` | 40012 | `type: "x10"`, `id: 20` | Температура тёплого пола |
|
||||||
|
| `ch_hum` | 40013 | `id: 28` | Влажность канального датчика |
|
||||||
|
| `heat_pwr` | 40014 | `id: 29` | Мощность нагревателя, % |
|
||||||
|
| `extvoc` | 40015 | `map.val` [400,2000,0,100], `id: 27` | CO2 внешнего датчика (ppm ↔ %) |
|
||||||
|
| `actemp` | 40016 | `type: "x10"`, `id: 25` | Текущая температура кондиционера |
|
||||||
|
| `fanlvl` | 40017 | `id: 21` | Скорость главной вентустановки |
|
||||||
|
| `floormode` | 39995 | `prefetch`, `id: 22` | Режим тёплого пола |
|
||||||
|
| `setfloor` | 39996 | `prefetch`, `id: 23` | Уставка тёплого пола |
|
||||||
|
| `humpwr` | 39998 | `prefetch`, `map.cmd` ON→1 / OFF→0, `id: 24` | Увлажнение вкл/выкл |
|
||||||
|
| `fanauto` | 39999 | `prefetch`, `map.cmd` ENABLE/AUTO→1, DISABLE→0, `id: 7` | Авторежим вентиляции по CO2 |
|
||||||
|
| `acsettemp` | 39994 | `prefetch`, `id: 26` | Уставка кондиционера |
|
||||||
|
| `acon` | 40003 | `prefetch`, `map.cmd` OFF→0, `def: 40001`, `id: 8` | Питание кондиционера |
|
||||||
|
| `acmode` | 40001 | `prefetch`, `map.cmd` FAN\_ONLY→1, HEAT→4, COOL→2, AUTO→8, `id: 8` | Режим кондиционера |
|
||||||
|
| `acfanauto` | 39993 | `prefetch`, `map.cmd` AUTO→1, `def: 39997`, `id: 2` | Авторежим вентилятора кондиционера |
|
||||||
|
| `acfan` | 39997 | `prefetch`, `map.cmd` OFF→0, LOW→1, MEDIUM→2, HIGH→3, `id: 2` | Скорость вентилятора кондиционера |
|
||||||
|
| `y/mo/d/dw/h/m/s` | 65512–65518 | | Часы/календарь |
|
||||||
|
| `blmind/blmaxd/blminn/blmaxn` | 50051–50054 | | Подсветка |
|
||||||
|
|
||||||
|
Механика драйвера MBUS:
|
||||||
|
|
||||||
|
- **Опрос**: списки `regs` читаются каждые `delay` мс; найденные значения
|
||||||
|
публикуются в статусные топики (или направляются в связанные items через
|
||||||
|
`item`/`emit` у параметра).
|
||||||
|
- **Запись**: при получении команды на item ищется параметр шаблона по имени
|
||||||
|
subitem, иначе — по числовому коду суффикса, совпадающему с `id`
|
||||||
|
(стандартные коды: S\_CMD=1, S\_SET=2, S\_VAL=3, S\_FAN=7, S\_MODE=8).
|
||||||
|
- **`prefetch: true`**: перед записью читается текущее значение регистра;
|
||||||
|
запись выполняется только при отличии. Обязательно для регистров с
|
||||||
|
прямым доступом к ПЗУ (см. раздел 4.5).
|
||||||
|
- **`map.val`** масштабирует числовое значение между регистром и
|
||||||
|
LightHub-значением: `[fromRegMin, fromRegMax, toMin, toMax]`.
|
||||||
|
**`map.cmd`** преобразует текстовые команды (ON, HEAT, COOL...) в числа
|
||||||
|
регистра и обратно. **`def`** — подстановка значения из другого регистра
|
||||||
|
при записи.
|
||||||
|
- **`@S: 0`** в описании параметра item'а подавляет повторную публикацию
|
||||||
|
неизменившегося статуса.
|
||||||
|
|
||||||
|
### 5.2 Каналы панелей (items)
|
||||||
|
|
||||||
|
Каждая панель — item типа `MBUS` (14) с адресом абонента и именем шаблона:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"p_zal3": [14, [31, "panel", { ...маршрутизация параметров... }], null, 8192, 0]
|
||||||
|
```
|
||||||
|
|
||||||
|
Первый элемент — Modbus-адрес панели (31/32/33), второй — имя шаблона,
|
||||||
|
третий — объект маршрутизации. Маршрутизация связывает параметр шаблона с
|
||||||
|
локальными items, MQTT и CAN:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"p_zal3": [14, [31, "panel", {
|
||||||
|
"fanspeed": { "can": [15, 3, "fan", 7], "@S": 0 },
|
||||||
|
"settemp": [{ "item": "tzal3/set", "@S": 0 }, // уставка → PID батарей
|
||||||
|
{ "item": "ac_zal3/set" }], // и → уставка кондиционера
|
||||||
|
"acsettemp": { "item": "ac_zal3/set", "@S": 0 },
|
||||||
|
"acon": { "item": "ac_zal3/cmd", "@S": 0 },
|
||||||
|
"acfanauto": { "item": "ac_zal3/fan", "@S": 0 },
|
||||||
|
"setfloor": { "item": "tfl31/set", "@S": 0 }, // уставка тёплого пола → PID пола
|
||||||
|
"sethum": { "can": [15, 431, "set"], "@S": 0 }, // → увлажнитель на контроллере air
|
||||||
|
"humpwr": { "can": [15, 431, "cmd"], "@S": 0 },
|
||||||
|
"setvoc": { "can": [15, 331, "set"], "@S": 0 }, // → CO2-PID вентиляции на air
|
||||||
|
"fanauto": { "can": [15, 331, "cmd"], "@S": 0 },
|
||||||
|
"hum": { "emit": "${snsr}humzal3/val", "@S": null,
|
||||||
|
"can": [15, 431, "val"] }, // влажность → air (обратная связь)
|
||||||
|
"roomtemp": { "emit": "t_zal3_p", "@S": 0 },
|
||||||
|
"ch_temp": {}, "ext_temp": {}, "out_temp": {}, "extvoc": {},
|
||||||
|
"floor_temp": {}, "actemp": {}, "fanlvl": {},
|
||||||
|
"alm01": {}, "alm17": {}, "alm33": {},
|
||||||
|
"acmode": { "@S": 0 }, "acfan": { "@S": 0 },
|
||||||
|
"m": {}, "s": {}, "blmind": {}, "blmaxd": {}
|
||||||
|
}], null, 8192, 0]
|
||||||
|
```
|
||||||
|
|
||||||
|
Элемент `"can"` — маршрутизация на другой контроллер по CAN: `[адрес,
|
||||||
|
itemId, суффикс, subitem]`. Здесь `15` — CAN-адрес контроллера `air`,
|
||||||
|
`331/332/333` — item'ы PID-регуляторов CO2 (`co2zal3`, `co2cab3`,
|
||||||
|
`co2bedr3`), `431/432/433` — item'ы PID-регуляторов увлажнения
|
||||||
|
(`humzal3`, `humcab3`, `humbedr3`). Элемент `"emit"` публикует значение в
|
||||||
|
MQTT-топик, `"item"` отправляет в локальный item.
|
||||||
|
|
||||||
|
### 5.3 Управление температурой воздуха (батареи + кондиционер)
|
||||||
|
|
||||||
|
Уставка с панели (`settemp`, регистр 40002) расходится на два контура:
|
||||||
|
|
||||||
|
- **PID-термостат батарей** (`tzal3`, `tcab3`, `tbedr3` — тип 13): уставка
|
||||||
|
через `"item": "tzal3/set"`, вход — 1-Wire датчик температуры помещения
|
||||||
|
(`p_zal3/ch_temp` → `tzal3`), выход — slow-PWM реле термоклапана
|
||||||
|
(`rzal3` — тип 16, RELAYPWM).
|
||||||
|
- **Кондиционер** (`ac_zal3`, `ac_cab3` — тип 10, ACHAIER): уставка
|
||||||
|
`ac_zal3/set` берётся из `acsettemp` панели, а `settemp` одновременно
|
||||||
|
обновляет её — стрелки на главном экране меняют температуру и батарей,
|
||||||
|
и кондиционера.
|
||||||
|
|
||||||
|
Текущая температура кондиционера (`actemp`, регистр 40016) передаётся в
|
||||||
|
`ac_zal3/temp` и дальше в Home Assistant как `current_temperature`.
|
||||||
|
|
||||||
|
### 5.4 Управление тёплым полом
|
||||||
|
|
||||||
|
Режим тёплого пола на панели (регистры 39995/39996) связан с локальными
|
||||||
|
PID-регуляторами пола: `setfloor` → `tfl31/set` (туалет), `tfl32/set`
|
||||||
|
(ванна), `tbath3/set` (ванная при спальне). Температура пола приходит
|
||||||
|
обратно в регистр 40012 через 1-Wire датчики (`p_zal3/floor_temp` ←
|
||||||
|
`tfl31` и т.д.).
|
||||||
|
|
||||||
|
### 5.5 Вентиляция и увлажнение (контроллер air)
|
||||||
|
|
||||||
|
Приточная вентиляция и увлажнение живут на отдельном контроллере `air`
|
||||||
|
(CAN-адрес 15), панель ими управляет через CAN-маршрутизацию (см. 5.2):
|
||||||
|
|
||||||
|
- **Приточная вентиляция** — item `vents` (тип 18, MULTIVENT): зоны
|
||||||
|
`zal3`, `cab3`, `bedr3` с задвижками; центральная установка `vent`
|
||||||
|
(тип 14, MBUS, шаблон `airset`) — приточный вентилятор, нагреватели,
|
||||||
|
насос. Запросы воздуха в зоны формируют PID-регуляторы CO2
|
||||||
|
(`co2zal3` и т.д., тип 13, вход — датчик Sensair S8, выход — `/fan`
|
||||||
|
зоны). Панель через `fanspeed` (S\_FAN, CAN item 3 — центральная
|
||||||
|
установка) и `setvoc`/`fanauto` (CAN item 331/332/333 — CO2-PID зоны)
|
||||||
|
задаёт интенсивность и режим «авто по CO2». Статус скорости главной
|
||||||
|
установки возвращается в панель через регистр 40017 (`fanlvl`).
|
||||||
|
- **Увлажнение** — item `hum` (тип 21, HUMIDIFIER) на контроллере `air`:
|
||||||
|
насос, промывочный клапан, зональные клапаны, датчик давления. Панель
|
||||||
|
управляет зоной (`humpwr` → вкл/выкл увлажнителя зоны, `sethum` →
|
||||||
|
уставка) через CAN item'ы `humzal3`/`humcab3`/`humbedr3` (PID, тип 13),
|
||||||
|
влажность помещения передаётся панелью обратно на `air` и в MQTT
|
||||||
|
(`${snsr}humzal3/val`). Авария увлажнителя подаётся на панели через
|
||||||
|
регистр 40005 (`alm17`).
|
||||||
|
|
||||||
|
### 5.6 Home Assistant (MQTT)
|
||||||
|
|
||||||
|
Статусные топики LightHub (`house/s_out/...`) и командные топики
|
||||||
|
(`house/house3/...`, `house/air/...`) подключаются к HA через
|
||||||
|
`mqtt.yaml`. Примеры сущностей, связанных с панелями:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Кондиционер зала (панель p_zal3, item ac_zal3)
|
||||||
|
climate:
|
||||||
|
- name: "Кондиционер Зал 3"
|
||||||
|
modes: [off, heat, auto, cool, fan_only]
|
||||||
|
fan_modes: [auto, high, medium, low]
|
||||||
|
mode_state_topic: "house/s_out/ac_zal3/cmd"
|
||||||
|
mode_command_topic: "house/house3/ac_zal3/cmd"
|
||||||
|
temperature_low_command_topic: "house/house3/ac_zal3/set"
|
||||||
|
temperature_high_command_topic: "house/house3/tzal3/set" # уставка батарей
|
||||||
|
current_temperature_topic: "house/s_out/ac_zal3/temp" # actemp (reg 40016)
|
||||||
|
fan_mode_command_topic: "house/house3/ac_zal3/fan"
|
||||||
|
|
||||||
|
# Увлажнитель зала (контроллер air)
|
||||||
|
humidifier:
|
||||||
|
- name: "Увлажнитель зал 3-й этаж"
|
||||||
|
command_topic: "house/air/humzal3/cmd"
|
||||||
|
state_topic: "house/s_out/humzal3/cmd"
|
||||||
|
target_humidity_command_topic: "house/air/humzal3/set"
|
||||||
|
target_humidity_state_topic: "house/s_out/humzal3/set"
|
||||||
|
current_humidity_topic: "house/snsr/humzal3/val"
|
||||||
|
|
||||||
|
# Приток зала (multivent + CO2-PID, preset auto/manual)
|
||||||
|
fan:
|
||||||
|
- name: "Приток зал 3эт"
|
||||||
|
state_topic: "house/s_out/vents/zal3/cmd"
|
||||||
|
command_topic: "house/air/vents/zal3/cmd"
|
||||||
|
percentage_state_topic: "house/s_out/vents/zal3/fan"
|
||||||
|
percentage_command_topic: "house/air/vents/zal3/fan"
|
||||||
|
preset_mode_state_topic: "house/s_out/co2zal3/ctrl"
|
||||||
|
preset_mode_command_topic: "house/air/co2zal3/ctrl"
|
||||||
|
|
||||||
|
# Климат (батареи, PID термостат)
|
||||||
|
- name: "Климат Зал"
|
||||||
|
mode_command_topic: "house/house3/tzal3/cmd"
|
||||||
|
temperature_command_topic: "house/house3/tzal3/set"
|
||||||
|
current_temperature_topic: "house/s_out/t_zal3"
|
||||||
|
action_topic: "house/s_out/rzal3/action"
|
||||||
|
|
||||||
|
# Тёплый пол
|
||||||
|
- name: "Теплый пол туалет"
|
||||||
|
mode_command_topic: "house/house3/tfl31/cmd"
|
||||||
|
temperature_command_topic: "house/house3/tfl31/set"
|
||||||
|
current_temperature_topic: "house/s_out/t_fl31"
|
||||||
|
|
||||||
|
# Аварии на панелях
|
||||||
|
sensor:
|
||||||
|
- name: "Увлажнитель авария"
|
||||||
|
state_topic: "house/in/panels/alm17/set"
|
||||||
|
- name: "Вентиляция авария"
|
||||||
|
state_topic: "house/in/panels/alm01/set"
|
||||||
|
- name: "Вентилятор" # скорость главной вентустановки (reg 40017)
|
||||||
|
state_topic: "house/in/panels/fanlvl/set"
|
||||||
|
unit_of_measurement: '%'
|
||||||
|
```
|
||||||
|
|
||||||
|
Групповой item `panels` (`[7, 210]`, члены `p_zal3`, `p_cab3`,
|
||||||
|
`p_bedr3`) даёт единые топики `house/in/panels/<параметр>/set` для
|
||||||
|
широковещательного управления всеми панелями сразу (используется для `alm01`,
|
||||||
|
`alm17`, `fanlvl`).
|
||||||
|
|
||||||
|
## 6. Замечания по эксплуатации
|
||||||
|
|
||||||
|
- Панель синхронизирует время по Modbus (регистры 65512–65518) — при
|
||||||
|
подключении к LightHub время ведёт контроллер.
|
||||||
|
- Не пишите в ПЗУ-регистры (40000/40001/40002/40007/40008) чаще, чем это
|
||||||
|
делает человек с панели; `prefetch: true` в шаблоне защищает от
|
||||||
|
избыточных записей.
|
||||||
|
- Уставка VOC задаётся в LightHub в ppm CO2 (400–2000) и масштабируется в
|
||||||
|
проценты панели (0–100 %; 50 % ≈ 1000 ppm).
|
||||||
|
- Код «АВАРИЯ LN» на панели означает отсутствие Modbus-запросов —
|
||||||
|
проверяйте линию и контроллер.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Источник данных**: документ «Стандартное программное обеспечение панели
|
||||||
|
P190919 LH, адаптированное под систему умного дома LightHub» (D190919LH),
|
||||||
|
драйверы `lighthub/modules/out_modbus.*`
|
||||||
|
(CH\_MBUS), `out_multivent.*` (CH\_MULTIVENT), `out_humidifier.*`
|
||||||
|
(CH\_HUMIDIFIER), `out_ac.*` (CH\_AC), `out_pid.*` (CH\_PID).
|
||||||
@@ -52,229 +52,229 @@
|
|||||||
mqtt:
|
mqtt:
|
||||||
switch:
|
switch:
|
||||||
- name: "Полив"
|
- name: "Полив"
|
||||||
state_topic: "edem/s_out/sprinkler/cmd"
|
state_topic: "house/s_out/sprinkler/cmd"
|
||||||
command_topic: "edem/air/sprinkler/cmd"
|
command_topic: "house/air/sprinkler/cmd"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив север"
|
- name: "Полив север"
|
||||||
state_topic: "edem/s_out/sprinkler/nord/cmd"
|
state_topic: "house/s_out/sprinkler/nord/cmd"
|
||||||
command_topic: "edem/air/sprinkler/nord/cmd"
|
command_topic: "house/air/sprinkler/nord/cmd"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив юг"
|
- name: "Полив юг"
|
||||||
state_topic: "edem/s_out/sprinkler/south/cmd"
|
state_topic: "house/s_out/sprinkler/south/cmd"
|
||||||
command_topic: "edem/air/sprinkler/south/cmd"
|
command_topic: "house/air/sprinkler/south/cmd"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив капельный"
|
- name: "Полив капельный"
|
||||||
state_topic: "edem/s_out/sprinkler/trees/cmd"
|
state_topic: "house/s_out/sprinkler/trees/cmd"
|
||||||
command_topic: "edem/air/sprinkler/trees/cmd"
|
command_topic: "house/air/sprinkler/trees/cmd"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив розетки"
|
- name: "Полив розетки"
|
||||||
state_topic: "edem/s_out/sprinkler/outlets/cmd"
|
state_topic: "house/s_out/sprinkler/outlets/cmd"
|
||||||
command_topic: "edem/air/sprinkler/outlets/cmd"
|
command_topic: "house/air/sprinkler/outlets/cmd"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
button:
|
button:
|
||||||
- name: "Полив сброс"
|
- name: "Полив сброс"
|
||||||
command_topic: "edem/air/sprinkler/cmd"
|
command_topic: "house/air/sprinkler/cmd"
|
||||||
payload_press: "RESET"
|
payload_press: "RESET"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив блокировка"
|
- name: "Полив блокировка"
|
||||||
command_topic: "edem/air/sprinkler/cmd"
|
command_topic: "house/air/sprinkler/cmd"
|
||||||
payload_press: "FREEZE"
|
payload_press: "FREEZE"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив разблокировка"
|
- name: "Полив разблокировка"
|
||||||
command_topic: "edem/air/sprinkler/cmd"
|
command_topic: "house/air/sprinkler/cmd"
|
||||||
payload_press: "UNFREEZE"
|
payload_press: "UNFREEZE"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив разрешить"
|
- name: "Полив разрешить"
|
||||||
command_topic: "edem/air/sprinkler/cmd"
|
command_topic: "house/air/sprinkler/cmd"
|
||||||
payload_press: "ENABLE"
|
payload_press: "ENABLE"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив запретить"
|
- name: "Полив запретить"
|
||||||
command_topic: "edem/air/sprinkler/cmd"
|
command_topic: "house/air/sprinkler/cmd"
|
||||||
payload_press: "DISABLE"
|
payload_press: "DISABLE"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив осушение бака"
|
- name: "Полив осушение бака"
|
||||||
command_topic: "edem/air/sprinkler/cmd"
|
command_topic: "house/air/sprinkler/cmd"
|
||||||
payload_press: "DRY"
|
payload_press: "DRY"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
number:
|
number:
|
||||||
- name: "Полив юг"
|
- name: "Полив юг"
|
||||||
state_topic: "edem/s_out/sprinkler/south/set"
|
state_topic: "house/s_out/sprinkler/south/set"
|
||||||
command_topic: "edem/air/sprinkler/south/set"
|
command_topic: "house/air/sprinkler/south/set"
|
||||||
min: 0
|
min: 0
|
||||||
max: 6000
|
max: 6000
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив север"
|
- name: "Полив север"
|
||||||
state_topic: "edem/s_out/sprinkler/nord/set"
|
state_topic: "house/s_out/sprinkler/nord/set"
|
||||||
command_topic: "edem/air/sprinkler/nord/set"
|
command_topic: "house/air/sprinkler/nord/set"
|
||||||
min: 0
|
min: 0
|
||||||
max: 6000
|
max: 6000
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив капельный"
|
- name: "Полив капельный"
|
||||||
state_topic: "edem/s_out/sprinkler/trees/set"
|
state_topic: "house/s_out/sprinkler/trees/set"
|
||||||
command_topic: "edem/air/sprinkler/trees/set"
|
command_topic: "house/air/sprinkler/trees/set"
|
||||||
min: 0
|
min: 0
|
||||||
max: 6000
|
max: 6000
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив юг выполнено"
|
- name: "Полив юг выполнено"
|
||||||
state_topic: "edem/s_out/sprinkler/south/val"
|
state_topic: "house/s_out/sprinkler/south/val"
|
||||||
command_topic: "edem/air/sprinkler/south/val"
|
command_topic: "house/air/sprinkler/south/val"
|
||||||
min: 0
|
min: 0
|
||||||
max: 60000
|
max: 60000
|
||||||
mode: slider
|
mode: slider
|
||||||
icon: "mdi:timer-sand"
|
icon: "mdi:timer-sand"
|
||||||
unit_of_measurement: 'sec'
|
unit_of_measurement: 'sec'
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив север выполнено"
|
- name: "Полив север выполнено"
|
||||||
state_topic: "edem/s_out/sprinkler/nord/val"
|
state_topic: "house/s_out/sprinkler/nord/val"
|
||||||
command_topic: "edem/air/sprinkler/nord/val"
|
command_topic: "house/air/sprinkler/nord/val"
|
||||||
min: 0
|
min: 0
|
||||||
max: 60000
|
max: 60000
|
||||||
mode: slider
|
mode: slider
|
||||||
icon: "mdi:timer-sand"
|
icon: "mdi:timer-sand"
|
||||||
unit_of_measurement: 'sec'
|
unit_of_measurement: 'sec'
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив капельный выполнено"
|
- name: "Полив капельный выполнено"
|
||||||
state_topic: "edem/s_out/sprinkler/trees/val"
|
state_topic: "house/s_out/sprinkler/trees/val"
|
||||||
command_topic: "edem/air/sprinkler/trees/val"
|
command_topic: "house/air/sprinkler/trees/val"
|
||||||
min: 0
|
min: 0
|
||||||
max: 60000
|
max: 60000
|
||||||
mode: slider
|
mode: slider
|
||||||
icon: "mdi:timer-sand"
|
icon: "mdi:timer-sand"
|
||||||
unit_of_measurement: 'sec'
|
unit_of_measurement: 'sec'
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- name: "Полив бак Макс"
|
- name: "Полив бак Макс"
|
||||||
state_topic: "edem/s_out/sprinkler/$wMax"
|
state_topic: "house/s_out/sprinkler/$wMax"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив бак Мin"
|
- name: "Полив бак Мin"
|
||||||
state_topic: "edem/s_out/sprinkler/$wMin"
|
state_topic: "house/s_out/sprinkler/$wMin"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив водопровод"
|
- name: "Полив водопровод"
|
||||||
state_topic: "edem/s_out/sprinkler/$rVIN"
|
state_topic: "house/s_out/sprinkler/$rVIN"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив дренаж вкл"
|
- name: "Полив дренаж вкл"
|
||||||
state_topic: "edem/s_out/sprinkler/$rDren"
|
state_topic: "house/s_out/sprinkler/$rDren"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив дренаж качает"
|
- name: "Полив дренаж качает"
|
||||||
state_topic: "edem/s_out/sprinkler/$fbDren"
|
state_topic: "house/s_out/sprinkler/$fbDren"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив насос вкл"
|
- name: "Полив насос вкл"
|
||||||
state_topic: "edem/s_out/sprinkler/$rPump"
|
state_topic: "house/s_out/sprinkler/$rPump"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив насос качает"
|
- name: "Полив насос качает"
|
||||||
state_topic: "edem/s_out/sprinkler/$fbPump"
|
state_topic: "house/s_out/sprinkler/$fbPump"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив состояние"
|
- name: "Полив состояние"
|
||||||
state_topic: "edem/s_out/sprinkler/$state"
|
state_topic: "house/s_out/sprinkler/$state"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив ошибка"
|
- name: "Полив ошибка"
|
||||||
state_topic: "edem/s_out/sprinkler/$fault"
|
state_topic: "house/s_out/sprinkler/$fault"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Поливаем юг"
|
- name: "Поливаем юг"
|
||||||
state_topic: "edem/s_out/sprinkler/south/$state"
|
state_topic: "house/s_out/sprinkler/south/$state"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Поливаем север"
|
- name: "Поливаем север"
|
||||||
state_topic: "edem/s_out/sprinkler/nord/$state"
|
state_topic: "house/s_out/sprinkler/nord/$state"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Поливаем капельно"
|
- name: "Поливаем капельно"
|
||||||
state_topic: "edem/s_out/sprinkler/trees/$state"
|
state_topic: "house/s_out/sprinkler/trees/$state"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив розетка статус"
|
- name: "Полив розетка статус"
|
||||||
state_topic: "edem/s_out/sprinkler/outlets/$state"
|
state_topic: "house/s_out/sprinkler/outlets/$state"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
|
|
||||||
- name: "Полив блокировки"
|
- name: "Полив блокировки"
|
||||||
state_topic: "edem/s_out/sprinkler/ctrl"
|
state_topic: "house/s_out/sprinkler/ctrl"
|
||||||
availability_topic: "edem/air/$state"
|
availability_topic: "house/air/$state"
|
||||||
payload_available: "ready"
|
payload_available: "ready"
|
||||||
payload_not_available: "disconnected"
|
payload_not_available: "disconnected"
|
||||||
```
|
```
|
||||||
@@ -850,8 +850,8 @@ views:
|
|||||||
|
|
||||||
## 6. Как пользоваться панелью
|
## 6. Как пользоваться панелью
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||
- **Общее состояние:** Отображает статус системы и режим (заморозка/разрешено/запрещено). Ошибка не показывается, но иконка станет красной при неисправности.
|
- **Общее состояние:** Отображает статус системы и режим (заморозка/разрешено/запрещено). Ошибка не показывается, но иконка станет красной при неисправности.
|
||||||
- **Бак:** Иконка батарейки меняет цвет и текст в зависимости от уровня воды (пусто/наполовину/полный). Нажатие открывает историю уровня.
|
- **Бак:** Иконка батарейки меняет цвет и текст в зависимости от уровня воды (пусто/наполовину/полный). Нажатие открывает историю уровня.
|
||||||
- **Водопровод и насосы:** Показывают текущий статус (Выкл/Вкл/Качает) с цветовой индикацией. Клик – история соответствующего датчика.
|
- **Водопровод и насосы:** Показывают текущий статус (Выкл/Вкл/Качает) с цветовой индикацией. Клик – история соответствующего датчика.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# LightHub: Модуль многоканальной системы полива (out_sprinkler)
|
# LightHub: Модуль многоканальной системы полива (out\_sprinkler)
|
||||||
Данный модуль реализует многозональную систему полива
|
Данный модуль реализует многозональную систему полива
|
||||||
|
|
||||||
## Система состоит из следующих компонент:
|
## Система состоит из следующих компонент:
|
||||||
@@ -19,9 +19,9 @@
|
|||||||
* SP\_DREN\_EMPTY - дренажный насос выключился встроенным поплавком - колодец пуст
|
* SP\_DREN\_EMPTY - дренажный насос выключился встроенным поплавком - колодец пуст
|
||||||
* SP\_VIN - включено наполнение из водопровода
|
* SP\_VIN - включено наполнение из водопровода
|
||||||
* SP\_FULL - бак наполнен
|
* SP\_FULL - бак наполнен
|
||||||
* SP\_DRYING - режим осушения системы: налив перекрыт, работает насос полива для слива бака (SP\_DRYING=7, out_sprinkler.h:34)
|
* SP\_DRYING - режим осушения системы: налив перекрыт, работает насос полива для слива бака (SP\_DRYING=7, out\_sprinkler.h:34)
|
||||||
|
|
||||||
Строковые значения, публикуемые в топик `$state` (out_sprinkler.cpp:263-308): `OFF`, `DREN_ON`, `DREN_OPERATE`, `DREN_EMPTY`, `VIN`, `FULL`, `DRYING`, `FAULT_VIN`, `FAULT_DREN`, `UNKNOWN`.
|
Строковые значения, публикуемые в топик `$state` (out\_sprinkler.cpp:263-308): `OFF`, `DREN_ON`, `DREN_OPERATE`, `DREN_EMPTY`, `VIN`, `FULL`, `DRYING`, `FAULT_VIN`, `FAULT_DREN`, `UNKNOWN`.
|
||||||
|
|
||||||
граф переходов конечного автомата системы налива воды
|
граф переходов конечного автомата системы налива воды
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ VIN|fbDren|DREN\_OPERATE|вылючить клапан vIN для набора
|
|||||||
VIN, DREN\_OPERATE|vMax|FULL | выключить vIN, rDren - бак полон|
|
VIN, DREN\_OPERATE|vMax|FULL | выключить vIN, rDren - бак полон|
|
||||||
VIN|таймаут 1200 сек | FAULT\_VIN| выключить vIN - бак так и не наполнился|
|
VIN|таймаут 1200 сек | FAULT\_VIN| выключить vIN - бак так и не наполнился|
|
||||||
DREN\_OPERATE|fbPump (качает основной насос)|DREN\_OPERATE|сброс таймера (@timer = now) — не считать ошибку, пока качает основной насос (L562)|
|
DREN\_OPERATE|fbPump (качает основной насос)|DREN\_OPERATE|сброс таймера (@timer = now) — не считать ошибку, пока качает основной насос (L562)|
|
||||||
DREN\_OPERATE|таймаут 4000 сек |FAULT_DREN|выключить rDren - не смотря на продолжительную работу насоса бак не наполнен|
|
DREN\_OPERATE|таймаут 4000 сек |FAULT\_DREN|выключить rDren - не смотря на продолжительную работу насоса бак не наполнен|
|
||||||
FULL|! wMax|DREN\_ON|дренаж перезапускается при опустошении бака (L609-617)|
|
FULL|! wMax|DREN\_ON|дренаж перезапускается при опустошении бака (L609-617)|
|
||||||
FAULT\_VIN, FAULT\_DREN|wMax|FULL|сброс ошибки при наполнении бака (L619-635)|
|
FAULT\_VIN, FAULT\_DREN|wMax|FULL|сброс ошибки при наполнении бака (L619-635)|
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ root/name/sprinkler/val -> -1 //система перейдет в режим FR
|
|||||||
|
|
||||||
Дополнительно к перекрытию поступления воды в бак (заблокирован автомат пополнения бака из дренажного насоса и водопровода) данная команда включает помпу.
|
Дополнительно к перекрытию поступления воды в бак (заблокирован автомат пополнения бака из дренажного насоса и водопровода) данная команда включает помпу.
|
||||||
|
|
||||||
- DRY переопределяет ON: если система находится в режиме `@state==SP_DRYING` и приходит команда ON, она исполняется как CMD_DRY, а не ON (out_sprinkler.cpp:837-841).
|
- DRY переопределяет ON: если система находится в режиме `@state==SP_DRYING` и приходит команда ON, она исполняется как CMD\_DRY, а не ON (out\_sprinkler.cpp:837-841).
|
||||||
- Режим DRY персистентен: `@state=SP_DRYING` хранится в конфиге и переживает перезагрузку контроллера; реле восстанавливаются из `@lastVals`, после рестарта в топик публикуется `DRYING`.
|
- Режим DRY персистентен: `@state=SP_DRYING` хранится в конфиге и переживает перезагрузку контроллера; реле восстанавливаются из `@lastVals`, после рестарта в топик публикуется `DRYING`.
|
||||||
|
|
||||||
Далее, требуется слить бак включением выбранных зон полива или через водяные розетки.
|
Далее, требуется слить бак включением выбранных зон полива или через водяные розетки.
|
||||||
@@ -207,7 +207,7 @@ root/name/sprinkler/val -> -1 //система перейдет в режим FR
|
|||||||
|
|
||||||
При старте (первый Poll) контроллер принудительно публикует все ключевые статусы: `$wMax`/`$wMin`/`$fbDren`/`$fbPump`/`$rPump`/`$rDren`/`$rVIN` + `$state`/`$fault` (L474-487). Повторно `$state`/`$fault` публикуются при командах ON/OFF (L842, L848).
|
При старте (первый Poll) контроллер принудительно публикует все ключевые статусы: `$wMax`/`$wMin`/`$fbDren`/`$fbPump`/`$rPump`/`$rDren`/`$rVIN` + `$state`/`$fault` (L474-487). Повторно `$state`/`$fault` публикуются при командах ON/OFF (L842, L848).
|
||||||
|
|
||||||
**Ошибки (onFault / $fault):** при каждом переходе состояния публикуется код ошибки в топик `$fault`: 0 — без ошибки, 1 — FAULT_VIN, 2 — FAULT_DREN (L311-315). Вместо публикации в `$fault` можно задать EXEC-объект `onFault` в корневом (`""`) объекте — в этом случае при срабатывании ошибки исполняется он с кодом ошибки аргументом (L260-262, L311-314).
|
**Ошибки (onFault / $fault):** при каждом переходе состояния публикуется код ошибки в топик `$fault`: 0 — без ошибки, 1 — FAULT\_VIN, 2 — FAULT\_DREN (L311-315). Вместо публикации в `$fault` можно задать EXEC-объект `onFault` в корневом (`""`) объекте — в этом случае при срабатывании ошибки исполняется он с кодом ошибки аргументом (L260-262, L311-314).
|
||||||
|
|
||||||
**Примеры выдачи в топики:**
|
**Примеры выдачи в топики:**
|
||||||
|
|
||||||
@@ -267,7 +267,7 @@ sensor:
|
|||||||
state_topic: "root/s_out/sprinkler/nord/val"
|
state_topic: "root/s_out/sprinkler/nord/val"
|
||||||
|
|
||||||
- name: "Полив капельный выполнено"
|
- name: "Полив капельный выполнено"
|
||||||
state_topic: "edem/s_out/sprinkler/trees/val"
|
state_topic: "house/s_out/sprinkler/trees/val"
|
||||||
|
|
||||||
- name: "Поливаем юг"
|
- name: "Поливаем юг"
|
||||||
state_topic: "root/s_out/sprinkler/south/$state"
|
state_topic: "root/s_out/sprinkler/south/$state"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
## 🆕 Новые документы
|
## 🆕 Новые документы
|
||||||
|
|
||||||
### 1. **mqtt_api_reference.md** (900+ строк)
|
### 1. **mqtt\_api\_reference.md** (900+ строк)
|
||||||
Полный справочник MQTT API и структуры топиков LightHub
|
Полный справочник MQTT API и структуры топиков LightHub
|
||||||
|
|
||||||
**Содержание:**
|
**Содержание:**
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
- Объяснение механизма восстановления состояния
|
- Объяснение механизма восстановления состояния
|
||||||
- Полная документация HTTP API
|
- Полная документация HTTP API
|
||||||
|
|
||||||
### 2. **suffixes_reference_v2.md** (800+ строк)
|
### 2. **suffixes\_reference\_v2.md** (800+ строк)
|
||||||
Исправленный справочник суффиксов MQTT согласно официальной wiki
|
Исправленный справочник суффиксов MQTT согласно официальной wiki
|
||||||
|
|
||||||
**Содержание:**
|
**Содержание:**
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
- Правильные диапазоны значений
|
- Правильные диапазоны значений
|
||||||
- Примеры на реальных сценариях
|
- Примеры на реальных сценариях
|
||||||
|
|
||||||
### 3. **mqtt_quick_reference.md** (350+ строк)
|
### 3. **mqtt\_quick\_reference.md** (350+ строк)
|
||||||
Быстрая шпаргалка часто используемых MQTT команд
|
Быстрая шпаргалка часто используемых MQTT команд
|
||||||
|
|
||||||
**Содержание:**
|
**Содержание:**
|
||||||
@@ -81,19 +81,19 @@
|
|||||||
- ✅ Добавлены MQTT примеры в быстрый старт
|
- ✅ Добавлены MQTT примеры в быстрый старт
|
||||||
- ✅ Указано на правильность согласно wiki.lazyhome.ru
|
- ✅ Указано на правильность согласно wiki.lazyhome.ru
|
||||||
|
|
||||||
### 2. **START_HERE.md** — Стартовая точка
|
### 2. **START\_HERE.md** — Стартовая точка
|
||||||
**Изменения:**
|
**Изменения:**
|
||||||
- ✅ Новые документы поднялись в начало списка
|
- ✅ Новые документы поднялись в начало списка
|
||||||
- ✅ Добавлена шпаргалка mqtt_quick_reference.md
|
- ✅ Добавлена шпаргалка mqtt\_quick\_reference.md
|
||||||
- ✅ Подчеркнута новизна mqtt_api_reference.md
|
- ✅ Подчеркнута новизна mqtt\_api\_reference.md
|
||||||
- ✅ Указано на исправления в suffixes_reference_v2.md
|
- ✅ Указано на исправления в suffixes\_reference\_v2.md
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ❌ Устаревшие документы
|
## ❌ Устаревшие документы
|
||||||
|
|
||||||
### suffixes_reference.md (архив)
|
### suffixes\_reference.md (архив)
|
||||||
- Заменен на: **suffixes_reference_v2.md**
|
- Заменен на: **suffixes\_reference\_v2.md**
|
||||||
- Причина: Неправильная структура суффиксов (не согласовывалась с wiki)
|
- Причина: Неправильная структура суффиксов (не согласовывалась с wiki)
|
||||||
- Оставлен для истории
|
- Оставлен для истории
|
||||||
|
|
||||||
@@ -165,38 +165,38 @@
|
|||||||
## 📚 Как использовать обновленную документацию
|
## 📚 Как использовать обновленную документацию
|
||||||
|
|
||||||
### Для новых пользователей:
|
### Для новых пользователей:
|
||||||
1. Начните с [mqtt_quick_reference.md](mqtt_quick_reference.md) (шпаргалка)
|
1. Начните с [mqtt\_quick\_reference.md](mqtt_quick_reference.md) (шпаргалка)
|
||||||
2. Затем изучите [mqtt_api_reference.md](mqtt_api_reference.md) (полный справочник)
|
2. Затем изучите [mqtt\_api\_reference.md](mqtt_api_reference.md) (полный справочник)
|
||||||
3. Используйте примеры из [configuration_examples.md](configuration_examples.md)
|
3. Используйте примеры из [configuration\_examples.md](configuration_examples.md)
|
||||||
|
|
||||||
### Для опытных пользователей:
|
### Для опытных пользователей:
|
||||||
1. Обновите топики согласно [mqtt_api_reference.md](mqtt_api_reference.md)
|
1. Обновите топики согласно [mqtt\_api\_reference.md](mqtt_api_reference.md)
|
||||||
2. Изучите новые суффиксы в [suffixes_reference_v2.md](suffixes_reference_v2.md)
|
2. Изучите новые суффиксы в [suffixes\_reference\_v2.md](suffixes_reference_v2.md)
|
||||||
3. Используйте HTTP API для альтернативного управления
|
3. Используйте HTTP API для альтернативного управления
|
||||||
|
|
||||||
### Для интеграций (Home Assistant, Node-Red, etc.):
|
### Для интеграций (Home Assistant, Node-Red, etc.):
|
||||||
1. Изучите структуру топиков: `root/[id или bcst или out]/item/[subitem]/suffix`
|
1. Изучите структуру топиков: `root/[id или bcst или out]/item/[subitem]/suffix`
|
||||||
2. Используйте примеры из [mqtt_api_reference.md](mqtt_api_reference.md)
|
2. Используйте примеры из [mqtt\_api\_reference.md](mqtt_api_reference.md)
|
||||||
3. Используйте [mqtt_quick_reference.md](mqtt_quick_reference.md) как шпаргалку
|
3. Используйте [mqtt\_quick\_reference.md](mqtt_quick_reference.md) как шпаргалку
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ✅ Валидация
|
## ✅ Валидация
|
||||||
|
|
||||||
Все документы проверены согласно официальной wiki:
|
Все документы проверены согласно официальной wiki:
|
||||||
- ✅ 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
|
||||||
- ✅ https://www.lazyhome.ru/dokuwiki/doku.php?id=api
|
- ✅ https://www.lazyhome.ru/dokuwiki/doku.php?id=api
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔗 Навигация
|
## 🔗 Навигация
|
||||||
|
|
||||||
- **Быстрый старт**: [START_HERE.md](START_HERE.md)
|
- **Быстрый старт**: [START\_HERE.md](START_HERE.md)
|
||||||
- **Полный индекс**: [README.md](README.md)
|
- **Полный индекс**: [README.md](README.md)
|
||||||
- **Шпаргалка**: [mqtt_quick_reference.md](mqtt_quick_reference.md)
|
- **Шпаргалка**: [mqtt\_quick\_reference.md](mqtt_quick_reference.md)
|
||||||
- **MQTT справочник**: [mqtt_api_reference.md](mqtt_api_reference.md)
|
- **MQTT справочник**: [mqtt\_api\_reference.md](mqtt_api_reference.md)
|
||||||
- **Суффиксы**: [suffixes_reference_v2.md](suffixes_reference_v2.md)
|
- **Суффиксы**: [suffixes\_reference\_v2.md](suffixes_reference_v2.md)
|
||||||
- **Конфигурация**: [light_hub_полное_инженерное_описание_json_конфигурации_v2.md](light_hub_полное_инженерное_описание_json_конфигурации_v2.md)
|
- **Конфигурация**: [light\_hub\_полное\_инженерное\_описание\_json\_конфигурации\_v2.md](light_hub_полное_инженерное_описание_json_конфигурации_v2.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -32,13 +32,13 @@
|
|||||||
"ac_2":[14,[128,
|
"ac_2":[14,[128,
|
||||||
"haier",
|
"haier",
|
||||||
{
|
{
|
||||||
"pwr":{"emit":"edem/s_out/ac_2/cmd","item":"vac/mode","@V":null},
|
"pwr":{"emit":"house/s_out/ac_2/cmd","item":"vac/mode","@V":null},
|
||||||
"$temp":{"emit":"edem/s_out/ac_2/$temp","item":"vac/temp","@S":null},
|
"$temp":{"emit":"house/s_out/ac_2/$temp","item":"vac/temp","@S":null},
|
||||||
"$fault":{"emit":"edem/s_out/ac_2/$fault"},
|
"$fault":{"emit":"house/s_out/ac_2/$fault"},
|
||||||
"set":{"emit":"edem/s_out/ac_2/set","item":"vac/set"},
|
"set":{"emit":"house/s_out/ac_2/set","item":"vac/set"},
|
||||||
"acmode":{"emit":"edem/s_out/ac_2/$mode","@V":null},
|
"acmode":{"emit":"house/s_out/ac_2/$mode","@V":null},
|
||||||
"fan":{"emit":"edem/s_out/ac_2/fan","@V":null},
|
"fan":{"emit":"house/s_out/ac_2/fan","@V":null},
|
||||||
"lock":{"emit":"edem/s_out/ac_2/lock","@V":null},
|
"lock":{"emit":"house/s_out/ac_2/lock","@V":null},
|
||||||
"fanoff":{}
|
"fanoff":{}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
Примеры:
|
Примеры:
|
||||||
<code>
|
<code>
|
||||||
{"emit":"edem/edem3/p_zal3/mode"}
|
{"emit":"house/house3/p_zal3/mode"}
|
||||||
[{"emit":"t_bath3","item":"tbath3"},{"item":"p_bedr3/floor_temp","can":[0,206,"val"]]
|
[{"emit":"t_bath3","item":"tbath3"},{"item":"p_bedr3/floor_temp","can":[0,206,"val"]]
|
||||||
</code>
|
</code>
|
||||||
|
|
||||||
|
|||||||
@@ -327,18 +327,18 @@ NB. Не надо именовать данные параметры имена
|
|||||||
items:{
|
items:{
|
||||||
"p_zal3":[14,[2,"panel",
|
"p_zal3":[14,[2,"panel",
|
||||||
{
|
{
|
||||||
"fan" :{"emit":"edem/air/vents/zal3/fan"},
|
"fan" :{"emit":"house/air/vents/zal3/fan"},
|
||||||
"mode":{"emit":"edem/air/vents/zal3/mode"},
|
"mode":{"emit":"house/air/vents/zal3/mode"},
|
||||||
"pwr" :{"emit":"edem/air/vents/zal3/pwr"},
|
"pwr" :{"emit":"house/air/vents/zal3/pwr"},
|
||||||
|
|
||||||
"sethum":{"emit":"edem/air/humzal3/set"},
|
"sethum":{"emit":"house/air/humzal3/set"},
|
||||||
"hum" :{"emit":"edem/air/humzal3/val","@S":null},
|
"hum" :{"emit":"house/air/humzal3/val","@S":null},
|
||||||
|
|
||||||
"setvoc":{"emit":"edem/air/voczal3/set"},
|
"setvoc":{"emit":"house/air/voczal3/set"},
|
||||||
"voc" :{"emit":"edem/air/voczal3/val"},
|
"voc" :{"emit":"house/air/voczal3/val"},
|
||||||
|
|
||||||
"settemp" :{"item":"tzal3/set"},
|
"settemp" :{"item":"tzal3/set"},
|
||||||
"roomtemp" :{"emit":"edem/fl2/term_bedr/1/val"},
|
"roomtemp" :{"emit":"house/fl2/term_bedr/1/val"},
|
||||||
"ch_temp":{},
|
"ch_temp":{},
|
||||||
"ch_hum":{},
|
"ch_hum":{},
|
||||||
"ext_temp":{},
|
"ext_temp":{},
|
||||||
@@ -358,7 +358,7 @@ NB. Не надо именовать данные параметры имена
|
|||||||
Данную фильтрацию можно отменить, если в настройке параметра добавить переменную @V типа, отличного от целого.
|
Данную фильтрацию можно отменить, если в настройке параметра добавить переменную @V типа, отличного от целого.
|
||||||
Например так:
|
Например так:
|
||||||
<code>
|
<code>
|
||||||
"fan" :{"emit":"edem/air/vents/zal3/fan","@V":null},
|
"fan" :{"emit":"house/air/vents/zal3/fan","@V":null},
|
||||||
</code>
|
</code>
|
||||||
В этом случае, после того, как мы что-то записали в регистр, при следующем же опросе устройства, это будет обнаружено (если значение изменилось) и будут предприняты настроенные действия (например, значение будет отправлено по MQTT и отобразится в мобильном приложении Home Assistant)
|
В этом случае, после того, как мы что-то записали в регистр, при следующем же опросе устройства, это будет обнаружено (если значение изменилось) и будут предприняты настроенные действия (например, значение будет отправлено по MQTT и отобразится в мобильном приложении Home Assistant)
|
||||||
|
|
||||||
@@ -432,12 +432,12 @@ RAW 14
|
|||||||
"vent":[14,[247,"airset",
|
"vent":[14,[247,"airset",
|
||||||
|
|
||||||
{
|
{
|
||||||
"tset":{"emit":"edem/s_out/vent/tset/set","@V":null},
|
"tset":{"emit":"house/s_out/vent/tset/set","@V":null},
|
||||||
"pmode":{"emit":"edem/s_out/vent/pmode/set","@V":null},
|
"pmode":{"emit":"house/s_out/vent/pmode/set","@V":null},
|
||||||
"fanspeed":{"emit":"edem/s_out/vent/fanspeed/set","@V":null},
|
"fanspeed":{"emit":"house/s_out/vent/fanspeed/set","@V":null},
|
||||||
"on":{"emit":"edem/s_out/vent/on/set","@V":null},
|
"on":{"emit":"house/s_out/vent/on/set","@V":null},
|
||||||
|
|
||||||
"rtemp":{"emit":"edem/s_out/vent/rtemp"},
|
"rtemp":{"emit":"house/s_out/vent/rtemp"},
|
||||||
|
|
||||||
"fanmin":{},
|
"fanmin":{},
|
||||||
"fanmax":{}
|
"fanmax":{}
|
||||||
@@ -519,20 +519,20 @@ RAW 14
|
|||||||
"vent":[14,[247,"airset",
|
"vent":[14,[247,"airset",
|
||||||
|
|
||||||
{
|
{
|
||||||
"tset":{"emit":"edem/s_out/vent/set","@V":null},
|
"tset":{"emit":"house/s_out/vent/set","@V":null},
|
||||||
"pmode":{"emit":"edem/s_out/vent/cmd","@V":null},
|
"pmode":{"emit":"house/s_out/vent/cmd","@V":null},
|
||||||
"fanspeed":{"emit":"edem/s_out/vent/fan","@V":null},
|
"fanspeed":{"emit":"house/s_out/vent/fan","@V":null},
|
||||||
"on":{"emit":"edem/s_out/vent/oncmd","@V":null},
|
"on":{"emit":"house/s_out/vent/oncmd","@V":null},
|
||||||
|
|
||||||
"ruheat":{"emit":"edem/s_out/vent/ruheat"},
|
"ruheat":{"emit":"house/s_out/vent/ruheat"},
|
||||||
"ruslow":{"emit":"edem/s_out/vent/rupump"},
|
"ruslow":{"emit":"house/s_out/vent/rupump"},
|
||||||
"ramode":{"emit":"edem/s_out/vent/ramode"},
|
"ramode":{"emit":"house/s_out/vent/ramode"},
|
||||||
"rfanspd":{"emit":"edem/s_out/vent/rfanspd"},
|
"rfanspd":{"emit":"house/s_out/vent/rfanspd"},
|
||||||
"rfanlvl":{"emit":"edem/s_out/vent/rfanlvl"},
|
"rfanlvl":{"emit":"house/s_out/vent/rfanlvl"},
|
||||||
"rpumpon":{"emit":"edem/s_out/vent/rpumpon"},
|
"rpumpon":{"emit":"house/s_out/vent/rpumpon"},
|
||||||
"rtemp":{"emit":"edem/s_out/vent/rtemp"},
|
"rtemp":{"emit":"house/s_out/vent/rtemp"},
|
||||||
"rtempset":{"emit":"edem/s_out/vent/rtempset"},
|
"rtempset":{"emit":"house/s_out/vent/rtempset"},
|
||||||
"fault":{"emit":"edem/s_out/vent/fault"},
|
"fault":{"emit":"house/s_out/vent/fault"},
|
||||||
|
|
||||||
"tautoheat":{},
|
"tautoheat":{},
|
||||||
"tautocool":{},
|
"tautocool":{},
|
||||||
@@ -546,7 +546,7 @@ RAW 14
|
|||||||
"twaterstart":{},
|
"twaterstart":{},
|
||||||
"twatershut":{},
|
"twatershut":{},
|
||||||
"twateridle":{},
|
"twateridle":{},
|
||||||
"fanauto":{"emit":"edem/s_out/vent/fanauto/set","@V":null},
|
"fanauto":{"emit":"house/s_out/vent/fanauto/set","@V":null},
|
||||||
"numspeed":{},
|
"numspeed":{},
|
||||||
"offbyfan":{}
|
"offbyfan":{}
|
||||||
}
|
}
|
||||||
|
|||||||