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