写在前面

首先感谢来自瀚思彼岸的诸位热心网友以及Home Assistant的诸位开拓者。
是他们的费力贡献,让我们普通人也有了自己动手打造智能家居的机会。
是他们的热心付出,给我们的生活带来了更多的便利。

其余,本文的阅读和操作都有一定的门槛和难度,实际动手前,建议三思而行。
本教程不可能面面俱到,每一个步骤都有许多种办理方案,并可以展开为一个很大的话题。
但是篇幅所限,我只能选择性地展开阐述。
在本教程的勾引下进行实际操作的过程中,也不可避免地会碰着各类问题。
建议长于利用搜索引擎自行办理,并在适当的时候选择放弃。


天猫php声控万物天猫精灵接入Home Assistant打造语音智能家居 Ruby

Home Assistant相信大家都比较理解。
论坛里和Home Assistant干系的原创文章也是弗成偻指算。
Home Assistant是一款基于Python的智能家居开源系统,支持浩瀚品牌的智能家居设备,可以轻松实现设备的语音掌握、自动化等。
天猫精灵自然也不用过多先容。
天猫精灵方糖发布时,以较低的价格吸引了大批用户,估计很多值友家中都有一台天猫精灵方糖吧。
天猫精灵本身也能够支持许多品牌的智能电器,实现语音掌握。

但是其主流常用品牌的支持数量肯定不如Home Assistant。
比如在海内智能家居领域处于领先地位的小米,自然不会把自己的蛋糕拱手让给阿里,小米自家的小爱同学第一个禁绝许。
然而,经由Hacker们的不断努力,开源的Home Assistant目前已经能够支持掌握大部分小米系的智能家电产品了。
如果能够将天猫精灵的语音识别能力和Home Assistant的家电掌握能力结合,让天猫精灵能够掌握小米系乃至更多其他品牌的智能家电,岂不美滋滋。

有需求,就必有人折腾。
不甘受制于人的程序员们帮我们办理了大部分问题,让曾经的不可能变成了可能。
下面,我就讲述一下详细如何实现这个目的。

准备事情

这部分内容是比较根本的部分,基本凡是曾经利用Home Assistant构建过智能家居的,都会打仗过本章节涉及的内容。
这部分内容会为后续实现天猫精灵接入Home Assistant打下根本。
由于是属于比较根本的部分,网络上对此的干系谈论和教程都比较丰富。
以是每个步骤可能不会做太全面和深入的展开。

Home Assistant搭建

Home Assistant搭建是根本中的的根本,搭建的办法也是花样万千,干系的教程更是多不胜数。
但是无论是谁写的教程,都肯定不如官方教程。
以是有英文根本的都建议去读官方教程:点我直达

我这里大概阐述一下Home Assistant常见的安装载体和安装办法。

1.安装载体

Home Assistant要运行于某种载体之上,所谓载体便是一台具有Python环境的主机。
它可以是一台低功耗做事器,也可以是一台闲置条记本;可以是一台群晖之类的NAS,也可以是一块树莓派等Arm开拓板;乃至还可以是你的闲置的,并且最好是已经root的安卓手机。
只要这种载体具备了Home Assistant运行所须要的依赖就可以。
为了让Home Assistant能够长期稳定低为你做事,这个载体最好是低功耗的,能够连接网络,并有着稳定的网络环境,而对性能方面的哀求并不高。

2.安装办法

根据运行载体的不同,Home Assistant也有着多种不同的安装办法。

如果你的载体是一块树莓派开拓板,我推举利用直接烧写Hass.io镜像的办法,这也是官方推举的安装载体和安装办法。

如果你的载体是一台做事器,则可以在安装完毕Python运行环境后,用几条大略的命令安装。
选择用这种办法安装的时候,别忘却修正一下Python pip软件源为海内镜像地址,这样可以加快安装速率。
详细的修正办法是:创建或修正配置文件(linux的文件在~/.pip/pip.conf,windows在%HOMEPATH%pippip.ini),修正内容为:

