DuerOS轻量级设备解决方案接入指南

整体流程

DuerOS轻量级设备解决方案为开发者提供设备端、云端、APP端的整体解决方案,让开发者可以方便地将DuerOS的强大语音交互能力移植到自己的轻量级设备中,并研发相应的控制APP。

平台的整体使用流程如下:

图片

开发者首先需要在平台上创建和配置自己的硬件产品,使用设备端SDK进行设备端研发,将设备接入云端;使用APP SDK开发具有语音交互能力的设备控制APP,给您的用户提供优质的服务;此外平台还提供OTA、日志、统计分析、应用配置等运行管理服务。您也可以通过DuerOS定制化自定义您的语音交互服务。

具体操作流程如下:

图片

创建产品

1.申请成为DuerOS开放平台开发者

请使用您的百度账号登录平台并申请成为DuerOS开放平台的开发者,根据页面提醒完成开发者认证。请确保申请认证前已经为百度账号绑定了手机号和邮箱,平台才可以正常使用。 提交认证后,我们会认真审核您的信息,为符合要求的开发者开放控制台权限。

2. 创建产品

申请通过后,您可以通过顶栏进入控制台,并新建一个产品。

图片

step1. 选择场景

在弹窗中选择产品类型:

图片

目前轻量级设备方案支持的场景和平台如下,该列表在不断扩展中,如果您有需求欢迎与我们联系。

场景 平台 能力 举例
故事机 mbed OS / FreeRTOS 1.儿童语音资源 2.DuerOS云端能力 3.语音控制设备 4.设备云服务 故事机
音箱 mbed OS / FreeRTOS 1.音箱语音资源 2.DuerOS云端能力 3.语音控制设备 4.设备云服务 便携音箱
冰箱 mbed OS / FreeRTOS 1.DuerOS云端能力 2.语音控制设备 3.设备云服务 智能冰箱
智能小家电 mbed OS / FreeRTOS 1.DuerOS云端能力 2.语音控制设备 3.设备云服务 电饭煲、豆浆机
轻量受控设备 mbed OS / FreeRTOS 1.语音控制设备 2.设备云服务 灯、窗帘
可穿戴设备 mbed OS / FreeRTOS 1.DuerOS云端能力 2.语音控制设备 3.设备云服务 智能手表

step2. 选择平台

点击下一步,进入平台选择界面,其中mbed OS或FreeRTOS为轻量级设备方案目前支持的平台。 注:FreeRTOS方案的文档和SDK正在审核中,将在近期对所有开发者开放,敬请关注。

图片

step3. 填写产品名称

点击下一步,填写产品名称并完成创建。

图片

step4. 创建完成

创建成功后,会跳转到产品接入向导,您可以根据设置数据点-数据点测试-设备端开发的顺序来完成产品配置,也可以随时跳出接入向导,在产品详情页面做同样的配置。

图片

设置数据点

1. 什么是产品数据点?

产品数据点是对设备端、云端、App端通信数据的统一定义, 请根据您的产品功能和设备属性为产品设置数据点。如智能灯的数据点可以有“开关”、“亮度”、“颜色”等用以表达设备的控制属性。

2. 数据点类型定义

数据点分为3种类型:控制数据点、查询数据点和上报数据点。

数据点类型 定义
控制数据点 云端向设备发送控制命令,可写
查询数据点 云端向设备发送查询请求,只读
上报数据点 设备向云端上报数据

你可以在数据点设置的界面中看到3个标签页,分别对应于这3类数据点。

3. 为产品添加数据点

在数据点设置页面,可以看到所有设置的数据点。

图片

3种类型的数据点的设置方式类似,这里只以控制数据点为例。点击“添加”按钮,会弹出一个如下图所示的表单,在这里你可以设置一个数据点的各个属性。在表单中,设置了星号(*)的属性是必填项。

