I have a 3 way switch that is made up of 2 Inovelli Red dimmers. They are tied together via associations on params 2, 3, and 4 for both of them. The Front Door switch is the Master and the Living Room Front Door switch is the Slave.
I have params 1-4 for both as 2, 2, 0, 0. Param 12 on the Front Door (Master) is 11 and Param 12 on the Living Room Front Door Switch (Slave) is 15.
I set up Button Controller rules that says if the Front Door is double clicked down (i.e. 2 held) then unlock the front door and turn the front hall lights off with a 3 second delay. I have a similar double pushed button controller rule for the Living Room Front Hall switch, except I put the delay at 5 seconds as it is at the far end of the hall to the front door.
Sometimes both commands (unlocking the door and turning off the front hall lights) don't work and sometimes, particularly with the Living Room Front Hall switch, they fire in reverse order from the rule, i.e. the lights go off before the front door unlocks).
Here is a screen shot of how I have the rule set up for the Living Room Front Door switch (Slave):
Is there a way to be sure they get fired in the correct order? Or at least be sure they respond in the right order?
Also, you may notice I have a 1 pushed rule. I need that despite the association because I have have a 7 pushed rule (the config/favorite button) that sets the front hall lights to 35%. Without the 1 pushed rule, if I pushed the config/favorite button and then wanted the lights to go to 100% I would otherwise have to turn the light off and then on or hold the dimmer.
The commands are sent in the order you specify in your actions. The action are essentially an ordered script. You can turn on action logging to verify this.
What is likely happening is one possibility you're alluding to, that the devices just happen to be responding at various speeds. (The lock in particular will likely respond at various speeds given that it's "sleepy" and has to catch a special message to wake up and get the real command, but I think the maximum duration between listens is one second per spec, assuming Z-Wave, and some devices may do more frequently.) It's not clear to me exactly why this is a problem since they should still happen at more or less the same time, so depending on what issie you're really trying to address, there may be different approaches you could take. An easy one that will probably do what you want 99% of the time is just putting a delay between the two actions, maybe one or two seconds or so.
If you truly want to wait for the device to "respond," you'd have to use a "Wait for expression" in your actions before going to the next. This would feed off the idea that actions generally run commands on a device and that the effect of that command will eventually be seen in an event, which will cause a device attribute to become a specific state. That state can then be tested as part of an expression (condition). I'm using "expression" instead of "event" here because that would allow proceeding if the device happens to have already been in that state, but either could work, depending on what you want. Both are likely overkill, IMHO.
You can't really control device response times when command are sent. Each Device takes action when they process the command and (if configured) then send notification of change back to the hub.
(When you say "respond in the right order", you either mean execute the actions at the devices in order or you mean send the notification back to the hub after the action is executed in a particular order.. but the lights and the door don't know about each other's actions when the commands come separately from the hub to each one.)