任意空调1键接入HA(Home Assistant),实现语音和远程控制——使用ESP8266/ESP32+BC7215A
介绍使用ESP8266或ESP32 Arduino及BC7215A模块,将任意空调接入Home Assistant(HA)的方案,零编程,硬件仅需连接4根线。
这里介绍一个方案,以极低的硬件成本,构成一个万能空调控制器,无需依赖任何外部码库,即可控制任意空调,上电即可直接被Home Assistant(需MQTT插件)发现并识别为空调控制器,无需任何配置,就可以直接在HA中控制空调,如果再安装适当的HA插件,就可以连接各种的语音助手,如小爱,小度、苹果Siri等等。
与市场上出售的联网的“万能红外遥控”相比,这个方案除了无需外部网络,无需专用软件直接接入HA外,还有个突出优点是可以接收解码红外遥控器的指令,并同步给HA,也就是说,除了通过HA控制空调,还可以继续使用原机的红外遥控器控制,新的变化会同步给HA,不会造成HA中显示的状态和实际空调状态不同步。
方案亮点:
-
任意品牌型号空调1键配对,无需选择品牌型号逐一尝试
-
自动接入HA
-
自带LCD显示和按键,可直接操作控制空调(ESP32方案)
-
接收解码红外遥控器信号同步给HA,保持HA与空调状态同步
-
硬件简单制作零难度,仅需两个现成市售模块,除电源外连接4根线就可以
方案所需硬件:
-
Arduino模块,可以有ESP32和ESP8266两个选择。方案中选用的ESP32 TTGO T-Display模块自带LCD,本身有按键可以做空调遥控器使用;如果追求低成本,可以用不带显示的ESP8266 NodeMCU模块。
-
BC7215A红外模块,功能是实现万能红外收发。
带LCD的ESP32模块在淘宝上约40来元,而ESP8266价格低至10元左右。BC7215A模块淘宝价25元。
方案所需软件环境:
-
需已经安装有Home Assistant
-
Home Assistant需要安装MQTT插件
-
需要一个本地的MQTT服务器。当然用公网的免费MQTT服务器也可以,但使用本地服务器可以放心使用不加密传输,且响应速度极快,MQTT服务器体积很小只有几百K,完全不增加服务器负担,因此强烈建议本地安装。
-
Arduino IDE,用于编译烧录本方案的固件,需要安装下面3个Arduino库:
-
TFT_eSPI -- LCD驱动 (仅ESP32需要)
-
PubSubClient -- MQTT驱动
-
BC7215AC -- 万能空调驱动
三个库均可以从IDE的库管理器中直接安装,建议库链接使用国内清华镜像,会比较快和稳定。
方案系统框图:

硬件电路连接:
ESP32板电路连接:

ESP8266连接图:

