下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者

如何通过Alexa来实现语音控制自己的智能家居?

2018-05-21 阿里巴巴智能语音交互团队

概述

过去,我们要控制一个硬件设备,比如电视,需要走到电视机前操作或者按下遥控器的按钮,如果想要搜索某个喜欢的节目,可能要按好多次遥控器才能实现,这种体验是十分不爽的。
2014 年亚马逊发布了 Echo 音箱,率先引爆智能音箱市场,随后几年,市面上出现了各种各样的智能音箱,智能音箱已被广大消费者接受。在这么多音箱中,Echo 无疑是其中的佼佼者,它改变了人们对人机交互的认知,让人们熟悉并接受以语音的方式去控制硬件设备。
到现在,人们已经不满足只是用语音去控制音箱放首歌,或者查询下天气。我们可以用语音交互做更多的事情,比如智能电视、互联网汽车以及其他场景。如果把家里所有电器、设备都联网,并用语音交互的方式去控制,这不就是智能家居了吗?是的,亚马逊已经走在前面了,今天我们要介绍的就是 Alexa Smart Home 平台。
Alexa 是亚马逊的语音服务平台,也是像 Echo 这样成千上万设备的大脑。Alexa 提供强大的能力,允许定制很多个性化体验的技能。假如你是个智能硬件厂商,接入 Alexa 内置的智能家居语音接口后,可以让用户通过 Alexa 控制摄像头、门锁、灯泡、空调、家庭影院这样的智能家居设备。另外,经过认证并发布到 Alexa Skill Store 后,可以让更多的用户发现并使用我们的产品。

Alexa Smart Home 简介

Alexa Smart Home 集成了 Alexa 语音交互服务、Alexa Skills Kit、Alexa Smart Home API,再配合 AWS Lambda,能让我们快速构建基于云端的一站式技能,给智能设备添加语音交互的能力。
Alexa Smart Home 有几个特点:
内置 VUI。使用 Alexa 控制设备时,我们无需重新设计 VUI,使用内置 VUI 可以提高开发速度,也让用户更易于接受。另外,当 Alexa 提升能力或支持更多语言时,我们和用户也会跟着受益。
多连接方式。我们可以通过互联网、Smart Home Skill、Echo Plus 和 ZigBee,或者 smart home hub 这几种方式连接智能设备到 Alexa。这样可以让我们灵活地支持几乎各种用户场景,从刚买第一个设备的新用户到那些希望扩展已有设备的老用户。
低门槛使用。集成 Alexa 后,可以让用户通过集成了 Alexa 服务的任意终端来控制家居设备,比如成千上万用户已经拥有的 Echo、Echo Show、Echo Spot 和 Fire TV。当然也支持那些集成了 Alexa 语音服务的第三方产品。
丰富、多设备体验。我们可以利用 Alexa Routines 和 Groups 简化用户的操作。Routines 可以让用户自定义场景,说一句语音指令就能触发多个智能设备的一系列动作,也可以在每天的不同时间段定时触发。Groups 可以让用户把一个房间内的多个设备编组,就像控制一个 Echo 设备一样,不需要再去记每个设备的名字。
Alexa Smart Home 的交互流程如下图:

Smart Home Skill API 工作原理

Smart Home Skills 提供一种简单的方式让我们可以通过 Alexa 语音交互控制和检查联网的设备。Alexa 理解用户的意图,并发送消息到与之相关的技能。此外,Smart Home Skill API 也让我们可以在 Alexa App 上实时展示配置过的设备状态。其工作原理如下:
首先,用户在 Alexa App 上面启用 Smart Home Skill,并与一个设备云账号关联,发现与这个账号关联的设备。
然后,当 Alexa 听到用户说“Alxea,帮我把厨房的灯调亮 50%”,或者用户在 Alexa App 上改变灯的亮度,Alexa 理解用户的意图后改变指定的设备的状态。Alexa 把收到的这些消息生成一个请求指令,这条指令包括用户授权信息、设备唯一标识和新的设置数据。然后把请求指令发送给 AWS Lambda 中部署的控制这盏灯的技能,在技能中解析指令,发送给与灯相关的设备云。技能再回复 Alexa 一条叫做 event 的消息告诉请求是否成功,Alexa 利用 event 中的信息回复用户。
除此之外,为了支持语音请求,当设备状态变化时,API 允许我们很方便地提供更新,这意味着用户在 Alexa App 上可以实时看到并控制设备状态。

