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?
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.
Peter Gombos said:What is the recommended way to stop advertisement but remain the member of the mesh?
By "stop advertising" I assume you mean disabling the proxy functionality? You can disable proxy by setting this define MESH_FEATURE_GATT_PROXY_ENABLED to 0.
The chip variants are very much alike, so it shouldn't cause any issues, Is there a external 32kHz crystal on the "noname modul"?
If you don't you can try switching to the RC Oscillator to test to see if that is the issue?
Honestly I don't know much about the clock source of the module.
Shall I change the bootloader sdk_config.h? I did so but nothing changed
#define NRF_SDH_CLOCK_LF_SRC 0
#define NRF_SDH_CLOCK_LF_ACCURACY 1
The module made by Minew. The doc says: "Integrated DCDC inductor and an external 32.768K crystal oscillator reduce design complexity and BOM cost."
It doesn't help.
As I wrote earlier the module _has_ LF oscillator. This is not the issue.
It is so strange. If I disable the proxy by the "#define MESH_FEATURE_PROXY_ENABLED 0" I have the same assert.
I tried the light switch server example and it behaves the same. The assert happens after couple of seconds.