Files
lighthub/documentation/core/modules_description.md
andry f496e30600 Add configuration examples for various devices and functionalities
- Introduced multivent ventilation configuration for managing multiple zones.
- Added PID heating batteries configuration for temperature control.
- Created relay GPIO switch configuration for controlling relays.
- Implemented RGBW LED strip configuration for lighting control.
- Added Modbus CO2 sensor configuration for environmental monitoring.
- Introduced Sonoff S26 humidity controller example for humidity management.
- Created sprinkler irrigation configuration for garden management.
- Added thermostat on/off relay configuration for heating and cooling control.
- Implemented ventilation fan monitoring configuration for performance tracking.
- Added core concepts documentation for LightHub, detailing items, commands, and execution objects.
2026-10-15 19:11:34 +03:00

37 KiB
Raw Permalink Blame History

LightHub: Описание модулей и компонентов

Полное инженерное описание всех основных модулей LightHub с примерами конфигурации и протоколами управления. Предназначено для разработчиков, интеграторов и системных инженеров.


Содержание

  1. Выходные модули (Out)

  2. Входные модули (In)


Выходные модули

out_Multivent — Многоканальный кондиционер/вентиляция

Описание

Модуль управления многозональными системами кондиционирования воздуха и центральной вентиляции.

Основные функции:

  • Управление центральной установкой (компрессор, вентилятор)
  • Независимое регулирование температуры для каждой зоны/комнаты
  • PID-контроллеры для стабилизации микроклимата
  • Автоматическая балансировка воздушного потока между зонами
  • Каскадное управление задвижками и затворами

Тип в JSON

[18, {zones_and_settings}]

Рабочая форма: [[18, 5], {зоны}] (itemArg должен быть объектом, иначе «VENT: config failed»).

Формат конфигурации

"vac": [
  [18, 5],
  {
    "": {
      "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"}
    }
  }
]

Ключ "" — AC-узел (центральная установка). Ключ «supress» пишется с одной «s».

Ключевые параметры

Параметр Тип Описание
V int Номинальный объём воздуха (м³/ч)
pid массив ≥3 [kP, kI, kD, dT] (ключи строчные), dT — деф 5
AlarmTime float Таймаут аларма (с), деф 120
AlarmValue float Значение при аларме, деф 0
set float Требуемая температура
val float Текущая температура
fan int (0-255) Открытие вентилятора
cmd int Команда (коды см. ниже)
out int (0-255) Выход задвижки

Режимы команд (коды itemCmd)

Команда Код
ON 1
OFF 2
REST 3
TOGGLE 4
HALT 5
XON 6
XOFF 7
AUTO 0xE (14)
FAN_ONLY 0xF (15)
HIGH 0x10 (16)
MEDIUM 0x11 (17)
LOW 0x12 (18)
HEAT 0x14 (20)
COOL 0x15 (21)
DRY 0x16 (22)

Примеры

Полное описание с примерами: multivent_module_description.md


out_AC — Управление кондиционером

Описание

Управление одиночным кондиционером через проприетарный UART-протокол Haier (9600, кадры 13 байт — команда / 37 байт — ответ). НЕ Modbus.

Основные функции:

  • Управление режимом (HEAT, COOL, FAN_ONLY, DRY, AUTO)
  • Управление скоростью вентилятора (LOW, MEDIUM, HIGH, OFF или число)
  • Управление температурой
  • Поддержка качания жалюзей (SWING)
  • Блокировка пульта
  • Режим QUIET (тихий режим)

Тип в JSON

[10, portNum(0-3)]

Опционально — emit-объект (arg[1]) с ключами fan, set, cmd, temp.

Формат конфигурации

"air_conditioner": [
  10,
  [
    0,
    {
      "set": {"emit": "home/ac/setpoint"},
      "fan": {"emit": "home/ac/fan_speed"},
      "cmd": {"emit": "home/ac/mode"},
      "temp": {"emit": "home/ac/temp"}
    }
  ]
]

Параметры управления

Параметр Значение Описание
portNum 0-3 Номер UART-порта (0 = основной Serial)
/set 16-40 Установка температуры
/fan LOW/MEDIUM/HIGH/OFF или число Скорость вентилятора
/cmd AUTO/HEAT/COOL/FAN_ONLY/DRY Текстовые режимы (payload команды)
/mode число (B_MODE) Режим
/lock ON/OFF Блокировка пульта
/swing ON/OFF Качание жалюзей
/quiet ON/OFF Тихий режим (legacy «queit» принимается; статус публикуется в /quiet)
/raw - Сырой кадр протокола

