家庭网络全套解决方案分享 篇四:使用QNAP 威联通 NAS + HomeAssistant +第三方服务打造跨平台智能家居系统(上篇)
前言
上篇发布到现在有几周的时间了,由于工作原因此篇也是断断续续的写了好久才完成 从第四篇开始会重点围绕我的智能家居方案进行讲解,由于内容非常多会分多篇来讲解,大家有点耐心哈~
这里讨论的方案是基于使用威联通453A NAS上搭建Home Assistant服务并结合ifttt等第三方服务来实现跨平台智能硬件统一控制,并且可以同时支持 Amazon Echo, Google Home和苹果的HomeKit等智能终端来控制不同品牌的智能硬件产品。例如,小米生态链系列(灯,开关,传感器等),Broadlink系列(开关,万能遥控器等),电视,罗技harmony,空调等不同品牌的产品。
首先如果大家没有看过前几篇文章强烈建议先看一遍,这里讲解的智能家居平台是基于之前提到的家庭网络部署方案及硬件 - 良好的家庭基础网络覆盖是保障智能设备能良好运行的基础哦!
篇一中提到的网络布局图,除了部分影音设备是网线接入,其它所有智能家居设备都是通过2个AP接入,所以家庭基础网络100%覆盖及良好的信号强度是保证智能设备正常工作的关键!
方案思路
首先LZ为什么要选择Amazon Echo、Google Home,而不是国内的智能音箱品牌?因为:
在第一篇中提到了LZ本人定居国外,没有限制
Echo/GH 是目前海外市场上最有优势的2大智能音箱,对跨平台的硬件支持良好,并且HA原生就可以直接支持这2种智能音箱
国内的智能音箱品牌还处于模仿期,并且只能支持自家硬件设备,局限性大
关于Amazon Echo和Google Home的优缺点,使用了几个月下来大概的感受是:
优点:
语音辨识率高,即使在嘈杂环境也基本上能响应语音指令,并且有方向感知,如果不是面对着Echo说指令不会触发响应
智能品牌原生支持貌似比Google Home多
支持设备分组,方便统一控制
USB直接供电,部署方便
缺点:
几乎无语意分析能力,语音控制命令必须先自定义好,而且控制的时候必须说出完全一致的指令,不然有无法识别 - 这也许是最大的缺点,因为设备多了后自己不可能记住所有的指令
控制指令及响应语音不支持中文
原生内置指令集较少,只有有限的几个查询指令,例如,查询天气,交通状况等 - 虽然Amazon一直在添加新的指令集
优点:
具备一定的语意分析能力(但是还是稍弱于Siri),控制指令可以不完全受限于100%匹配命令
因为Google本身后台就有强大的各种服务,并且通过 Google Assistant提供给Google Home使用,所以可以实现非常多的功能,例如,可以直接语音搜索,问路,查商家,查各种信息,只要在Google能查到的都能通过语音来搜索,并且GH会通过语音反馈结果。
通过TTS服务可以支持几十种语言的语音响应 - 后面会详细介绍如何在HA中使用TTS服务实现中文语音响应
支持直接通过Chromecast推送设备上的视频到智能电视,例如,可以直接语音搜索视频并且播放(使用油管视频,国内无法使用)
支持直接播放Google Music或者Spotify上的音乐 - 前提需要是会员
缺点:
语音识别率没有Echo高,特别是嘈杂环境内或者距离较远时,需要大声喊 Hey Google!!! 才会理你
不支持设备分组!!! - 这点实在无法理解,这样我一个房间内多个灯泡就无法统一控制。貌似在美国的GH可以通过设置自定义触发条件实现,但是这也不是什么复杂的功能,居然不能简单实现!
音箱版需要电源适配器连接,便利性没有USB版的Echo好,不过也可以理解,毕竟功率也大。
另外这2种音箱共同的缺点也许就是不支持中文语音控制了,这个也给国产的各种智能音箱带来了竞争的资本。而水果家的Homekit的优势在这里就能完全发挥出来,Siri原生支持中文并且支持语意分析。
服务端选择Home Assistant作为主要智能平台的原因是强大的智能硬件产品库支持,及友好的前端界面,另外还支持自定义脚本来实现高级的自动化功能(下篇会讲到)。下面是HA的简要介绍
Home Assistant 是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。
选择Home Assistant作为服务端搭配的硬件很多人选择的是树莓派3,很多网络上的文章也讲解了树莓派3+HA搭建智能化平台的方案,这个方案其实也是LZ最早选择的方案,但是我后期弃用了这个方案,原因是虽然树莓派的硬件配备满足HA的运行环境,但是由于HA中的产品库品牌众多,很多组件开发的好坏会直接影响到HA的性能,LZ遇到的一大问题就是某些组件运行一段时间后会导致不释放内存直到消耗完,另外如果设备较多的话也会把本身并不是很大内存的树莓派硬件消耗光,让HA直接停止工作,这种情况下只能重启HA或者树莓派。甚至后来LZ自己设置了每天树莓派必须自动重启一遍才行。。。
遇到这个问题后LZ希望能有个更强大的硬件平台来支撑HA的服务,最后终于在威联通的NAS中实现了,如果大家看过系列的第二篇文章 - 手把手教你打造多功能家庭娱乐中心(硬件篇)可以看到LZ的家庭娱乐中心实际上是围绕着威联通的453A NAS实现的,那么能不能直接把HA搭建在NAS上呢?答案是通过威联通自家的Container Station ,下面是最终方案的架构图:
其中一个重要的部分就是Container Station,威联通官方的介绍是
QNAP Container Station (软件容器工作站) 支持 LXC 与 Docker® 两项轻量级虚拟技术。您可在 QNAP NAS 上执行完整的 Linux® 虚拟机,并由 Docker® Hub 在线市集下载来自全球各地数以千计的应用程序。
HA使用的就是Container Station中的Docker虚拟化技术,Docker这种轻量级虚拟化技术给HA来使用太合适不过了! 不需要全量虚拟机就可以直接在NAS的系统中运行HA镜像,它的优势是可以把HA消耗的硬件资源控制在相对非常小的范围内,对NAS其它的应用性能影响基本上可以忽略不计 。另外一大优点是即使后面安装及配置过程中把HA搞坏了也完全不用担心会影响到主机,直接删除镜像重新安装即可
可以看到我实际上是使用了2个docker,其中Homebridge镜像是把HA中所有的智能设备转化为Homekit服务的,这个稍后再说。
最后整体智能设备配置完成后完整的设备分布图 - 图太大,看不清楚可以点击进去看全图。
按照语音控制设备分解后单独看3个部分的内容(隐藏了最后一层设备,看起来方便点)
Apple Homekit控制的设备终端(红圈内为使用的服务)
可以看到3个终端有部分服务是特有的,例如,Google的Google Assistant服务和Homekit的Sense组件。这些稍后再细说。
实战操作
1.1 Home Assistant Docker的安装及配置
讲解完方案后就可以开始实际操作啦!这里我尽量讲解的细一点,基本上新手小白也可以一步步照着做完成
首先我们来看看安装前需要准备的工具有哪些
一台支持Container Station的威联通NAS,LZ用的是453A型号,但是理论上只要能安装Container Station的型号都可以。
在NAS中新建一个共享文件夹,命名为HomeAssistant,稍后会用到
支持UNIX系统格式的纯文本编辑器,推荐使用Notepad++,下载链接
支持SFTP/SCP/FTP的客户端工具,为了安装后方便编辑HA配置文件,推荐WinSCP,下载链接
一个好用的SSH客户端,这个非必须,只有需要调试或者排查问题的时候可能会用到,如果需要的话可以用Putty 下载链接
当然还有需要连入的各种智能硬件设备 - 建议提前安装完成并且在APP内连接好,如果是小米生态链设备,提前在米家APP或Yeelight APP内全部添加好。确保设备本身是没问题的!
如果是WIFI接入的智能硬件,必须在路由内配置使用固定IP - 因为稍后在HA中是通过IP地址来查找设备的。
准备好后,开工咯~
首先进入NAS管理界面安装好Container Station,在App Center中直接可以找到,点击安装即可
安装完Container Station后点击桌面上的图标打开APP
进入后选择左边的创建新的镜像
搜索栏中输入 homeassistant/home-assistant 并点击搜索,在返回结果后选择 Docker Hub,并选择第一个结果右边的创建 (也就是前面数字最大的那个,注意别选错了)
弹出的版本选择latest最新版并点击下一步
在参数配置页面可以设置CPU限制和内存限制,因为HA所需的资源非常少,所以可以限制为15-20%完全足够了,内存如果足够的话(例如NAS安装的是8G内存)可以设置为1024,比较紧的话512应该也够了。
打开下面的高级设置,网络设置里面把网络模式更改为Host
在环境设置内新增一条时区设置,名称为TZ,值为实际所在地的时区,时区列表可以在这里查到 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
最后在共享文件夹设置内,找到挂载本地共享文件夹,然后点击新增,前面的路径设置为准备步骤中新建的HomeAssistant文件夹,挂载路径则设为/config,确保有读/写权限,最后点击下方的创建。
等待一会后就可以在主界面上看到已经安装完成啦!
下面的那个镜像是homebridge,后面会说到,先忽略哈~
到这里为止就完成了Home Assistant主程序的安装!可以尝试打开NAS内网IP地址+8123端口,例如,http://192.168.1.100:8123,如果一切正常的话就可以看到HA的管理页面啦。
什么都没有?别急,这个是首次安装完的默认页面哦~ 还需要我们来添加各个设备!
添加设备前记得先做一件事,在家里主路由里面添加端口映射到8123端口,这样做是不光为了可以从外网打开家里的HA控制台,另外一个重要的原因是后面一些高级自动化动作需要实时能和手机端通讯的,这个后面篇幅再详细讲解。每个路由设置端口映射的设置方式都不同,可以自己查找一下,我家的路由是Linksys WRT1200AC,在里面叫端口转发:
映射内网8123端口到外网,可以看到我还有其他服务也设置了端口映射
设置完成后有的路由需要重启才能生效。生效后可以在外网直接打开家里的NAS外网地址+8123端口就可以看到HA管理界面啦
终于可以开始配置Home Assistant,首先HA的各种功能基本上全是通过配置文件实现的,配置文件本身基于YAML格式。放心,其实并没有那么复杂 。
先打开下载的WinSCP工具,创建一个新的站点l连接到NAS机器上,注意因为我们安装的是Docker镜像,所以我们需要连接的是NAS本机,而不是HA,连接创建后是可以看到NAS整个机器目录下的所有文件的。
创建时选择SCP为文件协议,主机名用NAS的内网IP,端口为22,用户名密码为NAS管理员用户
保存成新的站点后登录。如果是按照我上面说的步骤配置并安装的homeassistant镜像,在登录后应该可以在/share目录下找到一个叫HomeAssistant的目录,这个就是我们以后配置所有设备及调试的地方
进行下一步前我们再做一个事情,在程序配置中添加Notepad++(或其它之后会用来编辑配置文件的文本编辑工具)为默认的编辑器,这样方便后面调试及修改
完成后我们进入HomeAssistant目录,双击configuration.yaml这个文件,会用默认的编辑器打开,这个文件是HA的核心,所有的配置功能及设备都放在这个文件里面定义。
如果用的是Notepad++双击打开文件后第一件事需要做的是确认文件系统格式是UNIX格式,而非Windows格式,因为如果在Windows机器上打开这个文件,很有可能会自动转成Windows格式,如果不改回去的话修改后保存回NAS后是无法被识别的 - 在文件的右下角这里直接可以右键点击选择文件格式
打开后首先来设置基本配置内容
文件往下拉,在这里强烈建议设置访问密码(特别是打开了外网访问的情况下),除非你想让别人随意操作你家的灯电视空调,顺便看看你的摄像头。。。
这里使用了特殊字符 '!+文件名' 的方式来包含一个外部文件,这样可以不用把所有内容都写到一个文件中也保证了安全性
1.2 添加智能设备
配置完HA基础信息后就可以开始添加各种智能设备啦!添加前务必先确认每个设备已初始化并在自有APP中可以正常工作,例如,Yeelight灯泡/灯带等设备在Yeelight APP中可以正常工作,小米智能网关/开关/传感器等设备可以在米家APP中正常工作。
下面我们要去HA的官网上找对应智能设备的接入方式,目前HA已支持上千种不同品牌的设备接入,所以几乎市面上销售的品牌90%都能找到,设备查找页面 https://www.home-assistant.io/components/
拿LZ家主力军Yeelight智能灯泡,灯带举例,输入yeelight查找可以找到2个组件,第一个应该是海外版的灯泡,国内好像没有销售,我们用第二个组件
点击进入后会详细说明这个组件的配置方式
我们只需把同样格式的内容复制粘贴到上面的configuration.yaml文档中然后编辑相关参数为实际设备的参数即可,如果有多个灯泡,可以全部列在 devices这个标签下,配置完后在configuration.yaml中是这样的
重点是把IP一定要改为对应灯泡的固定IP,其他参数可以参考页面上的说明
注意yeelight和很多米家设备必须还要在官方APP中打开局域网控制模式(极客模式),这样设备才允许第三方服务接入,已yeelight设备举例,在APP的开启入口为
另外一个用的非常广泛的智能设备是小米的智能网关,智能网关下面还可以添加多个子设备(蓝牙通讯方式)实现各种智能自动化及通过各种感应器实现数据监测。智能网关的组件可以搜索关键字Xiaomi
可以看到返回了很多结果,对应的是小米家各种设备,智能锁,空气质量监测器,空气清新机,小米电视,开关等等,智能网关是Xiaomi Gateway
点进去后看到所需的配置格式为
需提供的参数为网关mac地址(如果是单网关模式则无需)和key - 这个是需要我们手动到米家APP中记录下来后填进去的,入口为打开米家APP,找到智能网关然后点击右上方的 ... 然后
把这里的密码记录下来并填到HA配置文件中米家网关的key参数中
把网关添加完成后HA会自动把网关所连接的子设备自动带入进来,不用一个个手动配置啦!
HA页面中绿色框中设备全是小米网关下的子设备,有温湿度传感器,人体移动感应器,开关,漏水感应器等
用同样的方式来添加其他智能设备,下面是我添加的多媒体设备
设备全部添加完后可以看到已经可以使用HomeAssistant界面来控制灯光,控制电视/音响及查看各种传感器信息等智能设备了!
结语+下集预告
做到这里已经可以实现基本的远程控制(通过HA控制界面),不过最多也只能算用软件实现了遥控开关功能,离真正的自动化 还有一定距离,由于篇幅原因,上篇就先到这里结束咯~ 未完待续!!!
在下一篇中计划讲解的内容包括
设备分组
高级自动化
和不同品牌智能音箱整合思路及实现方式
使用第三方服务联动实现跨平台控制
等等等等。。。
epichua
校验提示文案
项sir
校验提示文案
zhoushssss
校验提示文案
纠结的虫子
校验提示文案
值友7849273367
校验提示文案
值友4912817951
校验提示文案
拉轰滴man
校验提示文案
DreamSkyz
校验提示文案
三颗小草-长沙
校验提示文案
_自然派_
校验提示文案
中二青年
校验提示文案
黑夜萤火虫
校验提示文案
yangdove
校验提示文案
rchir
校验提示文案
oldapple
校验提示文案
神龍
校验提示文案
cloud623
校验提示文案
指挥官75531
校验提示文案
再见月光
校验提示文案
Janyd
校验提示文案
flat
搞HASS很久了,一直在开始,从来没到达……
巧合看到这篇,鼓起勇气再来一次!
校验提示文案
请叫我大KK
校验提示文案
sunnyquan
说下方法,供后来者参与,我是用黑群下载的,然后导出,再导入到威联通。。
校验提示文案
悟空无空
校验提示文案
rchir
校验提示文案
Fisher3799
校验提示文案
yangdove
校验提示文案
TheKinslayer
校验提示文案
黑夜萤火虫
校验提示文案
黑夜萤火虫
校验提示文案
值友5143270740
校验提示文案
大家听我说
校验提示文案
雷猴我是达文西
校验提示文案
DidierLee
校验提示文案
秦始天下
校验提示文案
中二青年
校验提示文案
xianzhi级男子
校验提示文案
_自然派_
校验提示文案
oldapple
校验提示文案
chenjia2729
校验提示文案