# Справочник суффиксов LightHub > **Инженерный справочник** всех суффиксов MQTT топиков для управления каналами LightHub. > Источник: [wiki.lazyhome.ru — работа с MQTT](https://www.lazyhome.ru/dokuwiki/doku.php?id=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_mqtt) --- ## Что такое суффикс? **Суффикс** — это завершающая часть MQTT топика, которая определяет **какое** свойство объекта меняется. ### Анатомия полного топика ``` myhome/in/lamp_bedroom/set └─────┘ └─┘ └───────────┘ └──┘ root bcst item_name suffix ``` --- ## Категории суффиксов ### 1️⃣ Основные суффиксы (для всех типов каналов) | Суффикс | Вход | Выход | Назначение | Диапазон | |---------|:----:|:-----:|-----------|----------| | `/cmd` | ✅ | ✅ | Команда управления (ON, OFF, TOGGLE) | Текст (команда) | | `/set` | ✅ | ✅ | Установка численного значения | 0-255 (новый) или 0-100 (OpenHab) | | `/val` | ❌ | ✅ | Текущее значение (только выход) | 0-255 | | `/del` | ✅ | ❌ | Команда с задержкой | Текст (команда + время) | ### 2️⃣ Цветовые суффиксы (RGB/RGBW/RGBWW) | Суффикс | Вход | Выход | Назначение | Диапазон | |---------|:----:|:-----:|-----------|----------| | `/hue` | ✅ | ✅ | Оттенок (HSV) | 0-365° | | `/sat` | ✅ | ✅ | Насыщенность (HSV) | 0-100% | | `/hsv` | ✅ | ✅ | Полный цвет (hue,sat,val) | `H,S,V` | | `/rgb` | ✅ | ✅ | Цвет в RGB/RGBW нотации | `R,G,B` или `R,G,B,W` | **Примеры**: ``` # Установить красный цвет (hue=0) myhome/in/rgb_light/hue → 0 # Установить насыщенность 50% myhome/in/rgb_light/sat → 50 # Установить HSV 240,100,200 (синий максимум) myhome/in/rgb_light/hsv → 240,100,200 # Установить RGB красный myhome/in/rgb_light/rgb → 255,0,0 # Установить RGBW myhome/in/rgb_light/rgb → 255,0,0,100 ``` **Особенности HSV**: - `0°` — красный - `60°` — желтый - `120°` — зеленый - `180°` — голубой - `240°` — синий - `300°` — магента ### 3️⃣ Суффиксы кондиционера (AC) | Суффикс | Вход | Выход | Назначение | Значения | |---------|:----:|:-----:|-----------|----------| | `/cmd` | ✅ | ✅ | Включить/выключить кондиционер | ON, OFF, TOGGLE | | `/mode` | ✅ | ✅ | Режим работы | HEAT, COOL, AUTO, DRY, FAN_ONLY | | `/set` | ✅ | ✅ | Установленная температура | 16-30 (или диапазон устройства) | | `/fan` | ✅ | ✅ | Скорость вентилятора | HIGH, MED, LOW, AUTO | | `/lock` | ✅ | ✅ | Блокировка ПДУ | ON, OFF | | `/swing` | ✅ | ✅ | Направление воздушного потока | ON, OFF | | `/quiet` | ✅ | ✅ | Режим "тихой работы" | ON, OFF | **Примеры**: ``` # Включить кондиционер myhome/in/ac_main/cmd → ON # Установить режим нагрева myhome/in/ac_main/mode → HEAT # Установить температуру 22°C myhome/in/ac_main/set → 22 # Максимальная скорость вентилятора myhome/in/ac_main/fan → HIGH # Включить тихий режим myhome/in/ac_main/quiet → ON ``` **Логика срабатывания AC**: - При получении команды на `/cmd` кондиционер сохраняет **последний режим, температуру и скорость вентилятора** - При выключении (`OFF`) эти значения **восстанавливаются** при включении (`ON`) ### 4️⃣ Суффиксы воздушного отопления (Multivent) | Суффикс | Вход | Выход | Назначение | Диапазон | |---------|:----:|:-----:|-----------|----------| | `/cmd` | ✅ | ✅ | Включить/выключить | ON, OFF, TOGGLE | | `/set` | ✅ | ✅ | Установленная температура | Текущее значение | | `/fan` | ✅ | ✅ | Скорость вентилятора | HIGH, MED, LOW | | `/mode` | ✅ | ✅ | Режим работы | HEAT, AUTO, COOL | **Структура многозональной вентиляции**: ```json { "items": { "multivent": [ 17, { "bedroom": {"set": "multivent/bedroom/set"}, "kitchen": {"set": "multivent/kitchen/set"}, "bathroom": {"set": "multivent/bathroom/set"} } ] } } ``` **MQTT топики для subitem-ов**: ``` # Спальня — установить T myhome/in/multivent/bedroom/set → 21 # Кухня — установить T myhome/in/multivent/kitchen/set → 22 # Ванная — включить вентилятор myhome/in/multivent/bathroom/fan → HIGH ``` ### 5️⃣ Суффиксы термостата (PID контроллер) | Суффикс | Вход | Выход | Назначение | Диапазон | |---------|:----:|:-----:|-----------|----------| | `/cmd` | ✅ | ✅ | Включить/выключить регулировку | ON, OFF, TOGGLE | | `/set` | ✅ | ✅ | Установленная температура | Температура в °C | | `/ctrl` | ✅ | ✅ | Управление состоянием | ENABLE, DISABLE | | `/mode` | ✅ | ✅ | Режим (теплые полы) | HEAT, AUTO, OFF | **Примеры**: ``` # Включить теплые полы myhome/in/floor/cmd → ON # Установить температуру 25°C myhome/in/floor/set → 25 # Включить автоматический режим myhome/in/floor/mode → AUTO # Разрешить управление (если было запрещено) myhome/in/floor/ctrl → ENABLE ``` **Состояние-зависимые команды**: Для сложного сценария можно использовать **subitem** как условие — контроллер только выполнит команду, если item находится в этом состоянии. ``` # Включить режим HEAT только если установлен режим HEAT myhome/in/floor/HEAT/cmd → ON # Выключить режим OFF только если уже в режиме OFF myhome/in/floor/OFF/cmd → OFF ``` ### 6️⃣ Суффиксы для импульсных каналов и ШИМ | Суффикс | Вход | Выход | Назначение | Диапазон | |---------|:----:|:-----:|-----------|----------| | `/cmd` | ✅ | ✅ | Включить/выключить (импульсный выход) | ON, OFF, TOGGLE | | `/set` | ✅ | ✅ | Скважность ШИМ | 0-255 | | `/del` | ✅ | ❌ | через какое время выполнить | `ON ВРЕМЯ_МС` | **Примеры**: ``` # Импульс реле (включить на 3 сек, потом выключить) myhome/in/gate/cmd → "ON 3000" # ШИМ вентилятор 50% myhome/in/fan/set → 128 # Активировать сирену через 5 сек myhome/in/siren/del → "ON 5000" ``` ### 7️⃣ Суффиксы для управления состоянием | Суффикс | Использование | Назначение | Примеры | |---------|--------------|-----------|---------| | `/ctrl` | Все | Специальное управление состоянием | ENABLE, DISABLE, FREEZE, UNFREEZE | | Условный subitem | Строки состояния | Выполнить команду при условии | `/AUTO`, `/OFF`, `/ON`, `/HEAT`, `/COOL` | **Примеры управления**: ``` # Заморозить (запретить изменения, но не выключать) myhome/in/light/ctrl → FREEZE # Разморозить myhome/in/light/ctrl → UNFREEZE # Выполнить включение только если в режиме OFF myhome/in/device/OFF/cmd → ON # (не выполнится, если device уже ON) # Выполнить команду только в режиме HEAT (для AC) myhome/in/ac/HEAT/set → 25 # (установит 25°C только если AC в режиме HEAT) ``` --- ## Таблица применимости суффиксов по типам каналов ### По типам из конфигурации | Тип канала | Суффиксы | Примеры | |-----------|----------|---------| | **0 — CH_DIMMER** | `/cmd`, `/set`, `/val` | Лампа, светодиод | | **1 — CH_RELAY** | `/cmd`, `/set`, `/val`, `/del` | Реле, розетка | | **2 — CH_TRIGGER** | `/cmd`, `/del` | Кнопка, импульс | | **10 — CH_RGB** | `/cmd`, `/set`, `/hue`, `/sat`, `/hsv`, `/rgb` | RGB лента, LED | | **11 — CH_RGBW** | `/cmd`, `/set`, `/hue`, `/sat`, `/hsv`, `/rgb` | RGBW люстра | | **12 — CH_RGBWW** | `/cmd`, `/set`, `/hue`, `/sat`, `/hsv`, `/rgb` | Теплый+холодный RGB | | **13 — CH_AC** | `/cmd`, `/set`, `/mode`, `/fan`, `/lock`, `/swing`, `/quiet` | Кондиционер | | **15 — CH_PID** | `/cmd`, `/set`, `/ctrl`, `/mode` | PID регулятор, теплые полы | | **17 — CH_MULTIVENT** | `/cmd`, `/set`, `/fan`, `/mode` + subitem-ы | Многозональная вентиляция | | **2 — CH_GPIO** | `/cmd`, `/set` | GPIO контроль | | **3 — CH_PWM** | `/cmd`, `/set`, `/val` | PWM вывод | --- ## Примеры сценариев ### Сценарий 1: Управление RGB лампой **Конфигурация**: ```json "items": { "rgb_lamp": [10, 1] } ``` **Команды**: ``` # Включить белый (полная насыщенность) myhome/in/rgb_lamp/sat → 0 # Установить красный цвет myhome/in/rgb_lamp/hue → 0 # Установить желтый на 80% яркости myhome/in/rgb_lamp/hsv → 60,100,200 # Выключить myhome/in/rgb_lamp/cmd → OFF ``` ### Сценарий 2: Система управления кондиционером **Конфигурация**: ```json "items": { "ac_hallway": [13, { "mode": {"emit": "ac/mode"}, "temp": {"emit": "ac/temp"} }] } ``` **Команды**: ``` # Включить, установить HEAT, 22°C, вентилятор на максимум myhome/in/ac_hallway/cmd → ON myhome/in/ac_hallway/mode → HEAT myhome/in/ac_hallway/set → 22 myhome/in/ac_hallway/fan → HIGH # Выключить myhome/in/ac_hallway/cmd → OFF # Ответы от контроллера myhome/s_out/ac_hallway/cmd → ON myhome/s_out/ac_hallway/mode → HEAT myhome/s_out/ac_hallway/set → 22 myhome/s_out/ac_hallway/fan → HIGH ``` ### Сценарий 3: Управление теплыми полами (PID) **Конфигурация**: ```json "items": { "floor_heating": [15, 4] } ``` **Команды**: ``` # Включить отопление myhome/in/floor_heating/cmd → ON # Установить температуру 24°C myhome/in/floor_heating/set → 24 # Установить режим AUTO (включить, если T < установленной) myhome/in/floor_heating/mode → AUTO # Заморозить (не менять значение) myhome/in/floor_heating/ctrl → FREEZE # Разморозить myhome/in/floor_heating/ctrl → UNFREEZE ``` ### Сценарий 4: Многозональная вентиляция **Конфигурация**: ```json "items": { "multivent": [17, { "bedroom": {"set": "multivent/bedroom/set"}, "kitchen": {"set": "multivent/kitchen/set"} }] } ``` **Команды**: ``` # Спальня: установить 21°C myhome/in/multivent/bedroom/set → 21 # Кухня: установить 20°C myhome/in/multivent/kitchen/set → 20 # Оба: включить вентилятор на максимум myhome/in/multivent/cmd → ON myhome/in/multivent/fan → HIGH # Ответы myhome/s_out/multivent/bedroom/val → 21.5 myhome/s_out/multivent/kitchen/val → 20.2 ``` --- ## Диапазоны значений и конвертация ### Различие между /cmd и /set | Параметр | /cmd | /set | |----------|------|------| | **Тип данных** | Текст (команда) | Число (значение) | | **Диапазон (новый)** | Команды | 0-255 | | **Диапазон (OpenHab)** | Команды | 0-100 | | **Примеры** | ON, OFF, TOGGLE | 128, 255 | | **Когда использовать** | Нужна команда (ON/OFF) | Нужно установить значение | ### Автоматическая нормализация Контроллер автоматически конвертирует: ``` /set → 0-100 → 0-255 при отправке на устройство /set → 0-255 → 0-100 при отправке в OpenHab совместимость ``` ### Специальные диапазоны | Суффикс | Диапазон | Особенность | |---------|----------|-----------| | `/set` | 0-255 или 0-100 | Зависит от конфигурации | | `/hue` | 0-365 | Градусы в цветовом круге (0=красный) | | `/sat` | 0-100 | Проценты (0=белый, 100=полная насыщенность) | | `/fan` | HIGH, MED, LOW | Текстовые значения | | `/mode` | HEAT, COOL, AUTO... | Текстовые команды | --- ## Связь между суффиксами ### Синергия RGB суффиксов ``` Команда Результат ──────────────────────────────────────── /cmd → ON Включить, восстановить последний цвет /cmd → OFF Выключить /hue → 240 Поменять оттенок на синий /sat → 50 Поменять насыщенность /hsv → 240,100,255 Установить полный цвет (синий максимум) /rgb → 0,0,255 Установить синий RGB ``` **Публикуемые значения**: ``` myhome/s_out/rgb_lamp/hue → 240 myhome/s_out/rgb_lamp/sat → 100 myhome/s_out/rgb_lamp/val → 255 myhome/s_out/rgb_lamp/cmd → ON ``` ### Синергия AC суффиксов ``` Команда Состояние ──────────────────────────────────────── /cmd → ON Включить (восстановить режим/T) /mode → HEAT Установить режим нагрева /set → 22 Установить 22°C /fan → HIGH Максимальная скорость вентилятора /lock → ON Заблокировать ПДУ (только кондиционер) /swing → ON Включить направление воздуха /quiet → ON Тихий режим ``` --- ## Видео-примеры и интеграции ### Home Assistant интеграция ```yaml switch: - platform: mqtt name: "Лампа спальня" command_topic: "myhome/in/lamp_bedroom/cmd" state_topic: "myhome/s_out/lamp_bedroom/cmd" payload_on: "ON" payload_off: "OFF" light: - platform: mqtt name: "RGB лампа" command_topic: "myhome/in/rgb_lamp/cmd" brightness_command_topic: "myhome/in/rgb_lamp/set" brightness_state_topic: "myhome/s_out/rgb_lamp/val" hs_command_topic: "myhome/in/rgb_lamp/hsv" hs_state_topic: "myhome/s_out/rgb_lamp/hsv" payload_on: "ON" payload_off: "OFF" ``` ### Иных систем управления Большинство MQTT систем (OpenHAB, Home Assistant, Node-Red и др.) поддерживают: - `/cmd` — переключатели (ON/OFF) - `/set` — диммеры (0-100 или 0-255) - `/val` — датчики (показания) - Цветовые суффиксы `/hue`, `/sat` --- **Версия документа**: 2.0 (обновлено для соответствия wiki.lazyhome.ru) **Последнее обновление**: 2024 **Источник**: https://www.lazyhome.ru/dokuwiki/doku.php?id=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_mqtt