使用 BroadLink 和 Amazon Echo 控制电灯

2016-11-02 02:22:46 +08:00
 sneezry

用语音控制电器是一件非常让人兴奋的事情,这给人一个和房子互动的新方式。但如果你的房子在装修前没有考虑配置智能家居,又觉得更换全部智能灯泡的成本不太容易接受,而恰好你喜欢自己动手折腾一些东西,那么这篇文章会非常适合你。

我选择的方案是 BroadLink 控制开关和 Amazon Echo 语音控制设备,按照我自己家的情况是更换了 5 个墙壁开关、购买了一个射频控制主机以及两个 Amazon Echo ,总成本差不多 1500 元,和一个飞利浦 Hue Go 智能灯差不多。

在开始之前你需要做一些准备:

  1. 一个美区的 AWS 账号
  2. 一部 Android 手机
如果你满足上面两个条件,就可以开始了。

首先根据你家里的情况选购 BroadLink 的 TC2 射频开关,之所以选择 BroadLink 是因为它的价格比较便宜,同时由于协议简单,比较容易进行二次开发。当然如果你找到了更适合自己的设备也是可以的,这里只是需要一个将电灯开关转化为 Wifi 信号的设备。

需要注意的是, BroadLink TC2 射频开关是单控单火线开关,如果你对单控单火线不了解,建议先补习一下相关的知识,或者直接询问专业的人士。如果不满足单控,可以将家里的双控电路改为单控电路,这个改起来并不麻烦,我就是自己改的,但如果你对电路不了解请务必请专业人士帮忙。如果不满足单火线,可以购买火线零线共存的射频开关,但需要注意购买 BroadLink 控制主机支持的型号,具体可以询问商家。另外有部分无线控制多位开关只有两根控制线,这样的开关是需要对控制线进行特殊铺设的,如果你家里已经布好了电源线,那么就需要搞清楚是否可以使用这种开关。

购买 BroadLink TC2 的同时还需要购买 BroadLink Pro 控制主机, TC2 是把射频信号转换为电信号的设备,而 Pro 主机是把 Wifi 信号转换为射频信号的设备。

射频开关安装完毕后,就可以下载 BroadLink 官方的手机 App 对开关进行设置。如果一切顺利,你就可以使用手机控制电灯了。

下一步需要对 BroadLink 进行二次开发。在 Android 手机中安装一款网络数据包查看工具,使用 BroadLink App 对开关发送指令后,查看数据包数据。正常情况下会看到如下格式的数据:


5aa5 aa55 5aa5 aa55 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 2a27 6a00 7d20 2f6c 8d0d 43b4
0100 0000 0ec5 0000 2b20 a8bf f18e e1d5
...

已经有人这个数据的格式进行过详细的分析,在此我就不分析了。但由于 BroadLink 协议的特殊性,这条指令重放是有效的,所以完全可以单纯将这条数据和相应的操作记录下来,随时发生到 BroadLink 的控制主机。所以不出意外,你已经拿到了 Wifi 控制电灯的接口。

下面开始设置 Amazon Echo 。

Amazon Echo 已经有了很多 Smart Home 的应用(官方叫 Skill ),但遗憾的是并没有我们可以使用的,所以需要自行开发适合我们的 Smart Home Skill 。

Amazon Echo Smart Home Skill 只支持 Lambda Function ,这也是需要 AWS 账号的原因。

开发 Smart Home Skill 可以参考Five Steps Before Developing a Smart Home Skill,文章里面讲解得非常详细,并且配有截图。

在创建完 Lambda 后, AWS 会自动生成一个 Smart Home 的 demo 代码,需要注意这个代码跑不通,首先由于没有声明 namespace ,event.header.namespace需要使用完整的名称,所以要把代码里的DiscoveryControl什么的改为Alexa.ConnectedHome.Discovery。其次, demo 里的event.header.name SwitchOnOffRequest,这个根据关闭和开启的指令不同,应该改为 TurnOffRequest TurnOffRequest

OK ,不出意外,你现在已经可以用语音控制你家的电灯了,但我猜会有比较高的延迟,这是因为 Amazon 在用北美或欧洲的服务器呼叫你自己家里的机器,将信息传给 BroadLink 控制主机。我也遇到了这个问题,整个流程大部分时候超时,最后没办法把 Lambda 的超时时间改为了 30 秒。这种体验显然是不可接受的,所以需要最后再做一步操作进行优化。

我在 Azure 香港区架设了一个跳板,同时开启了 https 和 wss ,我家里的机器通过 wss 与跳板机保存长连接, Amazon 服务器将指令通过 https 的方式发给跳板机,跳板机再通过 wss 发给我家里的机器,这样大部分情况下延迟就可以做到 3 秒以内了。

