/

Alexa 接入 HA

ha_alexa_cove

和 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
2
3
4
api:

alexa:
smart_home:

之后在 Home Assistant 中创建一个获取一个长期令牌。登录 Home Assistant,单击头像或头像蓝色圆圈内的字母,向下滚动到「长期访问令牌」。点击 CREATE TOKEN,对于 Name? 输入 haaska,之后点击 OK。令牌将出现,複製到安全的地方备用。

设置 haaska

设置与亚马逊的登录

登录 Amazon Developer Console (建议美亚账号),

点击顶部导航栏中的「使用 Amazon 登录」链接,

点击「创建新的安全配置文件」的金色按钮,

ha_alexa1

输入以下内容:

  • 输入您想要的任何安全配置文件名称,例如 haaska
  • 写一个简短的描述,例如 haaska for my Home Assistant
  • 添加您想要的隐私声明网址,随意填

点击保存继续,

ha_alexa2

在新的安全配置文件上,点击齿轮按钮,选择网络设置,记下客户端 ID 和客户端密钥,将此窗口保持打开状态以供参考。

ha_alexa3

设置 Alexa 技能套件

打开一个新的浏览器窗口,使先前的窗口保持打开状态,以供以后使用。

点击页面右上方的开发者控制台链接,

在导航栏中查找 Alexa,选择 Alexa Skills Kit ,点击创建技能按钮,

ha_alexa4

在这个新页面上,输入以下内容:

  • 技能名称-可以是您想要的任何名称,例如 haaska,
  • 语言-选择您要使用的正确语言,例如英语,
  • 点击「智能家居」图块,

点击右上角的蓝色「创建技能」按钮,

ha_alexa5

记下列出的技能ID(例如amzn1.ask.skill.ed66dfa4-1185-492e-bf6e-1f70e90fb018)。

ha_alexa6

准备 AWS Lambda 访问

打开一个新的浏览器窗口。请保持先前的窗口打开,以便以后使用。注册登录到 AWS 控制台(注意:注册 AWZ 需要外币信用卡验证),选择 IAM

ha_alexa7

在左侧栏上,点击角色。之后点击蓝色的创建角色按钮,

ha_alexa8

勾选「AWS服务」图块,点击选中 Lambda,之后点击右下角「下一步:权限」按钮,

ha_alexa9

在搜索框中输入「basic」,之后选中 AWSLambdaBasicExecutionRole,

ha_alexa10

点击右下角的「下一步:标签」按钮,无需输入任何标签,之后点击「下一步:查看」继续。

在「角色名称」框中,输入 lambda_basic_execution,点击右下角「创建角色」,

ha_alexa11

单击左上方的AWS按钮,返回到主控制台

地区选择

在屏幕的右上角用户名旁边,根据语言选中相应的地区,英语选择「美国东部(弗吉尼亚北部)」。

ha_alexa12

设置 AWS Lambda-第 1 部分

点击左上方的服务按钮,在列表中,找到「计算」部分,之后单击 Lambda ,点击橙色的创建功能按钮,选中「从头开始创建作者」图块,设置以下选项:

  • 名称 - haaska
  • 运行 - Python 3.6
  • 角色 - 选择现有角色
  • 现有角色 - lambda_basic_execution

ha_alexa13

设置 AWS Lambda-第 2 部分

在新功能的「设计器」部分中,点击 Alexa Smart Home。如果没有看到此信息,说明尚未设置正确的区域

在「应用程序 ID」框中,从 Alexa 开发人员控制台窗口(例如amzn1.ask.skill.ed66dfa4-1185-492e-bf6e-1f70e90fb018)複製并粘贴「技能ID」,

确保选中「启用触发器」,点击右下角的「添加」,在「设计器」部分中,点击功能名称(例如 haaska),在「功能代码」部分中,查找「代码输入类型」,点击此菜单,选择「上传.zip文件」,

ha_alexa14

点击「上传」按钮,选择之前下载的 zip 文件(例如haaska_1.1.0.zip)。

在「处理程序」框中,将现有内容替换为 haaska.event_handler,等待其加载。

配置 haaska 功能

在「功能代码」部分,将看到文件列表,双击 config.json

在 URL 部分中,添加远程 Home Assistant URL(例如 https://my-hass.example.com:8123

在「承载令牌」部分中,添加先前保存的长期令牌(例如 amcb3i2248yfm …)

ha_alexa15

将 AWS Lambda 链接到 Alexa 技能套件

在Lambda窗口的右上方,有一个 ARN(例如 arn:aws:lambda:us-east-1:111234567890:function:haaska),复制此文本并保存。

返回您的 Alexa 开发人员控制台窗口,将ARN粘贴到标有「默认端点」的框中,

从可用的复选框中,点击与之前的技能语言/Lambda 功能区域匹配的「端点区域」,将 ARN 粘贴到区域框中,点击右上角的「保存」按钮。

ha_alexa16

链接 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

ha_alexa17

之后将看到重定向URI的列表,把这些复制备用,点击右上角的保存。

返回到 Amazon 开发人员控制台/使用 Amazon 登录窗口,点击右下角的编辑,在「允许的返回 URL」部分中,点击「添加另一个」,直到三行为止。

在每一行上,从 Alexa Developer Console 窗口中添加一个重定向 URL,点击保存。

测试 haaska

登录到 Lambda 控制台,点击 haaska,之后点击页面右上方的「测试」按钮,

在「事件名称」字段中为测试指定一个自定义名称。将以下 JSON 复制到测试控制台:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
},
"payload": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-skill"
}
}
}
}

单击「创建」,测试应该在「测试」按钮旁边的下拉框中列出,单击「测试」按钮,如果测试成功,将出现一个绿色的选中标记。恭喜,haaska 可以与 Home Assistant 进行通信。

ha_alexa18

如果有问题,并且测试失败,可以展开「详细信息」部分查看。

Alexa App 中设定

打开 Alexa App,在「更多」tab 中选择「Skill & Games」,之后就可以在「Your Skills」的「Dev」中可以看到建立的技能,连接即可。

ha_alexa19