软件环境准备:
MQTT服务器 mosquitto
安装方法取决于你是直接安装还是使用docker,请自行根据自己情况网上搜索安装办法
HA的MQTT插件
MQTT是HA的官方插件之一,安装步骤如下
登录 HA 仪表盘,点击左侧菜单栏的 配置 (Settings) -> 选择 设备与服务 (Devices & Services) -> 点击右下角的 添加集成 (Add Integration),搜索MQTT,然后添加
配置时:
Broker: 输入你MQTT服务器的 IP 地址 或域名(例如 192.168.1.100)。
Port (端口): 默认为 1883。
Username (用户名): 不输入
Password (密码): 不输入
Client ID: 不输入
至此HA一侧就准备就绪了。
Arduino板的准备
硬件
根据自己的需要选择ESP32或者ESP8266,在BC7215AC Arduino空调红外码库中,已经提供了两个完整的例子,下载到板上即可立刻接入HA工作。两个方案的区别在于:ESP32方案选用的是带有板载LCD屏的模块,自身能显示温度和工作模式等,还有两个按钮,ESP32板本身就可以当做空调遥控器使用;而ESP8266方案没有显示,是最精简的方案,仅通过一个板载LED灯和一个按键完成必要的操作。
选择好ESP模块后,按照上面的电路图和BC7215A模块连接起来,硬件就准备好了。
软件
打开Arduino IDE, 从库管理器中搜索或者直接通过zip文件,安装好BC7215AC空调码库后,打开随库的例子程序,HA的两个例子分别叫ESP8266_MQTT_HA和ESP32_MQTT_HA,不过打开后还不能直接编译,因为WIFI和MQTT的IP地址参数是写死在程序中的,因此需要改为自己的数据后才能正常使用。定义的部分在程序的最开始部分,分别为
#define MY_WIFI_SSID
#define MY_WIFI_PASSWORD
#define MY_MQTT_IP
三个参数。
只要填好这几个参数,程序就可以编译下载了。
与空调配对
现在要想控制空调,还差最后一步,ESP32/8266板,还必须与你的空调进行配对后,才能控制。配对操作也特别简单,无需像通常的万能遥控那样选择品牌型号,不管什么空调,都只需要一步操作即可配对。
首先先要将原空调的红外遥控器准备好,将其设置为“制冷模式,25度”备用。然后根据你所用的ESP板,分别用不同操作另其进入配对模式:
ESP32板:
第一次烧录上电后,会自动进入主菜单,如果是已经配对过的需要重新配对,两个键同时长按3s,可进入主菜单。进入菜单后按左键选第二项“Pair with A/C”,按右键OK后,出现提示,让将空调遥控器准备为”制冷模式25度“,我们前面已经准备好,直接按OK就进入了配对模式,BC7215A上蓝灯会亮起,表示进入了接收模式,这时用红外遥控器对着BC7215A模块的红外接收头,按”风速调节“按钮,正常情况下,随后蓝灯就会熄灭,然后LCD上会显示”Pairing OK”,再按OK键,一切就都已经搞定,可以控制空调了!如果你的MQTT配置没有错误,LCD上的“MQTT”标志也会出现。
ESP8266板:
ESP8266板没有LCD,只靠一个LCD和一个按键做人机交互,因此操作没有ESP32板直接。板上有一个RST复位键,一个FLASH键,长按FLASH键3s,板载LED灯进入闪烁状态,等待配对,此时只需用设置为“制冷模式25度”的红外遥控器,对着BC7215A模块按“风速调节”键,即可完成配对。配对成功的板子,ESP8266板载LED会每3s短暂闪烁一下,表明工作状态。与ESP32板不同之处,ESP8266程序配对成功后,BC7215A模块会保持接收模式,随时接收红外遥控器的信号,以便将空调状态同步到HA,仅在收到HA发来的改变空调状态的指令时,才转换为发射模式。
HA操作
配对成功后,如果MQTT设置正确,在HA中就会自动出现我们的BC7215空调控制器,无需更多设置,就可以直接用来控制空调了。如果是使用的ESP8266板的话,用红外遥控器控制空调,在HA中也能看到空调状态的更新,酷吧!如果使用的是ESP32板,需要通过菜单将板子设置为“解析”模式,才可以将红外遥控器的控制同步给HA。

注意事项
和普通遥控器的使用一样,应该将板上的红外发射头大致对准空调的方向,才能达到最佳的效果,有兴趣的玩家可以自行改造电路,同时用几个红外发射管对着不同的方向,这样可以保证不管设备怎么放,都不影响空调接收。
同理,ESP8266板的接收功能,也应该将BC7215板上的接收头置于能收到红外线信号的位置。
语音控制
HA的功能非常强大,如果你已经有了HA,那么将其中的设备接入语音控制可以说是易如反掌,而且有多种方案,包括本地方案和云端方案,基本上通过安装适当的插件就可以实现,内容已经超出了本文的覆盖范围,将来再另外发文讨论吧。
更多推荐



所有评论(0)