Files
lighthub/documentation/suffixes_reference_v2.md

466 lines
17 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Справочник суффиксов 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