跳转到内容

海尔 Climate

这是 ESPHome 组件的实现,用于控制基于 SmartAir2 和 hOn 海尔协议的 HVAC(由 hOn 或 SmartAir2 应用程序控制的空调)。

海尔协议有两个版本:旧版本使用名为 SmartAir2 的应用程序,而新版本使用名为 hOn 的应用程序。两种协议在传输层兼容,但使用不同的命令来控制设备。

由 SmartAir2 应用程序控制的旧款海尔型号使用 KZW-W002 模块。此模块无法重复使用,您需要用 ESP 或 RPI Pico W 模块替换它。板上的 USB 连接器不支持 USB 协议。它是一个仅使用 USB 连接器的 UART 端口。要将 ESP 板连接到空调,您可以剪切 USB A 型电缆并将导线连接到温控连接器。

USB导线颜色ESP8266
5VVCC红色5V
GNDGND黑色GND
TXDATA+绿色RX
RXDATA-白色TX
KZW-W002 模块引脚排列

使用名为 ESP32-for-Haier 模块的新款海尔型号。这是一个带有 ESP32-S0WD 芯片的 ESP32 单核板。在某些情况下,您可以重复使用此模块并用 ESPHome 刷写它,但某些新模块不支持此功能。它们外观相同,但启用了加密。

警告! 新一代 ESP32-Haier 设备已启用加密,因此只能使用使用私钥签名的固件进行刷写。无法使它们与 ESPHome 配合使用,因此如果您尝试这样做,板将进入启动循环,错误为 rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)。恢复此板的唯一方法是使用原始镜像刷写它。因此,在开始实验之前,请制作备份镜像。

ESP32-for-Haier UART0 引脚排列

此外,您可以使用任何其他 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): 定义与空调的通信协议。可能值:honsmartair2。默认值为 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_COOLCOOLHEATDRYFAN_ONLY
  • supported_swing_modes (可选, list): 如果您的空调不支持,可用于禁用某些摆风模式。可能值:'OFF'VERTICALHORIZONTALBOTH
  • supported_presets (可选, list): 可用于禁用某些预设模式。smartair2 的可能值:AWAYBOOSTCOMFORT。hOn 的可能值:AWAYBOOSTSLEEPAWAY 预设只能在 HEAT 模式下启用,默认禁用。
  • on_alarm_start (可选, 自动化): (仅 hOn 支持)当空调激活新报警时执行的自动化。请参阅 on_alarm_start 触发器
  • on_alarm_end (可选, 自动化): (仅 hOn 支持)当空调解除报警时执行的自动化。请参阅 on_alarm_end 触发器
  • on_status_message (可选, 自动化): 当从空调收到状态消息时执行的自动化。请参阅 on_status_message 触发器
  • Climate 的所有其他选项。

当空调激活新报警时,将触发此自动化。报警的错误代码将在变量 codeuint8_t)中提供,错误消息在变量 messageconst char *)中提供。这些变量可以在 lambda 中使用。

climate:
- protocol: hon
on_alarm_start:
then:
- logger.log:
level: WARN
format: "报警激活。代码:%d。消息:\"%s\""
args: [ 'code', 'message' ]

当先前激活的报警被空调解除时,将触发此自动化。报警的错误代码将在变量 codeuint8_t)中提供,错误消息在变量 messageconst char *)中提供。这些变量可以在 lambda 中使用。

climate:
- protocol: hon
on_alarm_end:
then:
- logger.log:
level: INFO
format: "报警解除。代码:%d。消息:\"%s\""
args: [ 'code', 'message' ]

当组件从空调收到新状态包时,将触发此自动化。原始消息二进制数据(不含头部和校验和)将在变量 dataconst char *)中提供,消息长度在变量 data_sizeuint8_t)中提供。这些变量可以在 lambda 中使用。 此触发器可用于支持某些型号独有而其他型号不支持的功能。

climate:
- protocol: hon
on_status_message:
then:
- logger.log:
level: INFO
format: "收到新状态消息,大小=%d,子命令=%02X%02X"
args: [ 'data_size', 'data[0]', 'data[1]' ]

此动作打开空调电源。

on_...:
then:
climate.haier.power_on: device_id

此动作关闭空调电源

on_...:
then:
climate.haier.power_off: device_id

此动作切换空调电源

on_...:
then:
climate.haier.power_toggle: device_id

此动作打开空调显示屏。

on_...:
then:
climate.haier.display_on: device_id

此动作关闭空调显示屏。

on_...:
then:
climate.haier.display_off: device_id

开启健康模式(UV 灯杀菌)。

on_...:
then:
climate.haier.health_on: device_id

关闭健康模式。

on_...:
then:
climate.haier.health_off: device_id

(仅 hOn 支持)此动作启用对发送到空调的每个命令的蜂鸣反馈。

on_...:
then:
climate.haier.beeper_on: device_id

(仅 hOn 支持)此动作禁用对发送到空调的每个命令的蜂鸣反馈(请注意,这对红外遥控命令无效)。

on_...:
then:
climate.haier.beeper_off: device_id

(仅 hOn 支持)如果垂直摆风被禁用,设置垂直气流方向。可能值:Health_Up、Max_Up、Up、Center、Down、Health_Down。

on_...:
then:
- climate.haier.set_vertical_airflow:
id: device_id
vertical_airflow: Up

climate.haier.set_horizontal_airflow 动作

Section titled “climate.haier.set_horizontal_airflow 动作”

(仅 hOn 支持)如果水平摆风被禁用,设置水平气流方向。可能值:Max_LeftLeftCenterRightMax_Right

on_...:
then:
- climate.haier.set_horizontal_airflow:
id: device_id
vertical_airflow: Right

(仅 hOn 支持)启动自清洁

on_...:
then:
- climate.haier.start_self_cleaning: device_id

(仅 hOn 支持)启动 56°C 杀菌清洁。

on_...:
then:
- climate.haier.start_steri_cleaning: device_id