孙亮亮
返回 智能家居

智能家居

用 ESPHome 红外万能遥控把传统空调电视纳入 Home Assistant:码值学习与场景联动实战

2026年9月30日

用ESP32+ESPHome把老空调电视接入Home Assistant实现语音与场景联动。

红外遥控Home AssistantESPHome智能家居

用 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 点后如果空调开启,自动切到睡眠风挡。

常见问题与避坑

  1. 方向性强、距离短:红外是直线传播。发射管尽量放高处、朝向常用区域,必要时两颗并联扩角;电流不足时务必用三极管扩流,否则隔着两米就失效。
  2. 码值漂移:不同批次、不同地区的同型号遥控器码可能不同,一定要用自家的遥控器现场抓取,别直接抄网上的码。
  3. GPIO 冲突:ESP32 的 RMT 通道有限,接收和发射尽量用不同通道的 GPIO,避免“能学不能发”。
  4. 与 Broadlink RM4 取舍:Broadlink 免焊接、自带学习 App、即插即用,但依赖厂商本地 API(部分型号需连云);ESPHome 方案完全本地、可定制、成本低,代价是要自己焊板和抓码。追求省事选前者,追求可控选后者。

小结

用 ESPHome + 红外收发把传统家电接入 Home Assistant,本质是用几十块钱的硬件复刻遥控器信号,换取全屋统一的智能体验。难点集中在空调长码抓取和发射功率两处,解决后稳定性完全够家用。对于不想焊接的朋友,Broadlink RM4 是更平滑的入门替代,但思路和联动逻辑完全一致。

本模块其他文章

用 ESPHome 红外万能遥控把传统空调电视纳入 Home Assistant:码值学习与场景联动实战 · 孙亮亮