Is there any way to evaluate the addresses of all mesh network nodes in the nRF51-ble-broadcast-mesh project and send it to the "master device"? I am working against sdk-8-support branch.
Is there any way to evaluate the addresses of all mesh network nodes in the nRF51-ble-broadcast-mesh project and send it to the "master device"? I am working against sdk-8-support branch.
Hi! There is no built-in way to do this, but you could run your own solution on top of it.
First off - do you mean the BLE-advertisement address of each device, or are you referring to mesh-handles as addresses?
If you mean advertisement addresses, you need to be a bit careful. Reporting these addresses to some master device on a single handle would cause conflicting handle-version-data tuples, and some of your devices would get the conflict-event. This can be a really tricky problem to resolve correctly.
For similar issues (like this one), we've recommended assigning one handle per device (randomly, or by some managed scheme), and only have that device sending on that handle. This removes any chance of version-conflicts in the mesh, and your message transfers would be a lot more likely to succeed. This way, you can have each device transmit their own advertisement address on their assigned handle, and you wouldn't have any conflicts. You would have to be a bit careful though - if you send too many packets on too many handles at once, you might over-saturate the mesh, and risk losing some of the packets. This could be solved by increasing the cache size in each device or find a way to keep your devices from transmitting their address at the same time.
Thank you for your fast response. I meant the BLE-advertising address. I use it as a prefix for all commands send to a particular node in the mesh to identitfy the right receiver. As my master device needs all addresses for configuration purposes, it requests the address of all nodes using only one handle. The nodes return the notification after a random lag, thus minimizing conficts. Don't know yet how this behaves in big meshes, but I plan to cluster it then in more than one handle in order to keep the time-window short (thanks to your advice). The master device receives all BLE addresses in a time-window just like all non-mesh-member devices when scanning BLE devices. Some might be missing, which is not so important for my use-case, as the user could request the addresses repeatedly. Love your project, keep up the excellent work!
How can we then get all the handle addresses stored on the device?