图片

  1. 是否支持语音交互

    • 指该数据点是否是支持语音交互。选“是”则支持语音控制,选“否”则不支持。
    • 我们按照不同的设备为您准备了语音交互数据点的模板,模板中的所有语音数据点已经完成了语义解析、语义泛化、控制命令转化等工作,您可以直接获得语音控制设备的完整通路。请参考“语音数据点模板”一节。
  2. 显示名称

    • 如果当前数据点为语音数据点,您可以从我们提供的模板中选择一个语音数据点
    • 如果当前数据点为非语音数据点,您可以自定义数据点的显示名称,是呈现给最终用户的名称,一般为功能的简洁描述,比如“开关”,“电量”等等。
  3. 数据点类型

    • 选择数据点为控制、查询或上报数据点
  4. 标识名

    • “标识名”是该数据点在开发者的名空间中的一个唯一标识,这个唯一标识将该数据点与其它数据点区分开。
  5. 数据类型

    • 目前系统支持5种数据类型,分别是布尔型(bool)、整型(int)、双精度浮点型(double)、枚举类型(enum)和字符串型(string)。
    • int和double类型的数据点必须定义一个变化范围,enum类型的数据点必须定义各个枚举值。
  6. 备注

    • 开发者对该数据点定义的一些附属信息,用户不可见。

附数据类型说明如下:

控制/查询数据点

数据类型 定义 Web Console填写信息
bool 布尔类型
int 整形 需填写数据范围和步长,如“0-100/1”
double 浮点型 需填写数据范围和步长,如“0.01-1/0.01”
enum 枚举 需填写枚举选项,如“制冷;制热;除湿”
string 字符串

上报数据点

数据类型 定义 Web Console填写信息
bool 布尔类型
int 整形
double 浮点型
enum 枚举
string 字符串
json json

4. 修改和删除数据点

在数据点设置页面,可以编辑或删除已设置的数据点。

图片

注:当设备端开发已完成,设备正确上线后,修改数据点将会使设备不可用,所以设备上线后修改数据点需慎重。如果确认修改,请点击上方的确认修改按钮,否则修改无效。

图片

5. 数据点模板

我们还为开发者提供了数据点的模板功能。开发者可以将一个定义好的数据点组合,通过“另存为模板”按键,保存成一个模板。这样,后面在需要设置类似的数据点组合时,可以直接复用已保存的模板。不同的模板通过名称来区分。 系统也将提供一些通用模板供开发者选择,如“故事机模板”,“电饭煲模板”,“冰箱模板”等。

下面给出一个故事机数据点模板供参考:

语音数据点 显示名称 数据点类型 标识名 类型 范围/步长/选项 备注
播放内容 控制数据点 play string / 可通过“播放儿歌”“播放春天在哪里”“上一首””下一首”等语音指令控制播放内容;可获取聊天、通用信息、系统画像、兜底等云端服务
音量 控制数据点 volume int 0-16/1 可通过“调高音量”“调低音量”等语音控制指令调节设备音量
关机 控制数据点 shutdown bool / 关闭设备
电量 查询数据点 power double 0-1/0.01 查询电量

6. 语音数据点模板

目前平台已支持故事机、便携音箱、冰箱、电饭煲、豆浆机等几款智能产品的语音指令,您可以使用语音指令模板并添加自己的个性化数据点。平台会逐渐扩展更多设备品类,如果您急需新的设备类型接入,可联系我们 dueros-bd@baidu.com,符合条件的厂商平台可做定制优化。

故事机

1. 数据点列表
语音数据点 显示名称 数据点类型 数据类型 标识名 范围/步长/选项 备注
播放内容 控制数据点 play string / 可通过“播放儿歌”“播放春天在哪里”“上一首”“下一首”等语音指令控制播放内容
音量 控制数据点 volume int 0-16/1 可通过“调高音量”“调低音量”等语音指令调节设备音量
关机 控制数据点 switch bool / 关闭设备
电量 查询数据点 power int 0-100/1 查询电量
2. 语音数据点详解

play

play是传递播放资源url的控制数据点

{"url":"http://xxxx/xxx.mp3"}

平台已为故事机内置了儿童故事播放资源、系统画像服务、天气服务、翻译百科等通用语音交互能力

智能音箱

