I'm looking to use the nrf open mesh on battery powered devices based on nrf51822. I would like to enable the mesh for short periods of time to transmit values (~50 nodes, each with a single 20 byte attribute they are responsible for). I have implemented a time sync protocol using advertising packets, that is working well.
My question is about tuning the network for operation with short intervals. Each node's value is updated once every 10 seconds. I would like to minimize the amount of time the network needs to be running to synchronize that data.
My first crude attempt was to just call rbc_mesh_start() and rbc_mesh_stop() for short periods (400ms) each ten seconds, but I am having trouble with the values getting synchronized.
Should I be modifying the #defines in timeslot.c, considering the small window I'm aiming for?
If you keep all the device with very low duty cycle like that (400ms in 10s) there will be an issue for the network to be able to synchronize.
Note that it's hard to keep all the nodes to be time synchronized and all wake up at the same time because of the clock drift. You may need to configure so that some of the node will have to stay up all the time and act as the relay nodes. Other nodes can be considered leaf/end node and be operate in low power mode. These leaf nodes won't have to forward/relay any packet as it's the job of the relay node. These node can sleep for long time and only wake up and check if any data for it or to send any data.
Thanks. There may be an option of having a smaller set of relays. The entire network will have to send out HB packets (we're trying to estimate proximity of nodes), but those aren't put on the mesh directly.
For a network of 30 or so (< 50) devices that each update a single 20 byte attribute every 10 seconds, randomly arranged in a smaller space (< 1000 sqft), so that distance between any two is usually < 15 ft.
Normal RF noise (a few wifi signals visible, probably only a couple phones active), any rough guess at time to synchronize? And any options that will help reduce that time? As for clock synchronization, the sync happens every minute from a master, and I have listening windows that assume some drift.
I haven't tested or do calculation to have a good guess. But from the nature of the rbc mesh it would take just a few MESH_INTERVAL_MIN_MS to relay a message to all nodes in the network (if all nodes are on all the time)