跳转到内容

Haier 气候设备

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

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

由 SmartAir2 应用控制的旧款 Haier 型号使用的是 KZW-W002 模块。此模块无法复用,你需要用 ESP 或 RPI Pico W 模块替换它。板载 USB 连接器不支持 USB 协议。它是一个 UART 端口,只是使用了 USB 连接器。要将 ESP 板连接到空调,可以剪断一根 USB A 型线缆并将电线连接到气候连接器。

板载USB线色ESP8266
5VVCC红色5V
GNDGND黑色GND
TXDATA+绿色RX
RXDATA-白色TX
KZW-W002 模块引脚定义

新款 Haier 型号使用的模块名为 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: "Alarm activated. Code: %d. Message: \"%s\""
args: ['code', 'message']
on_alarm_end:
then:
- logger.log:
level: INFO
format: "Alarm deactivated. Code: %d. Message: \"%s\""
args: ['code', 'message']
on_status_message:
then:
- logger.log:
level: INFO
format: "New status message received, size=%d, subcmd=%02X%02X"
args: ['data_size', 'data[0]', 'data[1]']
  • uart_id (可选,ID):用于与空调通信的 UART 端口 ID。
  • protocol (可选,字符串):定义与空调的通信协议。可选值:hon 或 smartair2。默认值为 smartair2。
  • wifi_signal (可选,布尔值):如果为 true - 将 WiFi 信号强度发送到空调。
  • answer_timeout (可选,Time):响应超时。默认值为 200ms。
  • alternative_swing_control (可选,布尔值):(仅 smartAir2 支持)如果为 true - 使用替代值来控制摆动模式。仅在原始控制方法对你的空调不起作用时使用。
  • status_message_header_size (可选,整数):(仅 hOn 支持)定义状态消息的头部大小。可用于处理某些协议变体。仅在你确定自己在做什么时使用。默认值:0。
  • control_packet_size (可选,整数):(仅 hOn 支持)定义控制数据包的大小。有助于处理一些使用较大数据包的新型号空调。默认值:10。
  • sensors_packet_size (可选,整数):(仅 hOn 支持)定义状态消息的传感器数据包大小。有助于处理一些具有较大传感器数据包型号的空调。默认值:22,最小值:18。
  • control_method (可选,列表):(仅 hOn 支持)定义控制方法(应被空调支持)。支持的值:MONITOR_ONLY - 不进行控制,仅监控状态,SET_GROUP_PARAMETERS - 用一个命令设置所有空调参数(默认方法),SET_SINGLE_PARAMETER - 逐个设置每个参数(某些新型号天花板空调如 AD71S2SM3FA 支持此方法)
  • display (可选,布尔值):可用于关闭空调显示屏。
  • beeeper (可选,布尔值):可用于禁用空调接收到命令时的蜂鸣声。仅 hOn 协议支持。
  • supported_modes (可选,列表):可用于禁用某些空调模式。可选值:'OFF'、HEAT_COOL、COOL、HEAT、DRY、FAN_ONLY。
  • supported_swing_modes (可选,列表):可用于禁用你的空调不支持的某些摆动模式。可选值:'OFF'、VERTICAL、HORIZONTAL、BOTH。
  • supported_presets (可选,列表):可用于禁用某些预设。smartair2 的可选值:AWAY、BOOST、COMFORT。hOn 的可选值:AWAY、BOOST、SLEEP。AWAY 预设只能在 HEAT 模式下启用,默认禁用。
  • on_alarm_start (可选,Automation):(仅 hOn 支持)空调激活新警报时执行的自动化。请参见 on_alarm_start 触发器。
  • on_alarm_end (可选,Automation):(仅 hOn 支持)空调关闭警报时执行的自动化。请参见 on_alarm_end 触发器。
  • on_status_message (可选,Automation):接收到来自空调的状态消息时执行的自动化。请参见 on_status_message 触发器。
  • Climate 中的所有其他选项。

当空调激活新的警报时,将触发此自动化。警报的错误代码将存储在变量 code(uint8_t)中,错误消息存储在变量 message(const char *)中。这些变量可以在 lambdas 中使用。

climate:
- protocol: hon
on_alarm_start:
then:
- logger.log:
level: WARN
format: "Alarm activated. Code: %d. Message: \"%s\""
args: ['code', 'message']

当之前激活的警报被空调关闭时,将触发此自动化。警报的错误代码将存储在变量 code(uint8_t)中,错误消息存储在变量 message(const char *)中。这些变量可以在 lambdas 中使用。

climate:
- protocol: hon
on_alarm_end:
then:
- logger.log:
level: INFO
format: "Alarm deactivated. Code: %d. Message: \"%s\""
args: ['code', 'message']

当组件接收到来自空调的新状态数据包时,将触发此自动化。原始消息二进制(不含头部和校验和)将存储在变量 data(const char *)中,消息长度存储在变量 data_size(uint8_t)中。这些变量可以在 lambdas 中使用。 此触发器可用于支持某些型号独有的、其他型号不支持的功能。

climate:
- protocol: hon
on_status_message:
then:
- logger.log:
level: INFO
format: "New status message received, size=%d, subcmd=%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

打开健康模式(紫外线杀菌)。

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 支持)此动作在每次向空调发送命令时禁用蜂鸣反馈(请注意,这对于 IR 遥控命令不起作用)。

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

(仅 hOn 支持)在禁用垂直摆动时设置垂直气流方向。

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

配置变量:

  • id (必填,ID):Haier 气候组件的 ID。
  • vertical_airflow (必填,字符串,可模板化):垂直气流方向。可选值:Health_Up、Max_Up、Up、Center、Down、Health_Down。

climate.haier.set_horizontal_airflow 动作

Section titled “climate.haier.set_horizontal_airflow 动作”

(仅 hOn 支持)在禁用水平摆动时设置水平气流方向。

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

配置变量:

  • id (必填,ID):Haier 气候组件的 ID。
  • horizontal_airflow (必填,字符串,可模板化):水平气流方向。可选值:Max_Left、Left、Center、Right、Max_Right。

(仅 hOn 支持)启动自清洁。

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

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

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