I FINALLY have a working, simple, and generic piston that will sync the switch state and levels of a specified group of dimmer switches without causing the ‘ping-pong’ event looping:
Almost every other variation that I tried caused event loops. I attempted to use locks, waits, global timestamps, etc. with little luck and much frustration. I put this together as an extremely simple example of how to reproduce my problem and it actually ended up working.
However, I would still like to know if there is a way to explicitly trigger a device event programmatically without causing any pistons listening for that event to trigger. Simply put, I’d like to be able to specify in a piston whether the event triggered should or should not cascade.
I suspect the reason that this example works is because I’m triggering the events as a group rather than looping through each device individually as I have done in other variations. I can’t be sure, and don’t say that authoritatively.