[global] index-url = http://pypi.douban.com/simple

如果你的载体是一台NAS做事器,那么大略便捷的docker安装办法肯定是你的首选。
但是有时候我以为docker这种安装办法有点不便于调试,也可能是我不会在docker下进行调试。

如果你的载体是一台Android手机,那么最好是root过的。
我本人并没有实践过在Android手机上安装Home Assistant,感兴趣的可以参考这个教程:点我直达。
那么,祝你好运。

当选好了得当的载体,安装并成功运行Home Assistant,在浏览器中输入载体的IP加默认端口号8123,就能通过网页来浏览和管理Home Assistant。
走到这一步,就为后面的折腾打下了根本中的根本。

内网穿透

为什么须要内网穿透呢?我们目前所搭建的Home Assistant做事,访问的地址是一个内网IP。
这就意味着这个做事暂时只能在局域网中访问。
而如果想要实现天猫精灵接入Home Assistant的目的,必须让这个做事在外网也可以访问到。
为了达到这个目的,可能又要经由一番折腾了。

如果你家中的宽带网络具有公网IP,那么恭喜你,实现内网穿透是一件很随意马虎的事情。
问题是,现在公网IP属于稀缺资源,大部分网络运营商并不会轻易给你一个公网IP,以是要实现内网穿透就要另辟路子了。

一样平常常用的办法有ngrok和frp。
你可以选择自己购买云做事器或者VPS搭建这些做事为己所用。
也可以选择一些商家搭建好的免费或者收费的做事。
无论是ngrok还是frp,其做事的搭建和客户真个利用都略微繁芜,展开的话都是一个比较大的话题。
鉴于折腾的人比较多,其干系资源也很丰富,我就不再赘述了。

以上两种常见的内网穿透方法我都用过,由于各类缘故原由,用起来并不顺手。
后来我换用了一种更大略的办法---花生棒。
首先声明这不是广告,并以京东订单截图证明我的明净。

另一方面,Oray随便在站内软文比较多,但是其确实有不少产品以大略的办法办理了我们的一些网络需求。
比如向日葵远程掌握和花生棒内网穿透,都成了我日常生活中不可短缺的软硬件产品。

花生棒实现内网穿透真的十分大略。
首先,把花生棒通过网线,连接到须要进行内网穿透的那个设备所处的路由器上。
然后,登录注册并绑定好花生棒硬件的Oray账号,进入花生壳的内网穿透管理页面。
在映射列表里,增加一条映射。

在映射编辑界面,选择一个免费的花生壳二级域名。
外网端口号在免费利用的情形下只能动态天生,无法指定。
接着再填入内网主机的IP和端口号即可。

然后根据此设置会天生一个外网访问地址,往后就可以通过这个地址访问内网所搭建的Http做事。

一个花生棒的免费配额如下:端口映射2条,带宽速率,1Mbps/映射,花生壳流量1G/月(花生棒首年2G/月)。

两条映射被我分别用来穿透路由器管理页面和Home Assistant。
暂时没有别的穿透需求,基本够用了。
网速限定和流量限定对付我的运用处景也不会造成太大影响。
花生棒虽然有各类限定和不敷,但是好在方便易用,适宜不喜好折腾的,或者采取其他方案折腾失落败的用户。

域名解析

到目前为止,你该当有一个外网可以访问的Home Assistant 做事了。
如果你是公网IP,那么你的访问地址很可能是IP加端口号;如果是通过其他办法进行内网穿透,那么你得到的访问地址可能是一个内网穿透做事商的二级域名加端口号。
无论哪种办法,都不如利用一个自己的域名来的方便和亲切。
因此我们最好注册一个自己的域名。

域名做事供应商有很多,其注册办法也大同小异。
价格上也基本没有太大差异。
我是在万网注册的域名,万网目前已经纳入阿里云旗下,成为其子产品之一。
传统的大家比较熟习的com、net的域名价格偏高。
其余一些比如xyz、site、fun、online这些易记住的域名虽然首年价格很低,但是续费价格略高。
通过筛选,我建议利用top域名,名字既响亮,价格也很合理,三年只须要67元,续费价格则为78元。
域名购买完毕后,就进入域名掌握台,添加一条解析。

如果你是公网IP地址,那么须要添加一条A解析。
如下图所示。

记录类型选择:A,主机记录填写的是你想要访问的地址,记录值便是你的公网IP。
添加完毕后,就可以通过你的域名地址加原来的端口号访问Home Assistant。

如果你已经有一个可以访问Home Assistant 的二级域名,那么须要添加一条CNAME解析。
如下图所示。

记录类型选择CNAME,主机记录和上面一样,你也可以有不同的选择,不同值所对应的含义可以通过点击右边的那个问号查看。
记录值填写那个可以访问Home Assistant 的二级域名。
设置并添加完毕后,效果同上,不再赘述。

至此,你该当有一个属于你自己的个性化的访问Home Assistant的域名了。

猫精接入史

在连续进行下去之前,我以为有必要讲述一下天猫精灵接入Hone Assistant的过去和现状。
这样我们就能理解为了让天猫精灵接入Home Assistant,Hassbian的诸位热心网友做了多少付出和贡献。

最早的时候,天猫精灵接入Home Assistant是通过在天猫精灵开放平台自定义技能实现的。
这种方法的灵巧性和扩展性都很好。
但是这种办法须要利用者自己搭建PHP代理网关,并实现OAuth2认证。
如果你有网站架设履历,那么可能这对你来说不是什么有难度的事情。
但是对付虽身为程序员,但从未涉足Web开拓的我来说,依然经历了从信心满满dao到黯然放弃的过程。

接着第二种接入方法涌现了。
由于天猫精灵官方支持了飞利浦Hue灯,因此可以通过HaBridge将设备仿照成Hue,从而实现对设备的掌握。
这种方法可以免去搭建PHP 代理网关和实现OAuth2认证的步骤,大大降落了实现的难度。
然而这种方法实质上是把设备仿照成灯,因此无法实现对设备更为丰富的掌握命令。

然后,一种更为便捷的接入办法涌现了。
Hassbian热心网友将第一种接入实现办法的代码贡献给论坛,并由论坛官方架设了一台做事器,以供广大网友利用。
利用者只须要填入自己的外网访问地址和访问密码,就能将天猫精灵方便地接入Home Assistant。
这就相称于论坛把颇有难度的几个步骤代替大家完成了,并贡献做事器出来为大家所用。
我曾长期利用这种办法,将天猫精灵接入Home Assistant。
如果不想连续折腾,那么这也是我推举的办法。
在我撰写本文的过程中,站内已经有值友对这种方法整理成文,感兴趣的可以参考。

家庭妇男的智能家居折腾之路—与君子动口不动手只差四步,天猫精灵掌握HA设备

NetYJ

|

赞2

评论17

收藏57

查看详情

然而通过利用Hassbian的做事器实现天猫精灵接入Home Assistant依然存在些许不敷。
首先,论坛所搭设的做事器采取的Home Assistant安全验证办法是legacy_api_password。
目前,最新版的Home Assistant将逐步移除这种不屈安的验证办法,转而采取Long-Lived Access Tokens的办法。
虽然代码原作者已经增加了两种验证办法的支持,但是我一段韶光前验证的时候,Hassbian论坛所供应的做事并没有合入这部分更新,现在不知道是否支持了。
其次,利用这种办法,相称于将天猫精灵的指令要求先转发到Hassbian的做事器,再发送给天猫精灵的做事器。
据我所知,Hassbian的做事器是架设在外洋的。
如果家里的网络跟Hassbian的做事器连接状况不好的话,就会影响天猫精灵对指令相应的实时性和稳定性。

既然问题涌现了,那么就一定会涌现办理问题的人。
首先膜拜一下这位大神:点我前去膜拜。
这位大神是Home Assistant官方OAuth2认证系统缔造者。
曾经挡在许多人面前的OAuth2认证的搭建,终于能够被新版本的Home Assistant原生支持了。
既然我们已经有Home Assistant帮我们做好了OAuth2认证,以是只须要自己再实现一个网关就好了。

这一段内容可能对付很多没有干系根本的人来说有些难以理解。
没紧要,我们连续往下走。

SSL证书申请

在上上一个章节里面,我们已经有了一个可以外网访问Home Assistant的域名,这个域名一样平常情形下都是HTTP协议的。
但是如果想让天猫精灵能够顺利接入Home Assistant,我们须要的是一个加密的HTTPS的地址。
为了实现这个目的,我们须要申请和支配SSL证书。

SSL证书的申请,很多人可能都会选择Let's Encrypt。
Let's Encrypt是一个证书授权机构,我们可以利用它的获取证书的客户端Certbot,免费快速地获取Let's Encrypt证书。
详细方法本文不打算展开,网上也有很多教程,可以搜索并参考。

我并没有利用Let's Encrypt的证书。
由于我的域名是在阿里云万网上申请注册的,因此我就直接阿里云上申请证书了。
详细的步骤如下。

1.进入阿里云的管理掌握台,并在\"大众产品与做事\"大众中\"大众安全(云盾)\公众中找到\"大众SSL证书(运用安全)\公众。
不得不说,阿里云产品太多了,找都不好找。

2.点击右上角的购买证书进入证书购买页面。

3.一样平常的商用的SSL证书价格都很昂贵。
当然,我们只要免费的。
证书品牌选择\公众Symantec\公众,证书类型先点一下\公众增强型OV SSL\"大众,然后选择\"大众免费型DV SSL\"大众,然后价格就变成0.00元了。
点击立即购买。

4.购买完毕后回到掌握台,你购买的证书就涌如今证书列表里,想利用的话还须要进一步补全信息。

5.证书绑定域名便是访问Home Assistant的域名。
由于我是在阿里云万网申请的域名,以是域名验证办法直接选择\"大众自动DNS验证\"大众。
只要域名利用阿里云DNS,都可以通过这种办法验证。
当前操作后,系统自动调用云解析API添加一条记录,完成域名授权验证,十分便捷。
CSR天生办法选择\公众系统天生\"大众即可。
然后点击下一步,进入验证界面。

6.在这个界面点击验证,不出什么意外都会成功。
这时,在你的域名解析设置页面会多一条TXT记录,便是上面所说的用来完成域名授权验证的。

7.证书申请提交后,等待审核完成。
审核完毕,就可以在\"大众已签发\"大众中找到通过审核的证书。
点击下载,选择其他类型将证书下载到本地,准备做进一步支配。

把稳,证书是存在有效期的,用上面的方法申请到的证书有效期是1年。
到期须要重新申请证书并在做事器上改换证书。

SSL证书配置

将上一步下载的证书解压,会得到一个key文件和一个per文件。
利用文本编辑器打开这两个文件,并按照下面的格式合并为一个文件,并保存为your.cert

-----BEGIN RSA PRIVATE KEY-----

XXXX

-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----

XXXX

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

XXXX

-----END CERTIFICATE-----

把key文件和cert文件和传到你支配Home Assistant的做事器上。
在Home Assistant的配置文件configuration.yaml中添加如下内容,根据你的实际情形做修正:

http:

ssl_certificate: /path/to/your/cert_file

ssl_certificate: /path/to/your/key_file

完成上述设置后,重启你的Home Assistant,你就可以通过HTTPS访问之前的域名了。

接入实战

从这一部分开始,进入了本文最主要的部分。
原贴请参考这里:点我直达。
希望你前面的准备事情已经做好了,并利用Home Assistant接入了一些智能家居,且配置精确、利用正常。

网关配置

完成HTTPS域名访问后,就给我们进行接下来的配置扫清了统统障碍了。
首先,我们要先实现网关,从此地址下载代码到Home Assistant配置目录的custom_components子目录下。
感谢原作者。

然后在configuration.yaml里面加入下面的内容:

aligenie:

expire_hours: 8760

expire_hours意思是多少个小时后须要重新进行授权。
expire_hours的默认值是8760小时,即365天,和SSL证书过期韶光同等。
把稳,纵然有默认值,此项配置也不能省略,这样才能让插件正常事情。
同时,为了方便后续的调试事情,请将log级别调度为info,在configuration.yaml加入:

logger:

default: info

这个自定义的插件便是我们要实现的网关。
现在把它以插件的形式集成到Home Assistant中,省去了额外搭建网关做事的步骤。

额外配置

此时你可能已经配置好了你的Home Assistant,并添加了一些智能家居设备。
但是,为了让天猫精灵识别这些设备,还须要进行一些额外的设置。
原文请参考这里:点我直达。

我以我的松下吸顶灯为例,讲解一下如何进行额外的配置。
我这个吸顶灯可以通过红外遥控器掌握开关,我利用博联黑豆对它进行掌握。
实在天猫精灵是原生支持博联黑豆的,但是博联黑豆的支持设备列表里面没有我这台松下吸顶灯。
以是只能依赖Home Assistant曲线救国了。
在Home Assistant中,我的这台吸顶灯的配置如下,也便是很根本的博联设备的配置方法。

switch:

- platform: broadlink

host: 192.168.50.233

mac: '44:44:44:44:44:44'

timeout: 15

switches:

panasonic_light:

command_on: 'xxxxxxxxxxx'

command_off: 'xxxxxxxxxxx'

为了让天猫精灵能够识别这个设备,还须要填写以下三个主要字段,且每个字段都有固定的名称列表,不能随意修正:

1. hagenie_zone:此字段指代你设备所处的区域,如客厅、餐厅等,可选值参考这里:点我直达。

2. hagenie_deviceName:此字段指代你的设备名称,可选值参考这里:点我直达。

3. hagenie_deviceType:此字段指代你的设备类型,可选值参考这里:点我直达。

当跟天猫精灵进行语音交互式,hagenie_zone和hagenie_deviceName是比较主要的字段,再次强调,务必从可选值列表中选取。
比如我的客厅的松下吸顶灯的额外配置为:

switch.panasonic_light:

friendly_name: 客厅灯

hagenie_deviceName: 灯

hagenie_deviceType: light

将此段配置放置到customize.yaml中。
我如果想通过天猫精灵掌握这个吸顶灯,就可以说:天猫精灵,打开客厅吸顶灯。
如果吸顶灯只有一个,也可以省去说出\公众客厅\"大众两个字。

我再以我的小米空气净化器2示范一下如何配置。
首先,小米空气净化器在Home Assistant中的配置如下。

fan:

- platform: xiaomi_miio

name: Xiaomi Air Purifier 2

host: 192.168.50.233

token: 000000000000000000000000

model: zhimi.airpurifier.m1

然后为了适配天猫精灵网关的额外配置如下。

fan.xiaomi_air_purifier_2:

friendly_name: 客厅空气净化器

hagenie_deviceName: 空气净化器

hagenie_deviceType: airpurifier

最好将配置放到customize.yaml下,这样比较规范。
完成了这一步后,我们离成功越来越近了。

AliGenie开拓者平台配置

Home Assistant这边配置完毕后,我们还须要在AliGenie开拓者平台进行进一步配置。
AliGenie开拓者平台便是阿里天猫精灵的开拓者平台,其地址在此:点我直达。
利用你登录手机端天猫精灵App的账号登录AliGenie开拓者平台,并进入掌握台。

点击\"大众添加新技能\"大众进入技能创建页面。
技能信息里面的东西可以自行根据情形填写,没有什么分外哀求。
填写完毕后点击下一步。

做事设置里面则是重点,首先要进行OAuth2的设置。
最新版本的Home Assistant已经自带OAuth2,并且我们实现了网址的HTTPS访问,因此在OAuth2设置中填入如下内容,根据你的实际情形做修正,个中Client Secret可以随意填写:

账户授权连接

Client ID

Client Secret:itdoesnotmatter

Access Token URL

接着,在设备管理设置中填入如下内容,根据你的实际情形做修正:

开拓者网关地址

正是由于开拓者平台哀求填写OAuth2和网关地址的时候,必须是HTTPS的网址,以是才有了申请并支配SSL,让Home Assistant支持HTTPS访问这一步骤。
此页面余下的内容可以不用理会。

仿照真机测试

完成上述设置后点击下一步进入\"大众测试验证\"大众页面,开启真机测试。

这时你可以点击“在新窗口打开”,网页会跳出如下弹出窗口。

点击“账户配置”,如果你之前的网关搭建并运行都没有缺点的话,会进入授权页面,此时须要输入你Home Assistant的用户名和密码。

完成账户授权验证后,如果统统正常,贵显示等待三秒返回设备列表。

等待三秒钟,不出意外的话,在设备列表中,除了你原来在天猫精灵中添加的智能家居设备,你该当也可以看到你在Home Assistant中配置的智能家居设备了。
比如我在Home Assistant中添加的设备如下。

那么返回的设备列表该当是这样的,条件是你为这些设备进行了额外配置,请参照上面的干系章节。

同时,打开你手机真个天猫精灵App,在智能家居列表里刷新,正常情形下,Home Assistant中的设备也会涌如今这里了。
这时,去考试测验一下语音掌握你的设备吧。

至此,恭喜你,基本大功告成。
当然你的过程可能并没有那么顺利。
如果碰着问题,请仔细剖析干系日志,负责检讨每一步的配置。
其余须要把稳的是,完成测试验证后,不须要提交审核,保持现状即可。

祝君好运。

简化归纳

上面写了一大段又一大段笔墨,初次打仗的朋友可能一下子难以接管,我在本小节将上面的各个步骤进行大略的归纳,以方便你的理解。

天猫精灵接入Home Assistant的基本步骤如下:

1.在你顺手的平台上搭建Home Assistant做事。
2.利用你以为大略可行的办法实现内网穿透。
3.实现Home Assistant利用自己申请的域名访问。
3.申请SSL证书。
4.配置SSL证书,使Home Assistant支持HTTPS访问。
5.完整天猫精灵网关的搭建和配置。
6.对已经加入到Home Assistant中的智能家居设备进行额外配置以支持天猫精灵。
7.在AliGenie开拓者平台完成OAuth2和网关地址配置。
8.开启仿照真机测试验证配置是否精确并返回设备列表。
9.天猫精灵App端检讨设备列表是否正常,并实践一下语音掌握是否正常。

通过上面的归纳总结,希望你能对整体的过程有一个大概的认识,详细步骤还要去每个小章节中仔细查阅。

写在末了

本文先容的是天猫精灵的Home Assistant接入办法。
如果你有小度智能音箱,也有类似的接入方法,详细可以在hassbian论坛里面搜索干系教程。
对付完美没有干系根本的人来说,实践这些步骤是有些困难的。
而那些之前折腾过Home Assistant的朋友,估计弄起来会比较随意马虎一些。
但是,也依然免不了碰着这样或者那样的问题。
如果碰着问题,我建议首先仔细参阅各种教程,检讨自己的配置。
然后利用系统日志帮你判断剖析问题。

虽然折腾的过程有些呆板,也会常常碰着各种困难。
但是通过自己的努力,打消万难,终极实现天猫精灵掌握各种家用电器那一刻,觉得还是很值得的。
当然也不用除由于某些缘故原由导致反复考试测验,不断纠错仍旧无法成功。
当你碰着这种情形,没紧要,享受折腾的过程并坦然放弃就行。
每次的失落败都会帮助你积累履历,等再有机会的时候,从头再来就好了。
人生不便是各种折腾嘛。

末了,再次感谢那些为达成天猫精灵接入Home Assistant这个目的而勤恳付出的各位程序员。