APP下载 微博 微信

Hao4K影音


[威联通] 使用QNAP 威联通 NAS + HomeAssistant +第三方服务打造跨平台智能家居系统(上篇)

[复制链接]

发表于 2018年09月06日 12:16 103216 1 来源:媒体存储> 威联通 |只看大图 回帖奖励 |正序浏览 |

yifanw 帖主

2018-9-6 12:16

家庭网络全套解决方案分享 篇四:使用QNAP 威联通 nas + HomeAssistant +第三方服务打造跨平台智能家居系统(上篇)

前言
上篇发布到现在有几周的时间了,由于工作原因此篇也是断断续续的写了好久才完成
从第四篇开始会重点围绕我的智能家居方案进行讲解,由于内容非常多会分多篇来讲解,大家有点耐心哈~  
这里讨论的方案是基于使用威联通453A NAS上搭建Home Assistant服务并结合ifttt等第三方服务来实现跨平台智能硬件统一控制,并且可以同时支持 Amazon Echo, Google Home和苹果的HomeKit等智能终端来控制不同品牌的智能硬件产品。例如,小米生态链系列(灯,开关,传感器等),Broadlink系列(开关,万能遥控器等),电视,罗技harmony,空调等不同品牌的产品。
首先如果大家没有看过前几篇文章强烈建议先看一遍,这里讲解的智能家居平台是基于之前提到的家庭网络部署方案及硬件 - 良好的家庭基础网络覆盖是保障智能设备能良好运行的基础哦!
家庭网络全套解决方案分享 篇一:
学会这款无死角家庭网络布局方案,210平米的房子也能做到千兆网速楼:
https://www.hao4k.cn/thread-30212-1-1.html

家庭网络全套解决方案分享 篇二:
手把手教你打造多功能家庭娱乐中心(硬件篇)
https://www.hao4k.cn/thread-30211-1-1.html

家庭网络全套解决方案分享 篇三:
手把手教你打造多功能家庭娱乐中心(软件篇)
https://www.hao4k.cn/thread-30210-1-1.html

201809Thursday21110wzb1coapux.jpg

201809Thursday21110wzb1coapux.jpg

篇一中提到的网络布局图,除了部分影音设备是网线接入,其它所有智能家居设备都是通过2个AP接入,所以家庭基础网络100%覆盖及良好的信号强度是保证智能设备正常工作的关键!

方案思路首先LZ为什么要选择Amazon Echo、Google Home,而不是国内的智能音箱品牌?因为:在第一篇中提到了LZ本人定居国外,没有限制 Echo/GH 是目前海外市场上最有优势的2大智能音箱,对跨平台的硬件支持良好,并且HA原生就可以直接支持这2种智能音箱国内的智能音箱品牌还处于模仿期,并且只能支持自家硬件设备,局限性大
关于Amazon Echo和Google Home的优缺点,使用了几个月下来大概的感受是:

201809Thursday21124rjxr3um0rb.jpg

201809Thursday21124rjxr3um0rb.jpg

Amazon Echo (dot版本)
优点:
语音辨识率高,即使在嘈杂环境也基本上能响应语音指令,并且有方向感知,如果不是面对着Echo说指令不会触发响应智能品牌原生支持貌似比Google Home多支持设备分组,方便统一控制USB直接供电,部署方便
缺点:
几乎无语意分析能力,语音控制命令必须先自定义好,而且控制的时候必须说出完全一致的指令,不然有无法识别 - 这也许是最大的缺点,因为设备多了后自己不可能记住所有的指令
控制指令及响应语音不支持中文原生内置指令集较少,只有有限的几个查询指令,例如,查询天气,交通状况等 - 虽然Amazon一直在添加新的指令集


201809Thursday2113np0de1mwrhj.jpg

201809Thursday2113np0de1mwrhj.jpg

