Turn off lights on different loads with either switch

I have two lights on separate loads which I’d like to turn on independantly, but if one gets turned off, they both go off.

I’ve been successful with the following code, but it only works when I turn off “Under Cabinet Two”, but does not work if I turn off “Under Cabinet”. As far as I can tell, the setup is identical for both so cannot understand why its not working…thoughts?

Edit:
Troubleshot this a little and its order of operations. I swapped the positions of conditions for cabinet 1 and 2 in reactor and now the other light is having the same effect. Work around?..was trying to build this without any time constraints.

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 8
    System: Vera version 1.7.4832 on Sercomm NA301; loadtime 1579669659; systemReady 1579669674; Lua 5.1; JSON dkjson 1.2
Local time: 2020-01-22T00:34:53-0500; DST=0; Oakville, Ontario Canada
House mode: plugin 1; system 1; tracking on
  Sun data: { "stamp": 2020022, "civdawn": 1579695191, "nautdawn": 1579693095, "sunset": 1579731336, "nautdusk": 1579735307, "latitude": 43.4501, "astrodusk": 1579737345, "longitude": -79.6829, "civdusk": 1579733211, "astrodawn": 1579691057, "sunrise": 1579697066 }
  Geofence: not running
====================================================================================================================================
Under Cabinet Link (#70)
    Version 19082.13 01/22/20 00:34:26
    Message/status: Not tripped
    Condition group "Under Cabinet Link - NULL" (AND)  false as of 00:12:21 <root>
      &-F-group "Cabinet 2 OFF" (AND)  after condn521jss false as of 00:34:41 <grpn521dcl>
      |     &-T-service Under Cabinet Two (69) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [1 => 0 at 00:34:41; T/T as of 00:34:41/00:34:41] <condn521f97>
      |     &-F-service Under Cabinet (67) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [1 => 0 at 00:34:41; F/F as of 00:34:41/00:34:41] <condn521g7d>
      &-F-group "Cabinet 1 OFF" (AND)  after condn521g7d false as of 00:33:56 <grpn521hd8>
      |     &-T-service Under Cabinet (67) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [1 => 0 at 00:34:41; T/T as of 00:34:41/00:34:41] <condn521ikd>
      |     &-F-service Under Cabinet Two (69) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [1 => 0 at 00:34:41; F/F as of 00:34:41/00:34:41] <condn521jss>
    Activity grpn521hd8.true
        Device Under Cabinet Two (69) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Activity grpn521dcl.true
        Device Under Cabinet (67) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Events
        01/22/20 00:33:56 endscene: scene=grpn521hd8.true, sceneName=grpn521hd8.true
        01/22/20 00:33:56 devicewatch: device=69, old="1", name=Under Cabinet Two, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="0"
        01/22/20 00:33:56 condchange: newState=true, cond=condn521f97, oldState=false
        01/22/20 00:33:56 evalchange: newState=true, cond=condn521f97, oldState=false
        01/22/20 00:33:56 condchange: newState=false, cond=condn521jss, oldState=true
        01/22/20 00:33:56 evalchange: newState=false, cond=condn521jss, oldState=true
        01/22/20 00:33:56 condchange: newState=false, cond=grpn521hd8, oldState=true
        01/22/20 00:33:56 evalchange: newState=false, cond=grpn521hd8, oldState=true
        01/22/20 00:34:26 configchange: 
        01/22/20 00:34:33 devicewatch: device=67, old="0", name=Under Cabinet, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="1"
        01/22/20 00:34:33 condchange: newState=true, cond=condn521g7d, oldState=false
        01/22/20 00:34:33 evalchange: newState=true, cond=condn521g7d, oldState=false
        01/22/20 00:34:33 condchange: newState=true, cond=grpn521dcl, oldState=false
        01/22/20 00:34:33 condchange: newState=false, cond=condn521ikd, oldState=true
        01/22/20 00:34:33 evalchange: newState=false, cond=condn521ikd, oldState=true
        01/22/20 00:34:34 devicewatch: device=69, old="0", name=Under Cabinet Two, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="1"
        01/22/20 00:34:34 condchange: newState=false, cond=condn521f97, oldState=true
        01/22/20 00:34:34 evalchange: newState=false, cond=condn521f97, oldState=true
        01/22/20 00:34:34 condchange: newState=false, cond=grpn521dcl, oldState=true
        01/22/20 00:34:34 condchange: newState=true, cond=condn521jss, oldState=false
        01/22/20 00:34:34 evalchange: newState=true, cond=condn521jss, oldState=false
        01/22/20 00:34:37 devicewatch: device=67, old="1", name=Under Cabinet, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="0"
        01/22/20 00:34:37 condchange: newState=false, cond=condn521g7d, oldState=true
        01/22/20 00:34:37 evalchange: newState=false, cond=condn521g7d, oldState=true
        01/22/20 00:34:37 condchange: newState=true, cond=condn521ikd, oldState=false
        01/22/20 00:34:37 evalchange: newState=true, cond=condn521ikd, oldState=false
        01/22/20 00:34:37 condchange: newState=true, cond=grpn521hd8, oldState=false
        01/22/20 00:34:40 devicewatch: device=67, old="0", name=Under Cabinet, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="1"
        01/22/20 00:34:40 condchange: newState=true, cond=condn521g7d, oldState=false
        01/22/20 00:34:40 evalchange: newState=true, cond=condn521g7d, oldState=false
        01/22/20 00:34:40 condchange: newState=false, cond=condn521ikd, oldState=true
        01/22/20 00:34:40 evalchange: newState=false, cond=condn521ikd, oldState=true
        01/22/20 00:34:40 condchange: newState=false, cond=grpn521hd8, oldState=true
        01/22/20 00:34:41 devicewatch: device=69, old="1", name=Under Cabinet Two, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="0"
        01/22/20 00:34:41 condchange: newState=true, cond=condn521f97, oldState=false
        01/22/20 00:34:41 evalchange: newState=true, cond=condn521f97, oldState=false
        01/22/20 00:34:41 condchange: newState=true, cond=grpn521dcl, oldState=false
        01/22/20 00:34:41 evalchange: newState=true, cond=grpn521dcl, oldState=false
        01/22/20 00:34:41 condchange: newState=false, cond=condn521jss, oldState=true
        01/22/20 00:34:41 evalchange: newState=false, cond=condn521jss, oldState=true
        01/22/20 00:34:41 startscene: scene=grpn521dcl.true, sceneName=grpn521dcl.true
        01/22/20 00:34:41 runscene: scene=grpn521dcl.true, sceneName=grpn521dcl.true, group=1, notice=Starting scene group 1
        01/22/20 00:34:41 endscene: scene=grpn521dcl.true, sceneName=grpn521dcl.true
        01/22/20 00:34:41 devicewatch: device=67, old="1", name=Under Cabinet, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="0"
        01/22/20 00:34:41 condchange: newState=false, cond=condn521g7d, oldState=true
        01/22/20 00:34:41 evalchange: newState=false, cond=condn521g7d, oldState=true
        01/22/20 00:34:41 condchange: newState=false, cond=grpn521dcl, oldState=true
        01/22/20 00:34:41 evalchange: newState=false, cond=grpn521dcl, oldState=true
        01/22/20 00:34:41 condchange: newState=true, cond=condn521ikd, oldState=false
        01/22/20 00:34:41 evalchange: newState=true, cond=condn521ikd, oldState=false
    Devices
        ZWave (1) urn:schemas-micasaverde-com:device:ZWaveNetwork:1 (19/0); parent 0; plugin -
        Under Cabinet (67) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -
        Under Cabinet Two (69) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -

There are a few things at play here… your logic sets up a race condition and a logic loop–you can see in the timestamps for the conditions that they are all changing at the same time. Your use of grouping is also deadening one state transition per group (I explain how/why below), which in this case is actually lucky, because it’s probably what prevents an infinite loop and the ReactorSensor throttling itself.

When I think about this, I think “if either light is turned off after either is turned on, turn the other off.” I would structure that like this:

Activities:

  • Switch 1 Turns Off IS TRUE: Turn off switch 2
  • Switch 2 Turns Off IS TRUE: Turn off switch 1

Notice that the “after” restrictions are on the individual “switch status is FALSE” tests.

So the theory of operation here is simple: we have a group “Either Switch On” that goes true whenever either switch is turned on, or both (it’s an OR group). Our test to see if we should turn off a light automatically, then, is simply, is either switch being turned off after either was turned on–after the “Either Switch On” group went true. The activities for those two groups simply turn off the other light (we already know the “active” switch is off–it just changed to that).

This also scales: if you had 3, 5 or 20 switches, you just add an “on” test to the “Switch On” group, and a new “off” group structured the same as the two shown, plus activity. You can turn on any combination of the lights, but when any of them is turned off, all turn off.

Note also that you can’t put both “off” test conditions in a single group and put the after restriction on the group, as you did in your logic, which is also at play in your effort. The reason is this: let’s say you have an OR group with two “off” tests A and B (so A and B are set up to go true when their respective switch is off/Status = 0). Let’s say our starting state is both switches on, so both conditions are false and the group state is false. If we turn the second switch off, B goes true, and the group goes true. Then, if we turn the first switch off, A goes true, but nothing changes on the group. The group is already true. That’s a binary state: true or false only. It cannot be more true. So, because the group is already true, the change in A has no effect on the group’s state, and the timestamp of the group’s state does not change. This is one of the things that affects your “after” restrictions in your attempt: there is always a state in which one of the switches changes will not change the group state, and a timing edge needed in the comparison is lost as a result. That is why the off tests in my example are implemented as two separate groups. You need to be sensitive to the “off” timing of each switch, individually, in this exercise.

Note also: when the activity run succeeds in turning off all the lights, the “Either Switch On” group goes false, and this false transition makes the “Switch is OFF” conditions go false as well (because the dependent/predecessor condition is no longer true)… and this happens as fast as your Vera can make it happen, which generally will be faster than the UI refreshes. So, if you’re watching the status screen waiting for the “Switch is OFF” groups to go true, you probably will not see it. But you will know it did because the timestamps shown on those conditions will change, and of course, the activities will run and the lights turn off.

1 Like

Thanks worked perfectly in a scenario where I had two switches.

Now tried it on another location with 3 switches, and struggling. I’ve realized this is because of exactly what you stated above, about a group can’t become more true. Not sure how to structure with more than two however.

Here is what I did, it works when all three lights are on, but does not work when only 2 lights are on.

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 8
    System: Vera version 1.7.4832 on Sercomm NA301; loadtime 1580694703; systemReady 1580694721; Lua 5.1; JSON dkjson 1.2
Local time: 2020-02-02T21:46:49-0500; DST=0; Oakville, Ontario Canada
House mode: plugin 1; system 1; tracking on
  Sun data: { "stamp": 2020033, "civdawn": 1580645039, "nautdawn": 1580642986, "sunset": 1580682621, "nautdusk": 1580686496, "latitude": 43.4501, "astrodusk": 1580688506, "longitude": -79.6829, "civdusk": 1580684443, "astrodawn": 1580640975, "sunrise": 1580646861 }
  Geofence: not running
====================================================================================================================================
Kitchen Link (#76)
    Version 19082.6 02/02/20 21:46:10
    Message/status: Not tripped
    Condition group "Kitchen Link - NULL" (AND)  false as of 21:37:35 <root>
      &-T-group "Any Switch On" (OR)  TRUE as of 21:37:48 <grpnlzoqvg>
      |     |-F-service Kitchen (74) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [1 => 0 at 21:37:35; F/F as of 21:37:35/21:37:35] <condnlzowrd>
      |     |-T-service Table (73) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [0 => 1 at 21:38:12; T/T as of 21:38:12/21:38:12] <condnlzoxjs>
      |     |-T-service Pantry (75) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [0 => 1 at 21:37:48; T/T as of 21:37:48/21:37:48] <condnlzquwd>
      &-F-group "Kitchen OFF" (AND)  false as of 21:38:12 <grpnlzosgb>
      |     &-T-housemode in 1,3 [1 at 20:42:28; T/T as of 20:42:28/20:42:28] <condnlzp2c4>
      |     &-F-group "Pantry Table OFF" (OR)  after grpnlzoqvg false as of 21:38:12 <grpnlzsex2>
      |     |     |-F-service Pantry (75) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [0 => 1 at 21:37:48; F/F as of 21:37:48/21:37:48] <condnlzu1w7>
      |     |     |-F-service Table (73) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [0 => 1 at 21:38:12; F/F as of 21:38:12/21:38:12] <condnlzu2gy>
      &-F-group "Table OFF" (AND)  false as of 21:37:35 <grpnlzot92>
      |     &-T-housemode in 1,3 [1 at 20:42:28; T/T as of 20:42:28/20:42:28] <condnlzp5v5>
      |     &-F-group "Kichen Pantry OFF" (OR)  after grpnlzoqvg false as of 21:37:35 <grpnlzshji>
      |     |     |-T-service Kitchen (74) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [1 => 0 at 21:37:35; T/T as of 21:37:35/21:37:35] <condnlzu3qs>
      |     |     |-F-service Pantry (75) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [0 => 1 at 21:37:48; F/F as of 21:37:48/21:37:48] <condnlzu4cr>
      &-F-group "Pantry OFF" (AND)  false as of 21:37:35 <grpnlzounq>
      |     &-T-housemode in 1,3 [1 at 20:42:28; T/T as of 20:42:28/20:42:28] <condnlzp7j5>
      |     &-F-group "Kitchen Table OFF" (OR)  after grpnlzoqvg false as of 21:37:35 <grpnlzsjsz>
      |     |     |-T-service Kitchen (74) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [1 => 0 at 21:37:35; T/T as of 21:37:35/21:37:35] <condnlzu5v2>
      |     |     |-F-service Table (73) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [0 => 1 at 21:38:12; F/F as of 21:38:12/21:38:12] <condnlzu6f5>
    Activity grpnlzounq.true
        Device Pantry (75) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Activity grpnlzosgb.true
        Device Kitchen (74) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Activity grpnlzot92.true
        Device Table (73) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Events
        02/02/20 21:38:02 condchange: newState=false, cond=condnlzoxjs, oldState=true
        02/02/20 21:38:02 evalchange: newState=false, cond=condnlzoxjs, oldState=true
        02/02/20 21:38:02 condchange: newState=true, cond=condnlzu2gy, oldState=false
        02/02/20 21:38:02 evalchange: newState=true, cond=condnlzu2gy, oldState=false
        02/02/20 21:38:02 condchange: newState=true, cond=grpnlzsex2, oldState=false
        02/02/20 21:38:02 evalchange: newState=true, cond=grpnlzsex2, oldState=false
        02/02/20 21:38:02 condchange: newState=true, cond=grpnlzosgb, oldState=false
        02/02/20 21:38:02 evalchange: newState=true, cond=grpnlzosgb, oldState=false
        02/02/20 21:38:02 condchange: newState=true, cond=condnlzu6f5, oldState=false
        02/02/20 21:38:02 evalchange: newState=true, cond=condnlzu6f5, oldState=false
        02/02/20 21:38:02 startscene: scene=grpnlzosgb.true, sceneName=grpnlzosgb.true
        02/02/20 21:38:02 runscene: scene=grpnlzosgb.true, sceneName=grpnlzosgb.true, group=1, notice=Starting scene group 1
        02/02/20 21:38:02 endscene: scene=grpnlzosgb.true, sceneName=grpnlzosgb.true
        02/02/20 21:38:04 devicewatch: device=73, old="0", name=Table, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="1"
        02/02/20 21:38:04 condchange: newState=true, cond=condnlzoxjs, oldState=false
        02/02/20 21:38:04 evalchange: newState=true, cond=condnlzoxjs, oldState=false
        02/02/20 21:38:04 condchange: newState=false, cond=condnlzu2gy, oldState=true
        02/02/20 21:38:04 evalchange: newState=false, cond=condnlzu2gy, oldState=true
        02/02/20 21:38:04 condchange: newState=false, cond=grpnlzsex2, oldState=true
        02/02/20 21:38:04 evalchange: newState=false, cond=grpnlzsex2, oldState=true
        02/02/20 21:38:04 condchange: newState=false, cond=grpnlzosgb, oldState=true
        02/02/20 21:38:04 evalchange: newState=false, cond=grpnlzosgb, oldState=true
        02/02/20 21:38:04 condchange: newState=false, cond=condnlzu6f5, oldState=true
        02/02/20 21:38:04 evalchange: newState=false, cond=condnlzu6f5, oldState=true
        02/02/20 21:38:08 devicewatch: device=73, old="1", name=Table, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="0"
        02/02/20 21:38:08 condchange: newState=false, cond=condnlzoxjs, oldState=true
        02/02/20 21:38:08 evalchange: newState=false, cond=condnlzoxjs, oldState=true
        02/02/20 21:38:08 condchange: newState=true, cond=condnlzu2gy, oldState=false
        02/02/20 21:38:08 evalchange: newState=true, cond=condnlzu2gy, oldState=false
        02/02/20 21:38:08 condchange: newState=true, cond=grpnlzsex2, oldState=false
        02/02/20 21:38:08 evalchange: newState=true, cond=grpnlzsex2, oldState=false
        02/02/20 21:38:08 condchange: newState=true, cond=grpnlzosgb, oldState=false
        02/02/20 21:38:08 evalchange: newState=true, cond=grpnlzosgb, oldState=false
        02/02/20 21:38:08 condchange: newState=true, cond=condnlzu6f5, oldState=false
        02/02/20 21:38:08 evalchange: newState=true, cond=condnlzu6f5, oldState=false
        02/02/20 21:38:08 startscene: scene=grpnlzosgb.true, sceneName=grpnlzosgb.true
        02/02/20 21:38:08 runscene: scene=grpnlzosgb.true, sceneName=grpnlzosgb.true, group=1, notice=Starting scene group 1
        02/02/20 21:38:08 endscene: scene=grpnlzosgb.true, sceneName=grpnlzosgb.true
        02/02/20 21:38:12 devicewatch: device=73, old="0", name=Table, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="1"
        02/02/20 21:38:12 condchange: newState=true, cond=condnlzoxjs, oldState=false
        02/02/20 21:38:12 evalchange: newState=true, cond=condnlzoxjs, oldState=false
        02/02/20 21:38:12 condchange: newState=false, cond=condnlzu2gy, oldState=true
        02/02/20 21:38:12 evalchange: newState=false, cond=condnlzu2gy, oldState=true
        02/02/20 21:38:12 condchange: newState=false, cond=grpnlzsex2, oldState=true
        02/02/20 21:38:12 evalchange: newState=false, cond=grpnlzsex2, oldState=true
        02/02/20 21:38:12 condchange: newState=false, cond=grpnlzosgb, oldState=true
        02/02/20 21:38:12 evalchange: newState=false, cond=grpnlzosgb, oldState=true
        02/02/20 21:38:12 condchange: newState=false, cond=condnlzu6f5, oldState=true
        02/02/20 21:38:12 evalchange: newState=false, cond=condnlzu6f5, oldState=true
        02/02/20 21:46:10 configchange: 
    Devices
        ZWave (1) urn:schemas-micasaverde-com:device:ZWaveNetwork:1 (19/0); parent 0; plugin -
        Table (73) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -
        Kitchen (74) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -
        Pantry (75) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -

Don’t add Pantry to the other off groups. Each off group should only test its own switch. The actions for each group should turn off all of the other switches.

Thanks, works perfectly!

Here is the updated logic summary report for anyone who may need it:

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 8
    System: Vera version 1.7.4832 on Sercomm NA301; loadtime 1580763250; systemReady 1580763267; Lua 5.1; JSON dkjson 1.2
Local time: 2020-02-03T15:59:19-0500; DST=0; Oakville, Ontario Canada
House mode: plugin 1; system 1; tracking on
  Sun data: { "stamp": 2020034, "civdawn": 1580731377, "nautdawn": 1580729328, "sunset": 1580769103, "nautdusk": 1580772969, "latitude": 43.4501, "astrodusk": 1580774978, "longitude": -79.6829, "civdusk": 1580770920, "astrodawn": 1580727320, "sunrise": 1580733194 }
  Geofence: not running
====================================================================================================================================
Kitchen Link (#76)
    Version 19082.8 02/03/20 15:29:09
    Message/status: Not tripped
    Condition group "Kitchen Link - NULL" (AND)  false as of 10:23:44 <root>
      &-F-group "Any Switch On" (OR)  false as of 15:30:05 <grpnlzoqvg>
      |     |-F-service Kitchen (74) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [1 => 0 at 15:30:05; F/F as of 15:30:05/15:30:05] <condnlzowrd>
      |     |-F-service Table (73) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [1 => 0 at 15:30:05; F/F as of 15:30:05/15:30:05] <condnlzoxjs>
      |     |-F-service Pantry (75) urn:upnp-org:serviceId:SwitchPower1/Status = 1 [1 => 0 at 15:30:05; F/F as of 15:30:05/15:30:05] <condnlzquwd>
      &-F-group "Kitchen OFF" (AND)  after grpnlzoqvg false as of 15:30:05 <grpnlzosgb>
      |     &-T-housemode in 1,3 [2 => 1 at 14:20:09; T/T as of 14:20:09/14:20:09] <condnlzp2c4>
      |     &-T-service Kitchen (74) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [1 => 0 at 15:30:05; T/T as of 15:30:05/15:30:05] <condnlzu1w7>
      &-F-group "Table OFF" (AND)  after grpnlzoqvg false as of 10:23:44 <grpnlzot92>
      |     &-T-housemode in 1,3 [2 => 1 at 14:20:09; T/T as of 14:20:09/14:20:09] <condnlzp5v5>
      |     &-T-service Table (73) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [1 => 0 at 15:30:05; T/T as of 15:30:05/15:30:05] <condnlzu3qs>
      &-F-group "Pantry OFF" (AND)  after grpnlzoqvg false as of 15:30:05 <grpnlzounq>
      |     &-T-housemode in 1,3 [2 => 1 at 14:20:09; T/T as of 14:20:09/14:20:09] <condnlzp7j5>
      |     &-T-service Pantry (75) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [1 => 0 at 15:30:05; T/T as of 15:30:05/15:30:05] <condnlzu5v2>
    Activity grpnlzounq.true
        Device Kitchen (74) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
        Device Table (73) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Activity grpnlzosgb.true
        Device Pantry (75) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
        Device Table (73) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Activity grpnlzot92.true
        Device Kitchen (74) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
        Device Pantry (75) action urn:upnp-org:serviceId:SwitchPower1/SetTarget( newTargetValue="0" )
    Events
        02/03/20 15:54:22 reload: notice=Luup reload
        02/03/20 15:54:22 start: 
    Devices
        ZWave (1) urn:schemas-micasaverde-com:device:ZWaveNetwork:1 (19/0); parent 0; plugin -
        Table (73) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -
        Kitchen (74) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -
        Pantry (75) urn:schemas-upnp-org:device:BinaryLight:1 (3/0); parent 1; plugin -
1 Like