“在通过 importMeshNetworks
将 BLE Mesh 网络数据导入新用户小程序时,由于 iOS 系统限制,同一台 BLE Mesh 设备,不同用户获取到的蓝牙 deviceId 不同,导致无法建立代理设备连接。此时需要设备端在配网成功后持续广播 Node Identity
蓝牙广播包,方便小程序插件识别设备节点,更新蓝牙 deviceId 。”
在文档说明中有如上的描述。有几个地方不太明白。
- ios在哪个操作中获取到的deviceid?
- 在BLE Mesh 网络数据导入新用户小程序时,不同用户对同一台BLE Mesh设备获取到的蓝牙deviceid不同? 导入的网络数据中包括网络中所有BLE Mesh设备的deviceid和其他什么信息?
- 为什么“导致无法建立代理设备连接”?
- “更新蓝牙deviceid”怎么理解?
你好,
1. ios在哪个操作中获取到的deviceid?
——————
MeshBLEManager.startScanMeshDevice之后,在MeshBLEManager.onMeshDeviceFound回调里返回的MeshDevice object里获得,参考:https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx013447465d3aa024#meshblemanager-startscanmeshdevice:~:text=MeshDevice-,object,-%E5%B1%9E%E6%80%A7
2. 在BLE Mesh 网络数据导入新用户小程序时,不同用户对同一台BLE Mesh设备获取到的蓝牙deviceid不同? 导入的网络数据中包括网络中所有BLE Mesh设备的deviceid和其他什么信息?
——————
不同手机对同一台BLE Mesh设备获取到的deviceId不同,是由系统在初次扫描到设备的时候随机分配的UUID。
导入的网络数据包括群组信息和节点信息,参考Group和Node的定义:https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx013447465d3aa024#meshnetworkmanager-getgroups:~:text=%E8%BF%94%E5%9B%9E%E5%80%BC-,Array%5BGroup%20object%5D,-%E5%B1%9E%E6%80%A7
3. 为什么“导致无法建立代理设备连接”?
——————
因为同一台mesh设备的deviceId对于不同手机是不同的,举个具体例子,在A手机上,设备deviceId为217AE4BA-3E94-994C-9BFE-8052D1647ADD(叫它deviceId-A),但到了B手机上,设备deviceId就变成了34CF0548-55EA-140F-E387-E9DDC69F40E1。因此在B手机上用deviceId-A是搜不到设备的
4. “更新蓝牙deviceid”怎么理解?
——————
插件在收到Node Identity广播后,可以根据hash值来对应到具体node,从而将这个node的deviceId-A更新为设备在本手机上的deviceId-B