out_PID — PID-регулятор

Описание

Универсальный PID-контроллер для стабилизации любых процессов (температура, влажность, давление и т.д.).

Основные функции:

  • Независимое PID-регулирование с тремя коэффициентами
  • Регулируемый период сэмплирования
  • Будильник при выходе за пределы диапазона
  • Защита от интегральной раскрутки

Тип в JSON

[13, [[kP, kI, kD, dT, alarmTO, alarmVal, outMin, outMax]], outputExecObj, cascadeExecObj], setpoint

Формат конфигурации

"temperature_controller": [
  13,
  [
    [1.0, 0.05, 0.02, 5, 600000, 0, 0, 255],
    {"emit": "heating/power"},
    {"emit": "cascade/out"}
  ],
  21.5
]

Параметры

Параметр Тип Описание
kP float Пропорциональный коэффициент (деф 1.0)
kI float Интегральный коэффициент (деф 0.0)
kD float Дифференциальный коэффициент (деф 0.0)
dT float Период сэмплирования (сек), деф 5
alarmTO int Таймаут (деф 600*1000 мс)
alarmVal float Принудительное значение выхода при аларме
outMin float Мин. выход, деф 0
outMax float Макс. выход, деф 255

Вход регулятора — /val, setpoint задаётся как 3-й элемент item (начальное значение). Диапазоны kP/kI/kD/dT кодом не валидируются. Допускается и массив из 6 элементов: [kP, kI, kD, dT, alarmTO, alarmVal].


out_Relay — Электромагнитное реле

Описание

Управление электромагнитными реле через цифровой выход микроконтроллера.

Основные функции:

  • Включение/отключение нагрузки
  • Поддержка инвертированной логики
  • Управление периодом переключения

Тип в JSON

RELAY:  [6, pin, val, cmd]
RELAYX: [16, [pin, period_сек], val, cmd]

Формат конфигурации

"pump_relay": [6, 33]

Параметры

Параметр Тип Описание
pin int Номер GPIO-пина; инверсия логики — отрицательный пин
period int Только RELAYX: период срабатывания (секунды, в коде умножается на 1000), деф 5000 мс

Управление

Отправить: home/pump_relay
Значение: 0 (OFF) или 1 (ON)

out_PWM — Широтно-импульсная модуляция

Описание

Управление PWM для регулирования яркости светодиодов, скорости двигателей, интенсивности нагрузок.

Основные функции:

  • Регулирование от 0% до 100%
  • Поддержка RGB-управления (в base-классе colorChannel)
  • Число пинов (1-5) определяет режим: CH_PWM / RGB / RGBW / RGBWW

Тип в JSON

[3, [pin0, pin1, ...]]

Частота из конфигурации не читается.

Формат конфигурации

"led_brightness": [
  3,
  [5]
]

Управление

Отправить: home/led/brightness
Значение: 0-255 (0=0%, 255=100%)

out_DMX — DMX512 управление светом

Описание

Управление световыми приборами по протоколу DMX512 (театральное и архитектурное освещение).

Основные функции:

  • Поддержка до 512 каналов
  • Управление цветом и интенсивностью
  • Синхронизированное обновление

Тип в JSON

[0, [addr1, addr2, ...]]

Список адресов DMX-каналов (1-5); объекта {settings} нет.

Формат конфигурации

"stage_lighting": [
  0,
  [1, 2, 3, 4]
]

Управление

Отправить: home/lighting/color
Значение: {"r":255, "g":128, "b":0}

out_Motor — Управление двигателем

Описание

Управление моторами с обратной связью по положению (рольставни, жалюзи, шторы).

Основные функции:

  • Управление направлением (вверх/вниз)
  • Обратная связь по положению
  • Защита от перегрузки по времени
  • Плавное позиционирование

Тип в JSON

[12, [pinUp, pinDown, pinFeedback, fbOpen, fbClosed, maxOnTime_ms]]

Формат конфигурации

"roller_blind": [
  12,
  [
    32,
    33,
    34,
    0,
    1023,
    10000
  ]
]

Параметры

