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

Synchronization of actions between different nodes in a mesh?

Hi, when reading BLE Mesh specs, this paragraph caught my attention:

Messages may support a delay parameter that indicates a delay between receiving a message and starting the state transition. This helps when synchronizing actions of multiple receivers (such as lights) when senders retransmit messages multiple times. Each retransmitted message may indicate a different delay, compensating for the time elapsed since transmitting the first message.

My project could totally use this feature, I'm wondering how this can be done precisely (<=20 ms if possible), that is, let's say I need 6 motors to start rotating at the same time, or else major mechanical mishaps take place, how do I do that, by embedding a hop count of some sort in the message sent over the mesh? Or is there any other way which I am not aware of?

And above everything, how reliable is this? Since if one node fails to receive the message THE FIRST TIME, the outcome could be very, very undesirable?

Parents
  • Hi

    The most common way to synchronize activities across a mesh is to establish a synchronized clock, and use that to schedule actions in the future. Then it doesn't matter how long the packet takes to reach the recipient, as long as it arrives before the scheduled time.

    The mesh model specification includes a mechanism for synchronizing time (see chapter 5 - Times and Scenes), but unfortunately we don't support this in the current mesh implementation.

    As one of the mesh guys pointed out, if you really need to synchronize motors accurately then a mesh is not really a good option. As you can see from the time sync specification they allow for an inaccuracy in the 10ms - 2.5s range, and there is always a chance that a packet to one of the recipients will be delayed or lost, so getting reliable accurate synchronization below 20ms is probably not realistic.

    Best regards
    Torbjørn

Reply
  • Hi

    The most common way to synchronize activities across a mesh is to establish a synchronized clock, and use that to schedule actions in the future. Then it doesn't matter how long the packet takes to reach the recipient, as long as it arrives before the scheduled time.

    The mesh model specification includes a mechanism for synchronizing time (see chapter 5 - Times and Scenes), but unfortunately we don't support this in the current mesh implementation.

    As one of the mesh guys pointed out, if you really need to synchronize motors accurately then a mesh is not really a good option. As you can see from the time sync specification they allow for an inaccuracy in the 10ms - 2.5s range, and there is always a chance that a packet to one of the recipients will be delayed or lost, so getting reliable accurate synchronization below 20ms is probably not realistic.

    Best regards
    Torbjørn

Children
No Data
Related