跳转到内容

Midea 空调

midea 组件创建一个 Midea 空调气候设备。

NOTE

此协议还被一些厂商使用:

可以通过定制扩展坞进行控制。硬件实现示例有 IoT Uni Dongle 或 Midea SLWF-01pro(CloudFree、Tindie)。

Midea 空调要求将 UART 配置为 baud_rate: 9600。硬件需要 5V 逻辑电平,并且似乎不兼容 3.3V 逻辑电平。自行制作扩展坞时请使用电平转换器。

# 配置示例
# 主要设置
climate:
- platform: midea
name: Midea Climate # 使用唯一的名称。
period: 1s # 可选
timeout: 2s # 可选
num_attempts: 3 # 可选
autoconf: true # 自动配置大部分选项。
beeper: true # 命令时发出蜂鸣声。
visual: # 可选。显示设置覆盖示例。
min_temperature: 17 °C # 最小值:17
max_temperature: 30 °C # 最大值:30
temperature_step: 0.5 °C # 最小值:0.5
supported_modes: # 可选。本节中的所有功能都可以通过 autoconf 检测。
- FAN_ONLY
- HEAT_COOL
- COOL
- HEAT
- DRY
custom_fan_modes: # 可选
- SILENT
- TURBO
supported_presets: # 可选。本节中的所有功能都可以通过 autoconf 检测。
- ECO
- BOOST
- SLEEP
custom_presets: # 可选。本节中的所有功能都可以通过 autoconf 检测。
- FREEZE_PROTECTION
supported_swing_modes: # 可选
- VERTICAL
- HORIZONTAL
- BOTH
outdoor_temperature: # 可选。室外温度传感器(长时间不活动后可能显示错误值)。
name: Temp
power_usage: # 可选。功率使用传感器(仅适用于支持此功能的设备)。
name: Power
humidity_setpoint: # 可选。室内湿度传感器(仅适用于支持此功能的设备)。
name: Humidity
  • uart_id (可选,ID):如果你想使用多个 UART 总线,可以手动指定 Uart 的 ID。

  • transmitter_id (可选,ID):使用 Remote Transmitter 组件发送 IR 命令时,自动定义和使用。

  • period (可选,Time):与设备之间的请求最小间隔。默认为 1s。

  • timeout (可选,Time):请求响应超时,直到下一次请求尝试。默认为 2s。

  • num_attempts (可选,整数):请求尝试次数,取值范围 1 到 5(含)。默认为 3。

  • autoconf (可选,布尔值):自动获取功能能力。允许你不用手动定义设备的大部分功能。 默认为 True。

  • beeper (可选,布尔值):命令时发出蜂鸣声反馈。默认为 False。

  • supported_modes (可选,列表):支持的模式列表。可选值包括:HEAT_COOL、COOL、HEAT、DRY、FAN_ONLY。

  • custom_fan_modes (可选,列表):支持的自定义风扇模式列表。可选值包括:SILENT、TURBO。

  • supported_presets (可选,列表):支持的预设列表。可选值包括:ECO、BOOST、SLEEP。

  • custom_presets (可选,列表):支持的自定义预设列表。可选值包括:FREEZE_PROTECTION。

  • supported_swing_modes (可选,列表):支持的摆动模式列表。可选值包括:VERTICAL、HORIZONTAL、BOTH。

  • outdoor_temperature (可选):室外温度传感器的信息。

    • Sensor 中的所有选项。
  • power_usage (可选):当前功耗传感器的信息。

    • Sensor 中的所有选项。
  • humidity_setpoint (可选):室内湿度传感器的信息(实验性)。

    • Sensor 中的所有选项。
  • Climate 中的所有其他选项。

此动作打开电源。模式与预设将恢复到关闭前的最后状态。

on_...:
then:
- midea_ac.power_on:

此动作关闭电源。

on_...:
then:
- midea_ac.power_off:

此动作切换电源状态。与按遥控器上的电源按钮相同。

on_...:
then:
- midea_ac.power_toggle:

此动作发送一个 IR FollowMe 命令,告诉空调使用更准确的 室温值,以替代室内机内部传感器。

on_...:
then:
- midea_ac.follow_me:
temperature: !lambda "return x;"
use_fahrenheit: false
beeper: false

配置变量:

  • temperature (必填,浮点数,可模板化): 设置内部温度传感器的值。该值将被限制在以下范围内:

    • 当 use_fahrenheit 为 false 时:0 °C 至 37 °C
    • 当 use_fahrenheit 为 true 时:32 °F 至 99 °F
  • use_fahrenheit (可选,布尔值,可模板化): 指定 temperature 值是否以华氏度表示。设为 true 时,温度以华氏度解析和发送。默认为 false(摄氏度)。

  • beeper (可选,布尔值,可模板化): 更新时是否发出蜂鸣声。默认为 false。

此动作切换空调屏幕。如果支持,通过 UART 工作,也可以通过 Remote Transmitter 工作。

on_...:
then:
- midea_ac.display_toggle:

此动作将导风板调整一步。需要 Remote Transmitter。

on_...:
then:
- midea_ac.swing_step:

此动作打开蜂鸣声反馈。

on_...:
then:
- midea_ac.beeper_on:

此动作关闭蜂鸣声反馈。

on_...:
then:
- midea_ac.beeper_off:

可以使用 FollowMe 功能和一些仅通过 IR 命令可用的其他功能。 下面是一个如何使用 Remote Transmitter 组件发送带有传感器值的 FollowMe 命令 以及控制 LED 显示屏灯光的示例。

# 配置示例
remote_transmitter:
pin: GPIO13 # 用于 iot-uni-stick。
carrier_duty_percent: 100% # IR LED 用 50%,直连 TSOP IR 接收器输出用 100%。
sensor:
- platform: homeassistant
entity_id: sensor.room_sensor # 来自 HASS 的传感器
internal: true
filters:
- throttle: 10s
- heartbeat: 2min # 更新之间的最大间隔。
- debounce: 1s
on_value:
midea_ac.follow_me:
temperature: !lambda "return x;"
beeper: false # 可选。更新时发出蜂鸣声。
# 用于发送显示控制命令和摆动步数动作的模板按钮
button:
- platform: template
name: Display Toggle
icon: mdi:theme-light-dark
on_press:
midea_ac.display_toggle:
- platform: template
name: Swing Step
icon: mdi:tailwind
on_press:
midea_ac.swing_step:
switch:
- platform: template
name: Beeper
icon: mdi:volume-source
optimistic: true
turn_on_action:
midea_ac.beeper_on:
turn_off_action:
midea_ac.beeper_off:

感谢以下人员对 UART 协议逆向工程和源代码的贡献,相关仓库如下:

特别感谢项目 IRremoteESP8266 对 IR 协议进行了描述。