和 Google Assistant 一样,通过 Home Assistant Cloud 服务可以快速接入 Home Assistant,每月 $5。有大大写了一个程序可以帮助接入 Home Assistant,并且写了详细的 wiki,小弟走了一遍流程,下面是步骤:
设置好外网访问
和 Google Assistant 一样需要设置好 https 外网访问。
下载 haaska
下载 haaska 最新版本,将其命名为like haaska_1.1.0.zip
。
将以下内容添加到您的configuration.yaml
文件中:
1 | api: |
之后在 Home Assistant 中创建一个获取一个长期令牌。登录 Home Assistant,单击头像或头像蓝色圆圈内的字母,向下滚动到「长期访问令牌」。点击 CREATE TOKEN
,对于 Name? 输入
haaska,之后点击 OK
。令牌将出现,複製到安全的地方备用。
设置 haaska
设置与亚马逊的登录
登录 Amazon Developer Console (建议美亚账号),
点击顶部导航栏中的「使用 Amazon 登录」链接,
点击「创建新的安全配置文件」的金色按钮,
输入以下内容:
- 输入您想要的任何安全配置文件名称,例如 haaska
- 写一个简短的描述,例如 haaska for my Home Assistant
- 添加您想要的隐私声明网址,随意填
点击保存继续,
在新的安全配置文件上,点击齿轮按钮,选择网络设置,记下客户端 ID 和客户端密钥,将此窗口保持打开状态以供参考。
设置 Alexa 技能套件
打开一个新的浏览器窗口,使先前的窗口保持打开状态,以供以后使用。
点击页面右上方的开发者控制台链接,
在导航栏中查找 Alexa,选择 Alexa Skills Kit ,点击创建技能按钮,
在这个新页面上,输入以下内容:
- 技能名称-可以是您想要的任何名称,例如 haaska,
- 语言-选择您要使用的正确语言,例如英语,
- 点击「智能家居」图块,
点击右上角的蓝色「创建技能」按钮,
记下列出的技能ID(例如amzn1.ask.skill.ed66dfa4-1185-492e-bf6e-1f70e90fb018
)。
准备 AWS Lambda 访问
打开一个新的浏览器窗口。请保持先前的窗口打开,以便以后使用。注册登录到 AWS 控制台(注意:注册 AWZ 需要外币信用卡验证),选择 IAM ,
勾选「AWS服务」图块,点击选中 Lambda,之后点击右下角「下一步:权限」按钮,
在搜索框中输入「basic」,之后选中 AWSLambdaBasicExecutionRole,
点击右下角的「下一步:标签」按钮,无需输入任何标签,之后点击「下一步:查看」继续。
在「角色名称」框中,输入 lambda_basic_execution,点击右下角「创建角色」,
单击左上方的AWS按钮,返回到主控制台。
地区选择
在屏幕的右上角用户名旁边,根据语言选中相应的地区,英语选择「美国东部(弗吉尼亚北部)」。
设置 AWS Lambda-第 1 部分
点击左上方的服务按钮,在列表中,找到「计算」部分,之后单击 Lambda ,点击橙色的创建功能按钮,选中「从头开始创建作者」图块,设置以下选项:
- 名称 - haaska
- 运行 -
Python 3.6
- 角色 - 选择现有角色
- 现有角色 - lambda_basic_execution
设置 AWS Lambda-第 2 部分
在新功能的「设计器」部分中,点击 Alexa Smart Home。如果没有看到此信息,说明尚未设置正确的区域。
在「应用程序 ID」框中,从 Alexa 开发人员控制台窗口(例如amzn1.ask.skill.ed66dfa4-1185-492e-bf6e-1f70e90fb018
)複製并粘贴「技能ID」,
确保选中「启用触发器」,点击右下角的「添加」,在「设计器」部分中,点击功能名称(例如 haaska),在「功能代码」部分中,查找「代码输入类型」,点击此菜单,选择「上传.zip文件」,
点击「上传」按钮,选择之前下载的 zip 文件(例如haaska_1.1.0.zip
)。
在「处理程序」框中,将现有内容替换为 haaska.event_handler,等待其加载。
配置 haaska 功能
在「功能代码」部分,将看到文件列表,双击 config.json
,
在 URL 部分中,添加远程 Home Assistant URL(例如 https://my-hass.example.com:8123
)
在「承载令牌」部分中,添加先前保存的长期令牌(例如 amcb3i2248yfm …)
将 AWS Lambda 链接到 Alexa 技能套件
在Lambda窗口的右上方,有一个 ARN(例如 arn:aws:lambda:us-east-1:111234567890:function:haaska),复制此文本并保存。
返回您的 Alexa 开发人员控制台窗口,将ARN粘贴到标有「默认端点」的框中,
从可用的复选框中,点击与之前的技能语言/Lambda 功能区域匹配的「端点区域」,将 ARN 粘贴到区域框中,点击右上角的「保存」按钮。
链接 Alexa 技能套件以登录 Amazon
点击「设置帐户链接」按钮,输入以下内容:
名称 | 内容 |
---|---|
Authorization URI | https://www.amazon.com/ap/oa |
Access Token URI | https://api.amazon.com/auth/o2/token |
Client ID | 「使用Amazon登录」窗口中的客户端 ID |
Client Secret | 「使用亚马逊登录」窗口中的客户端秘钥 |
Client Authentication Scheme | HTTP 脚本 (推荐) |
Scope | 点击 + Add Scope 并输入 profile |
Domain List | Not used |
Default Access Token Expiration Time | Not used |
之后将看到重定向URI的列表,把这些复制备用,点击右上角的保存。
返回到 Amazon 开发人员控制台/使用 Amazon 登录窗口,点击右下角的编辑,在「允许的返回 URL」部分中,点击「添加另一个」,直到三行为止。
在每一行上,从 Alexa Developer Console 窗口中添加一个重定向 URL,点击保存。
测试 haaska
登录到 Lambda 控制台,点击 haaska,之后点击页面右上方的「测试」按钮,
在「事件名称」字段中为测试指定一个自定义名称。将以下 JSON 复制到测试控制台:
1 | { |
单击「创建」,测试应该在「测试」按钮旁边的下拉框中列出,单击「测试」按钮,如果测试成功,将出现一个绿色的选中标记。恭喜,haaska 可以与 Home Assistant 进行通信。
如果有问题,并且测试失败,可以展开「详细信息」部分查看。
Alexa App 中设定
打开 Alexa App,在「更多」tab 中选择「Skill & Games」,之后就可以在「Your Skills」的「Dev」中可以看到建立的技能,连接即可。