This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Mesh relay enable/disable

Hi!

We would like to install approx. 2000 pcs BLE devices in a mesh network. The device density is quite high (2x5 meters matrix, same level, no objects).

I think only couple of nodes should have relay functionality. Too many relays cause extreme network load, message cache overflow and ineffective network operation.

I plan to enable the relay function in 80 devices only. The distance between relays is 10-15 meters. The number of hops between the longest ends is about 20 hops, so TTL will be set to 24.

I plan to disable the relay, proxy and the advertisement functions in the normal nodes.

Is my approach correct? Will it work? What do you recommend to optimize the network? Shall I play with the retransmission parameters?

The next question is related to enable/disable relay functions: I would like to use the same fw in the nodes. Enable the relay is a configuration parameter. I couldn't find API function to do this. However there are public functions in the mesh source code core/include/network.h like network_opt_get/set. (mesh v5.0)

Is it recommended to use these functions to tune the relay function?

Parents
  • Hi,

    Your approach seems to be fine. Not having all your nodes in the network beeing a relay node is an intended way of doing it. Like you mentioned, having too many relays will cause a huge load on the network and disturbance between the nodes. 

    As for your question regarding the API for enabling/disabling the relay feature, I think you can use it but not entirely sure. I will have to discuss this with the mesh team and come back to you with an answer on Monday.

  • After discussing with our developer it seems using network_opt_get/set directly is not supported, as these are internal APIs. Applications should use mesh_opt_core_adv_set/get with role = CORE_TX_ROLE_RELAY and the correct options struct (enabled = false, or enabled = true in the struct of course to re-enable the relay role). mesh_opt_core_*_get/set are declared in in mesh/core/api/mesh_opt_core.h, and are part of the public, supported API for application use.

Reply
  • After discussing with our developer it seems using network_opt_get/set directly is not supported, as these are internal APIs. Applications should use mesh_opt_core_adv_set/get with role = CORE_TX_ROLE_RELAY and the correct options struct (enabled = false, or enabled = true in the struct of course to re-enable the relay role). mesh_opt_core_*_get/set are declared in in mesh/core/api/mesh_opt_core.h, and are part of the public, supported API for application use.

Children
No Data
Related