智能家居
用 ESPHome 红外万能遥控把传统空调电视纳入 Home Assistant:码值学习与场景联动实战
2026年9月30日
用ESP32+ESPHome把老空调电视接入Home Assistant实现语音与场景联动。
用 ESPHome 红外万能遥控把传统空调电视纳入 Home Assistant:码值学习与场景联动实战
摘要:老空调、风扇、电视大多只有红外遥控,没有联网能力。本文用一块 ESP32 加红外发射管,配合 ESPHome 抓取原遥控器码值并实现空调长码解析,最终在 Home Assistant 里用语音和自动化场景统一控制这些“老家电”,全程本地运行、零云端依赖。
为什么传统家电值得“智能化”
客厅那台美的老空调、卧室的落地扇、还有十年前的夏普电视,遥控器都还在,却接不进任何智能生态。重买自然省事,但一台带 WiFi 的空调动辄多花几百元,全屋换下来不是小数目。
更关键的是,这些设备本身没坏,只是缺一个“遥控器入口”。只要能复刻原遥控器的红外信号,再用 ESPHome 把它变成 Home Assistant 里的一个实体,老设备就能和门锁、传感器一起参与联动——回家自动开空调、室温过高自动开风扇,体验和新设备没有区别。
硬件清单与接线
- 一块 ESP32 开发板(ESP8266 也能用,但 ESP32 的 RMT 外设更稳定,推荐)
- 红外接收头 VS1838B(用于学习码值)
- 红外发射管(940nm 草帽灯,建议两颗并联扩角)
- S8050 三极管(扩流,红外发射电流较大)
- 100Ω 限流电阻两只
- 杜邦线、面包板
接线要点:GPIO(如 GPIO25)经 100Ω 电阻接到三极管基极;红外发射管正极串 100Ω 接 3.3V,负极接三极管集电极,发射极接地。接收头信号脚接另一个 GPIO(如 GPIO14),VCC 接 3.3V。
第一步:用 ESPHome 抓取原遥控器码值
先在 ESPHome 里接好 remote_receiver,把接收到的原始码打印到日志:
remote_receiver:
pin: GPIO14
dump: all
把设备刷入并连上日志,对着接收头按原遥控器,日志里会出现类似 Received Raw: ... 的一长串数字,这就是该按键的红外波形。电视、风扇的码通常是标准协议(NEC、RC5),dump: all 会直接解析出 NEC: 0xXXXX;而空调大多是厂家私有长码,只能以 Raw 形式完整记录。
注意:同一个按键建议连按 3 次,确认三组数据一致再保存,避免误抓到抖动。
第二步:空调长码的处理与解析
这是和传统电视遥控最大的区别。电视遥控是“单键码”——按一次发一个固定码;而空调遥控是“状态码”——每按一次,它都把“开关+模式+温度+风速+扫风”这一整包状态全部发出去。所以你不能只记一个“制冷键”,必须针对“制冷26度”“制冷26度+低风”这种具体组合分别抓取。
最省事的办法是:在固定设置下(比如制冷26℃、自动风)按一次电源键,把整段 Raw 码存下来,在 Home Assistant 里做成一个 button 或 script。如果设备常见(格力、美的、大金等),也可以直接用 ESPHome 社区维护的 climate_ir 组件,它已经把协议反解成了可调温度的 climate 实体,更优雅但适配型号有限。
第三步:红外发射配置与实体暴露
把抓到的码值写进 remote_transmitter 并做成实体:
remote_transmitter:
pin: GPIO25
carrier_driven: true
button:
- platform: template
name: "客厅空调 制冷26"
on_press:
- remote_transmitter.transmit_raw:
code: [xxxx, yyyy, zzzz]
电视的 NEC 码可以直接用 transmit_nec,更紧凑。刷入后,Home Assistant 里就会多出对应的按钮实体。
第四步:在 Home Assistant 做场景联动
实体就绪后,联动空间就打开了:
- 语音控制:在 HA 里建一个
script,把“开空调”“制冷26度”映射到对应按钮,再接天猫精灵、小爱或 Assistant 的本地意图即可语音触发。 - 回家自动化:门锁传感器从“离家”变“回家” → 延时 30 秒 → 调用空调 script,进门即有凉风。
- 温控联动:温湿度传感器读数高于 30℃ 且人在家 → 自动开风扇;低于设定值 → 关闭,省电又舒适。
- 夜间模式:22 点后如果空调开启,自动切到睡眠风挡。
常见问题与避坑
- 方向性强、距离短:红外是直线传播。发射管尽量放高处、朝向常用区域,必要时两颗并联扩角;电流不足时务必用三极管扩流,否则隔着两米就失效。
- 码值漂移:不同批次、不同地区的同型号遥控器码可能不同,一定要用自家的遥控器现场抓取,别直接抄网上的码。
- GPIO 冲突:ESP32 的 RMT 通道有限,接收和发射尽量用不同通道的 GPIO,避免“能学不能发”。
- 与 Broadlink RM4 取舍:Broadlink 免焊接、自带学习 App、即插即用,但依赖厂商本地 API(部分型号需连云);ESPHome 方案完全本地、可定制、成本低,代价是要自己焊板和抓码。追求省事选前者,追求可控选后者。
小结
用 ESPHome + 红外收发把传统家电接入 Home Assistant,本质是用几十块钱的硬件复刻遥控器信号,换取全屋统一的智能体验。难点集中在空调长码抓取和发射功率两处,解决后稳定性完全够家用。对于不想焊接的朋友,Broadlink RM4 是更平滑的入门替代,但思路和联动逻辑完全一致。