Creating wireless three way circuits?

I’m trying to use a pair of Zooz ZEN76 800LR Z-Wave Long Range S2 On/Off Switches as wireless three way switch circuit.

The controls work like a three circuit when I use the app but manually toggling the wall switch that isn’t connected to the load does not change the state of the switch connected to the load.

I tried the “Smart Lighting” routine and the default if-then routine. Do I need a special driver?

You need to use the mirror (sync) function in Smart lighting.

You will need 2 Smart lighting routines.

The 1st to mirror 1 to switch 2, and the 2nd to mirror switch 2 to switch 1.

1 Like

I’ve seen reports in the past where this type of two way mirroring/sync’ing using Smartlighting causes a race condition that results in the light being oscillated between on/off. If that happens, it might be better to use Routines so that you can add a precondition that insures the switch to receive the mirroring instruction is in the proper state. So something like:

If Switch 2 is off (precondition)
   Switch 1 is turned on
   Turn on Switch 2
If Switch 1 is off (precondition)
   Switch 2 is turned on
   Turn on Switch 1

and of course you’d need two more Routines for mirroring the off states.

1 Like

The race condition is almost always between two multi level switches (dimmers), and has to do with the physics of those devices. It would be really rare in an on/off relay.


Thanks for the clarification.


You could also try setting a zwave association between the two switches. I believe Zooz’s edge driver for those devices supporting setting associations.


Rare but not impossible. I had set up two switches to mirror each other using two Routines. One time I switched one on then accidentally immediately hit off. And they were off to the races! :laughing:

1 Like

I thought of that too, but was concerned about race conditions.

Honestly, I just don’t worry about race conditions. Thousands of people have used z wave association to create virtual three ways, And at least as many have used them in SmartThings over the years. And probably less than a dozen have reported a race condition.

If you do get a race condition, just use A different automation. There are no safety issues, it’s just annoying.

(For those reading along who don’t know what a race condition is, it’s when switch A and switch B are supposed to stay in synch, But instead, switch A turns on, switch B turns on, And then there’s some confusion (it can happen a couple of different ways.), and both switches start turning on and off.

Like I said, annoying, but not dangerous if they’re just light switches. You might want to take more caution if one of the switches controls a motorized device.

If you need to stop this kind of loop, and either device has an air gap switch, that will do it. Otherwise, if you can, delete the faulty routine, and then look for other alternatives.

And most quality light switches, have a “de bounce“ factor which prevents them from processing multiple requests too close together. So it’s just a really rare condition. I do see it on some tuya dimmers that don’t have a de bounce, but even those are rare these days.

I created a couple of If-Then” routines in the less than friendly iPhone app syncing the two switches to each other with a couple of routines.

The dummy switch toggled the light. Then the light began to slowly cycle on and off i.e. race was created synchronized to a couple of system scan times.

Going back into the app only one routine was found. I deleted it after a couple of attempts but the cycling persists.

I’ll prove a status report but the whole network is acting strangely.

Maybe the new architecture is more prone to race conditions; stranger things have happened. :man_shrugging:t2:

Did you use a precondition so:

If switch A is off (precondition)

If switch B turns on

Turn on switch A.

That normally prevents a race condition. :thinking:

1 Like

Well first I have to admit to being a dumb a… I created those sync routines in the Lighting App. Not the “If-Then” To kill the racing I shutdown the network for awhile. I should have deleted them in the Lightning App.

I’m starting over. I created one switch sync routine that didn’t work. I’ll add the second mirror routine and see if that works. If the racing happens then I’ll add the preroutine you suggest.

Thanks for everyone’s suggestions. I’ll keep you posted on my progress


You can usually stop the cycling cause by the race condition by shutting off power to one or both of the switches, either with the air-gap (if they have one) or by killing power to them at the breaker.

Add the precondition to check the state of switch to be mirrored just to be safe. It doesn’t hurt anything to have it there.


That is part of my stupidity. I tripped the breaker but it continued on possibly because I had some “If-Then” code still active as well.

Usually cutting power will settle everything down but much to my surprise it didn’t. I might have left the switches in conflicting states.

This is embarrassing. I’m a retired control systems guy. I’ve programmed a lot of stuff. To much perhaps, l guess, I’ve gotten sloppy.

1 Like

I’ve resolved my problem with creating a virtual three-wat switch. It turns out that one of the switches had a defective pairing. That combined with a poorly conceived set of initial set of routines prevented me from setting up a relatively easy application. I figured this out after I pulled the dummy switch and bench tested with a LED bulb. There was a fifteen-minute lag in it picking up the state change from manual input.

I excluded the device from the hub and performed a factory reset of the switch. Everything fell into place once I rewrote the routines. I didn’t have to create any decoupling logic to prevent racing.

Thanks everyone for their help and suggestions.