Just a little heads up about your turn OFF part: I believe it will not wait 2 minutes and turn off as soon as no motion detected???
This could be signal issue rather than piston design.
I have 6 light bulb on top of the bathroom mirror and yes they do turn ON one after the other but less than half a second a part. I am not not sure how much delay are you talking about?
Just to test I would recommend create a very simple piston:
If simulated swith turns ON
with light bulbs
do TURN ON
If simulated swith turns OFF
with light bulbs
do TURN OFF
For what it is worth… I often intentionally program tiny pauses between actions. (100ms pause = 10 commands per second) I find the results are much more reliable.
Imagine you have nine friends over, and ask everyone to leave the house at the same instant. There is bound to be a traffic jam!
In my opinion, the smoothest way is a single file line, one after another.
Another advantage of intentionally programming it this way is you can designate the order they turn on. This can have a really cool looking effect if done right. (left to right or middle to extremes etc.)
is about the extent of it. Two global variables so you can easily re-use in other pistons. Having tested in one piston already, I am seriously considering re-doing quite a few of my pistons than control lights this way. The regular method might leave on 1 of 4 bulbs in the hallway, or turn on 5 of 6 lights in the kitchen. The Hue API call by grouping is simply more reliable.
Doing this through webCoRE is never going to see them all come on at the exact same time. The simple fact is the on commands are sent and processed sequentially by ST. This is just how it works and would be the same for any device/switch, etc.
I’m not familiar with the Hue API posted above but it sounds like a solution. Hue likely has a different implementation.