# LightHub: Описание модулей и компонентов > Полное инженерное описание всех основных модулей LightHub с примерами конфигурации и протоколами управления. > Предназначено для разработчиков, интеграторов и системных инженеров. --- ## Содержание 1. [Выходные модули (Out)](#выходные-модули) - [out_Multivent](#out_multivent---многоканальный-кондиционер-вентиляция) - [out_AC](#out_ac---управление-кондиционером) - [out_PID](#out_pid---пид-регулятор) - [out_Relay](#out_relay---электромагнитное-реле) - [out_PWM](#out_pwm---широтно-импульсная-модуляция) - [out_DMX](#out_dmx---dmx512-управление-светом) - [out_Motor](#out_motor---управление-двигателем) - [out_Elevator](#out_elevator---управление-лифтом) - [out_Humidifier](#out_humidifier---управление-увлажнителем) - [out_Counter](#out_counter---счётчик-импульсов) - [out_SPILed](#out_spiled---управление-светодиодами) - [out_Mercury](#out_mercury---счётчик-меркурий) - [out_UARTBridge](#out_uartbridge---uart-мост) 2. [Входные модули (In)](#входные-модули) - [in_CCS811_HDC1080](#in_ccs811_hdc1080---датчик-качества-воздуха) --- # Выходные модули ## out_Multivent — Многоканальный кондиционер/вентиляция ### Описание Модуль управления многозональными системами кондиционирования воздуха и центральной вентиляции. **Основные функции:** - Управление центральной установкой (компрессор, вентилятор) - Независимое регулирование температуры для каждой зоны/комнаты - PID-контроллеры для стабилизации микроклимата - Автоматическая балансировка воздушного потока между зонами - Каскадное управление задвижками и затворами ### Тип в JSON ``` [14, ["device_name", {zones_and_settings}]] ``` ### Формат конфигурации ```json "multizone_ac": [ 14, [ "haier", { "": { "val": {"emit": "home/ac/temp"}, "mode": {"emit": "home/ac/mode"} }, "bedroom": { "fan": {"emit": "home/bedroom/fan"}, "cmd": {"emit": "home/bedroom/cmd"}, "out": {"emit": "home/bedroom/out"}, "V": 40, "pid": [1.0, 0.05, 0.02, 5.0], "set": {"emit": "home/bedroom/setpoint"}, "val": {"emit": "home/bedroom/temp"} } } ] ] ``` ### Ключевые параметры | Параметр | Тип | Описание | |----------|-----|---------| | `V` | int | Номинальный объём воздуха (м³/ч) | | `pid` | [Kp, Ki, Kd, dT] | Коэффициенты PID-регулятора | | `set` | float | Требуемая температура | | `val` | float | Текущая температура | | `fan` | int (0-255) | Открытие вентилятора | | `cmd` | int | Команда (OFF, ON, HEAT, COOL, FAN, etc.) | | `out` | int (0-255) | Выход задвижки | ### Режимы команд - `CMD_OFF` (0) — отключено - `CMD_ON` (1) — включено - `CMD_HEAT` (2) — нагрев - `CMD_COOL` (3) — охлаждение - `CMD_FAN` (4) — вентиляция - `CMD_DRY` (5) — осушение ### Примеры Полное описание с примерами: [multivent_module_description.md](multivent_module_description.md) --- ## out_AC — Управление кондиционером ### Описание Управление одиночным кондиционером через Modbus или прямое управление через протокол AC (18-100 байт). **Основные функции:** - Управление режимом (HEAT, COOL, FAN, DRY, AUTO) - Управление скоростью вентилятора (LOW, MEDIUM, HIGH, AUTO) - Управление температурой - Поддержка качания жалюзей (SWING) - Блокировка пульта - Режим QUIET (тихий режим) ### Тип в JSON ``` [128, ["device_name", {parameters}]] ``` ### Формат конфигурации ```json "air_conditioner": [ 128, [ "haier", { "pwr": {"emit": "home/ac/power"}, "acmode": {"emit": "home/ac/mode"}, "set": {"emit": "home/ac/setpoint"}, "fan": {"emit": "home/ac/fan_speed"}, "swing": {"emit": "home/ac/swing"}, "lock": {"emit": "home/ac/lock"}, "$temp": {"emit": "home/ac/temp"} } ] ] ``` ### Параметры управления | Параметр | Значение | Описание | |----------|----------|---------| | `pwr` | ON/OFF | Питание компрессора | | `acmode` | COOL/HEAT/FAN/DRY/AUTO | Режим | | `set` | 16-32°C | Установка температуры | | `fan` | LOW/MED/HIGH/AUTO | Скорость вентилятора | | `swing` | ON/OFF | Качание жалюзей | | `$temp` | читаемый | Текущая температура воздуха | --- ## out_PID — PID-регулятор ### Описание Универсальный PID-контроллер для стабилизации любых процессов (температура, влажность, давление и т.д.). **Основные функции:** - Независимое PID-регулирование с тремя коэффициентами - Регулируемый период сэмплирования - Будильник при выходе за пределы диапазона - Защита от интегральной раскрутки ### Тип в JSON ``` [17, ["input_topic", "setpoint", "output_topic"]] ``` ### Формат конфигурации ```json "temperature_controller": [ 17, [ {"emit": "sensors/room/temp"}, 21.5, {"emit": "heating/power"} ] ] ``` ### JSON с полными параметрами ```json "pid_climate": [ 17, { "in": {"emit": "sensors/temp"}, "set": 22.0, "out": {"emit": "hvac/power"}, "Kp": 1.0, "Ki": 0.05, "Kd": 0.02, "dT": 5, "alarm": 2.0, "alarmTimeout": 300 } ] ``` ### Параметры | Параметр | Тип | Диапазон | Описание | |----------|-----|----------|---------| | `Kp` | float | 0.1—10.0 | Пропорциональный коэффициент | | `Ki` | float | 0.0—1.0 | Интегральный коэффициент | | `Kd` | float | 0.0—1.0 | Дифференциальный коэффициент | | `dT` | int | 1—60 | Период сэмплирования (сек) | | `alarm` | float | - | Порог срабатывания будильника | | `alarmTimeout` | int | - | Время до срабатывания будильника (сек) | --- ## out_Relay — Электромагнитное реле ### Описание Управление электромагнитными реле через цифровой выход микроконтроллера. **Основные функции:** - Включение/отключение нагрузки - Поддержка инвертированной логики - Управление периодом переключения ### Тип в JSON ``` [1, [pin, {settings}]] ``` ### Формат конфигурации ```json "pump_relay": [ 1, [ 33, { "inverted": false } ] ] ``` ### Параметры | Параметр | Тип | Описание | |----------|-----|---------| | `pin` | int | Номер GPIO-пина | | `inverted` | bool | Инвертировать логику (false = HIGH=ON) | | `period` | int | Период срабатывания (мс) | ### Управление ``` Отправить: home/pump_relay Значение: 0 (OFF) или 1 (ON) ``` --- ## out_PWM — Широтно-импульсная модуляция ### Описание Управление PWM для регулирования яркости светодиодов, скорости двигателей, интенсивности нагрузок. **Основные функции:** - Регулирование от 0% до 100% - Поддержка RGB-управления (в base-классе colorChannel) - Частотные настройки ### Тип в JSON ``` [9, [channel, freq, {settings}]] ``` ### Формат конфигурации ```json "led_brightness": [ 9, [ 5, 1000, {} ] ] ``` ### Управление ``` Отправить: home/led/brightness Значение: 0-255 (0=0%, 255=100%) ``` --- ## out_DMX — DMX512 управление светом ### Описание Управление световыми приборами по протоколу DMX512 (театральное и архитектурное освещение). **Основные функции:** - Поддержка до 512 каналов - Управление цветом и интенсивностью - Синхронизированное обновление ### Тип в JSON ``` [11, [channel_list, {settings}]] ``` ### Формат конфигурации ```json "stage_lighting": [ 11, [ [1, 2, 3, 4], {} ] ] ``` ### Управление ``` Отправить: home/lighting/color Значение: {"r":255, "g":128, "b":0} ``` --- ## out_Motor — Управление двигателем ### Описание Управление моторами с обратной связью по положению (рольставни, жалюзи, шторы). **Основные функции:** - Управление направлением (вверх/вниз) - Обратная связь по положению - Защита от перегрузки по времени - Плавное позиционирование ### Тип в JSON ``` [3, [pin_up, pin_down, pin_feedback, {settings}]] ``` ### Формат конфигурации ```json "roller_blind": [ 3, [ 32, 33, 34, { "maxOnTime": 120000, "feedbackOpen": 0, "feedbackClosed": 1023, "inverted": false } ] ] ``` ### Параметры | Параметр | Тип | Описание | |----------|-----|---------| | `pinUp` | int | GPIO для движения вверх | | `pinDown` | int | GPIO для движения вниз | | `pinFeedback` | int | GPIO обратной связи (аналоговый) | | `maxOnTime` | int | Макс. время работы (мс), 120000 = 2 мин | | `feedbackOpen` | int | Значение обратной связи (открыто) | | `feedbackClosed` | int | Значение обратной связи (закрыто) | ### Команды | Команда | Значение | Описание | |---------|----------|---------| | UP | -1 | Поднять | | DOWN | 1 | Опустить | | STOP | 0 | Остановить | | Позиция | 0-255 | Установить позицию (0=открыто, 255=закрыто) | --- ## out_Elevator — Управление лифтом ### Описание Управление лифтом через UART или интерфейс вызова. Синхронизация между контроллерами через сетевой мост. **Основные функции:** - Управление вызовом лифта - Передача команды на нужный этаж - Контроль состояния лифта - Дублирование по UART ### Тип в JSON ``` [ELEVATOR_TYPE, ["uart_port", {settings}]] ``` ### Формат конфигурации ```json "elevator": [ 50, [ "Serial1", { "baud": 9600, "floors": 5 } ] ] ``` ### Параметры UART | Параметр | Значение | Описание | |----------|----------|---------| | `baud` | 9600-115200 | Скорость UART | | `serialParam` | 8N1 | Параметры кадра | --- ## out_Humidifier — Управление увлажнителем ### Описание Управление промышленным ультразвуковым или парогенерирующим увлажнителем с контролем давления и защитой от отказов. **Основные функции:** - Контроль давления в баке - Управление электромагнитными клапанами - Защита от перепада давления - Автоматическая очистка (FLUSH) - Состояния готовности и отказа ### Тип в JSON ``` [HUMIDIFIER_TYPE, [pump_pin, valve_pin, pressure_pin, {settings}]] ``` ### Формат конфигурации ```json "mist_humidifier": [ 40, [ 25, 26, 35, { "minPressure": 400, "maxPressure": 600, "flushInterval": 125000 } ] ] ``` ### Состояния | Состояние | Код | Описание | |-----------|-----|---------| | H_UNKNOWN | 0 | Неизвестное | | H_READY | 1 | Готов к работе | | H_PREPARE_FOR_START | 2 | Подготовка к пуску | | H_MOTOR_ON | 4 | Мотор работает | | H_OPERATE | 5 | В режиме увлажнения | | H_FLUSH | 8 | Промывка системы | | H_FAULT_PRESSURE | -1 | Ошибка давления | | H_FAULT_OVERPRESSURE | -3 | Перепад давления | --- ## out_Counter — Счётчик импульсов ### Описание Счётчик импульсов для контроля расхода (воды, газа) или подсчета событий. **Основные функции:** - Подсчет импульсов - Накопление значений - Фильтрация дребезга контактов - Калибровка по расходу ### Тип в JSON ``` [6, [input_pin, {settings}]] ``` ### Формат конфигурации ```json "water_meter": [ 6, [ 14, { "pulsePerLiter": 10, "debounce": 100 } ] ] ``` ### Параметры | Параметр | Тип | Описание | |----------|-----|---------| | `pulsePerLiter` | int | Кол-во импульсов на 1 литр (для расчета) | | `debounce` | int | Фильтрация дребезга (мс) | --- ## out_SPILed — Управление светодиодами ### Описание Управление адресуемыми RGB-светодиодами (WS2812, APA102) через SPI или GPIO. **Основные функции:** - Независимое управление каждым светодиодом - RGB-цветовая палитра - Эффекты и анимации - Поддержка Adafruit и FastLED библиотек ### Тип в JSON ``` [10, [pin, numLeds, ledsType, {settings}]] ``` ### Формат конфигурации ```json "led_strip": [ 10, [ 13, 30, 0, {} ] ] ``` ### Параметры | Параметр | Тип | Описание | |----------|-----|---------| | `pin` | int | GPIO пин (данные) | | `numLeds` | int | Количество светодиодов | | `ledsType` | int | Тип: 0=WS2812 (NeoPixel), 1=APA102 | ### Управление ``` Отправить: home/leds/color Значение: {"r":255, "g":0, "b":128} Отправить: home/leds/brightness Значение: 0-255 ``` --- ## out_Mercury — Счётчик Меркурий ### Описание Управление и опрос электросчётчиков серии Меркурий через UART Modbus RTU. **Основные функции:** - Чтение энергопотребления (активная/реактивная) - Получение тарифных данных - Многозонное чтение (пиковое, полупиковое, ночное) - Контроль связи и состояния счётчика ### Тип в JSON ``` [MERCURY_TYPE, ["device_address", {settings}]] ``` ### Формат конфигурации ```json "electricity_meter": [ 45, [ "1", { "baud": 9600, "pollingInterval": 60000 } ] ] ``` ### Параметры Modbus | Параметр | Значение | Описание | |----------|----------|---------| | `baud` | 9600 | Скорость UART | | `pollingInterval` | мс | Интервал опроса | ### Получаемые значения ``` home/meter/total_power - Общее потребление (кВт·ч) home/meter/peak_power - Пиковое потребление home/meter/halfpeak_power - Полупиковое потребление home/meter/night_power - Ночное потребление ``` --- ## out_UARTBridge — UART мост ### Описание Создание прозрачного двунаправленного моста между двумя UART портами с сохранением данных и логированием. **Основные функции:** - Прозрачная маршрутизация UART↔UART - Буферизация пакетов (до 64 байт) - Логирование трафика - Поддержка разных скоростей на каждом порту ### Тип в JSON ``` [UARTBRIDGE_TYPE, ["portA", "portB", {settings}]] ``` ### Формат конфигурации ```json "uart_gateway": [ 55, [ "Serial1", "Serial2", { "baudA": 9600, "baudB": 19200, "paramA": "8N1", "paramB": "8N1" } ] ] ``` ### Параметры | Параметр | Тип | Описание | |----------|-----|---------| | `baudA/B` | int | Скорость портов (9600-115200) | | `paramA/B` | string | Формат кадра (8N1, 8E1, 8O1) | --- # Входные модули ## in_CCS811_HDC1080 — Датчик качества воздуха ### Описание Комбинированный датчик для измерения качества воздуха с использованием: - **HDC1080** — датчик температуры и влажности (I2C) - **CCS811** — датчик CO₂ и TVOC (I2C) **Основные функции:** - Измерение температуры (-40...125°C) - Измерение влажности (0-100%) - Измерение eCO₂ (400-8192 ppm) - Измерение TVOC (0-1187 ppb) - Температурная компенсация ### Тип в JSON ``` [SENSOR_TYPE, ["i2c_address", {settings}]] ``` ### Формат конфигурации ```json "air_quality": [ 100, [ "0x5A", { "tempOffset": 0.0, "humidityOffset": 0.0, "co2Offset": 0, "pollInterval": 10000 } ] ] ``` ### Выводимые параметры | Параметр | Единица | Диапазон | Описание | |----------|---------|----------|---------| | `temperature` | °C | -40...125 | Температура воздуха | | `humidity` | % | 0...100 | Относительная влажность | | `eCO2` | ppm | 400...8192 | Эквивалентный CO₂ | | `TVOC` | ppb | 0...1187 | Летучие органические соединения | ### Адреса I2C | Устройство | Адрес | Описание | |-----------|-------|---------| | CCS811 | 0x5A | По умолчанию (WAK на GND) | | CCS811 | 0x5B | Альтернативный (WAK на VDD) | | HDC1080 | 0x40 | Всегда фиксирован | ### MQTT маршрутизация ```json { "temp": {"emit": "home/sensors/air/temperature"}, "humidity": {"emit": "home/sensors/air/humidity"}, "co2": {"emit": "home/sensors/air/co2"}, "tvoc": {"emit": "home/sensors/air/tvoc"} } ``` ### Примеры использования #### Простой мониторинг качества воздуха ```json "room_air_sensor": [ 100, [ "0x5A", { "emit": "home/sensors/living_room/air" } ] ] ``` #### С калибровкой смещений ```json "calibrated_sensor": [ 100, [ "0x5A", { "tempOffset": -2.5, "humidityOffset": 5.0, "co2Offset": 50, "pollInterval": 30000, "emit": "sensors/hvac/inlet" } ] ] ``` --- ## Сводная таблица типов модулей | Модуль | Тип | Назначение | Управление | |--------|-----|-----------|-----------| | out_Multivent | 14 | Многоканальный кондиционер | PID + MQTT | | out_AC | 128 | Одиночный кондиционер | Modbus/прямой протокол | | out_PID | 17 | PID-регулятор | MQTT | | out_Relay | 1 | Электромагнитное реле | GPIO | | out_PWM | 9 | ШИМ-управление | GPIO-PWM | | out_DMX | 11 | DMX512 освещение | DMX512 | | out_Motor | 3 | Управление двигателем | GPIO-пары | | out_Elevator | 50 | Управление лифтом | UART | | out_Humidifier | 40 | Управление увлажнителем | GPIO + датчики | | out_Counter | 6 | Счётчик импульсов | GPIO-счёт | | out_SPILed | 10 | Адресуемые светодиоды | SPI/GPIO | | out_Mercury | 45 | Электросчётчик | Modbus RTU | | out_UARTBridge | 55 | UART-мост | UART↔UART | | in_CCS811_HDC1080 | 100 | Качество воздуха | I2C | --- ## Общие принципы конфигурации ### 1. Подключение MQTT Все параметры с полем `emit` автоматически публикуются в MQTT: ```json "parameter": { "emit": "home/device/parameter" } ``` ### 2. Управление из MQTT Отправка значения: ``` mqtt publish home/device/parameter 128 ``` ### 3. Использование массивов Для нескольких параметров: ```json [ {"emit": "topic1"}, {"emit": "topic2"}, {"emit": "topic3"} ] ``` ### 4. Служебные параметры - `@V` (null) — не публиковать значения - `@S` (null) — не публиковать при сохранении - `@C` — служебное, не использовать --- ## Диагностика проблем ### Модуль не инициализируется Проверить: 1. Конфигурация JSON синтаксически корректна 2. GPIO-пины не конфликтуют 3. I2C/UART устройства подключены 4. Библиотеки установлены ### Нет связи с устройством 1. Проверить скорость UART (baud) 2. Проверить подключение TX/RX 3. Проверить адрес Modbus/I2C 4. Посмотреть лог сообщений ### Неустойчивые значения PID 1. Снизить Kp (коэффициент пропорциональности) 2. Увеличить dT (период сэмплирования) 3. Добавить Kd (демпфирование) --- **Версия документа:** 1.0 **Дата:** 2026-01-21 **Статус:** Утверждено