122 lines
5.2 KiB
Markdown
122 lines
5.2 KiB
Markdown
# 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);
|
||
``` |