海尔 Climate
这是 ESPHome 组件的实现,用于控制基于 SmartAir2 和 hOn 海尔协议的 HVAC(由 hOn 或 SmartAir2 应用程序控制的空调)。
海尔协议有两个版本:旧版本使用名为 SmartAir2 的应用程序,而新版本使用名为 hOn 的应用程序。两种协议在传输层兼容,但使用不同的命令来控制设备。
由 SmartAir2 应用程序控制的旧款海尔型号使用 KZW-W002 模块。此模块无法重复使用,您需要用 ESP 或 RPI Pico W 模块替换它。板上的 USB 连接器不支持 USB 协议。它是一个仅使用 USB 连接器的 UART 端口。要将 ESP 板连接到空调,您可以剪切 USB A 型电缆并将导线连接到温控连接器。
海尔 UART 引脚排列
Section titled “海尔 UART 引脚排列”| 板 | USB | 导线颜色 | ESP8266 |
|---|---|---|---|
| 5V | VCC | 红色 | 5V |
| GND | GND | 黑色 | GND |
| TX | DATA+ | 绿色 | RX |
| RX | DATA- | 白色 | TX |
使用名为 ESP32-for-Haier 模块的新款海尔型号。这是一个带有 ESP32-S0WD 芯片的 ESP32 单核板。在某些情况下,您可以重复使用此模块并用 ESPHome 刷写它,但某些新模块不支持此功能。它们外观相同,但启用了加密。
警告! 新一代 ESP32-Haier 设备已启用加密,因此只能使用使用私钥签名的固件进行刷写。无法使它们与 ESPHome 配合使用,因此如果您尝试这样做,板将进入启动循环,错误为 rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)。恢复此板的唯一方法是使用原始镜像刷写它。因此,在开始实验之前,请制作备份镜像。
此外,您可以使用任何其他 ESP32、ESP8266 或 RPI pico W 板。在这种情况下,您需要剪切原始导线或自己制作连接器(板上有 JST SM04B-GHS-TB 连接器)
此组件需要设置 UART 总线。
# 示例配置条目climate: - platform: haier id: haier_ac protocol: hon name: Haier AC uart_id: ac_port wifi_signal: true display: true visual: min_temperature: 16 °C max_temperature: 30 °C temperature_step: 1 °C supported_modes: - 'OFF' - HEAT_COOL - COOL - HEAT - DRY - FAN_ONLY supported_swing_modes: - 'OFF' - VERTICAL - HORIZONTAL - BOTH supported_presets: - AWAY - BOOST - SLEEP on_alarm_start: then: - logger.log: level: WARN format: "报警激活。代码:%d。消息:\"%s\"" args: [ code, message] on_alarm_end: then: - logger.log: level: INFO format: "报警解除。代码:%d。消息:\"%s\"" args: [ code, message] on_status_message: then: - logger.log: level: INFO format: "收到新状态消息,大小=%d,子命令=%02X%02X" args: [ 'data_size', 'data[0]', 'data[1]' ]- uart_id (可选, ID): 与空调通信的 UART 端口 ID。
- protocol (可选, string): 定义与空调的通信协议。可能值:
hon或smartair2。默认值为smartair2。 - wifi_signal (可选, boolean): 如果为
true- 将 wifi 信号电平发送到空调。 - answer_timeout (可选, 时间): 响应超时。默认值为
200ms。 - alternative_swing_control (可选, boolean): (仅 smartAir2 支持)如果为
true- 使用替代值控制摆风模式。仅当原始控制方法不适用于您的空调时使用。 - status_message_header_size (可选, int): (仅 hOn 支持)定义状态消息的头部大小。可用于处理某些协议变体。仅当您确定自己在做什么时使用。默认值:
0。 - control_packet_size (可选, int): (仅 hOn 支持)定义控制包的大小。可帮助某些使用更大包的新型空调。默认值:
10。 - sensors_packet_size (可选, int): (仅 hOn 支持)定义状态消息的传感器包大小。可帮助某些具有更大传感器包的空调型号。默认值:
22,最小值:18。 - control_method (可选, list): (仅 hOn 支持)定义控制方法(应由空调支持)。支持值:
MONITOR_ONLY- 无控制,仅监视状态,SET_GROUP_PARAMETERS- 使用一个命令设置所有空调参数(默认方法),SET_SINGLE_PARAMETER- 单独设置每个参数(某些新型吸顶空调如 AD71S2SM3FA 支持此方法) - display (可选, boolean): 可用于关闭空调显示屏。
- beeper (可选, boolean): 可用于禁用空调对命令的蜂鸣。仅 hOn 协议支持。
- supported_modes (可选, list): 可用于禁用某些空调模式。可能值:
'OFF'、HEAT_COOL、COOL、HEAT、DRY、FAN_ONLY。 - supported_swing_modes (可选, list): 如果您的空调不支持,可用于禁用某些摆风模式。可能值:
'OFF'、VERTICAL、HORIZONTAL、BOTH。 - supported_presets (可选, list): 可用于禁用某些预设模式。smartair2 的可能值:
AWAY、BOOST、COMFORT。hOn 的可能值:AWAY、BOOST、SLEEP。AWAY预设只能在HEAT模式下启用,默认禁用。 - on_alarm_start (可选, 自动化): (仅 hOn 支持)当空调激活新报警时执行的自动化。请参阅
on_alarm_start触发器。 - on_alarm_end (可选, 自动化): (仅 hOn 支持)当空调解除报警时执行的自动化。请参阅
on_alarm_end触发器。 - on_status_message (可选, 自动化): 当从空调收到状态消息时执行的自动化。请参阅
on_status_message触发器。 - Climate 的所有其他选项。
on_alarm_start 触发器
Section titled “on_alarm_start 触发器”当空调激活新报警时,将触发此自动化。报警的错误代码将在变量 code(uint8_t)中提供,错误消息在变量 message(const char *)中提供。这些变量可以在 lambda 中使用。
climate: - protocol: hon on_alarm_start: then: - logger.log: level: WARN format: "报警激活。代码:%d。消息:\"%s\"" args: [ 'code', 'message' ]on_alarm_end 触发器
Section titled “on_alarm_end 触发器”当先前激活的报警被空调解除时,将触发此自动化。报警的错误代码将在变量 code(uint8_t)中提供,错误消息在变量 message(const char *)中提供。这些变量可以在 lambda 中使用。
climate: - protocol: hon on_alarm_end: then: - logger.log: level: INFO format: "报警解除。代码:%d。消息:\"%s\"" args: [ 'code', 'message' ]on_status_message 触发器
Section titled “on_status_message 触发器”当组件从空调收到新状态包时,将触发此自动化。原始消息二进制数据(不含头部和校验和)将在变量 data(const char *)中提供,消息长度在变量 data_size(uint8_t)中提供。这些变量可以在 lambda 中使用。
此触发器可用于支持某些型号独有而其他型号不支持的功能。
climate: - protocol: hon on_status_message: then: - logger.log: level: INFO format: "收到新状态消息,大小=%d,子命令=%02X%02X" args: [ 'data_size', 'data[0]', 'data[1]' ]climate.haier.power_on 动作
Section titled “climate.haier.power_on 动作”此动作打开空调电源。
on_...: then: climate.haier.power_on: device_idclimate.haier.power_off 动作
Section titled “climate.haier.power_off 动作”此动作关闭空调电源
on_...: then: climate.haier.power_off: device_idclimate.haier.power_toggle 动作
Section titled “climate.haier.power_toggle 动作”此动作切换空调电源
on_...: then: climate.haier.power_toggle: device_idclimate.haier.display_on 动作
Section titled “climate.haier.display_on 动作”此动作打开空调显示屏。
on_...: then: climate.haier.display_on: device_idclimate.haier.display_off 动作
Section titled “climate.haier.display_off 动作”此动作关闭空调显示屏。
on_...: then: climate.haier.display_off: device_idclimate.haier.health_on 动作
Section titled “climate.haier.health_on 动作”开启健康模式(UV 灯杀菌)。
on_...: then: climate.haier.health_on: device_idclimate.haier.health_off 动作
Section titled “climate.haier.health_off 动作”关闭健康模式。
on_...: then: climate.haier.health_off: device_idclimate.haier.beeper_on 动作
Section titled “climate.haier.beeper_on 动作”(仅 hOn 支持)此动作启用对发送到空调的每个命令的蜂鸣反馈。
on_...: then: climate.haier.beeper_on: device_idclimate.haier.beeper_off 动作
Section titled “climate.haier.beeper_off 动作”(仅 hOn 支持)此动作禁用对发送到空调的每个命令的蜂鸣反馈(请注意,这对红外遥控命令无效)。
on_...: then: climate.haier.beeper_off: device_idclimate.haier.set_vertical_airflow 动作
Section titled “climate.haier.set_vertical_airflow 动作”(仅 hOn 支持)如果垂直摆风被禁用,设置垂直气流方向。可能值:Health_Up、Max_Up、Up、Center、Down、Health_Down。
on_...: then: - climate.haier.set_vertical_airflow: id: device_id vertical_airflow: Upclimate.haier.set_horizontal_airflow 动作
Section titled “climate.haier.set_horizontal_airflow 动作”(仅 hOn 支持)如果水平摆风被禁用,设置水平气流方向。可能值:Max_Left、Left、Center、Right、Max_Right。
on_...: then: - climate.haier.set_horizontal_airflow: id: device_id vertical_airflow: Rightclimate.haier.start_self_cleaning 动作
Section titled “climate.haier.start_self_cleaning 动作”(仅 hOn 支持)启动自清洁。
on_...: then: - climate.haier.start_self_cleaning: device_idclimate.haier.start_steri_cleaning 动作
Section titled “climate.haier.start_steri_cleaning 动作”(仅 hOn 支持)启动 56°C 杀菌清洁。
on_...: then: - climate.haier.start_steri_cleaning: device_id