本文作者:yifanw
前言
此篇紧接着上次发表的跨智能家居系统搭建方案(上篇) ,把标题修改了一下,没那么啰嗦了 ,争取缩短每个篇幅间的等待时间,让感兴趣的值友能更快看到更多的干货
站内搜索:家庭网络全套解决方案分享 篇四:使用QNAP 威联通 NAS + HomeAssistant +第三方服务打造跨平台智能家居系统(上篇)
在上篇中我介绍了使用威联通NAS中官方应用Container Station来搭建Home Assistant服务端,并搭配Echo,Google Home等智能音箱实现跨平台智能硬件控制,虽然还没讲到音箱部分但是评论中有提到目前国产的几个品牌音箱也可以连入HA平台,这样就可以解决中文的问题了。所以大家在实际操作的时候不一定需要使用同样的硬件,只要音箱本身支持接入HA平台就可以 。另外也并非必须使用威联通的NAS来做HA的服务器,树莓派,群晖或其它linux平台甚至windows平台一样可以,搭建完成后后面的内容因为是基于HA或第三方服务本身,所以这里分享的主要是解决方案和个人建议的搭建思路,如果有更好的方式或者有错误的地方还请在评论中指出 好了~ 那就继续开工咯~
设备分组
在上篇中我介绍了HA服务端搭建完成后可以通过configuration.yaml这里配置文件来添加所有智能设备,下面继续拿我客厅的设备作为样例讲解。
在上篇中配置的客厅照明设备
如果只是把所有设备按照规定的格式添加进去的话,所有设备都会全部出现在HA的管理页面上,只会按照类别来进行分组,例如,如果家里客厅,卧室,儿童房,厨房等地方全部安装了wifi灯泡,特别是某个房间有多个灯泡或者照明设备时,添加完成后在HA中会一股脑的放在“灯光”这个大类下,并不方便管理,我们需要能按照实际布局来把他们按房间来分组,这样方面我们统一开关和管理,先来看一下分组完成后的效果
这样是不是一目了然?
那么我们如何配置才能实现呢?这里需要使用到一个新的配置项 - group
在configuration.yaml主配置文件中添加 group字段,并且使用 !include + 外部文件名(这里使用 groups.yaml)的方式来包含分组信息。添加完成后,使用WinSCP连接到HA docker内双击打开groups.yaml文件进行设备组的划分。
使用单独文件groups.yaml来配置设备组
在配置组之前,需要先知道每个设备在HA中的id名称,如果已经把所有设备添加完成了就可以进入到HA管理页面,点击左边菜单下发开发者工具中的 <> 图标进入设备列表
这里可以查看到所有已添加设备的id(id名称为添加设备时设置的name参数)
Tips:前面在configuration.yaml中添加设备时候注意一定要设置name参数哦~ 不然设备多的话会搞不清楚到底是什么设备。
按照下面的格式在groups.yaml内进行设备分组配置
上面的图中是我家实际客厅所有智能设备组的划分,因为客厅的设备较多所以一共设置了4个组,方便单独控制,也为了后面在加入第三方服务时可以自由创建各种组合:
Tips: 如果一个房间内有多个设备,可以创建多层的组,例如,我上面的这个例子,一共创建了4个组,除了全体设备这个组包含了全部设备外,按照功能及使用便利性又创建了3个设备组,这样我如果想单独同时控制2个沙发灯带的时候就可以打开/关闭 沙发灯带组即可。
单独打开沙发灯带组的效果
另外一个需要注意的地方是配置组参数中的 view 参数,当这个参数设置为 yes的时候则会在HA中给这个组单独创建一个标签页面,如果是no则不会,建议按照家庭实际房间来设置标签,所以只需把每个房间包含设备最多的那个组设置为 view: yes
配置 view: yes 的组会在HA首页上方创建独立的标签页
客厅标签页中包含了上面 【组】全体设备 中的设备及子组
做到这里我就把客厅全部配置完成了!使用同样的思路来配置其它房间吧!
使用Home Assistant 移动端应用实现远程操控
Home Assistant在安装完成后默认提供了一个网页版的客户端管理界面,就是上面看到的那个~ 但是大部分人基本上很少坐在电脑面前来遥控各个房间的设备呀,这里就要用到移动端APP ,虽然网页版的也可以用移动设备浏览器打开并且自动匹配屏幕大小,但是毕竟原生的APP操控起来更加顺手而且提供了更多的高级功能,下载地址
安卓版貌似没有对应的应用,所以~~ 算是IOS的一大福利
移动端会自动适应屏幕大小
在右下方的配置项里面填入HA的外网地址及登录密码
红框中的device tracker component是电脑版客户端无法实现的功能哦~ 后面会细说
在位置设置(Location Settings)里面可以配置实时推送移动设备位置的配置,这个有什么用呢?后面我会给大家介绍使用这个功能可以实现高级自动化哦~ 先卖个关子
使用第三方服务实现高级自动化
做到这里,我们来总结一下实现了哪些功能吧:
所有智能设备连入Home Assistant,并且可以从网页端或移动端进行操控设备可以按照房间或物理位置分组,并且可以一键控制每个组内所有设备的操控
等等,做到了这些算是实现了智能家居吗? 最多只能算实现了远程遥控设备功能,离真正的智能家居还有一定距离 - 我们要的不仅仅是一个遥控器,而是需要有能力根据输入的信息做出相应的动作。 这里,我们需要使用到2大神器~ 智能音箱和第三方服务
智能音箱能把语音指令转化为控制命令传递给已连接的智能设备第三方服务可以实现设备间的自动化
第一个智能音箱就不多介绍了,相信大家都知道。
第二个第三方服务才是这里的核心,通过各种第三方服务可以把智能设备串起来使用,这里举几个我自己用到的场景 :
当在家里找不到手机的时候,可以语音要求Google Home音箱查找我的手机 > Google Home自动拨打VoIP电话到我的手机 > 找到手机。 【使用Google Assistant + IFTTT服务】当我每天下班回家的时候,离家还剩5公里的时候,家里Google Home自动播放语音提醒老婆还有x分钟到家(根据实时路况推算时间哦! )。【使用Google Assistant + HA定位服务】每天晚上关闭所有灯后自动检查门锁是否有反锁上,没有的话自动上锁。【使用HomeKit + Sense智能锁服务】晚上在家看电影的时候,对智能音箱发出 ‘看电影’ 指令 > 客厅大灯自动熄灭,氛围灯调整到看电影模式(参考上面的沙发灯带图)投影机自动打开,投影幕布自动放下,家庭影院自动打开并切换到媒体播放器输入设备。【使用Yeelight + 罗技HARMONY服务】
有没有很高级的赶脚~ 下面我们来简单介绍一下几个重要的第三方服务。
IFTTT
自动化大神级工具,百度的解释是
ifttt是“if this then that”的缩写,事实上是让你的网络行为能够引发连锁反应、让你使用更为方便,其宗旨是“Put the internet to work for you”(让互联网为你服务)。ifttt旨在帮助人们利用各网站的开放API,将Facebook、Twitter等各个网站或应用衔接,完成任务,使“每个人都可以成为整个互联网不用编程的程序员”。ifttt通过流程将各种信息串联起来,然后再集中把你要的信息呈现给你。解决了信息的冗杂,收取或关注重要信息的问题。
看不懂?没关系,我也没看懂~ 不明白为什么把一个简单的内容解释的这么复杂。
简单来说使用IFTTT可以把完全不相干的品牌设备串联起来实现联动,拿我上面第一个场景举例:
在这个找不到手机的例子中,IFTTT把Google Home智能音箱和手机这2个不同品牌的硬件设备串联了起来:
声控触发智能音箱来找寻手机Google Home音箱使用内置的Google Assistant服务来触发IFTTT服务IFTTT服务中设置了触发及响应条件为:收到查找手机位置的命令就拨打VoIP到预先指定的手机号手机收到IFTTT拨打过来的VoIP电话
使用IFTTT服务需要先在官网注册一直账号,或者下载手机端注册
手机端去各大市场搜索IFTTT应用
点击右上角Sign up注册一个免费新账号后就可以使用啦
注册完成后,打开APP可以通过右上角的搜索来查找希望触发和响应的硬件设备 注意:使用IFTTT前先要确保各个硬件设备在本品牌的官方APP中 已经设置并且测试过可以正常使用哦,(例如小米Yeelight系列智能灯需要在Yeelight官方APP中配置好)不然的话IFTTT也是无法调用的!
输入yeelight可以找到所有使用到yeelight服务的预制服务
有很多常用的联动服务可以用搜索直接查找到,例如上图中第一个返回的就是通过按键来控制Yeelight灯泡开关。
要是找不到想要的也没关系,可以自己来自由搭配实现,还是以查找手机场景来说明,在我的小程序(下方菜单中最右边那个 My Applets)中点击右上角的 + 号来自己创建一个新的联动程序
这里需要做的其实就2件事,1. 指定触发条件 (上图中的 this) 2. 指定触发后的响应动作 (上图中的 that)
换成中文就是“如果发生了这个就做那个”,有没有很简单?
第一步. 指定触发条件,查找服务:Google Assistant
选择Google Assistant服务
条件:收到简单的语音命令(Say a simple phase)
这里设置具体触发的语音命令,一共可以设置3条,也就是说只要说了任意这3条中的一条命令都可以触发这个联动小程序。
设置完触发条件后进入到设置响应服务部分
第二步. 指定响应服务,查找服务:VoIP Calls
没啥可选的,就一个打电话动作
在打电话的语音提示框内输入如果接了电话后自动播放的语音内容~
Yeelight,米家,Broadlink 等设备厂商官方APP
这些APP都是各家厂商开发的,仅支持自家生产的智能设备(废话,如果支持其他家设备的话也不用像这样曲线救国了 )
虽然这些设备最终都可以接入统一的Home Assistant平台,但是由于厂家对通信接口的限制和某些高级自动化的联动服务,你还是要把这些官方APP一个不漏的给装上,例如第一篇中说道的添加设备到HA中前必须先在官方APP中把开发者模式打开,不然无法使用HA控制等等。。。
另外一个原因是,有些非常好的动作可以直接借用官方APP的功能使用,例如,Yeelight应用中的自定义场景功能就非常好用,可以预设好每个照明灯泡或者灯带的颜色,亮度,我自己设置了3个场景对应不用的活动。
Yeelight
需要使用这些预制好的场景只需要创建一个IFTTT的联动服务,触发服务:语音控制 “设置为电影场景” ,响应服务:Yeelight 设置场景为 “电影场景”
另外一个小米系的米家APP,提供了类似的功能,但是最重要的是如果你有使用到温湿度传感器,人体移动传感器,烟雾报警器,浸水报警器等这些蓝牙设备的话必须只能和小米网关进行联动,也就是说有一部分自动化需要在米家APP内实现(HA中也可以实现,但是要绕好大一圈,完全没必要)
米家
蓝牙方式连接的设备需要在米家APP中设置联动
只要在米家APP中设置好了这些设备,包括需要和网关通信的子设备后,在HA中是可以直接看到的哦~ 功能一项不少
Broadlink 跟米家APP类似,他家有个RM万能遥控器设备可以支持红外信号(IR)和部分频段的射频信号(RF),这个设备可以把家里很多老款非智能电器转换为可智能控制的设备,因为我家电器基本上是近2年购买的所以没有用到。
另外还有一些第三方服务 (罗技 Harmony, Google Assistant等)由于篇幅原因我准备放到下期再讲解。
中篇结语
此篇文章中讨论了HA中设备的分组和使用第三方服务来实现跨设备的自动化,在下篇文章中我会重点介绍HA自带的高级自动化脚本工具和使用Google Assistant中提供的谷歌服务来实现进阶版自动化,还有会讨论如何合理搭配智能音箱,Home Assistant和第三方服务。
未完待续,敬请期待。