最后我来梳理一下整个流程信息的传递过程,帮大家进一步理解。

  1. Amazon Echo 将声音发送到 Amazon 云端解析
  2. Amazon 云端将解析结果发给美国东部的 AWS Lambda 的 Smart Home Skill
  3. AWS Lambda 将结果通过 https 的方式发给香港的 Azure 跳板机
  4. Azure 跳板机将结果通过 wss 发送到我家里的机器
  5. 我家里的机器通过 Wifi 将结果发给 BroadLink 控制主机
  6. BroadLink 控制主机通过射频将结果发给 TC2 开关
  7. TC2 开关对电灯进行开关操作

最后的最后再扩展一下思路,可以组合多个指令进行场景设置,比如我让 Echo 打开投影仪的时候,客厅的电灯会自动熄灭,而关闭投影仪的时候,通过对时间的判断打开客厅的电灯。

11326 次点击
所在节点    分享创造
29 条回复
kslr
2016-11-02 03:03:47 +08:00
可以考虑下用国内的语音识别做到速度更快。
sneezry
2016-11-02 03:06:41 +08:00
@kslr 这个考虑过,但是设备是问题。 Amazon Echo 的 Mic 是特制的,使用普通的 USB 话筒距离超过 20 厘米基本就识别不准了。而且 Amazon 的 Smart Home Skill 无需开发者自己设定关键字,非常好用。
kslr
2016-11-02 03:17:44 +08:00
@sneezry 记得科大讯飞有这个 mic 方案,只要 100 多好像。
20150517
2016-11-02 06:33:23 +08:00
我最近也想改造这个,但我想问下,你墙壁开关用的是什么?
BroadLink 必须每间房间都有吗,否则他怎么发信号给墙壁开关呢?

我现在需求就是有时候上楼了,不想下楼关灯,我需要安卓手机查下,然后控制楼下灯开关,请指教!
kn007
2016-11-02 07:40:12 +08:00
很有意思
loniper
2016-11-02 08:48:52 +08:00
真复杂...家里用 iPhone+小米路由已经实现 Siri 控制小米的灯泡、插座什么的了
不要鄙视小米的东西,问为什么不用苹果官网那些正宗配件
因为我 QIONG
sneezry
2016-11-02 09:39:12 +08:00
@loniper 如果觉得仅用手机就足够了,那么 BroadLink 就满足你了。如果你不爱折腾这篇文章肯定不适合你,这我在最开始就说明了。
sneezry
2016-11-02 09:42:18 +08:00
@20150517 墙壁开关我用的 BroadLink TC2 。 BroadLink 主机控制距离官方说是 6 到 8 米,射频信号可以穿墙,这就和布置无线路由类似,不必每个房间都放,但应该放几个还是要看实际情况。
wickila
2016-11-03 16:11:04 +08:00
cool !请问一下,识别的准确率如何?需要扯着嗓子大声喊吗?还是正常说话就行?
sneezry
2016-11-03 17:20:28 +08:00
@wickila 正常说话就可以,但是最好每个房间放一个,门关上就听不到了。识别率还是很高的,对口语要求不高
20150517
2016-11-04 01:27:17 +08:00
@sneezry 今天研究了 TC2,发现正是我想要的
想问一句,TC2 必须要有主机控制吗,手机不能直接控制对吗?
我有个房间的灯亮度是能调节旋转的,这 TC2 就不能支持了吧?
sneezry
2016-11-05 16:33:39 +08:00
@20150517 必须要有主机, TC2 是射频遥控,不是 Wifi
sneezry
2016-11-05 16:34:52 +08:00
@20150517 亮度调节应该不支持,那我建议你找支持的,因为 Echo 支持调节亮度的指令
sewyu
2016-11-09 13:29:17 +08:00
楼主高人,急需自建智能家居的材料。
nicevar
2016-11-09 17:29:05 +08:00
我家里几个灯可以用遥控的,但是遥控是滚码的不能复制,所以那种 app 控制的红外设备不行,后来我把遥控固定在墙上做了个小机械来摁遥控器,用原来大学买的一块小板直接通过 wifi 用 app 控制这玩意,很是实用
Arnie97
2016-11-12 23:29:21 +08:00
美国东部 AWS … 香港 Azure …

我想到了生活大爆炸某一集当中,通过 Internet 点亮了地球对面的一个灯。
gump2008
2016-11-22 17:06:03 +08:00
aws 注册是免费一年吗?
gump2008
2016-11-29 16:48:09 +08:00
“ 4.Azure 跳板机将结果通过 wss 发送到我家里的机器“,”我家里的机器“是指 ECHO DOT 吗?
sneezry
2016-11-29 17:06:42 +08:00
@gump2008 家里的树莓派
gump2008
2016-11-29 22:07:43 +08:00
@sneezry 再通过树莓派控制 Rm pro 发送射频信号操作 Tc2 ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/317266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX