智慧家庭 - 通过 Amazon Alexa 控制连接至 HomeAssistant 的智能设备
参考资料:
本文索引:
前言
要使用 Amazon Alexa 控制接入 HomeAssistant 的智能设备,有以下可能的办法:
Home Assistant Cloud: 官方推崇的方式,通过启用Alexa的HomeAssistant Skill,结合 Home Assistant Cloud 服务可实现开箱即用的集成,不差钱的可选择这种方案HAASKA(Home Assistant Alexa Skill Adaptor): 社区的开源项目,用python编写适用于Alexa Skill的AWS Lamba函数包,实现了 Home Assistant Smart Home API 和 Alexa Smart Home Skill API 之间的桥梁作用,需要一系列进阶的配置,动手能力的强可选用此方案。Emulated Hue Bridge: 纯本地方式,将Alexa-based设备作为 Emulated Hue Bridge 网关接入 HA,通过Hue API与 HA 中的设备进行交互,最简单的方案,但功能非常有限
接下来将分别展示这些方案的实现过程。
通过 Home Assistant Cloud 实现
配置 Home Assistant Cloud
Home Assistant Cloud 是由 NABU CASA 提供的云服务,可试用 31 天。
创建 Home Assistant Cloud 账号
进入 HA 的 Configuration Tab,点击 Create Account
注册完成后,在相同的界面登录,进入到管理界面:
激活 Alexa Home Assistant Skill
进入 Alexa Skills 列表,搜索 Home Assistant,点击激活,之后登录刚刚注册的 Home Assistant Cloud 账号。
之后,在 HA 的 configuration.yaml 中进行配置:
1 | cloud: |
以上 cloud 节点是配置如何向 Alexa 暴露 HA 中的实体,与之前讨论的 homekit 组件配置方法类似,具体可参考: Alexa via Home Assistant Cloud。
完成之后重启 HA,对 Alexa 说一声 “Alexa, turn on the lamp.” 试试看。
通过 HAASKA 实现(TBD)
由于 Amazon 对 Alexa Skill 的限制条件(例如只能使用 HTTPS),要通过 HAASKA 实现通过 Alexa 控制 HomeAssistant,需要确保以下条件得到满足:
Home Assistant实例的版本高于 0.78- 路由器可配置端口转发
Home Assistant必须以HTTPS向外暴露:Amazon的要求- 如果家中的 WAN 不是静态 IP 地址,则需要配置
DDNS - 成为
Amazon开发者并创建一个AWS账号:HAASKA将使用AWS Lamba服务,AWS支持每月 100 万免费请求。
准备 HAASKA
可直接至 Release 页面下载 HAASKA 的 Zip 包。接着,在 configuration.yaml 文件中添加以下组件的配置节:
1 | api: |
然后导航至 HomeAssistant 的 UI 界面上的 Profile 页面,在底部的 Long-Lived Access Tokens 中创建一个长生存期的 Access Token:
完成之后,记录下返回的 Token 以作后用,它形如:
1 | eyJ0eXAiOiJKV1QiLCJhbGciOi...... |
配置 Amazon AWS
首先导航至 Login with Amazon Console,点击 Create a New Security Profile:
通过 Emulated Hue Bridge 的方式实现
原理
这种办法是使用 HA 的 Emulated Hue Bridge 组件暴露 Hue API,让 Alexa-based 设备误以为 HA 是一个 Philips Hue Hub。
实现
编辑 configuration.yaml 配置文件:
1 | # Amazon Alexa |
保存更改,重启 HA 服务
1 | $ docker container restart home-assistant |
重新使用 Echo -> Start Home 查找设备,即会将所有与 HA 关联的设备列出。