-
DuerOS开放平台
-
技能开放平台
-
自定义技能
- 自定义技能简介
- 自定义技能创建
-
有屏技能
-
技能交互模型
-
自定义技能协议
- 处理DuerOS发送的请求
-
技能部署
-
技能开发样例
- 账户关联
-
技能测试
-
技能发布
-
技能付费
-
个性化服务
-
内容播报技能
-
小技能
-
平台能力扩展
-
SDK
-
预览版功能
- 全双工(Preview)
-
APP技能(Preview)
-
-
智能家居开放平台
- 品牌使用规范
-
开发者服务条款
- 人工重置设备,例如长按按键八秒,即可让外设进入配网状态;
- 配网状态持续时间建议为30分钟
- 设备入网需要按照《小度蓝牙Mesh软件规范》(参考基础规范)来实现
- 开关所有的model均需要自行订阅组地址0xC06D,当用户表达的query是『打开所有的开关』时,音箱的控制消息会发往组播地址0xC06D
- 开关需要支持Sig mesh的Relay, Proxy功能
- 开关不仅需要支持蓝牙Mesh规范里面的PB-ADV配网方式,还要支持PB-GATT配网方式
- 订阅『开关』品类的分组地址: 0xC06D
- 用于支持『打开所有的开关』
- 订阅『开关』品类默认位置地址:0xC090
- 用于将设备加入到默认的位置,该位置用户可以在小度App中动态修改为『卧室』、『餐厅』等,每个位置会有一个对应的分组地址
- 注册的model id为:
- 0x1000(Generic OnOff Server Model)
- 0x0002011C(Data Trans Server Model)
- 用于支持私有协议的状态上报
- 开关需要自行设置发布地址为0xF000
- 发布地址:消息广播地址。即状态上报时,向该地址发送消息
- 用户手动打开或关闭触发开关状态变化,必须有状态上报
- 执行反转指令后,必须有状态上报
- 执行音箱的Generic OnOff Model指令,不需要状态上报
- 外设的F8或者F9的状态消息只发送给0xF000地址
- 状态上报收到FA之后停止发送,一直没有收到FA消息,发送完预定次数之后停止发送
- 建议的广播参数:间隔随机10ms,持续广播540ms
- 开关: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x0100)
Element | 属性名称 | Model Id | 属性type定义 | 属性value定义 |
---|---|---|---|---|
开关 (Primary Element) | 开关 | Generic OnOff Model | N/A | 标准方式控制开关 |
反转 | Data Trans Server Model 0x011C0002 | 0xF004 | 2字节,0x0166,反转,外设收到指令后,反转开关状态 | |
开关状态上报 | Data Trans Server Model 0x011C0002 | 0x0100 | 1字节 0x00:继电器打开 0x01:继电器闭合 |
开关状态上报举例
- 状态上报格式以及继电器打开事件上报示例数据(小端序)
OpCode | CID | TID | Attribute Type | Attribute Value | |||
---|---|---|---|---|---|---|---|
F8 | 1C | 01 | 01 | 01 | 00 | 00 | |
0XF8 | 0x011C | 0x01 | 0x0001 | 0x00 |
其中TID作用:用于去重。相同tid的上报,小度云端10s内不会重复处理
综上,物理按键单击广播消息数据部分完整的消息体:0xF8011C01000100
- 上行去重,即外设状态上报0xF8消息
- 外设状态上报到小度云端,10秒内收到相同的tid,不会重复处理
- tid只检查与上次上报是否一致,不区分大小
- 下行去重,即小度网关发送的0xFD或0xFE控制消息
- 10秒内收到重复tid,不做业务处理,需要回复ack的场景,只回复0xFF ack即可
- 外设判断重复tid,需要tid + attribute type 一起判断,不然会出现一些bad case
- 设备端要支持Config Heartbeat Publication Set命令设置心跳参数
- 如果音箱没有通过Config Heartbeat Publication Set命令设置设备心跳间隔,则默认心跳发送间隔16s,每次间隔10~20ms,广播360ms
- 控制回复消息TTL设置为10
- 状态上报TTL设置为10
- 被动更新
- 收到网络中广播的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流程;
- 需要支持最少32个分组订阅,小度这边会存在多楼层、场景、设备组等组播场景需求;
- 需要支持开关状态的查询,以Generic OnOff Get/Generic OnOff Status方式交互;
- 设备在不同场景的发包参数会因为音箱扫描参数不同而存在差异
- ack回复消息,包含标准status消息和0xFF消息,建议adv interval/adv period = 10ms/270ms;
- 状态上报消息,即0xF8消息,建议adv interval/adv period = 10ms/540ms
- 开关检测到proxy连接之后,主动清除本地缓存的sequence number信息,避免app卸载重装或清空数据无法控制的问题;
- 涉及分包上报场景,建议走单播上报,目标单播地址建议取上一次控制命令的单播地址;