Параметр Тип Описание
pinUp int GPIO для движения вверх (инверсия — отрицательный пин)
pinDown int GPIO для движения вниз
pinFeedback int GPIO обратной связи (аналоговый)
fbOpen int Значение обратной связи (открыто)
fbClosed int Значение обратной связи (закрыто)
maxOnTime_ms int Макс. время работы (мс), деф 10000

Команды

Позиционное управление: цель — значение 0-255. ON → движение к заданной позиции, OFF/HALT → 0. Команд UP/DOWN/STOP нет.


out_Elevator — Управление лифтом

Описание

Управление лифтом через UART или интерфейс вызова. Синхронизация между контроллерами через сетевой мост.

Основные функции:

  • Управление вызовом лифта
  • Передача команды на нужный этаж
  • Контроль состояния лифта
  • Дублирование по UART

Тип в JSON

[19, {"serial": "8N1", "baud": 19200, "log": ...}]

Реализован (компилируется с ELEVATOR_ENABLE). itemArg — объект. Порты фиксированные (MODULE_UATRBRIDGE_UARTA/B).

Формат конфигурации

"elevator": [
  19,
  {
    "serial": "8N1",
    "baud": 19200,
    "log": true
  }
]

Параметры

Параметр Значение Описание
serial "8N1" Параметры кадра (строка, деф "8N1")
baud 19200 Скорость UART (деф 19200)
log bool Логирование

out_Humidifier — Управление увлажнителем

Описание

Управление промышленным ультразвуковым или парогенерирующим увлажнителем с контролем давления и защитой от отказов.

Основные функции:

  • Контроль давления в баке
  • Управление электромагнитными клапанами
  • Защита от перепада давления
  • Автоматическая очистка (FLUSH)
  • Состояния готовности и отказа

Тип в JSON

[21, [[pumpPin, flushPin, pressurePin, maxPumpTime, idleTime, capacity, minLevel, startLevel], {зоны-краны}, motorCmdExecObj, faultCmdExecObj]]

Формат конфигурации

"mist_humidifier": [
  21,
  [
    [25, 26, 35, 300, 60000, 50, 10, 20],
    {
      "gate1": 27
    }
  ]
]

Константы (не настраиваются из конфигурации): MIN_OPERATION_PRESSURE = 400, MAX_OPERATION_PRESSURE = 600, FLUSH_TIMEOUT = 125000 мс.

Состояния

Состояние Код Описание
H_UNKNOWN 0 Неизвестное
H_READY 1 Готов к работе
H_PREPARE_FOR_START 2 Подготовка к пуску
H_PREPARE_VALVES 3 Подготовка клапанов
H_MOTOR_ON 4 Мотор работает
H_OPERATE 5 В режиме увлажнения
H_MOTOR_PAUSE 6 Пауза мотора
H_MOTOR_OFF 7 Мотор выключен
H_FLUSH 8 Промывка системы
H_IDLE 9 Ожидание
H_MOTOR_OFF_OK 10 Мотор выключен (окончательно)
H_FAULT_PRESSURE -1 Ошибка давления
H_FAULT_PRESSURE_KEEP -2 Давление не удерживается
H_FAULT_OVERPRESSURE -3 Перепад давления
H_FAULT_MOTOR_OFF -4 Ошибка: мотор не выключился

out_Counter — Счётчик

Описание

Универсальный накопитель показаний: вода, газ, электроэнергия, моторчасы. GPIO не использует — значение хранится в данных канала (I_VAL) и переживает перезагрузку. Два режима работы:

Режим 1 — внешние импульсы: канал держит показание (например, водосчётчика с герконом), вход контроллера инкрементирует его относительной командой %X в /set, где X — вес импульса:

"waterctr": [20, 0],
...
"in": { "41": { "item": "waterctr/set", "scmd": "%0.01", "rcmd": "" } }

Режим 2 — автоинкремент старт-стоп: с аргументом [импульс, период_сек] канал считает время работы: команда ON запускает, OFF останавливает, каждые период секунд добавляется импульс. Типично для счётчика моторчасов (старт/стоп приходит через execObj — например, motorExecObj увлажнителя).

Тип в JSON

[20]                                  // режим 1
[20, вес_импульса]                    // режим 1
[20, [impulse, periodSec]]            // режим 2
[20, ..., начальное_значение]         // + стартовое показание

Формат конфигурации

"gasctr":   [20, 0],
"pumpctr":  [20, [0.02, 1.2]]        // моторчасы: 1 «минута» за минуту

Параметры

