Send command to multiple device in same time problem (zwave)

Hello :slight_smile:

I have 12 Heltun fan coil thermostats Z-wave 230V version (still powered) and now I make some first adjustments in my homey 2023 pro. Homey and thermostats are on my table (1m distance).
I found that when I send command to all 12 thermostats in same time there is problem and some of thermostats dont recieve this command or maybe ignore this command.
I want send command to all thermostats SET FAN MODE TO… low, high, off, etc. but every time 1,2,3,4 RANDOM thermostats stay without change. (see fan-mode-change-problem.jpg)
So I try solve this by adding time delay to each thermsotat +1 second and this now work quite good. But not 100% good. There is still 1 random thermostat from each 5 times for speed change whitch doesnt change speed mode. (see fan-mode-change-solution.jpg")
I dont know why this happens, why homey cannot send command to lot of another devices in same time. Now my homey run only test mode so any another calculations dont run and have full capacity. (I have fear that in future it can be worse)

In our Homey CZ/SK community another people have same problems with sending command to lot off devices (also 433Hmz comunication not only ZWAVE) in same time. and also repaired their flows with adding time delaly.

I want control whole my house and it is litlle bit worrying that this basic thing dont work really good yet.

Answer from homey support was:
When trying to send that many request in one Flow you need the delays because all these messages to all the different devices will cloud the network causing one or more devices to miss their message. It would be better to split the command, that way it shouldn’t miss a device. You could also play around using Advanced Flows and splitting the fans up in groups/rooms and controlling the groups with delays in one Flow.

for me unbelievable that this new 2023 product cannot send 12 bassic commands in same time. (maybe waste of money)

PROBLEM FLOW:

MY SOLUTION: (work only 95%)

So my new flow which works now 100% is send delay command to each thermost two times :smiley:
my flow to change fan mode now looks like:
T1,T2,T3 delay:0sec
T4,T5,T6 delay:1sec
T7,T8,T9 delay:2sec
T10,T11,T12 delay:3sec

T1,T2,T3 delay:9sec
T4,T5,T6 delay:10sec
T7,T8,T9 delay:11sec
T10,T11,T12 delay:12sec

oh my god :smiley:

This time delay for this commands is not good for programmer , because in this delayed time can come new input for change fan mode from another thermostat or from homey program. and then come collision. so I run timmer 20 seconds for this delayed flow. and new change start after this timer reach 0.

I think if another zwave controller can run this without problems or maybe home assistant. Because i have lot of wifi shelly to control my jalousie and i hope this will work better if i send command to close all my jalousie in same time.

Your approach is right to add delays. In order to avoid a collision with a new event you need a helper to ensure the initial event is completed or stopped before acting on the new event.

You are seeing a problem that I think is not related to Homey but the zwave technology. As the controller cannot reach all in time, zwave devices are in a mesh passing on the commands. In our forum and Slack we have very experienced users.

I found 100% success as follows

  1. Limit simultaneous commands. Often there is no real need to switch on certain devices at exactly the same moment. It is your logic against the possibilities of the technology
  2. Always verify the current state of the device, before switching it to a new state. It helps dealing with collisions.
  3. Add helpers. Options are:
  • A boolean: when switching multiple devices after delays, keep checking if the boolean is still true before switching each device.
  • A countdown timer: You can use it to block new events until the countdown is finished, then you start a new action or verify which devices where not switched on. Countdown can also be stopped when you need the new event to take over.
  • A flow with an Advanced Trigger set to sequential execution for on or off will avoid collisions.

Z-wave has a bandwidth of 100kbps, so a message to switch a device on or of just takes mili seconds. The Z-wave protocol is designed to take care of collisions. So with just 12 devises I would not expect problems.
Just like it is no problem when several people on your WiFi network surf the internet.

1 Like

I admit that since HP2023 I have close to zero problems with zwave.
And I am far from a technical specialist on this.

But a mesh / hopping between devices (nodes) works only well if devices are in reasonable range.

Radio bandwidth goes down with a weak connection and if you by chance have those 12 devices far apart from each other and in a row without other zwave devices in the neighborhood then I can imagine it becomes a challenge.

In any case, provided the range is reasonable you should get it to work.
I can only add to start using advanced flows for efficient editing/testing/copying flows and the overview.

BTW: you can easily send a 2-3 commands simultaneously… as per below.
Alternative thought: try having the all in the same zone and turn on the card in the zone, perhaps Homey does some optimisation hidden in the background…

You just learned what asynchronous operations are :slight_smile:
To protect your flows, you can create variable and set it’s value on start to for example “IN_PROGRESS”, and after all operations are done, “READY”.
Then you can check value of this variable if you really don’t want to interrupt sequence.

And to be honest, there is always risk regarding timing, especially in radio controlled devices. You can predict that some device will react in lets say 5ms, but it can be also 3ms or 10ms. It’s matter of scale. I had similar problem when I was working on flow which is responsible for automated light in my bathroom, using door sensor, and motion sensor combined together. I’ve simply set a larger time margin. Because one of the sensors may react earlier than another, but order of sensor activation/deactivation in this case is crucial.

1 Like

hello guys, all my thermostats are located on my table also my homey pro is on same table.

now I made flow whitch now works 100% for me.
I send in my flow to each device 2x same command with time delay.
During this flow I start timer 20 sec. this timer block any another changes. when timer reach 0 and there come another fan mode change during this 20 seconds, this flow run again.

Maybe this comment will help you. I recommend working with advanced flows.