米家 BLE Mesh 支持的功能
功能示意
- 米家 BLE Mesh 提供了标准且基于 GATT 的直连配网、模组统一 OTA 功能(模组升级功能,SDK 已集成开发者无需开发),同时提供了手机与设备间直连控制接口(标准扩展程序不支持),通过直连控制接口,可实现设备局域网内控制和状态回传;
- BLE Mesh 设备可实现消息上下行,同时非低功耗设备默认支持消息中继功能(低功耗功能设备端由 MI_MESH_LOW_POWER_NODE 宏控制)。
米家 BLE Mesh 网络拓扑
网络拓扑
说明:
米家 BLE Mesh 设备实现远程控制需要有 Mesh 网关,在没有网关时也可根据需要开发蓝牙直连功能控制设备。
- BLE Mesh 设备通过网关能够上、下行消息,因此也支持小爱语控(查询与控制);
- 非低功耗设备间可以中继 Mesh 消息,扩展消息传送距离,但是设备间不能相互控制;
- 为了避免 BLE Mesh 设备状态数据未更新时重复上报给服务器,减轻服务器压力,网关设置了 BLE Mesh 设备属性数据上报过滤规则,属性默认规则:interval(间隔)==86400 ,delta(变化量)== 1,interval 和 delta 满足任意条件即可上报:若默认规则不满足产品需求,可通过线上申请修改。
规则申请
设备在离线原理
类型 | 说明 | 判断阈值 | 离线时间 |
---|---|---|---|
近场设备 | 设备离网关较近的设备,可直接跟网关通信 | > -90db | 1.5min |
远场设备 | 设备离网关较远,通过中继方式与网关通信 | -90db ~ -120db | 42min |
通信消息流
Spec 与 Mesh 的转换关系
插件或小爱音箱语控下发的基于 Spec 的命令,经过云端后由米家 BLE Mesh 网关转换成 Mesh 消息发送给设备。设备主动发送的 Mesh 消息也会由米家 BLE Mesh 网关转换成 Spec 命令后发送给云端。
说明:
服务器 - 网关 - BLE Mesh 设备之间的通信,是一个异步的操作!服务器下发的控制指令,网关会立即回复。
消息下行 -get_properties
get_properties 消息流
BLE Mesh 设备刚绑定时,由于网关没有缓存设备的属性值,此时 App 去获取设备属性值时会报错 -4004。因此,建议设备绑定完成后,主动上报属性值或者 App 重复去获取(一般来说,第一次获取失败后,间隔 1-2s 后再次去获取时可以成功)。
消息下行 -set_properties
set_properties 消息流
消息下行 -action
action 消息流
受包长度限制,BLE Mesh 设备的 action 不能带输出 out 参数,最多只能带 1 个输入 in 参数。
消息上行 -properties_changed
properties_changed 消息流
属性上报网关会缓存,满足 interval 或者 delta 之后网关才会上报到云端。
消息上行 -event_occurred
event_occurred 消息流
网关不对事件缓存,收到 BLE Mesh 设备上报事件后会立即上报到云端。
注意事项
- 功能定义时需要选择“功能定义模板”(固件侧也需要选择开启对应的宏),否则配网时会报 -40 错误。如果模板里面只有“自定义”选项,则证明该品类还不支持 BLE Mesh 接入。
功能定义模板