一、背景

卧室里的空调是蛮久以前买的了,想要开关的话还得翻找遥控器,有时候在床上躺着了,觉得有点冷了又懒得去翻找遥控器了。又或者是准备到家的时候想用手机提前开下空调,这样回家就可以吹上空调了。

在网上找来找去,支持手机控制的红外遥控中心一般都得一两百,而且基本都不提供 API,得自己去扒接口。另外一台可以连 Wifi 的空调也是一样,只能在手机上打开阿里智能操作,很不方便。

自己之前买过和得到过很多板子,所以就想着废物利用,用上自己以前有的板子之类的东西来改造一下。

所以在本篇中造了个轮子来实现这些功能。

二、所需硬件

本着废物利用的原则,这些东西基本上都是之前玩的时候买的,新买的只有那个红外收发模块,网上十多块就可以买到了,我买的这个是可以录制四个遥控器按钮的,串口发命令过去就可以录制和重放了(其实买个支持自解码学习的更合适,可以学习更多按键)。

Wrtnode 1+ USB 转 UART + 闪迪 8G U 盘 + 红外收发模块

当然,因为这里我是用遥控空调来做的演示,所以还得有一个空调和她的遥控器。

三、相关概念和角色说明

事件:用于触发消费者执行相关事件,包含所要触发的事件 ID。

生产者:产生事件的客户端,一般为用户的设备如手机或者电脑等,如在 iOS 上可以使用 workflow 产生事件,在 Mac  上可以用 Alfred。

消费者:消费事件的客户端,一般为智能家居设备等,在本例中为上面的 Wrtnode。

中继服务器:用于对所传来的事件在生产者和消费者进行中继。

四、相关项目以及文件

服务器:https://github.com/glzjin/eventbridge-server

Spring Boot  的项目,有 Java 运行环境的话用 jar 包直接运行就可以部署使用了。用于中继事件。

消费者客户端:https://github.com/glzjin/eventbridge-client-for-consumer

在 Openwrt/LEDE 上跑的消费者客户端,在本例中接收事件发串口让红外模块发送指令给空调。

iOS Workflow:https://workflow.is/workflows/794a1014c3a84f8cab110f12cf54f6b5

在开头填好生产者Key和服务器的 URL 就可以直接用了。

Mac Alfred Workflow:153425604424d890e2fb9542799c4845d1ca8d16a7

需要先在这里把相关参数填上。

五、部署方法

1、先按照服务器的 Readme 部署好服务器,记录好生产者 Key 和消费者 Key。然后访问服务器地址,用工具里的 生成 UUID 生成一个消费者 UUID,也记录好,下面要用。

2、然后按照消费者客户端的部署方法在 Wrtnode  上部署好。同时访问服务器地址,在这里发送 event_id 为 5~8 的 事件,来让模块学习遥控器按键。

3、在需要的 设备上 部署 Workflow。

4、Enjoy it~

六、截图及演示视频

Mac:

演示视频:https://v.youku.com/v_show/id_XMzc3OTAwNTQwOA==.html

七、更新记录

2018年08月14日:升级到 v2,支持 设置消费者 UUID 了,可以指定投递给哪个消费者了。

2018年08月15日:修改轮询为 websocket,添加易微联的支持,具体看消费者客户端那儿。