1. 数据点列表
语音数据点 显示名称 数据点类型 数据类型 标识名 范围/步长/选项 备注
播放内容 控制数据点 play string / 可通过“播放儿歌”“播放春天在哪里”“上一首”“下一首”等语音指令控制播放内容
2. 语音数据点详解

play

play是传递播放资源url的控制数据点

{"url":"http://xxxx/xxx.mp3"}

平台已为智能音箱内置了通用信息、音乐、有声资源、儿童故事资源、系统画像服务、天气服务、通用信息服务等语音交互能力

电饭煲

1. 数据点列表
语音数据点 显示名称 数据点类型 数据类型 标识名 范围/步长/选项 备注
开关 控制数据点 bool switch / /
暂停 控制数据点 bool pause / /
模式 控制数据点 enum mode 标准煮、快速煮、粥、婴儿粥、保温 通过“开始标准煮”等语音控制设备
定时开机 控制数据点 string on_timing / 通过“八小时后开始标准煮”等语音控制设备
2. 语音数据点详解

mode

可通过下表中的中文模式与mode参数的对照表,使用“开始标准煮”,“开始煮粥”等带有模式控制语义的语音指令控制该数据点

中文模式与参数对照表

mode参数名 中文模式
standard_cooking 标准煮
quick_cooking 快速煮
gruel
baby_gruel 婴儿粥
warm 保温

on_timing

通过json实现定时指令

{
  "time_point":1494904483,//执预约执行时间点 
  "time_interval":123,//距离当前的时间间隔
 }

冰箱

1. 数据点列表
语音数据点 显示名称 数据点类型 数据类型 标识名 范围/步长/选项 备注
冷藏室开关 控制数据点 bool cold / 通过“开启冷藏室”等语音指令控制设备
冷冻室开关 控制数据点 bool freezing / 通过“开启冷冻室”等语音指令控制设备
模式 控制数据点 enum mode 智能模式、速冷模式、速冻模式、假日模式、杀菌模式、珍品模式 通过“开始杀菌”等语音控制设备
冷藏室温度 控制数据点 int cold_temp -5-4/1 通过“降低温度”等语音制冷控制设备
冷冻室温度 控制数据点 int freezing_temp -20--5/1 通过“降低温度”等语音制冷控制设备
温感故障 上报数据点 bool fault_temp / /
2. 语音数据点详解

mode

可通过下表中的中文模式与mode参数的对照表,使用“开始杀菌”,“开启速冻模式”等带有模式控制语义的语音指令控制该数据点

中文模式与参数对照表

mode参数名 中文模式
intelligence 智能模式
quick_cooling 速冷模式
quick_frozen 速冻模式
vacation_mode 假日模式
sterilization 杀菌模式
treasure 珍品模式

豆浆机

1. 数据点列表
语音数据点 显示名称 数据点类型 数据类型 标识名 范围/步长/选项 备注
开始料理 控制数据点 enum start_mode 熟料打、精力汤、果汁、五谷、米糊、果茶、干湿豆、果仁露、温热、轻松洗、花生米浆、花生核桃露 可使用“开始煮花生核桃露”等语音指令控制设备
停止操作 控制数据点 bool stop / 可以使用“停止操作”等语音指令控制设备
停止料理 控制数据点 enum stop_mode 熟料打、精力汤、果汁、五谷、米糊、果茶、干湿豆、果仁露、温热、轻松洗、花生米浆、花生核桃露 可使用“停止煮水果茶”等语音指令控制设备
预约料理 控制数据点 string timing / 可使用“明早八点开始煮花生米浆”等语音指令控制设备
故障 上报数据点 string fault / 可能上报无水故障、初始水温过高故障、防溢异常故障、加热超时故障、电压异常故障、过零信号跌势故障、通讯异常故障、温度异常故障、电流检测异常故障、线路板温度异常故障
2. 语音数据点详解

start_mode

可通过下表中的中文模式与mode参数的对照表,使用“开始轻松洗”,“我要喝花生核桃露”等带有模式控制语义的语音指令控制该数据点

中文模式与参数对照表

