硬件介绍
艾韵场景控A1长这样:
这玩意儿简单来说就是个能连接到WiFi上的红外收发装置,原本也是用来实现互联网控制传统家电的。在它的原厂实现中,所有消息都要经过厂家的服务器中转,然而不幸的是该厂已经倒闭跑路了,服务器早已失联,所以原厂功能完全用不了。
所幸A1预留了非常方便焊接的调试接口,可以刷入第三方固件来复活它:
固件适配
图上很容易分辨出,这玩意儿的主控就是一块esp-12f,跟nodemcu开发板基本兼容,多的是开源项目可以借鉴。只要知道引脚布局,适配还是挺容易的,事实上,之前已经有人适配过blinker、irbaby固件了,遥控的基本功能都是能用的。——可惜在我的空调上有BUG,只好另寻它路。
好在热心网友分享了这东西的原理图:
可以看到,相比于最常规的外围接法,这个东西通过一对MOS管做了硬件上的收发冲突设计。ESP-12F模块通过GPIO14接收红外信号,通过GPIO13控制红外信号发射,GPIO14同时连接到了发射通路的PMOS上,如果软件在控制红外发射时不把GPIO14设为输出并且拉低,那么发射实际上是无效的。只需要根据这个差异做patch,就能让任何给常规接法的编写的固件在A1上正常工作。
这里我选择了非常流行的IRremoteESP8266库的示例项目:IR MQTT Server。这个项目有几个突出优势:
- 配置简单,并且是通过HTTP服务(网页)配置的,无需额外的APP。
- 方便与Home Assistant对接,可以方便的在HA上自动发现
- 它能充分利用A1的红外接收模块,不仅仅能识别或者学习红外码,它还能提供这样的使用场景:当你使用实机遥控器控制空调的时候,它的接受模块也会识别到实机遥控器的命令并且通过MQTT同步到Home Assistant的实体里,这样一来,HA的lovelace卡片就能一直保持跟空调状态一致。
- 刷写后支持OTA更新。
- 对我使用的AUX空调支持良好。 固件我已经修改调试稳定,需要的可以从这里的网盘链接自取(提取码:qyjy),转载、分享请标明出处。
具体修改细节可以到我fork的仓库里查看,注意切换至AI-Win-A1分支,自行编译或修改的话请阅读代码前的注释。
网盘链接里放了bin和NodeMCU-PyFlasher这个刷写工具,下面是使用方法介绍。
保姆级食用指南
需要准备的东西有:小十字螺丝刀(大概PH0),2.54mm单排针,跳线帽,烙铁和锡丝,以及一个USB转TTL的转接线。
第一次刷写固件需要拆机。拆机方法比较粗暴:下面脚贴里有两颗十字螺丝,拧出来,然后用镊子尾部之类的扁平硬物撬开上壳即可。
撬开后就可以看到PCB了,就像本文第一张图那样,按我的方式把排针焊上,并且用跳线帽短接DOWN和GND这两跟插针。然后拿出USB转TTL线,按照5V-5V,GND-GND,TX-TX,RX-RX的方式把TTL和场景控A1连接起来。连接好后如下图:
下面测试是否连接正常:把USB转TTL线插到PC上,进入设备管理器查看对应的COM口。例如我们用的是COM4,那么接下来使用任意串口调试软件,比如putty连接COM4串口,波特率设置为76800,如果连接正常,轻轻拔插GND插针后,命令行将会有如下字符提示:
这说明我们的连接正常,并且esp-12f正处在可烧写的模式。假如无法正常显示,可以尝试对调tx和rx的连接。
连接成功后正式进入刷机环节,打开NodeMCU-PyFlasher,Serial port中选择对应的串口,firmware选择刚才下载的bin文件,波特率设置为115200,Flash mode为Dual I/O,Erase flash选择yes,然后点击Flash nodeMCU开始刷写。
等待刷写完成提示即可。
刷写完成后拔掉TTL线并且去除跳线帽,插上5V的MicroUSB充电器开机。
开机后使用电脑或者手机连接ESP+一串数字形式的WiFi热点,这时浏览器会自动弹出配网页面,点击WiFi config,然后填写该页面的所有信息,包括你家WiFi的SSID和密码,你的MQTT服务器的地址和端口以及用户名密码等等,检查无误后点击保存,稍等一会儿,场景控A1会自动重启并连接到你家的WiFi上。如果配网后启动正常,那么A1的指示灯会点亮为蓝色。
接下来进入你家WiFi的管理页面去查看ESP+一串数字形式的主机名对应的IP,在浏览器输入该IP即可进入IR MQTT Server的http页面,如下图:
本固件在发送红外指令时,A1的指示灯会变为红色,在网页Home页面点击任意一个Send按钮可以验证发射是否正常:正常的表现为:用手机摄像头对准任何一颗红外发射管,点击Send按钮,在指示灯变为红色的时间内,手机取景器中可以观察到红外发射管亮起或闪烁。
接下来设置你的空调协议类型:点击Aircon按钮进入Air Conditioner Control页面,选择你的空调品牌或协议,比如说AUX空调使用ELECTRA_AC协议,而美的空调有的使用MEDIA有的使用COOLIX,协议和品牌的对应请到此处查看。设置好后点击Update&Send即可保存,几秒之后会提示Update成功。如果后续发现工作不正常,可以调整Model选项尝试,直到找到合适的为止。
接下来进入Admin界面,点击Send MQTT Discovery,发送自动发现信息,让HA自动发现我们的场景控。这里假设读者已经自行架设好HA和MQTT broker,如果这部分知识不了解请自行搜索学习,限于篇幅不再赘述。
然后我们打开HA,进入配置—设备页面,找到我们刚刚在配网页面起的名字,点进去会发现其中有个实体,该实体就是我们配置的Aircon。
接下来测试接收同步功能是否正常:方法为拿出实机遥控器(即空调自己的遥控器),对着场景控A1的红外接收管按下按钮,查看HA中该实体是否有对应变动,如果有,那么大功告成。点击添加LOVELACE,可以用HA中的卡片控制空调,也可以在使用实机遥控器时,把空调状态同步到HA中(注意A1放置的位置,需要在你使用实机遥控器时A1也接收的到信号)。
结束语
终于写完了,累死= =