Google Home (音箱版本)
优点:
具备一定的语意分析能力(但是还是稍弱于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作为服务端搭配的硬件很多人选择的是树莓派3,很多网络上的文章也讲解了树莓派3+HA搭建智能化平台的方案,这个方案其实也是LZ最早选择的方案,但是我后期弃用了这个方案,原因是虽然树莓派的硬件配备满足HA的运行环境,但是由于HA中的产品库品牌众多,很多组件开发的好坏会直接影响到HA的性能,LZ遇到的一大问题就是某些组件运行一段时间后会导致不释放内存直到消耗完,另外如果设备较多的话也会把本身并不是很大内存的树莓派硬件消耗光,让HA直接停止工作,这种情况下只能重启HA或者树莓派。甚至后来LZ自己设置了每天树莓派必须自动重启一遍才行。。。


201809Thursday21130uqn35rpesk.jpg

201809Thursday21130uqn35rpesk.jpg

遇到这个问题后LZ希望能有个更强大的硬件平台来支撑HA的服务,最后终于在威联通的NAS中实现了,如果大家看过系列的第二篇文章 - 手把手教你打造多功能家庭娱乐中心(硬件篇)可以看到LZ的家庭娱乐中心实际上是围绕着威联通的453A NAS实现的,那么能不能直接把HA搭建在NAS上呢?答案是通过威联通自家的Container Station
下面是最终方案的架构图:

201809Thursday2114wmp2khkxddc.jpg

201809Thursday2114wmp2khkxddc.jpg

其中一个重要的部分就是Container Station,威联通官方的介绍是
HA使用的就是Container Station中的Docker虚拟化技术,Docker这种轻量级虚拟化技术给HA来使用太合适不过了!
  不需要全量虚拟机就可以直接在NAS的系统中运行HA镜像,它的优势是可以把HA消耗的硬件资源控制在相对非常小的范围内,对NAS其它的应用性能影响基本上可以忽略不计。另外一大优点是即使后面安装及配置过程中把HA搞坏了也完全不用担心会影响到主机,直接删除镜像重新安装即可 可以看到我实际上是使用了2个docker,其中Homebridge镜像是把HA中所有的智能设备转化为Homekit服务的,这个稍后再说。最后整体智能设备配置完成后完整的设备分布图 - 图太大,看不清楚可以点击进去看全图。

201809Thursday2114xramieipyjo.jpg

201809Thursday2114xramieipyjo.jpg

按照语音控制设备分解后单独看3个部分的内容(隐藏了最后一层设备,看起来方便点)

201809Thursday2114yhwnpgg1xdb.jpg

201809Thursday2114yhwnpgg1xdb.jpg

Amazon Echo控制的设备终端(红圈内为使用的服务)

201809Thursday2114tftomwi052y.jpg

201809Thursday2114tftomwi052y.jpg

Google Home控制的设备终端(红圈内为使用的服务)

201809Thursday2114uign3sv55v1.jpg

201809Thursday2114uign3sv55v1.jpg

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中直接可以找到,点击安装即可

201809Thursday2115320extgaetb.jpg

201809Thursday2115320extgaetb.jpg

安装完Container Station后点击桌面上的图标打开APP

201809Thursday2115o0tekvxz5uz.jpg

201809Thursday2115o0tekvxz5uz.jpg

进入后选择左边的创建新的镜像

201809Thursday21150jy5lbk20jl.jpg

201809Thursday21150jy5lbk20jl.jpg

搜索栏中输入 homeassistant/home-assistant 并点击搜索,在返回结果后选择 Docker Hub,并选择第一个结果右边的创建 (也就是前面数字最大的那个,注意别选错了)

201809Thursday2115r1j5wgqpq5a.jpg

201809Thursday2115r1j5wgqpq5a.jpg

弹出的版本选择latest最新版并点击下一步

201809Thursday2115r3k0ntdibek.jpg

201809Thursday2115r3k0ntdibek.jpg

在参数配置页面可以设置CPU限制和内存限制,因为HA所需的资源非常少,所以可以限制为15-20%完全足够了,内存如果足够的话(例如NAS安装的是8G内存)可以设置为1024,比较紧的话512应该也够了。

201809Thursday21152bfrwqukfzw.jpg

201809Thursday21152bfrwqukfzw.jpg

打开下面的高级设置,网络设置里面把网络模式更改为Host

201809Thursday2115o3vk4wjkiow.jpg

201809Thursday2115o3vk4wjkiow.jpg

在环境设置内新增一条时区设置,名称为TZ,值为实际所在地的时区,时区列表可以在这里查到 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

201809Thursday2115pw2i0pdnt3h.jpg

201809Thursday2115pw2i0pdnt3h.jpg

最后在共享文件夹设置内,找到挂载本地共享文件夹,然后点击新增,前面的路径设置为准备步骤中新建的HomeAssistant文件夹,挂载路径则设为/config,确保有读/写权限,最后点击下方的创建。

201809Thursday2115ceey0ifspzv.jpg

201809Thursday2115ceey0ifspzv.jpg

等待一会后就可以在主界面上看到已经安装完成啦!

201809Thursday211511fbhhhpe3l.jpg

201809Thursday211511fbhhhpe3l.jpg

下面的那个镜像是homebridge,后面会说到,先忽略哈~
到这里为止就完成了Home Assistant主程序的安装!可以尝试打开NAS内网IP地址+8123端口,例如,http://192.168.1.100:8123,如果一切正常的话就可以看到HA的管理页面啦。

201809Thursday2116zonbc3lzn3i.jpg

201809Thursday2116zonbc3lzn3i.jpg

默认为英文界面,可以在设置中更改为中文
什么都没有?别急,这个是首次安装完的默认页面哦~ 还需要我们来添加各个设备!
添加设备前记得先做一件事,在家里主路由里面添加端口映射到8123端口,这样做是不光为了可以从外网打开家里的HA控制台,另外一个重要的原因是后面一些高级自动化动作需要实时能和手机端通讯的,这个后面篇幅再详细讲解。每个路由设置端口映射的设置方式都不同,可以自己查找一下,我家的路由是Linksys WRT1200AC,在里面叫端口转发:

201809Thursday2116w1esvd4kzsu.jpg

201809Thursday2116w1esvd4kzsu.jpg

映射内网8123端口到外网,可以看到我还有其他服务也设置了端口映射
设置完成后有的路由需要重启才能生效。生效后可以在外网直接打开家里的NAS外网地址+8123端口就可以看到HA管理界面啦
终于可以开始配置Home Assistant,首先HA的各种功能基本上全是通过配置文件实现的,配置文件本身基于YAML格式。放心,其实并没有那么复杂
先打开下载的WinSCP工具,创建一个新的站点l连接到NAS机器上,注意因为我们安装的是Docker镜像,所以我们需要连接的是NAS本机,而不是HA,连接创建后是可以看到NAS整个机器目录下的所有文件的。

201809Thursday21160k0g4axt30a.jpg

201809Thursday21160k0g4axt30a.jpg

创建时选择SCP为文件协议,主机名用NAS的内网IP,端口为22,用户名密码为NAS管理员用户
保存成新的站点后登录。如果是按照我上面说的步骤配置并安装的homeassistant镜像,在登录后应该可以在/share目录下找到一个叫HomeAssistant的目录,这个就是我们以后配置所有设备及调试的地方

201809Thursday21165jrfwley2cu.jpg

201809Thursday21165jrfwley2cu.jpg

进行下一步前我们再做一个事情,在程序配置中添加Notepad++(或其它之后会用来编辑配置文件的文本编辑工具)为默认的编辑器,这样方便后面调试及修改

201809Thursday2116wdy1kikmtep.jpg

201809Thursday2116wdy1kikmtep.jpg

完成后我们进入HomeAssistant目录,双击configuration.yaml这个文件,会用默认的编辑器打开,这个文件是HA的核心,所有的配置功能及设备都放在这个文件里面定义。

201809Thursday2116wxcum12ipb0.jpg

201809Thursday2116wxcum12ipb0.jpg

如果用的是Notepad++双击打开文件后第一件事需要做的是确认文件系统格式是UNIX格式,而非Windows格式,因为如果在Windows机器上打开这个文件,很有可能会自动转成Windows格式,如果不改回去的话修改后保存回NAS后是无法被识别的 - 在文件的右下角这里直接可以右键点击选择文件格式

201809Thursday2116crfcgqthsco.jpg

201809Thursday2116crfcgqthsco.jpg

打开后首先来设置基本配置内容

201809Thursday2116muypulavv0c.jpg

201809Thursday2116muypulavv0c.jpg

文件往下拉,在这里强烈建议设置访问密码(特别是打开了外网访问的情况下),除非你想让别人随意操作你家的灯电视空调,顺便看看你的摄像头。。。


201809Thursday2116i45fkkq1vhs.jpg

201809Thursday2116i45fkkq1vhs.jpg

这里使用了特殊字符 '!+文件名' 的方式来包含一个外部文件,这样可以不用把所有内容都写到一个文件中也保证了安全性

201809Thursday2116qtxrwqrtwmd.jpg

201809Thursday2116qtxrwqrtwmd.jpg

指向了同一目录下的文件

201809Thursday2116j2htmsn4lx2.jpg

201809Thursday2116j2htmsn4lx2.jpg

在 secrets.yaml文件中定义登录密码
1.2 添加智能设备
配置完HA基础信息后就可以开始添加各种智能设备啦!添加前务必先确认每个设备已初始化并在自有APP中可以正常工作,例如,Yeelight灯泡/灯带等设备在Yeelight APP中可以正常工作,小米智能网关/开关/传感器等设备可以在米家APP中正常工作。

201809Thursday2116xgiqmwyc4la.jpg

201809Thursday2116xgiqmwyc4la.jpg

每个使用Wifi接入的智能设备必须在路由器上配置固定IP
下面我们要去HA的官网上找对应智能设备的接入方式,目前HA已支持上千种不同品牌的设备接入,所以几乎市面上销售的品牌90%都能找到,设备查找页面 https://www.home-assistant.io/components/

201809Thursday2116bjg5obamvkq.jpg

201809Thursday2116bjg5obamvkq.jpg

拿LZ家主力军Yeelight智能灯泡,灯带举例,输入yeelight查找可以找到2个组件,第一个应该是海外版的灯泡,国内好像没有销售,我们用第二个组件

201809Thursday2117tdmxoyvqzet.jpg

201809Thursday2117tdmxoyvqzet.jpg

点击进入后会详细说明这个组件的配置方式

201809Thursday21174nkssjg0jai.jpg

201809Thursday21174nkssjg0jai.jpg

我们只需把同样格式的内容复制粘贴到上面的configuration.yaml文档中然后编辑相关参数为实际设备的参数即可,如果有多个灯泡,可以全部列在 devices这个标签下,配置完后在configuration.yaml中是这样的

201809Thursday2117bh3w0hffsiq.jpg

201809Thursday2117bh3w0hffsiq.jpg

重点是把IP一定要改为对应灯泡的固定IP,其他参数可以参考页面上的说明
注意yeelight和很多米家设备必须还要在官方APP中打开局域网控制模式(极客模式),这样设备才允许第三方服务接入,已yeelight设备举例,在APP的开启入口为

201809Thursday2117ouel0x5gtq5.jpg

201809Thursday2117ouel0x5gtq5.jpg

(网络图)

201809Thursday2117lbrxtoejljy.jpg

201809Thursday2117lbrxtoejljy.jpg

(网络图)
另外一个用的非常广泛的智能设备是小米的智能网关,智能网关下面还可以添加多个子设备(蓝牙通讯方式)实现各种智能自动化及通过各种感应器实现数据监测。智能网关的组件可以搜索关键字Xiaomi

201809Thursday2117eq2ba2nynkd.jpg

201809Thursday2117eq2ba2nynkd.jpg

可以看到返回了很多结果,对应的是小米家各种设备,智能锁,空气质量监测器,空气清新机,小米电视,开关等等,智能网关是Xiaomi Gateway
点进去后看到所需的配置格式为

201809Thursday2117mwkpuurhog2.jpg

201809Thursday2117mwkpuurhog2.jpg

需提供的参数为网关mac地址(如果是单网关模式则无需)和key - 这个是需要我们手动到米家APP中记录下来后填进去的,入口为打开米家APP,找到智能网关然后点击右上方的 ... 然后

201809Thursday21170hec15q325d.jpg

201809Thursday21170hec15q325d.jpg

点击图上空白处

201809Thursday2118vuax0llsugo.jpg

201809Thursday2118vuax0llsugo.jpg

选择局域网通信协议

201809Thursday2118ntsk3nf5jcx.jpg

201809Thursday2118ntsk3nf5jcx.jpg

把这里的密码记录下来并填到HA配置文件中米家网关的key参数中
把网关添加完成后HA会自动把网关所连接的子设备自动带入进来,不用一个个手动配置啦!

201809Thursday2118hwlxkeuh0qz.jpg

201809Thursday2118hwlxkeuh0qz.jpg

HA页面中绿色框中设备全是小米网关下的子设备,有温湿度传感器,人体移动感应器,开关,漏水感应器等
用同样的方式来添加其他智能设备,下面是我添加的多媒体设备

201809Thursday2118kzzuaekuw52.jpg

201809Thursday2118kzzuaekuw52.jpg

设备全部添加完后可以看到已经可以使用HomeAssistant界面来控制灯光,控制电视/音响及查看各种传感器信息等智能设备了!

201809Thursday21180ajro40xffz.jpg

201809Thursday21180ajro40xffz.jpg

这个是我家全部设备添加完后的控制界面
结语+下集预告
做到这里已经可以实现基本的远程控制(通过HA控制界面),不过最多也只能算用软件实现了遥控开关功能,离真正的自动化 还有一定距离,由于篇幅原因,上篇就先到这里结束咯~ 未完待续!!!

在下一篇中计划讲解的内容包括
设备分组
高级自动化和不同品牌智能音箱整合思路及实现方式
使用第三方服务联动实现跨平台控制
回复

使用道具 举报

全部回复1

冬拉菇 2

2020-2-23 09:11

马住党
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

返回列表 本版积分规则



绑定微信 + 关注公众号,第一时间获得消息通知!
:
新手玩家
:
介绍未填写

主题

帖子

积分14

图文推荐

  • 搭建私有云—华芸AS6404T NAS+华硕 AC68U体

    帮朋友搭建私有云—华芸AS6404T NAS+华硕 AC68U体

  • 分享蜗牛星际A\B\C\D款机箱和功能分别有

    历经一个月研究:蜗牛星际ABCD款机箱和功能分

  • 利用NAS建立DNS缓存服务器Pi-hole

    在家用环境中利用NAS建立DNS缓存服务器 1 前

  • 科普:什么是硬盘MTBF?那MTTF、MTTD、MTTR

    买固态硬盘,我们会比较关注颗粒寿命,机械硬盘虽

  • 群晖硬盘迁移到新群晖,插在另外一台群晖NA

    之前有一台蜗牛星际做的黑群晖系统nas,然后现在

  • 机械硬盘该怎么选?教你最全机械硬盘选购指

    机械硬盘该怎么选?教你最全机械硬盘选购指南

  • 万由HS-200S最简单的远程开机方法教程

    分享下我的nas使用技巧,以及最简单的远程开机

  • 家庭NAS+HTPC组建及注意事项(一)(内网穿

    原创篇一:家庭NAS+HTPC组建及注意事项(一)(内

  • NAS都有哪些品牌?带你了解几大NAS名牌介绍

    NAS都有哪些品牌?带你了解几大NAS名牌介绍 前

  • 不用U盘引导直装SSD!矿渣NAS安装黑群晖与

    教你怎么不用U盘引导直装SSD!矿渣NAS安装黑群晖

  • Hao4K影音app客户端下载