支持的设备类型

烹饪设备
智能摄像头
家庭娱乐设备
各种照明设备
门锁
恒温控制器
其他接入 Alexa 的设备

创建 Smart Home Skill

1. 创建 Smart Home Skill 的前提要求:
亚马逊开发者账号
一个联网的可以通过设备云 API 控制的智能设备,如照明设备、空调、摄像头等
可以使用 Alexa 服务的设备,如亚马逊 Echo
一个 AWS 账号,用来创建 AWS Lambda 函数
JSON 相关知识
熟悉 Java、Node.js、C# 或 Python 中的任意一个,用来编写函数。
了解 OAuth 2.0 授权机制
2. 创建 Smart Home 技能
在 Alexa Skill 列表页面,点击添加技能按钮。技能信息页面选择技能类型为 "Smart Home Skill API",技能名称填写 "SmartHome"。点击保存,成功后,看到页面生成一个 "Application Id";
3. 创建 Lambda Function
在 AWS Lambda 中新建一个 Function,设置如下图中的名称、运行环境、角色。
在 Function 详情页面添加 "Alexa Smart Home" 这个触发类型,并设置前面创建的技能 ID。保存后会生成一个 ARN ID。
选择 Lambda 的运行环境,开发技能函数,设置调用入口。
Smart Home 设备消息协议有固定的 Schema,开发技能函数时,只需要引入对应开发语言的 SDK,实现请求回复协议就可以,下面举例说明开灯协议。
请求协议:
{
"directive": {
"header": {
"namespace": "Alexa.PowerController",
"name": "TurnOn",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-skill"
},
"endpointId": "endpoint-001",
"cookie": {}
},
"payload": {}
}
}
回复协议:
{
"context": {
"properties": [
{
"namespace": "Alexa.PowerController",
"name": "powerState",
"value": "ON",
"timeOfSample": "2017-09-27T18:30:30.45Z",
"uncertaintyInMilliseconds": 200
},
{
"namespace": "Alexa.EndpointHealth",
"name": "connectivity",
"value": {
"value": "OK"
},
"timeOfSample": "2017-09-27T18:30:30.45Z",
"uncertaintyInMilliseconds": 200
}
]
},
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"payloadVersion": "3",
"messageId": "5f8a426e-01e4-4cc9-8b79-65f8bd0fd8a4",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-Amazon"
},
"endpointId": "endpoint-001"
},
"payload": {}
}
}
我们选用 Java 开发语言,开发完成后,打成 JAR 包并上传,配置 Handler 处理入口就可以了。
4. 配置 ARNs 和账号
回到 Smart Home Skill 配置页面,在配置项中,设置 Lambda 的 ARN ID,这样技能就可以和 Lambda Function 建立联系。
5. 测试技能
技能和函数都开发完成后,可以在 Alexa 提供的模拟器中测试效果。
5. 认证发布
技能建设完成并测试没问题后,提交并通过 Works with Amazon Alexa 的认证,然后用户就可以在 Alexa Skills Store 中看到和使用我们创建的技能了。
7. 统计分析
对于我们创建发布的技能,如果想看到都有哪些用户在使用以及使用次数等统计数据,Alexa 提供了一个强大的统计分析功能,我们可以根据各种维度统计技术被使用的情况。

结语

以上就是基于 Alexa Smart Home 实现智能设备控制的具体方法,下一篇文章我们将介绍基于 Google Home 平台的对应实现方法。

参考

 写留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。