Check if Scene is fully executed

I have a scene that sets certain colors on my exterior RGB Zigbee bulbs. Unfortunately, when I activate the scene, not all the bulbs change to the right colors (bulbs may be different than each other, e.g. Christmas colors).

At the moment, I just have a Node Red automation loop as part of a larger flow to just activate the scene 5 times with a 5 second delay between loops. This seems to work most of the time, and when bulbs are “missed” from the first activation, they may get picked up on subsequent ones.

However, I was hoping to find a more elegant solution to this rather than a dumb 5x loop, especially since sometimes 5x is not enough. Is there a way to validate each light/switch state and settings against what the scene expects?

There isn’t.

It seems you have flaky hardware or a flaky network, which would be the real issue to fix.

Otherwise, your loop is probably easiest, so just increase the number of loops.

An improvement would be to “assert” on individual entity states using a wait template with a timeout and retry the call if the wait timed out.

There’s also a HACS retry service. I’ve only looked at it, but haven’t used it.

Not sure if this helps, but I had a similar problem when I had too many devices on a Hue hub; the hub couldn’t keep up with all the individual commands coming from HA to set a scene.

2 possible solutions; I first used a 2nd Hue hub which split the workload, but eventually moved to Z2M and had the scene set there instead of HA (so HA issues a single command and Z2M split that into the individual bulb commands).

Oh I’m sure it’s a combination of the flaky hardware. SENGLED bulbs seem to work ok, but I’ve found that I can’t consistently get them to update when commands are sent. The loop works ok, but I guess I need to keep sending.

I asked the question since I can tell that the scene is not fully activated because the bulb rgb status in HA is accurate (still the old color). I was hoping there’s a builtin or easy way to keep activating the scene if any individual components were not at the expected state/config.