start_mode参数名 中文模式
clinker_beating 熟料打
energy_drink 精力汤
juice 果汁
cereal_drink 五谷
rice_paste 米糊
fruit_tea 果茶
dry_beans 干湿豆
nut_drink 果仁露
warm_mode 温热
easy_wash 轻松洗
peanut_milk 花生米浆
peanut_walnut_lotion 花生核桃露

stop

可以语音控制停止设备任何模式的操作

stop_mode

可以语音控制停止当前语义表达的模式的操作,其他操作无法停止。

timing

通过json实现定时指令

{
  "time_point":1494904483,//执预约执行时间点 
  "time_interval":123,//距离当前的时间间隔 
  "mode":"energy_drink"//模式
}

数据点测试

1. 为什么要做数据点测试?

在完成设备端开发之前,需要得到确定且有效的产品数据点。为方便开发者快速验证数据点的有效性,我们为每个开发者准备了一个自己的虚拟设备。开发者可以使用平台提供的Demo APP, 或使用平台提供的APP SDK自行开发的Mate APP控制该虚拟设备,并快速地验证数据点定义的效果,从而极大地加快开发速度,减少设备端开发的复杂工作量。

2. 数据点测试流程

step 1. 点击下图中的按钮来启动虚拟设备。

图片

step 2. 下载Demo APP

扫描二维码或点击下载链接下载Demo APP,安装成功后使用百度账号(可以直接使用您登录平台的账号,或任何其他百度账号)登录APP。demo app中已经预设了虚拟设备的控制接口。 注:Demo APP、Android APP SDK和open api在 2017.8.10 有重大更新,请以 2017.8.10 之后的版本为准。

step3. 识别和绑定设备

使用Demo APP(或APP ADK,后续以Demo APP为例描述)扫描虚拟设备二维码识别设备,完成绑定后,设备会出现在设备列表中,点击设备可进入设备控制页面。

图片

step 4. 控制虚拟设备和查看日志

页面左下角区域为设备模拟界面,开发者可以在此模拟设备上报数据和设置查询数据点的数据。

图片

页面右侧区域为设备日志显示界面,所有的控制、查询指令和上报数据均由日志来体现虚拟设备接收情况。虚拟设备与真实设备为相同数据传输通路,可以模拟真实设备的控制。

图片

日志分为三种:设备控制、数据查询和设备上报,分别对应控制指令、查询指令和数据上报指令。

设备端开发

1. 什么是设备端开发?

当产品通过虚拟设备测试验证,可以开始进行设备端开发。平台提供设备端SDK,可以帮助开发者大量减少设备端开发工作。按照设备端开发手册正确完成硬件开发后,设备可以接入云端并实现云端控制和语音控制。

2. 准备工作

step 1. 获得合作模组

设备端的开发需要有一块支持DuerOS的模组,您可以选择以下列表中的模组型号。如果您是芯片或模组厂商,希望与我们合作推广您的模组方案,请联系 dueros-bd@baidu.com

模组型号 厂商 购买方式
HF-LPB200U 汉枫 LPB200U LPB200U EVK
RDA5981 RDA(锐迪科) http://bbs.rdamicro.com/ 或电话:010 58286588-7069

step 2. 下载软件开发包和profile

通过设备端开发页面的下载链接,获得软件开发包和profile文件,软件开发包将和开发者自己的程序被一同编译、链接到设备固件中,来实现开发自定义的数据点交互。 profile文件中包含有一个能够唯一标识单个硬件实体设备的ID字段,该字段被用来对实体设备进行管理。平台提供20个开发中的设备profile供开发者使用。

图片

3. 设备端开发

请按照设备端开发手册完成设备端开发。

4. 测试设备端开发结果

开发者完成了固件的编译、连接并烧录到实体设备之后,就可以通过demo app来对实体设备进行验证了。 在右侧的“控制设备及数据查询”部分,请在下拉列表中找到存入实体设备中的设备配置文件(profile),平台会根据设备profile生成设备的二维码,使用Demo APP可以扫描绑定和控制设备,验证方法和虚拟设备相同。

图片

注:成功完成设备端开发的设备会开始定期主动向云端上报心跳,上报频率为1分钟。

批量生产

