# 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);
```