This commit is contained in:
2026-07-05 18:21:29 +03:00
commit 6c237faadb
7 changed files with 805 additions and 0 deletions

122
docs/zcl_hvac.md Normal file
View File

@@ -0,0 +1,122 @@
# Zigbee ZCL HVAC Specification (Thermostat Cluster)
## Основные атрибуты термостата
### Обязательные атрибуты:
- `local_temperature` (int16_t): Текущая измеренная температура
- Диапазон: -1°C до 32767°C (значение -1°C означает неинициализированное/недоступное значение)
- Единицы: 0.01°C (так что значение 2500 = 25.00°C)
- `control_sequence_of_operation` (uint8_t): Последовательность управления
- 0x00: Cooling only
- 0x01: Cooling with Reheat
- 0x02: Heating only
- 0x03: Heating with Reheat
- 0x04: Cooling and Heating
- 0x05: Cooling and Heating with Reheat
- `system_mode` (uint8_t): Текущий режим работы системы
- 0x00: Off
- 0x01: Auto
- 0x02: Program (запрограммированный режим)
- 0x03: Cool
- 0x04: Heat
- 0x05: Emergency Heat
- 0x06: Precool
- 0x07: Fan Only
- 0x08: Dry
- 0x09: Sleep
### Атрибуты кондиционера (AC):
- `ACType`: Тип кондиционера
- Охлаждение только
- Тепловой насос (охлаждение/нагрев)
- Охлаждение с электрическим нагревом
- Геотермальный тепловой насос
- Максимальная эффективность
- `ACCapacityFormat`: Формат емкости
- 0x00: BTU/h (Британские тепловые единицы в час)
- 0x01: Тонны рефрижерации
- 0x02: Ватты
- 0x03: Лошадиные силы
## Критические константы
### Режимы системы (system_mode):
- `EZB_ZCL_SYSTEM_MODE_OFF = 0x00`: Выключено
- `EZB_ZCL_SYSTEM_MODE_AUTO = 0x01`: Автоматический режим
- `EZB_ZCL_SYSTEM_MODE_COOL = 0x03`: Охлаждение
- `EZB_ZCL_SYSTEM_MODE_HEAT = 0x04`: Отопление
- `EZB_ZCL_SYSTEM_MODE_EMERG_HEAT = 0x05`: Аварийный обогрев
- `EZB_ZCL_SYSTEM_MODE_PRECOOL = 0x06`: Предварительное охлаждение
- `EZB_ZCL_SYSTEM_MODE_FAN_ONLY = 0x07`: Только вентилятор
- `EZB_ZCL_SYSTEM_MODE_DRY = 0x08`: Сушка
- `EZB_ZCL_SYSTEM_MODE_SLEEP = 0x09`: Режим сна
### Типы HVAC систем:
- `EZB_ZCL_HVAC_SYSTEM_TYPE_CONFIGURATION_COOLING_SYSTEM_STAGE = 0x03`: Охлаждающая система со ступенями
## Команды управления
### Команды настройки расписания (Weekly Schedule):
- `0x00`: Set Weekly Schedule
- `0x01`: Get Weekly Schedule
- `0x02`: Clear Weekly Schedule
### Команды настройки точек уставки (Setpoint):
- `0x00`: Setpoint Raise/Lower
- `0x01`: Setpoint Set
- `0x02`: Setpoint Get
## Мониторинг состояния
### Маска тревог (AlarmMask):
- Биты 0-7: Различные типы аппаратных сбоев
- Датчик температуры неисправен
- Компрессор перегрет
- Недостаток хладагента
- Ошибка вентилятора
### Коды ошибок кондиционера (ACErrorCode):
- 0x00: Нет ошибок
- 0x01: Ошибка датчика температуры
- 0x02: Ошибка датчика влажности
- 0x03: Ошибка компрессора
- 0x04: Ошибка вентилятора
- 0x05: Ошибка системы размораживания
## Интеграция с Ballu AC контроллером
### Преобразование режимов работы:
| ZCL System Mode | Ballu AC Mode | Описание |
|-----------------|---------------|----------|
| 0x00 (Off) | MODE_OFF | Выключено |
| 0x01 (Auto) | MODE_AUTO | Авторегулировка |
| 0x03 (Cool) | MODE_COOL | Охлаждение |
| 0x04 (Heat) | MODE_HEAT | Отопление |
| 0x08 (Dry) | MODE_DRY | Сушка |
| 0x07 (Fan Only) | MODE_FAN | Вентилятор |
| 0x09 (Sleep) | MODE_SLEEP | Режим сна |
### Преобразование температуры:
- ZCL температура передается в 0.01°C единицах
- При отправке в MideaUART: значение/100 (пример: 2500 → 25.0°C)
### Последовательность обработки команд:
1. Получить команду через Zigbee ZCL
2. Преобразовать в формат MideaUART Control structure
3. Отправить по UART в кондиционер
4. Получить статус от кондиционера
5. Отправить обновление по Zigbee (если изменились параметры)
## Пример обработки команды охлаждения
```c
// Получено через Zigbee: system_mode = 0x03 (Cool), local_temperature = 2400 (24.00°C)
Control control;
control.mode = MODE_COOL;
control.targetTemp = 24.0f; // Преобразование из 0.01°C
control.modeChange = true;
control.tempChange = true;
ac.control(control);
```