Параметр Тип Описание
impulse float Значение, прибавляемое за период (arg[0], режим 2)
periodSec float Период суммирования, сек (arg[1], режим 2)

out_SPILed — Управление светодиодами

Описание

Управление адресуемыми RGB-светодиодами (WS2812, APA102) через SPI или GPIO.

Основные функции:

  • Независимое управление каждым светодиодом
  • RGB-цветовая палитра
  • Эффектов/анимаций нет — только установка цвета/вкл-выкл по диапазону светодиодов

Тип в JSON

[11, [data_pin, numLeds, ledsType]]

Объект {settings} не читается.

Формат конфигурации

"led_strip": [
  11,
  [
    13,
    43
  ]
]

Параметры

Параметр Тип Описание
data_pin int GPIO пин (данные)
numLeds int Количество светодиодов, деф 43
ledsType int Код NeoPixel (NEO_BRG+NEO_KHZ800 и т.п.)

Управление

Отправить: home/leds/color
Значение: {"r":255, "g":0, "b":128}

Отправить: home/leds/brightness
Значение: 0-255

out_Mercury — Счётчик Меркурий

Описание

Управление и опрос электросчётчиков серии Меркурий через UART Modbus RTU.

Основные функции:

  • Чтение энергопотребления (активная/реактивная)
  • Контроль связи и состояния счётчика
  • Тарифные (пиковое/полупиковое/ночное) данные НЕ читаются — только M_NOW

Тип в JSON

[22, [addr, baud, serialParam, accessLevel, password, pollingInterval_ms]]

Формат конфигурации

"electricity_meter": [
  22,
  [
    1,
    9600,
    "8N1",
    2,
    "123456",
    10000
  ]
]

Параметры

Параметр Значение Описание
addr int Адрес Modbus
baud 9600 Скорость UART (деф 9600)
serialParam "8N1" Формат кадра (строка)
accessLevel int Уровень доступа
password string(6) или массив 6 цифр Пароль
pollingInterval_ms мс Интервал опроса (деф 10000)

Публикуемые топики

/voltage/A, /voltage/B, /voltage/C      - Напряжения по фазам
/current/A, /current/B, /current/C      - Токи по фазам
/angles/A, /angles/B, /angles/C         - Углы по фазам
/counters/Active                         - Активная энергия
/counters/Reactive                       - Реактивная энергия
/power/A, /power/B, /power/C             - Мощности по фазам
/cosf/...                                - Коэффициенты мощности


out_Sprinkler — Система полива

Описание

Модуль управления многозональной системой автоматического полива с независимым управлением каждой зоной, таймерами и мониторингом.

Основные функции:

  • Управление несколькими зонами полива независимо
  • Установка длительности полива для каждой зоны
  • Таймеры и расписания для автоматизации
  • Мониторинг прогресса выполнения
  • Поддержка ручного управления и автоматических режимов
  • Контроль состояния клапанов и электромагнитных выключателей

Тип в JSON

[23, {конфиг}]

Корневой объект "": vIn, rDren, rPump, wMax, wMin, fbDren, fbPump, wCtr, onFault(execObj); зоны — pin.

Формат конфигурации

"irrigation_system": [
  23,
  {
    "": {
      "vIn": 5,
      "rDren": 6,
      "rPump": 7,
      "wMax": 8,
      "wMin": 9,
      "fbDren": 10,
      "fbPump": 11,
      "wCtr": 12,
      "onFault": {"emit": "sprinkler/fault"}
    },
    "north_zone": {
      "pin": 21
    },
    "south_zone": {
      "pin": 22
    },
    "drip_zone": {
      "pin": 23
    }
  }
]

Зона описывается ключом pin; ключи cmd/val/set/@active создаются автоматически. Ключей enabled/time/progress/cycle нет.

Компоненты системы

Компонент Выход/Вход Назначение
Бак полива wMax, wMin Поплавки макс/мин уровня воды
Основной насос rPump, fbPump Реле включения, датчик тока
Клапаны зон pin (для каждой зоны) Оптореле открытия клапана
Клапан налива vIn Оптореле подачи воды из водопровода
Дренажный насос rDren, fbDren Реле включения, датчик тока
Водосчётчик wCtr (опционально) Счётчик объёма воды

Параметры конфигурации

