-
DuerOS开放平台
-
技能开放平台
-
自定义技能
- 自定义技能简介
- 自定义技能创建
-
有屏技能
-
技能交互模型
-
自定义技能协议
- 处理DuerOS发送的请求
-
技能部署
-
技能开发样例
- 账户关联
-
技能测试
-
技能发布
-
技能付费
-
个性化服务
-
内容播报技能
-
小技能
-
平台能力扩展
-
SDK
-
预览版功能
- 全双工(Preview)
-
APP技能(Preview)
-
-
智能家居开放平台
- 品牌使用规范
-
开发者服务条款
- 新设备开箱通电,默认自动进入配网状态;
- 人工重置设备,例如长按复位键5s;
- 配网状态保持时间建议为30分钟,配网成功后退出配网状态;
-
从小度App删除设备,触发设备重置自动进入配网状态;
- 入网流程中的configuration阶段,音箱只会对取暖器主Element中的Generic OnOff Server Model(Model Id为0x1000(Big Endian))进行设置,取暖器需要将这些设置自动绑定到其他Model;
- 外设默认品类分组为0xC0F4(Big Endian),外设需要自行绑定这个分组,用于控制所有取暖器的场景;
- 用于将设备加入到默认的位置,该位置用户可以在小度App中动态修改为『卧室』、『餐厅』等,每个位置会有一个对应的分组地址(参考基础规范)
- 外设修改分组的时候,音箱向外设发送Config Model Subscription Overwrite消息,Overwrite消息会将默与认分组给覆盖掉,需要外设自行将0xC0F4绑定回来,不然无法控制所有取暖器的场景;
- 开关: Generic OnOff Client Model
- 控制指令具体格式参考SIG Mesh规范;
- 目标温度: Data Trans Client Model(Opcode = 0xFD1C01, AttributeType = 0x010C)
- 加湿开关: Data Trans Client Model(Opcode = 0xFD1C01, AttributeType = 0xF004)
- 屏显: Data Trans Client Model(Opcode = 0xFD1C01, AttributeType = 0x050D)
- 童锁: Data Trans Client Model(Opcode = 0xFD1C01, AttributeType = 0x050C)
- 开关: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x0100)
- 温度: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x010D)
- 目标温度: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x010C)
- 加湿开关: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0xF004)
- 屏显: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x050D)
- 童锁: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x050C)
- 缺水: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x0414)
AttributeType | AttributeValue | Direction | Description |
---|---|---|---|
0x0100 | bool 取暖器开关 | mesh设备发往音箱 | 表示设备的开关 |
0xF004 | bool 加湿开关 | 音箱发往mesh设备 或 mesh设备发往音箱 | 关闭加湿=0x0027、打开加湿=0x00C9 |
0x010C | uint16 目标温度 | 音箱发往mesh设备 或 mesh设备发往音箱 | 开氏温度 乘以 100 |
0x050C | bool 童锁开关 | 音箱发往mesh设备 或 mesh设备发往音箱 | 关闭=0x00、打开=0x01 |
0x010D | uint16 温度 | mesh设备发往音箱 | 开氏温度 乘以 100 |
0x050D | bool 屏显 | 音箱发往mesh设备、或 mesh设备发往音箱 | 关闭=0x00、打开=0x0 |
0x0414 | bool 缺水 | mesh设备发往音箱 | 不缺水=0x00 、缺水状态=0x01 |
- 将取暖器设置到目标温度的指令 AttributeType为0x010C、控制参数为目标温度27摄氏度度,开尔文温度300.15度,AttributeValue为30015,即十六进制表示为753F,假设此时TID的值为1,那么完整的Message部分为0x010C01753F。 由于音箱发给取暖器数据的大小端序为小端序,因此取暖器收到的指令Message部分为0x01010C3F75。 取暖器收到的整体的Mesh消息的Opcode部分为0xFD1C01,因此取暖器收到的整体数据部分为0xFD1C01010C013F75。 取暖器收到以后,需要回复Opcode为Set State Status的消息给音箱,以使得音箱确认消息发送成功(参考基础规范)。
- 将取暖器的加湿开关状态上报 取暖器的加湿开关上报是在取暖器的加湿开关的状态有发生变化时,同步给音箱。使用Opcode = 0xF81C01的消息上报,音箱不需要回复。 以取暖器的加湿开关打开的状态为例,假设此时TID的值为10,那么完整的Message部分为0x0AF00400C9。 由于取暖器发往音箱的数据大小端序为小端序,因此音箱收到的Message数据部分为0x0A04F0C900,整体消息为0xF81C010A04F0C900。
- 取暖器在上电、开机、配网后,上报当前取暖器的状态。
- 取暖器的开关状态、温度、目标温度、加湿开关,屏显打开状态、童锁开关状态有变化时,上报开关状态变化。
- 取暖器的状态只发送给0xF000地址,云端会去重多网关上报场景
- F8状态上报收到预期的FA之后停止发送,若一直没有收到FA消息,发送完预定次数之后停止发送
- 上行去重,即外设状态上报0xF8消息
- 外设状态上报到小度云端,10秒内收到相同的tid,不会重复处理
- tid只检查与上次上报是否一致,不区分大小
- 下行去重,即小度网关发送的0xFD或0xFE控制消息
- 10秒内收到重复tid,不做业务处理,需要回复ack的场景,只回复0xFF ack即可
- 控制回复消息TTL设置为10
- 状态上报TTL设置为10
- 设备端要支持Config Heartbeat Publication Set命令设置心跳参数
- 如果音箱没有通过Config Heartbeat Publication Set命令设置设备心跳间隔,则默认心跳发送间隔16s,每次间隔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流程;
- 需要支持最少32个分组订阅,小度这边会存在多楼层、场景、设备组等组播场景需求;
- 需要支持开关状态的查询,以Generic OnOff Get/Generic OnOff Status方式交互;
- 需要支持蓝牙Mesh规范里面定义的Relay和Proxy特性;
- 检测到proxy连接之后,主动清除本地缓存的sequence number信息,避免app卸载重装或清空数据无法控制的问题;
- 不仅需要支持蓝牙Mesh规范里面的PB-ADV配网方式,还要支持PB-GATT配网方式;
- 取暖器入网的最后一步是设置订阅地址,要求在成功设置订阅地址之后,延迟1s~2s再上报状态;
- 设备在不同场景的发包参数会因为音箱扫描参数不同而存在差异
- ack回复消息,包含标准status消息和0xFF消息,建议adv interval/adv period = 10ms/270ms;
- 状态上报消息,即0xF8消息,建议adv interval/adv period = 10ms/540ms