完成设备端开发的设备,可以通过批量生产界面申请批次,开发者可以根据设备的生产时间和软件版本来管理批次。 目前平台限制了每个批次最多生产20个设备,最多可申请10个批次。如果您有更高的需求,请与DuerOS开放平台联系 dueros-bd@baidu.com 图片 点击右上角的“创建批次”按键,然后填写该批次的设备固件版本号和该批次生产的设备数量。创建成功后可以直接在批次列表中下载该批次所有设备的profile。

OTA升级

OTA(Over The Air)升级是目前较为高效的固件升级方式。开发者可以在对设备进行OTA管理,如设置OTA时间策略、固件版本筛选策略、批次筛选策略、查询升级状态等。OTA功能已经进行了严格的安全性检查,确保您的设备不会被其他人篡改和升级。

step 1. 添加固件版本

开发者点击右上角的“添加”按键,填写目标版本号信息,并同时上传目标版本的固件文件。请在上传固件文件前完成该文件的验证,确保该固件包可以正常运行。

图片

step 2. 验证固件文件

为了保证固件文件在批量设备上推送的安全性,平台提供了固件文件验证功能,只有通过验证的固件版本才可以想批量的线上设备下发OTA指令。

图片

点击立即验证进入设备验证功能,输入设备ID并点击验证,平台会将当前的固件文件向该设备推送。您可以在列表中查看设备推送状态。

图片

推送成功的设备,由开发者进行手动验证,如果设备运转符合预期,则可以点击“验证通过”表示该设备已经成功进行了OTA,如果出现错误,请点击“验证失败”,本次OTA失败。

当有任何一个设备验证通过了当前固件版本的OTA流程,则该固件包通过验证,可以下发到更多的设备中。但我们强烈建议对每个将升级的固件版本都做一次验证,再对整体下发。

step 3. 管理发布策略

已经通过验证的固件包可以向出厂设备发布。通过“发布策略”管理OTA。

图片

点击“添加策略”为当前固件添加一条发布策略。每条策略可以配置以下信息:

  1. 升级方式

    • 无通知升级:直接对设备升级,无提醒,无需用户干预
    • 用户确认升级:将升级消息推送至云端,开发者可以自行设置用户确认规则
  2. 发布有效期

    • 发布在该日期区间内有效,其他日期策略失效
  3. 发布时段

    • 发布在每日该时间段内有效,其他时间段内策略失效。开发者可以根据自己用户使用习惯规定发布时段。
  4. 旧版本筛选

    • 开发者可以只更新“旧版本筛选”范围内的设备,如本次只升级固件版本为0.0.0.1和0.0.0.2的设备,支持固件版本多选。
  5. 批次筛选

    • 开发者可以只更新“批次筛选”范围内的设备,如本次只升级批次为0001和0002的设备,支持批次多选。

以上所有值取交集为本次更新策略覆盖的设备。

图片

添加策略成功后可以看到策略出现在列表中,支持添加多个策略并可随时开始和暂停。策略匹配的规则为:

  • 最新添加的设备优先级最高,设备从最高优先级策略开始匹配,一旦匹配成功,其他策略可以忽略

  • 已更新的设备不再次匹配,与任何策略无关

step 4. 查询设备升级情况

可以根据设备ID查询该设备的升级情况,输入设备ID,点击查询即可。

IFTTT

IFTTT功能是可以通过设备上报的数据触发行为,当A发生时执行B,为开发者提供了灵活的事件管理能力,以更快速地实现场景、定时、数据转发等功能。 图片

1. 整体使用流程

图片

2. 创建规则

图片

点击创建规则新建一条IFTTT,需要填写以下信息:

  • 规则名称

  • 生效设备

选择本次规则生效的设备,可以按照批次全选,也可以单选设备。单选的设备总数不能超过50个。

  • 数据点筛选

提供一个数据点描述的表达式,当该表达式的值为true时,条件被触发。开发者可以根据自己的需求灵活设计表达式。表达式规则见下一节中的说明

  • 执行动作