Параметр Тип Описание
vIn int GPIO клапана налива из водопровода
wMax int GPIO поплавка максимума в баке
wMin int GPIO поплавка минимума в баке
rDren int GPIO реле дренажного насоса
fbDren int GPIO датчика дренажного насоса
rPump int GPIO реле основного насоса полива
fbPump int GPIO датчика основного насоса
wCtr int GPIO счётчика воды (опционально)

Параметры зоны полива

Параметр Тип Описание
pin int GPIO клапана зоны

cmd/val/set/@active создаются автоматически. set = требуемый объём полива или время (сек), 0 = неограниченно.

Состояния системы налива

Состояние Код Описание
SP_UNKNOWN 0 Неизвестное состояние
SP_OFF 1 Система выключена
SP_DREN_ON 2 Дренажный насос включен
SP_DREN_OPERATE 3 Дренажный насос работает
SP_DREN_EMPTY 4 Дренажный колодец пуст
SP_VIN 5 Наполнение из водопровода
SP_FULL 6 Бак наполнен
SP_DRYING 7 Осушение системы
SP_FAULT_VIN -1 Ошибка: бак не наполнился из водопровода
SP_FAULT_DREN -2 Ошибка: бак не наполнился из дренажа

MQTT топики управления

Управление циклом полива (команды)

root/name/sprinkler/cmd ← ON          # Запустить цикл полива
root/name/sprinkler/cmd ← OFF         # Остановить цикл полива
root/name/sprinkler/cmd ← DRY         # Режим осушения системы
root/name/sprinkler/cmd ← RESET       # Сбросить счётчики всех зон

XON/XOFF/FREEZE/UNFREEZE через /cmd не обрабатываются. FREEZE — через /val < 0.

Управление конкретной зоной (например, "north")

root/name/sprinkler/north/cmd ← ON    # Включить полив зоны
root/name/sprinkler/north/cmd ← OFF   # Выключить полив зоны
root/name/sprinkler/north/set ← 60    # Требуемый объём/время полива (секунды или единицы счётчика)

Режимы системы (установка в /ctrl)

root/name/sprinkler/ctrl ← ENABLE     # Разрешить полив
root/name/sprinkler/ctrl ← DISABLE    # Запретить полив (например, после дождя)
root/name/sprinkler/ctrl ← FREEZE     # Полная блокировка на зиму
root/name/sprinkler/ctrl ← UNFREEZE   # Снять блокировку зимы

Автоматическая блокировка по температуре

root/name/sprinkler/val ← -1          # При температуре < 0 система автоматически переходит в FREEZE

MQTT топики мониторинга (статус)

root/s_out/sprinkler/$state          # Состояние системы налива воды (SP_*)
root/s_out/sprinkler/$fault          # Код ошибки (если есть)
root/s_out/sprinkler/$wMax           # ON/OFF - бак полный (поплавок макс)
root/s_out/sprinkler/$wMin           # ON/OFF - бак пуст (поплавок мин)
root/s_out/sprinkler/$rPump          # ON/OFF - реле основного насоса включено
root/s_out/sprinkler/$fbPump         # ON/OFF - основной насос работает (датчик тока)
root/s_out/sprinkler/$rDren          # ON/OFF - реле дренажного насоса включено
root/s_out/sprinkler/$fbDren         # ON/OFF - дренажный насос работает (датчик тока)
root/s_out/sprinkler/$rVIN           # ON/OFF - клапан налива из водопровода открыт
root/s_out/sprinkler/set             # Текущее значение счётчика воды

root/s_out/sprinkler/north/$state    # ON/OFF - зона поливается в настоящее время
root/s_out/sprinkler/north/cmd       # ON/OFF - состояние команды включения зоны
root/s_out/sprinkler/north/set       # Требуемый объём/время полива
root/s_out/sprinkler/north/val       # Текущий выполненный объём/время полива зоны

root/s_out/sprinkler/south/$state    # ON/OFF - зона поливается
root/s_out/sprinkler/south/cmd       # ON/OFF - состояние команды
root/s_out/sprinkler/south/set       # Требуемый объём/время
root/s_out/sprinkler/south/val       # Выполненный объём/время

# Аналогично для остальных зон (например, "trees", "outlets" и т.д.)

Особенности

Особенность Описание
Динамическое управление Все параметры можно изменять через MQTT в реальном времени
Восстановление состояния Значения set и val восстанавливаются из топиков s_out при перезагрузке
Водяная розетка Зона с set=0 работает неограниченно (используется для розеток с шлангом)
Приоритет дренажа Система сначала пытается наполнить бак из дренажного колодца, затем из водопровода
Автозащита от мороза Значение /val < 0 автоматически активирует режим FREEZE
Двухступенчатая блокировка DISABLE блокирует команды, FREEZE полностью заморозит систему

