-
DuerOS开放平台
-
技能开放平台
-
自定义技能
- 自定义技能简介
- 自定义技能创建
-
有屏技能
-
技能交互模型
-
自定义技能协议
- 处理DuerOS发送的请求
-
技能部署
-
技能开发样例
- 账户关联
-
技能测试
-
技能发布
-
技能付费
-
个性化服务
-
内容播报技能
-
小技能
-
平台能力扩展
-
SDK
-
预览版功能
- 全双工(Preview)
-
APP技能(Preview)
-
-
智能家居开放平台
- 品牌使用规范
-
开发者服务条款
- 开箱通电之后,用户不需要任何操作,加湿器即可进入配网状态;
- 在手动操作的场景中,需要长按开关键3秒,听到滴的一声,即可进入配网状态;
- 在小度app上删除加湿器,音箱会发送Config Node Reset消息,加湿器收到Reset消息后,需要自动进入配网状态;
- 配网广播时间为10分钟,超过10分钟没有配网,开启静默广播;
- 入网流程参考基础规范;
- 入网流程中的configuration阶段,音箱只会对加湿器主Element中的Generic OnOff Server Model(Model Id为0x1000)进行设置,加湿器需要将这些设置自动绑定到其他Model;
- 加湿器品类的默认分组「地址」为0xC091,这个地址需要记录在加湿器固件中,分组用于支持按照设备类型控制多个设备,例如「打开所有加湿器」,「打开客厅的加湿器」;
- 在小度app上修改加湿器分组的场景中,音箱会向加湿器发送Config Model Subscription Overwrite消息,加湿器收到OverWrite消息后,会把Model中的分组「地址」 更新为消息中携带的分组「地址」;由于使用的是Overwrite消息,加湿器会把品类默认分组「地址」0xC091覆盖掉,所以需要加湿器自行将默认分组「地址」恢复回来;
Element | 属性名称 | Model Id | 属性type定义 | 属性value定义 |
---|---|---|---|---|
加湿器 (Primary Element) | 开关 | Generic OnOff Server Model 0x1000 | N/A | N/A |
开关 | Data Trans Server Model 0x011C0002 | 0x0100 | 1字节开关状态,0x00代表关闭;0x01代表打开; | |
目标湿度 | 0x010E | 1字节目标湿度,云端将上报的十六进制转十进制存储; | ||
雾量 | 0x0176 | 1字节雾量,云端将上报的十六进制转十进制存储,0x01代表1档,0x02代表2档,0x03代表3档; | ||
屏显开关 | 0x050D | 1字节状态,0x00代表关闭;0x01代表打开; | ||
模式 | 0xF004 | 2字节状态,0x0161代表正常模式;0x0162代表恒湿模式;0x0163代表代表睡眠模式; |
- 发现设备 | 发现智能加湿器 | 连接智能加湿器 | 连接加湿器
- 打开加湿器 | 关闭加湿器 | 一小时后打开加湿器 | 每天下午六点钟关闭加湿器
- 加湿器一挡 | 加湿器档位调高 | 加湿器档位调低
- 加湿器关了吗 | 加湿器几挡风
- 开关使用蓝牙Mesh SIG Model,即Generic OnOff Model;
- 目标湿度 | 模式 | 屏显等功能使用Vendor Model,即Data Trans Model;
- 加湿器配网之后,在状态发生改变的时候,有如下上报场景: (1) 手动控制加湿器,需要上报状态,例如手动切换风速,需要将切换后的风速上报给音箱端 (2) app控制或者语音控制加湿器,需要上报状态,例如语音或者app控制摆风,需要将摆风状态上报给音箱端 (3) 加湿器再次上电,需要将当前的状态全部同步给音箱端 (4) 加湿器配网之后,需要按照小度配置参数上报心跳,用于app上显示加湿器的在线状态,超过6分钟没有收到心跳,音箱即认为加湿器已经处于离线状态
- 状态上报格式以及开关状态上报示例数据(小端序)
Opcode | tid | Attribute Type | Attribute Value | |||
---|---|---|---|---|---|---|
F8 | 1C | 01 | 01 | 00 | 01 | 01 |
0xF8 | 0x011C | 0x01 | 0x0100 | 0x01 |
其中tid作用:用于小度云端去重,10秒内相同上报tid,云端不会重复处理;
- 加湿器状态只发送给0xF000地址
- F8状态上报收到预期的FA之后停止发送,若一直没有收到FA消息,发送完预定次数之后停止发送
-
上行去重,即外设状态上报0xF8或0xF9消息
- 外设状态上报到小度云端,10秒内收到相同的tid,不会重复处理
- tid只检查与上次上报是否一致,不区分大小
- 下行去重,即小度网关发送的0xFD或0xFE控制消息
- 10秒内收到重复tid,不做业务处理,需要回复ack的场景,只回复0xFF ack即可
- 外设判断重复tid,需要tid + attribute type 一起判断,不然会出现一些bad case
- 控制回复消息的TTL设置为10
- 状态上报消息的TTL设置为10
- 设备端需要支持Config Heartbeat Publication Set消息设置心跳参数
- 小度下发心跳发送间隔默认为16s,加湿器向外广播心跳建议发包参数adv interval/adv period = 10ms/360ms
- 被动更新
- 收到网络中广播的secure network beacon消息,检查自身iv index信息,并完成update或者recovery过程;
- 加湿器重新上电后收到的第一个secure network beacon的iv index等于当前iv index + 1,且iv update flag处于normal状态,要求直接更新,忽略规范里面的时间限制;
- 主动更新
- sequence number达到0xB0E500的时候开始进行iv index update流程;
- 加湿器需要支持蓝牙Mesh规范里面定义的Relay和Proxy特性;
- 加湿器检测到proxy连接之后,主动清除本地缓存的sequence number信息,避免app卸载重装或清空数据无法控制的问题;
- 加湿器不仅需要支持蓝牙Mesh规范里面的PB-ADV配网方式,还要支持PB-GATT配网方式;
- 加湿器入网的最后一步是设置订阅地址,要求在成功设置订阅地址之后,延迟1s~2s再上报状态;
- 涉及分包上报场景,建议走单播上报,目标单播地址建议取上一次控制命令的单播地址;
- 需要支持最少32个分组订阅,小度这边会存在多楼层、场景、设备组等组播场景需求;
- 需要支持开关状态的查询,以Generic OnOff Get/Generic OnOff Status方式交互;
- 设备在不同场景的发包参数会因为音箱扫描参数不同而存在差异
- ack回复消息,包含标准status消息和0xFF消息,建议adv interval/adv period = 10ms/270ms;
- 状态上报消息,包含0xF8和0xF9消息,建议adv interval/adv period = 10ms/540ms