当数据点筛选表达式被触发时,可以执行两类动作。一类是转发消息到第三方服务地址,该地址需经过人工审核才能生效。开发者可以将数据点消息转发到自己的服务地址进行解析和操作。另一类是可以触发设备控制指令,选择设备的控制数据点并修改该数据点的值。值可以由表达式计算得出,表达式规则同上方的数据点表达式筛选规则。

以上信息填写完成后可以保存到规则列表。在规则列表中可以选择启用或停用该规则。

图片

3. 表达式规则

基本格式

  • 数据点必须使用 " ` " 符号框起来, 做数据点字段引用
  • 字符串需要使用双引号引用
  • 数据点需要严格按照其类型进行计算
  • 目前只支持针对上报数据点做筛选, 代入的数据点值为当前上传的数据点值

支持的操作符

  • 计算: + - * / % ^
  • 对比: < > == != <= >=
  • 逻辑: and or not && || ! ()
  • 三元运算: ?:

数据点筛 选表达式示例

  • 数据点筛选表达式计算结果必须为boolean类型, 即: true/false
# 数字比较
`volumn` > 10 and `temperature` + 1 > 25

# 字符串比较
`run_mode` == "cool"

# 逻辑非
!(`volumn` > 10)

# 复杂逻辑
(`light` < 10 || `mode` == "hot") && `temperature` > 30

设备控制 数据点值表达式示例

  • 数据点值 必须与当前控制数据值类型匹配, 如: int类型的数据点值计算结果必须为int
# 纯数字
3.1415926

# 纯字符串, 需要引号
"cool_mode"

# 计算
(`temperature` + 20) / 10

# 幂运算
`temperature`^2

# 三元运算
`mode` == "cool" ? `light` + 10 : 100

运行日志

产品发布之后,开发一定会关心硬件设备的运行情况。所有实体设备的运行日志都可以在“运行日志”页面中查看到。开发者可以按照设备ID来检索单个设备的运行情况。通过右侧的运行日志“查看”按键来获取设备的所有日志信息。

图片

图片

可以通过切换表头按分类查询日志:语音日志、控制日志、上报日志、IFTTT日志、OTA日志。 也可以按照时间查询日志,最长可以查询7天之间的日志。

开发者需要在平台上设置上报数据点才能查看到相应的上报日志。

语音日志中,我们提供了原始语音下载和播报语音下载的功能,请点击链接下载试听。

应用配置

平台为开发者默认生成一个应用,可以同时支持Android/IOS/Web平台,在应用配置页面可以查看到应用的client_id和client_secret,且需要填写平台相关的信息才能使用平台提供的Android SDK和Open API。

Android SDK

开发者需要填写相应的包名和应用签名才能正确使用Android SDK。

IOS

开发者可以使用Open API来开发IOS APP,需要填写BindID才能正确使用Open API。

Web应用

开发者可以使用Open API来开发Web应用,需要填写授权回调地址才能正确使用Open API。

数据统计

平台提供了多角度的数据统计信息,供厂商和开发者了解自己的设备运转情况。

  • 新增设备:设备首次向云端上报心跳后表示设备已激活,新增设备量为在指定时间范围内激活设备的数量
  • 设备存活:在指定时间范围内,有数据上报的设备定义为存活设备
  • 设备活跃:在指定时间范围内,有非心跳数据上报的设备
  • 设备在网时间:每日0点到24点内,统计每小时在线设备的数量
  • 固件版本分布:各个固件版本的设备数量占比,不统计未激活的设备

定制化

1. DuerOS服务

平台提供了自定义语音交互内容和DuerOS服务的能力,开发者可以在DuerOS服务定制化页面开启或关闭相关服务,这些服务包含了系统画像、百科问答、天气、娱乐、语音控制设备、聊天等。 对系统画像服务,用户还可以进行自定义。点击系统画像-编辑,并在新页面中看到系统画像列表。您可以启用或停用一条系统画像,并编辑自己的话术。

图片

2. TTS配置

用户可以通过TTS服务配置页面配置设备上的TTS属性。目前平台提供音色选择、速度调整和音量调整。所有参数与百度语音平台保持一致,请到百度语音平台试听效果。http://yuyin.baidu.com/#try

图片