out_UARTBridge — UART мост

Описание

Создание прозрачного двунаправленного моста между двумя UART портами с сохранением данных и логированием.

Основные функции:

  • Прозрачная маршрутизация UART↔UART
  • Буферизация пакетов (MAX_PDU = 64 байт)
  • Логирование трафика
  • Одна скорость на оба порта. Порты фиксированные: Serial1/Serial2

Тип в JSON

[15, {"serial": "8N1", "baud": 9600, "ip": ..., "port": ..., "hd": ..., "log": ..., "bond": ...}]

Формат конфигурации

"uart_gateway": [
  15,
  {
    "serial": "8N1",
    "baud": 9600
  }
]

Параметры

Параметр Тип Описание
serial string Формат кадра (8N1, 8E1, 8O1)
baud int Скорость UART (одна на оба порта)
ip string IP (мост через сеть)
port int Порт
hd - Опциональный ключ конфигурации
log bool Логирование
bond - Опциональный ключ конфигурации

Входные модули

in_CCS811_HDC1080 — Датчик качества воздуха

Описание

Комбинированный датчик для измерения качества воздуха с использованием:

  • HDC1080 — датчик температуры и влажности (I2C)
  • CCS811 — датчик CO₂ и TVOC (I2C)

Основные функции:

  • Измерение температуры (-40...125°C)
  • Измерение влажности (0-100%)
  • Измерение eCO₂ (400-8192 ppm)
  • Измерение TVOC (0-1187 ppb)
  • Температурная компенсация

Тип в JSON

Это ДВА ВХОДА: IN_CCS811 (T=5) и IN_HDC1080 (T=6), конфигурируются как объекты входов в секции "in".

Формат конфигурации

"in": {
  "10": {
    "T": 5,
    "emit": "home/sensors/air"
  },
  "20": {
    "T": 6,
    "emit": "home/sensors/room"
  }
}

Адреса I2C захардкожены (CCS811 — 0x5A, HDC1080 — 0x40) и не настраиваются. Смещений и pollInterval в конфигурации нет.

Выводимые параметры

Параметр Единица Диапазон Описание
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 маршрутизация

Публикуется: /T, /H, /CO2, /TVOC, /base.

{
  "temp": {"emit": "home/sensors/air/temperature"},
  "hum": {"emit": "home/sensors/air/humidity"},
  "co2": {"emit": "home/sensors/air/co2"},
  "tvoc": {"emit": "home/sensors/air/tvoc"}
}

Примеры использования

Мониторинг качества воздуха (CCS811) и температуры/влажности (HDC1080)

"in": {
  "10": {
    "T": 5,
    "emit": "home/sensors/living_room/air"
  },
  "20": {
    "T": 6,
    "emit": "sensors/hvac/inlet"
  }
}

Сводная таблица типов модулей

Модуль Тип Назначение Управление
out_Multivent 18 Многоканальный кондиционер PID + MQTT
out_AC 10 Одиночный кондиционер Проприетарный UART (Haier)
out_PID 13 PID-регулятор MQTT
out_Relay 6 Электромагнитное реле GPIO
out_PWM 3 ШИМ-управление GPIO-PWM
out_DMX 0 DMX512 освещение DMX512
out_Motor 12 Управление двигателем GPIO-пары
out_Elevator 19 Управление лифтом UART
out_Humidifier 21 Управление увлажнителем GPIO + датчики
out_Counter 20 Автосуммирующий счётчик MQTT
out_SPILed 11 Адресуемые светодиоды SPI/GPIO
out_Mercury 22 Электросчётчик Modbus RTU
out_Sprinkler 23 Система полива GPIO + MQTT
out_UARTBridge 15 UART-мост UART↔UART
in_CCS811_HDC1080 входы T=5 (CCS811) / T=6 (HDC1080) Качество воздуха I2C

Общие принципы конфигурации

1. Подключение MQTT

Все параметры с полем emit автоматически публикуются в MQTT:

"parameter": {
  "emit": "home/device/parameter"
}

2. Управление из MQTT

Отправка значения:

mqtt publish home/device/parameter 128

3. Использование массивов

Для нескольких параметров:

[
  {"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
Статус: Утверждено