未完待续,做了的先写了再说
English version click here
esphome-midea-ac-5wire
用于将美的 5 线制墙壁手操器通过 ESPHome 接入 HomeAssistant,支持 7 档风速、0.5℃ 调温精度与随身感数据包劫持
原因
- 此款五线制手操器不支持 WiFi 功能
- 家中手操器安装的位置不佳,
且随身感功能无法关闭,导致自动温控失调 - ESPHome 自带的 Coolix48 协议只能处理基本的 R05D 协议,无法处理 7 档风速、0.5℃ 调温精度和随身感
原因与理论
硬件
美的的嵌入式空调机通常存在 2 个控制面板,一个是只有红外接收窗和指示灯的遥控状态面板,另一个是有按键和显示屏的墙壁手操器,其连接拓扑如下图所示:
此款手操器有 2 种型号,一种自带 WiFi 且使用 2 芯数据线,另一种不带 WiFi 且使用 5 芯数据线,此仓库仅适配了后一种型号
手操器的 5 芯接线定义如图(由通过分析原装和第三方产品得出):
其中第三脚作用未知,但其连接到了手操器上稳压管的输出端,推断可能是用于通知状态面板手操器已接入
协议
基本
手操器通过第二脚向状态面板传送数据,其数据是标准的、经过调制的红外信号,调制频率为 38kHz
其软件协议为美的(酷风)通用的 R05D 电控协议,可以通过此泄露的机密文档获得基本的协议内容
所有的基本协议内容可以由 ESPHome 自带的 Coolix48 协议解码器进行处理
7 档风速与 0.5℃ 调温精度
此款手操器的 7 档风速功能由紧接在基本数据后的第二个扩展红外数据包实现,数据包总体结构仍然与前述文档相同(A ~A B ~B C ~C
),但在关机时不会发送
其中 A
= 0xBB
B
为 1-100 的风速值,关系如下:
风速档位 | 基本数据包的风速字段 | 扩展数据包的风速值 |
---|---|---|
自动 | 自动 (0b101) | 1 (0x01) |
1 | 低风 (0b100) | 1 (0x01) |
2 | 低风 (0b100) | 20 (0x14) |
3 | 中风 (0b010) | 40 (0x28) |
4 | 中风 (0b010) | 60 (0x3C) |
5 | 高风 (0b001) | 80 (0x50) |
6 | 高风 (0b001) | 90 (0x5A) |
7 (强力) | 高风 (0b001) | 100 (0x64) |
C
的最高位为设定温度 0.5℃ 标志,其他位保留(为 0)
- 比如设置 24.0℃,则基础数据包的设定温度为
0b0100
且此位为0
- 又比如设置 24.5℃,则则基础数据包的设定温度为
0b0100
且此位为1
举例,手操器此时的设置为 25.5℃,6档风速,此扩展数据包的值为 0xBB5A80
举例,手操器此时的设置为 25.0℃,4档风速,此扩展数据包的值为 0xBB3C00
随身感功能与 0.5℃ 上报精度
美的的部分型号支持所谓随身感功能,开启后遥控器会定期使用内置的温度传感器测温并静默发送给空调机,用来取代空调机内部的测温机制,实现温度跟随持有遥控器的用户附近进行调控
然而手操器强制开启此功能不能关闭, 此时手操器安装的位置就变得尤为重要,在不能挪动安装位置的情况下可能会导致测温不准(此功能可以关闭,参考手操器说明书)
随身感功能的基本协议可参考前述文档(B
值高 2 位为 0b11
,剩余 6 位为 1℃ 精度的当前温度;C
值包含了 1℃ 精度的设定温度、模式,最低 2 位固定为 0b10
)
此款墙壁手操器由于支持 0.5℃ 精度,会在发送随身感数据包之后紧接着发送第二个扩展数据包
扩展数据包的 A
与 B
值与基本数据包相同,C
值的最低位固定为 0b00
,C
值的最高位为温度 0.5℃ 标志
下方图片包含了部分例子(仅显示出了 B
和 C
值)