Amazon Alexa智能家居技能
Amazon Alexa提供了一种智能家居API,可以更丰富地控制家庭自动化,而无需用户说出技能名称,例如:
- “Alexa,关闭灯。”
- “Alexa,将恒温器设置为制冷。”
- “Alexa,车库门开了吗?”
配置需要相当大的努力。您的Home Assistant实例必须可以从Internet访问,并且您需要创建一个Amazon开发者账户和一个Amazon网络服务(AWS)账户。一个更简单的解决方案是使用Home Assistant Cloud。
Emulated Hue集成提供了一种更简单的替代方案,使用诸如_“Alexa,打开厨房灯”_的语句。然而,由于一切看起来都像一个灯泡,因此它有一些限制。
通过Home Assistant Cloud,您可以通过几个简单的点击将您的Home Assistant实例连接到Amazon Alexa。使用Home Assistant Cloud,您不必处理动态DNS,SSL证书或在路由器上打开端口。只需通过用户界面登录,即可与云建立安全连接。Home Assistant Cloud在30天的免费试用后需要付费订阅。
对于Home Assistant Cloud用户,文档可以在这里
将Amazon Alexa智能家居技能与Home Assistant集成的步骤:
- 要求
- 创建一个Amazon Alexa智能家居技能
- 创建一个AWS Lambda函数
- 配置智能家居服务终端
- 账户链接
- Alexa智能家居集成配置
- 支持的平台
- 故障排除
- 调试
要求
- Alexa智能家居API要求您的Home Assistant实例通过使用SSL/TLS证书的HTTPS在端口443上可从Internet访问。自签名证书将无法使用,但公共受信任证书或Amazon批准的证书颁发机构
签署的证书应该能够使用。有关如何为Home Assistant设置加密的更多信息,请阅读我们的博客。运行Home Assistant时,使用Duck DNS插件是最简单的方法。 - Amazon开发者账户。请在此处
注册。 - 需要一个Amazon网络服务(AWS)
账户来托管您的Alexa智能家居技能的Lambda函数。AWS Lambda 在每月最多1百万次请求和1GB的出站数据传输上免费使用。
创建一个Amazon Alexa智能家居技能
- 登录到Alexa开发者控制台
,您可以在登录页面上创建免费的账户。请注意,此账户必须与您在Alexa设备和应用上使用的Amazon账户相同。 - 如果您还没有,转到
Alexa技能
页面,然后单击创建技能
按钮开始流程。 - 输入您喜欢的
技能名称
,然后选择您的技能的默认语言
。 - 选择
智能家居
和自行提供
,然后点击右上角的创建技能
按钮。
- 在下一个屏幕中,确保在
有效负载版本
中选中v3并记下您的技能ID
- 现在,您已经创建了智能家居技能的框架。在下一步中,我们将进行一些“真正的”开发者工作。请保持Alexa开发者控制台打开,我们稍后会更改技能配置。
创建一个AWS Lambda函数
我们将编写一小段代码,作为AWS Lambda函数托管,该函数将从Alexa智能家居技能重定向请求到您的Home Assistant实例,然后Home Assistant中的Alexa集成将处理请求并发送回响应。然后Lambda函数会将响应提供回Alexa智能家居技能。
好了,开始吧。您首先需要登录到您的AWS控制台
为Lambda创建一个IAM角色
您在登录到AWS控制台
- 在顶部导航栏中单击
服务
,展开菜单以显示所有AWS服务,然后在安全、身份和合规
部分下单击IAM
以导航到IAM控制台。或者您也可以使用这个链接 - 在左侧面板中单击
角色
,然后单击创建角色
,选择AWS服务
->Lambda
,然后在向导的第一个页面中单击下一步:权限
- 选择
AWSLambdaBasicExecutionRole
策略,然后单击下一步:标签
。(提示:您可以使用搜索框过滤策略)
- 给您的新角色起一个名称,例如
AWSLambdaBasicExecutionRole-SmartHome
,然后单击页面底部的创建角色
按钮。您现在应该能够在角色列表中找到您的新角色。
向Lambda函数添加代码
接下来,您需要创建一个Lambda函数。
-
在顶部导航栏中单击
服务
,展开菜单以显示所有AWS服务,然后在计算
部分下单击Lambda
以导航到Lambda控制台。或者您可以使用这个链接重要信息 - 仅在特定AWS区域支持Alexa技能。 您当前的服务器位置将显示在右上角(例如,俄亥俄州)。请根据您Amazon账户的区域,从下面的列表中选择一个可用的服务器(参考 ),而不是您实际的物理位置。在其他区域创建的Alexa Lambda函数将无法正常工作,并可能导致账户链接失败!例如,如果您的区域设置为英语(美国)而您居住在加利福尼亚州,则必须使用美国东部(维吉尼亚州),而非美国西部(俄勒冈州)。尽管设置过程将在不正确的区域完成,但技能将无法正常工作,且不会有明确的错误信息指示原因。 - 英语(美国),英语(加拿大)或葡萄牙语(巴西)技能的**美国东部(维吉尼亚州)**区域
- 英语(英国),英语(印度),德语(德国),西班牙语(西班牙)或法语(法国)技能的**欧洲(爱尔兰)**区域
- 日语和英语(澳大利亚)技能的**美国西部(俄勒冈州)**区域。
-
点击左侧导航栏中的
函数
,以显示您的Lambda函数列表。 -
点击
创建函数
,选择从头开始创作
,然后输入一个函数名称
。 -
选择Python 3.9,Python 3.8或Python 3.7作为
运行时
。 -
展开
更改默认执行角色
下拉菜单,确保选择使用现有角色作为执行角色
,然后从现有角色
列表中选择您刚创建的角色。 -
点击
创建函数
,然后您可以配置Lambda函数的详细信息。 -
如果尚未展开,请扩展
函数概述
,然后在面板的左侧单击+ 添加触发器
,然后从下拉列表中选择Alexa Smart Home
以将Alexa Smart Home触发器添加到您的Lambda函数。 -
然后,系统会提示您输入之前步骤中创建的技能的
技能ID
。(提示:您可能需要切换回Alexa开发者控制台以复制技能ID
。)然后单击添加
。 -
向下滚动到
代码源
,如果没有打开,请打开lambda_function.py
。 -
清除示例代码,并从https://gist.github.com/matt2005/744b5ef548cc13d88d0569eea65f5e5b
复制Python脚本(修改后的代码以支持Alexa的主动模式,详见下文) -
点击
部署
按钮以发布更新的代码。 -
转到
配置
选项卡,然后选择环境变量
。您需要添加1个环境变量,如果需要,可以添加3个可选变量。这可以通过选择编辑
然后添加以下内容完成:-
(必需) 键= BASE_URL, 值= 您的Home Assistant实例的Internet可访问URL。不要包括结尾的
/
。 - (可选) 键= NOT_VERIFY_SSL,值=True。您可以将此设置为True以忽略SSL问题,例如如果您没有有效的SSL证书或使用自签名证书。
- (可选) 键= DEBUG,值=True。设置此变量以记录调试信息并允许LONG_LIVED_ACCESS_TOKEN。
- (可选,不推荐) 键= LONG_LIVED_ACCESS_TOKEN,值= 您的Home Assistant长期访问令牌。为避免使用长期访问令牌,您将在后面的步骤中将Alexa智能家居技能与您的Home Assistant用户账户连接,这意味着您不需要在此添加它。然而,从登录流程中获得的访问令牌仅在30分钟内有效。使用此访问令牌测试Lambda函数可能会很困难。因此,为了您的方便,您可以从测试数据中删除访问令牌,在生成长期访问令牌中生成一个并放在这里,然后该函数将回退到从环境变量中读取令牌。(提示:您未为环境变量启用安全存储,因此您在此保存的令牌并不安全。您只应将其用于调试和测试目的。在完成调试后,应删除和清除长期访问令牌。)
-
(必需) 键= BASE_URL, 值= 您的Home Assistant实例的Internet可访问URL。不要包括结尾的
- 现在点击右下角的
保存
按钮。 - 接下来,您需要复制页面顶部显示的ARN,这是此Lambda函数的身份。您将在后续Alexa智能家居技能配置中需要此ARN。
测试Lambda函数
现在,您已经创建了Lambda函数,但在测试之前,您必须设置Home Assistant配置的必要方面。将以下最小配置放入您的configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more]文件。它将向Alexa公开您所有受支持的设备和自动化。强烈建议检查配置部分并设置控制哪些设备和实体被公开。
alexa:
smart_home:
在您的Home Assistant重启后,返回AWS Lambda控制台
,您将进行一些测试。
- 导航到
测试
选项卡,然后选择创建新事件
- 命名您的事件,例如
发现
- 在名为
事件JSON
的代码框中输入以下数据:
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
},
"payload": {
"scope": {
"type": "BearerToken"
}
}
}
}
- 点击右上角的
创建
。
此测试事件是一个发现
指令,您的Home Assistant实例将以Alexa可以交互的设备列表进行响应。由于此测试数据缺少payload.scope
中的token
,并且您的Lambda函数将从环境变量中读取LONG_LIVED_ACCESS_TOKEN
。
点击测试
按钮。如果您没有设置LONG_LIVED_ACCESS_TOKEN
,或者未启用DEBUG
,则将获得INVALID_AUTHORIZATION_CREDENTIAL
作为执行结果。
您可以登录到您的Home Assistant并生成长期访问令牌。在将长期访问令牌输入到环境变量LONG_LIVED_ACCESS_TOKEN
并将DEBUG
环境变量设置为True
后,请记得在再次测试
之前点击保存
按钮。
这一次,您将在响应中收到设备列表。🎉
配置智能家居服务终端
现在删除长期访问令牌(如果要),复制您的Lambda函数的ARN,然后返回到Alexa开发者控制台
- 返回到Alexa开发者控制台
,如果您不在 Alexa技能
页面,请转到该页面。 - 找到您刚创建的技能,单击
操作
列中的编辑
链接。 - 在构建页面的左侧导航栏中单击
智能家居
。 - 在
2. 智能家居服务终端
下填写默认终端
,使用您从Lambda函数配置中复制的ARN
。
账户链接
Alexa需要将您的Amazon账户链接到您的Home Assistant账户。因此,Home Assistant可以确保只有经过身份验证的Alexa请求可以访问您家的设备。为了链接账户,您必须确保您的Home Assistant可以从Internet访问。
-
返回到Alexa开发者控制台
,如果您不在 Alexa技能
页面,请转到该页面。 -
找到您刚创建的技能,单击
操作
列中的编辑
链接。 -
在构建页面的左侧导航栏中单击
账户链接
-
不要开启“允许用户通过您的应用程序或网站链接他们的账户到您的技能”开关。这将需要一个重定向URI,但这将不起作用。
-
输入所需的所有信息。假设您的Home Assistant可以通过
https://[YOUR HOME ASSISTANT URL][:PORT]
访问,其中PORT
是TCP端口。如果端口为443
,则可以省略该端口。对于Alexa账户链接,默认情况下,标准端口为443。如果需要,请使用您的防火墙进行转发:-
授权URI
:https://[YOUR HOME ASSISTANT URL][:PORT]/auth/authorize
-
访问令牌URI
:https://[YOUR HOME ASSISTANT URL][:PORT]/auth/token
尽管可以分配其他端口,但最好使用端口443,因此请确保您的防火墙/代理通过端口443进行转发。
请阅读Alexa开发者文档
以获取有关账户链接的要求。 Important 您必须使用有效/受信任的SSL证书,以使账户链接正常工作。 自签名证书将无法使用,但您可以使用免费的Let’s Encrypt证书。
-
客户端ID
:-
如果您在美国或巴西,则为
https://pitangui.amazon.com/
-
如果您在欧洲,则为
https://layla.amazon.com/
-
如果您在日本和澳大利亚,则为
https://alexa.amazon.co.jp/
(尚未验证)结尾的斜杠在这里很重要。
-
-
客户端秘钥
:输入您喜欢的任何内容,Home Assistant不会检查此字段 -
您的身份验证方案
:确保您选择了请求主体中的凭据。Home Assistant不支持HTTP Basic。 -
作用域
:单击+ 添加作用域
并输入smart_home
,Home Assistant尚未使用它,我们将在未来允许更多细粒度访问控制时使用它。 -
您可以将
域列表
和默认访问令牌过期时间
留空。
- 点击右上角的
保存
按钮。 - 接下来,您将使用Alexa手机应用程序链接您的账户。
- 在Alexa应用程序中,导航到
更多
->技能和游戏
->您的技能
->开发者
- 单击刚创建的智能家居技能。
- 点击
启用以使用
。 - 将打开一个新窗口,指向您的Home Assistant登录屏幕。
- 在您成功登录后,您将被重定向回Alexa应用。
- Alexa现在应该自动开始查找您的设备!这可以通过您物理设备上的蓝色环来指示。
- 如果没有,请要求Alexa
发现设备
- 在Alexa应用程序中,导航到
- 现在,您可以从Echo或Alexa应用程序中向Alexa询问,“Alexa,打开卧室灯” 🎉
Alexa智能家居集成配置
示例配置:
alexa: smart_home: locale: en-US endpoint: https://api.amazonalexa.com/v3/events client_id: YOUR_SKILL_CLIENT_ID client_secret: YOUR_SKILL_CLIENT_SECRET filter: include_entities: - light.kitchen - light.kitchen_left include_entity_globs: - binary_sensor.*_motion include_domains: - switch exclude_entities: - switch.outside entity_config: light.kitchen: name: "Alexa的自定义名称" description: "厨房的灯" switch.stairs: display_categories: LIGHT
Configuration Variables
Alexa配置
Alexa智能家居配置
您的Alexa设备的区域设置。支持的区域设置为
de-DE
,en-AU
,en-CA
,en-GB
,en-IN
,en-US
,es-ES
,es-MX
,es-US
,fr-CA
,fr-FR
,hi-IN
,it-IT
,ja-JP
,nl-NL
和pt-BR
。有关更多信息,请参见Alexa语言环境。为了启用主动事件,您向Alexa事件网关发送消息,将其发送到与您的智能家居技能地理可用性相一致的事件端点。以下是端点列表及其覆盖的区域。有关更多信息,请参见主动事件。
- 北美:
https://api.amazonalexa.com/v3/events
- 欧洲:
https://api.eu.amazonalexa.com/v3/events
- 远东:
https://api.fe.amazonalexa.com/v3/events
请参见主动事件以获取更多信息。
请参见主动事件以获取更多信息。
过滤Alexa的域和实体。(配置过滤器)
特定实体的配置。所有从属键是对应的实体ID或域,例如
alarm_control_panel.woowoo
。特定实体的附加选项。
显示类别和图标,每个实体在Alexa应用中显示的位置。用逗号分隔每个类别。第一个类别是主要的。例如:
MUSIC_SYSTEM,STREAMING_DEVICE,SPEAKER
。有关可用类别列表,请参见Alexa显示类别。Alexa语言环境
locale
应与您Amazon Echo设备使用的位置和语言匹配。支持的区域设置包括:
de-DE
en-AU
en-CA
en-GB
en-IN
en-US
es-ES
es-MX
es-US
fr-CA
fr-FR
hi-IN
it-IT
ja-JP
nl-NL
pt-BR
请参阅能力接口和支持的区域设置列表
。 主动事件
endpoint
,client_id
和client_secret
是可选的,仅在您希望启用Alexa的主动模式(即启用“发送Alexa事件”)时需要。如果您想启用主动模式,请注意以下几点:- 根据您的技能区域,有不同的端点URL。请检查可用的端点https://developer.amazon.com/docs/smarthome/send-events.html#endpoints
-
client_id
和client_secret
不是在使用“通过Amazon登录”设置的技能中使用的(在Alexa开发者控制台:构建>账户链接),而是来自“Alexa技能消息”(在Alexa开发者控制台:构建>权限>Alexa技能消息)。要获得它们,您需要启用“发送Alexa事件”权限。 - 如果之前未启用“发送Alexa事件”权限,您需要使用Alexa应用解除链接并重新链接技能,否则Home Assistant将显示以下错误:“令牌无效且没有刷新令牌可用”。此外,您需要在每次禁用/启用Alexa技能后重新启动Home Assistant。
配置过滤器
默认情况下,不会排除任何实体。要限制公开给Alexa的实体,您可以使用
filter
参数。请注意,只有支持的平台才能添加。# 示例过滤器以包含指定的域并排除指定的实体 alexa: smart_home: filter: include_domains: - alarm_control_panel - light include_entity_globs: - binary_sensor.*_occupancy exclude_entities: - light.kitchen_light
Filters are applied as follows:
- 不使用过滤器
- 包含所有实体
- 仅包含
- 实体列表中的实体包含:include
- 否则,实体匹配域包含:include
- 否则,实体匹配通配符包含:include
- 否则:排除
- 仅排除
- 实体列表中的实体排除:exclude
- 否则,实体匹配域排除:exclude
- 否则,实体匹配通配符排除:exclude
- 否则:包含
- 域和/或通配符包含(还可能有排除)
- 实体列表中的实体包含:include
- 否则,实体列表中的排除:exclude
- 否则,实体匹配通配符包含:include
- 否则,实体匹配通配符排除:exclude
- 否则,实体匹配域包含:include
- 否则:排除
- 域和/或通配符排除(没有域和/或通配符包含)
- 实体列表中的实体包含:include
- 否则,实体列表中的排除:exclude
- 否则,实体匹配通配符排除:exclude
- 否则,实体匹配域排除:exclude
- 否则:包含
- 没有域和/或通配符的包含或排除
- 实体列表中的实体包含:include
- 否则:排除
以下字符可用于实体通配符:
*
- 星号表示零个、一个或多个字符
?
- 问号表示零个或一个字符如果您在设置集成时遇到问题,请参考故障排除。
Alexa显示类别
配置显示类别以覆盖每个实体在Alexa应用中显示的显示类别和图标。这使得查找和监控设备变得更容易。
light.kitchen_light: display_categories: LIGHT,SWITCH
Note 如摄像头、车库门和警报控制面板等设备需要特定的显示类别,以提供Amazon Alexa所有可用功能。覆盖默认显示类别将会限制Amazon Alexa提供的功能。
请参见Alexa显示类别
以获取完整列表 支持的平台
Home Assistant通过Alexa智能家居技能支持以下集成。对于Home Assistant Cloud用户,文档可以在这里
找到。 以下段落解释当前支持的平台的功能。
警报控制面板
布防和撤防警报控制面板实体。询问Alexa警报控制面板实体的状态。
- “Alexa,将我的家设为外出模式。”
- “Alexa,开启我的家。”
- “Alexa,关闭我的家。”
- “Alexa,我的家已经布防了吗?”
布防
警报控制面板状态必须处于
disarmed
状态才能布防。Alexa不支持在不先撤防的情况下从布防状态切换,例如,从armed_home
切换到armed_night
。警报控制面板的状态
armed_custom_bypass
不被Alexa支持,并视为armed_home
。Note 目前Alexa不支持使用语音PIN进行布防。因此,如果警报控制面板要求布防的
code
或code_arm_required
属性为true
,则在发现时该实体将不会被公开。 警报控制面板可能会将code_arm_required
属性默认为true
,即使平台不支持或要求使用它。使用实体自定义工具将code_arm_required
覆盖为false
,以便在发现过程中公开警报控制面板。撤防
用户必须选择在Alexa应用中使用按语音撤防的功能。Alexa将要求一个4位数字的语音个人识别码(PIN)来撤防。在Alexa应用中配置4位数字PIN,或使用已配置的警报控制面板的现有4位数字PIN码。
要使用为警报控制面板配置的现有代码,
code
必须为4位数字,并且code_format
属性必须为number
。在发现之后,Alexa应用将提供使用现有code
的能力,或创建其他4位数字的PIN以与Alexa一起使用。现有代码不会从Home Assistant传递给Alexa。在撤防时,Alexa会请求PIN。说出给Alexa的PIN将被转发到Home Assistant,并传递给
alarm_control_panel.alarm_disarm
操作。如果alarm_control_panel.alarm_disarm
操作因任何原因失败,则假定PIN不正确,并向Alexa报告为无效PIN。警报,自动化,组
将警报、自动化和组实体作为开关开启和关闭。
- “Alexa,开启前门警报。”
- “Alexa,关闭节能自动化。”
- “Alexa,开启楼下。”
二进制传感器
需要启用主动事件。
具有
device_class
属性的二进制传感器,支持以下类型:door
、garage_door
、opening
、window
、motion
、presense
。device_class
Alexa传感器类型 door
接触 garage_door
接触 opening
接触 window
接触 motion
动作 presense
动作 询问Alexa接触传感器的状态。
- “Alexa,卧室的窗户开了吗?”
常规
需要启用主动事件。
可以用作为接触或运动传感器公开的二进制传感器触发Alexa常规。
使用实体自定义工具覆盖
device_class
属性,以将binary_sensor
暴露给Alexa。按钮,输入按钮
使用按钮名称或_“打开”_语句激活按钮和输入按钮。它们将在Alexa应用中作为场景显示。
- “Alexa,响铃电话。”
- “Alexa,打开响铃电话。”
常规
需要启用主动事件。
当按钮被按下时,可以触发Alexa常规。
为了启用此功能,按钮将显示为具有“存在检测”功能。这使得此功能成为可能,因为Alexa不支持按钮类型的设备。要在按钮被按下时触发常规,请在”当”菜单中选择按钮,然后选择“人员”功能。
使用binary_sensor门铃公告
需要启用主动事件。
请注意,Home Assistant可以通过具有
device_class
设置为doorbell
的event
实体本地支持门铃。在
entity_config
中配置binary_sensor
的display_category
为DOORBELL
,以获得在Alexa应用中访问门铃通知设置。请注意,Home Assistant可以通过一个event
实体原生支持此功能。alexa: smart_home: entity_config: binary_sensor.alexa_doorbell: name: "前门" description: "门铃二进制传感器" display_categories: DOORBELL
当
binary_sensor
状态从off
变化为on
时,Alexa将在所有Echo设备上宣布_“有人在[实体名称]前面”_。另请参见事件实体。
使用二进制传感器的存在检测
需要启用主动事件。
配置具有
motion
或presence
属性的device_class
的binary_sensor
,并在entity_config
中将display_category
配置为CAMERA
,以访问Alexa应用中的存在检测通知设置。alexa: smart_home: entity_config: binary_sensor.driveway_presence: name: "车道" description: "车道存在传感器" display_categories: CAMERA
Alexa将在所有Echo设备上宣布_“检测到的人员在[实体名称]前面”_。
Important 每个Echo设备将需要启用通信和公告设置,并关闭勿扰功能。
图像处理实体也支持此通知。
摄像头
在Amazon Echo设备上查看摄像头流。
- “Alexa,显示前门摄像头。”
必须使用
stream
集成将摄像头流传输到Amazon Echo设备。Amazon Echo设备将向Home Assistant请求摄像头流。Home Assistant URL必须可以从Amazon Echo设备连接到的网络访问,并必须支持HTTPS在端口443上使用由Amazon批准的证书颁发机构
签署的证书。这些要求可以使用Home Assistant Cloud或LetsEncrypt/DuckDNS满足。 启用用于与Echo设备一起使用的摄像头的预加载流选项,以减少响应时间,并防止在6秒限制之前超时。
气候
支持单、双和三重设定点恒温器。恒温器的温度值也将在单独的温度传感器中公开。
设置恒温器温度
- “Alexa,将恒温器设置为20。”
- “Alexa,将空调设置为75。”
- “Alexa,让这里更温暖。”
- “Alexa,让这里更凉快。”
恒温器模式
-
“Alexa,将客厅恒温器设置为自动。”
-
DRY
在Alexa应用中显示为DEHUMIDIFY
-
ECO
在Home Assistant中作为preset
处理,并不会在Alexa应用中显示。 -
FAN_ONLY
在Alexa语音模型中不受支持,并在Alexa应用中显示为OFF
。
要更改恒温器模式,必须使用确切的语句:
- “Alexa,将[实体名称]设置为[模式语句]。”
如果气候实体支持开/关,使用_“打开”和“关闭”_语句与实体名称或模式语句一起使用。
- “Alexa,开启[模式语句]。”
- “Alexa,关闭[实体名称]。”
Alexa支持以下气候恒温器模式的语句值:
Home Assistant气候模式 Alexa模式语句 AUTO
“自动”,“自动化” COOL
“制冷”,“冷却” HEAT
“加热”,“加热” ECO
“生态”,“经济” DRY
“干燥”,“去湿” OFF
“关闭” 覆盖物
覆盖物应配置为适当的
device_class
。device_class
为blind
、shade
、curtain
的覆盖物在Alexa应用中显示为室内百叶窗,device_class
为window
、awning
或shutter
的覆盖物将显示为室外百叶窗。device_class
为garage
的覆盖物显示为车库门并支持通过语音PIN打开功能。请使用实体自定义工具覆盖
device_class
属性以正确公开cover
给Alexa。打开/关闭/升高/降低
Home Assistant配置覆盖物以提供_“升高”、“降低”、“打开”、“关闭”_等语句的语义。除了语义 “开启” / _“关闭”_语句也有效。
- “Alexa,打开车库门。”
- “Alexa,关闭窗帘。”
- “Alexa,降低阴影。”
- “Alexa,升高屋顶!”
根据覆盖物支持的功能分配语义。如果覆盖物支持倾斜功能,则语义_“打开”和“关闭”分配给倾斜功能,而语义“升高”和“降低”_则分配给位置功能。
如果覆盖物不支持倾斜,则所有语义_“升高”、“降低”、“打开”、“关闭”_都分配给位置功能。
设置覆盖物位置
支持设置位置的覆盖物可以使用百分比进行控制。
- “Alexa,将[实体名称]位置设置为30%.”
- “Alexa,将[实体名称]位置增加10%.”
- “Alexa,将[实体名称]位置减少20%.”
语言环境 友好名称同义词 en-US
“位置”,“打开” 当前,Alexa仅支持为
en-US
区域提供友好名称同义词。设置覆盖物倾斜
支持倾斜位置的覆盖物可以使用百分比进行控制。
- “Alexa,将[实体名称]的倾斜设置为30%”
- “Alexa,将[实体名称]的倾斜增加10%”
- “Alexa,将[实体名称]的倾斜减少20%”
语言环境 友好名称同义词 en-US
“倾斜”、“角度”、“方向” 当前,Alexa仅支持为
en-US
区域提供友好名称同义词。停止覆盖物操作
要停止覆盖物操作,请说:
- “Alexa,停止[实体名称]。”
如果您的覆盖物支持
STOP
功能,则这将停止覆盖物操作。 如果您的覆盖物支持STOP_TILT
功能,则这将停止覆盖物倾斜操作。 如果两个功能都启用,则将停止覆盖物和覆盖物倾斜。车库门
device_class
为garage
的覆盖物在Alexa应用中支持通过语音PIN打开功能。请在Alexa应用中配置4位数字PIN码以打开车库门。事件实体
需要启用主动事件。
门铃事件
如果
event
实体的device_class
设置为doorbell
,则Home Assistant的event
实体可以触发Alexa的门铃公告。 当event
实体接收到更新时,Alexa将在所有Echo设备上宣布_“有人在[实体名称]前面”_。Note 每个Amazon Echo设备将需要启用通信和公告设置,并关闭勿扰功能。
风扇
控制风扇速度、方向和摆动。
风扇速度
风扇设备必须支持基于百分比的速度,带有
percentage
属性。- “Alexa,将风扇速度设置为三。”
- “Alexa,将风扇速度设置为50%.”
- “Alexa,将风扇功率级别设置为50%.”
- “Alexa,提高塔式风扇的速度。”
- “Alexa,将塔式风扇的风速设置为最大。”
风扇预设模式
风扇设备必须支持
preset_mode
属性。- “Alexa,将风扇预设设置为生态。”
- “Alexa,将风扇预设设置为智能。”
- “Alexa,将风扇预设设置为自动。”
当前,Alexa仅支持
en-US
区域的预设模式。风扇方向
风扇设备必须支持
direction
属性。- “Alexa,将风扇方向设置为前进。”
- “Alexa,将风扇方向设置为反向。”
风扇摆动
风扇设备必须支持
oscillating
属性。- “Alexa,塔式风扇是否处于摆动状态?”
- “Alexa,为塔式风扇开启旋转。”
- “Alexa,为台风扇打开摆动模式。”
语言环境 友好名称同义词 en-US
“摆动”、“旋转”、“摆动”、“转动”、“前后移动” 当前,Alexa仅支持为
en-US
区域提供友好名称同义词。加湿器
控制电源、目标湿度和模式。
加湿器目标湿度
- “Alexa,将[实体名称]的湿度设置为50%.”
加湿器模式
加湿器设备必须支持
mode
属性。- “Alexa,将[实体名称]模式设置为生态。”
图像处理
需要启用主动事件。
存在检测通知
所有
image_processing
实体支持Alexa应用中的存在检测通知设置。任何状态变化将触发通知。Alexa将在所有Echo设备上宣布_“检测到的人员在[实体名称]前面”_。
Note 显示类别将默认设置为
CAMERA
,以启用Alexa应用中的存在检测通知设置。每个Echo设备将需要启用通信和公告设置,并关闭勿扰功能。输入数字和数字
用Alexa控制
input_number
或number
实体。为该实体配置min
、max
、step
和unit_of_measurement
属性。- “Alexa,将[实体名称]设置为45 [计量单位]。”
- “Alexa,将[实体名称]增加2。”
- “Alexa,将[实体名称]设置为最大。”
以下表列出了具有
min: -90, max: 90, step: 45, unit_of_measurement: degrees
的输入数字或数字的可能友好名称同义词。风扇范围 友好名称同义词 -90 “负九十”, “最小”, “最小值” -45 “负四十五” 0 “零” 45 “四十五” 90 “九十”, “最大”, “最大值” unit_of_measurement
将用于从全球Alexa目录选择受支持的单位标签。如果没有匹配项,它将被分配为预设控制器。 支持的单位有:°C,°F,K,m,km,mi,yd,in,kg,g,oz,lb,L,ft³,m³,gal和%。
灯光
使用_“打开”和“关闭”_语句控制灯光,调节亮度、颜色和色温。
- “Alexa,打开浴室灯。”
- “Alexa,关闭露台灯。”
亮度
支持亮度的灯光可以通过0到100百分点进行调整。
- “Alexa,将卧室灯设置为50%.”
- “Alexa,客厅灯设置为100%.”
_“调光”_语句将减少灯光亮度25百分点。
- “Alexa,调暗浴室灯。”
色温
使用以下友好名称调节支持色温的灯光:
- “Alexa,将餐厅设置为更柔和。”
- “Alexa,使客厅更温暖。”
- “Alexa,将餐厅设置为更凉爽。”
- “Alexa,使客厅的灯光更加白。”
- “Alexa,使客厅的灯光温暖白。”
- “Alexa,将厨房的灯光设置为日光。”
以下表列出了支持色温的灯光可能的友好名称同义词。
开尔文的色温 友好名称同义词 2200 “温暖”,“温暖白” 2700 “白炽灯”,“柔白” 4000 “白色” 5500 “日光”,“日光白” 7000 “冷”,“冷白” 使用_“更温暖”、“更柔和”、“更凉爽”、“更白”_句子调节色温50
mired
(大约300-500摄氏度开尔文变化)。- “Alexa,将餐厅设置为更柔和。”
- “Alexa,使客厅更温暖。”
- “Alexa,将餐厅设置为更凉爽。”
- “Alexa,使客厅的灯光更加白。”
颜色
使用CSS 基本颜色关键字
或扩展颜色关键字 作为友好的颜色名称设置灯光颜色。 - “Alexa,将前廊灯设置为蓝色。”
- “Alexa,将卧室灯设置为红色。”
- “Alexa,将厨房的颜色更改为深红色。”
锁
- “Alexa,锁上我的前门。”
- “Alexa,解锁地下室。”
解锁
要解锁,Alexa将要求一个4位数字的语音个人识别码(PIN)进行解锁。在Alexa应用中配置4位数字PIN以解锁锁。
媒体播放器
更改频道
- “Alexa,将客厅电视的频道更改为200。”
- “Alexa,将电视的频道更改为PBS。”
- “Alexa,下一频道在客厅电视上。”
- “Alexa,电视的频道增加。”
- “Alexa,电视的频道减少。”
扬声器音量
- “Alexa,将扬声器的音量设置为50。”
- “Alexa,将立体声音量降低20。”
- “Alexa,将客厅电视的音量降低。”
- “Alexa,静音扬声器。”
- “Alexa,取消静音扬声器。”
- “Alexa,降低立体声的音量。”
- “Alexa,扬声器音量上升20。”
均衡器模式
支持将媒体播放器的
sound_mode
更改为预设的sound_mode_list
。- “Alexa,将电视模式设置为电影。”
Alexa仅支持以下模式:
movie
、music
、night
、sport
、tv
。输入
支持将媒体播放器的
source
更改为预设的source_list
。- “Alexa,将客厅电视的输入更改为DVD。”
Home Assistant会尝试将
media_player
的source_list
转换为Alexa的有效source
名称。Alexa仅支持以下输入名称:AUX 1
、AUX 2
、AUX 3
、AUX 4
、AUX 5
、AUX 6
、AUX 7
、BLURAY
、CABLE
、CD
、COAX 1
、COAX 2
、COMPOSITE 1
、DVD
、GAME
、HD RADIO
、HDMI 1
、HDMI 2
、HDMI 3
、HDMI 4
、HDMI 5
、HDMI 6
、HDMI 7
、HDMI 8
、HDMI 9
、HDMI 10
、HDMI ARC
、INPUT 1
、INPUT 2
、INPUT 3
、INPUT 4
、INPUT 5
、INPUT 6
、INPUT 7
、INPUT 8
、INPUT 9
、INPUT 10
、IPOD
、LINE 1
、LINE 2
、LINE 3
、LINE 4
、LINE 5
、LINE 6
、LINE 7
、MEDIA PLAYER
、OPTICAL 1
、OPTICAL 2
、PHONO
、PLAYSTATION
、PLAYSTATION 3
、PLAYSTATION 4
、SATELLITE
、SMARTCAST
、TUNER
、TV
、USB DAC
、VIDEO 1
、VIDEO 2
、VIDEO 3
、XBOX
播放状态
需要启用主动事件。
Note 当前不支持向前寻址(跳过)或倒带(回退)意图。
遥控器
支持根据给定的
activity_list
更改遥控器的activity
。- “Alexa,将电视更改为PlayStation。”
- “Alexa,将电视输入更改为PlayStation。”
Note Alexa不允许使用以下词语作为活动名称:
alarm
、alarms
、all alarms
、away mode
、bass
、camera
、date
、date today
、day
、do not disturb
、drop in
、music
、night light
、notification
、playing
、sleep sounds
、time
、timer
、today in music
、treble
、volume
、way f. m.
场景
通过场景名称或_“打开”语句激活场景。Home Assistant目前不支持停用或“关闭”_场景。
- “Alexa,派对时间。”
- “Alexa,打开派对时间。”
脚本
通过脚本名称或_“打开”语句运行脚本。通过“关闭”_语句停用正在运行的脚本。
- “Alexa,派对时间。”
- “Alexa,打开派对时间。”
- “Alexa,关闭派对时间。”
传感器
需要启用主动事件。
目前仅配置了温度传感器。
- “Alexa,厨房的温度是多少?”
- “Alexa,楼上的温度是多少?”
开关,输入布尔值
支持_“开启”和“关闭”_语句。
- “Alexa,打开吸尘器。”
- “Alexa,关闭灯光。”
常规
需要启用主动事件。
当开关和输入布尔值的状态发生变化时,可以触发Alexa常规。
为了启用此功能,开关和输入布尔值将作为接触传感器在Alexa常规的状态菜单中显示。这是因为Alexa不支持从开关类型设备触发常规,仅支持从接触和运动传感器触发。在此菜单中,选择开关时,
打开
对应于开启
,关闭
对应于关闭
。计时器
使用_“开启”_语句启动计时器。
- “Alexa,开启洗衣。”
使用_“关闭”_语句取消计时器。
- “Alexa,关闭洗衣。”
暂停和重新启动Home Assistant中的计时器实体。
- “Alexa,暂停微波炉。”
- “Alexa,保持水浴。”
- “Alexa,重新启动微波炉。”
Important 为了避免Alexa内置计时器功能的问题,计时器实体的友好名称中不应包含“计时器”一词。
吸尘器
支持_“打开”和“关闭”_语句。暂停和恢复。
- “Alexa,打开吸尘器。”
- “Alexa,暂停吸尘器。”
- “Alexa,重新启动吸尘器。”
阀门
阀门在Alexa中不被原生支持。因此在Alexa中,它们被表示为未知类型的设备。
打开/关闭
Home Assistant配置阀门以提供 “打开” 和 “关闭” 的语句。
- “Alexa,打开水阀。”
- “Alexa,关闭燃气阀。”
设置阀门位置
支持设置位置的阀门可以使用百分比进行控制。
- “Alexa,将[实体名称]位置设置为30%.”
- “Alexa,将[实体名称]位置增加10%.”
- “Alexa,将[实体名称]位置减少20%.”
语言环境 友好名称同义词 en-US
“位置”、“打开” 当前,Alexa仅支持为
en-US
区域提供友好名称同义词。停止阀门
支持
stop
关闭或打开的阀门将具有额外的切换控制,允许停止阀门的关闭或打开操作。热水器
支持单、双和三重设定点恒温器。恒温器的温度值也将在单独的温度传感器中公开。
设置目标温度
- “Alexa,将锅炉的目标温度设置为50。”
您可以询问Alexa当前的温度和当前的目标温度。
- “Alexa,锅炉的目标温度是多少?”
- “Alexa,锅炉的当前温度是多少?”
操作模式
可以通过UI设置操作模式。所有Home Assistant的操作模式都可以设置(仅限英语)。
- “Alexa,将主锅炉设置为生态。”
要更改热水器模式,必须使用确切的语句:
- “Alexa,将[实体名称]设置为[模式语句]。”
如果热水器实体支持开/关,使用_“打开”和“关闭”_语句与实体名称或模式语句一起使用。
- “Alexa,打开[模式语句]。”
- “Alexa,关闭[实体名称]。”
故障排除
二进制传感器在常规触发中不可用
具有
device_class
属性的二进制传感器,类型包括door
、garage_door
、opening
、window
、motion
和presense
是支持的。使用实体自定义工具覆盖
device_class
属性以将binary_sensor
公开给Alexa。令牌无效且没有可用的刷新令牌
使用Alexa应用禁用并重新启用技能;然后重新启动Home Assistant。
调试
当日志级别设置为
debug
时,Alexa集成将记录有关状态更新和其他消息的额外信息。将相关行添加到configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more]中:如果使用Alexa与Alexa智能家居技能和像haaska这样的Lambda函数:
logger: default: info logs: homeassistant.components.alexa: debug
如果使用Home Assistant Cloud,则还需要调试
hass_nabucasa.iot
:logger: default: info logs: homeassistant.components.alexa: debug hass_nabucasa.iot: debug
-
-