How to recheck conditions regardless of state change?

How do I trigger a reactor sensor to re-evaluate and execute actions daily at a certain time?

I just setup a reactor sensor which changes my thermostat based on the temperature outside:

  • If outside temp > 23 then, cooling on and temp set 22.
  • If outside temp <=23 and >=20 then, off and fan only.
  • If outside temp < 20, then heating on and temp set 23.

The problem is, these only trigger when the temp changes between 19-24 C, and someone may change the thermostat manually during the day.

Thanks!

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 25
    System: Vera version 1.7.1040 on MiCasaVerde VeraLite; loadtime 1573796706; systemReady 1573796723; Lua 5.1; JSON dkjson 1.2
Local time: 2019-11-15T00:55:44-0500; DST=0; Oakville, Ontario Canada
House mode: plugin 1; system 1; tracking off
  Sun data: { "stamp": 2019319, "civdawn": 1573818074, "nautdawn": 1573816000, "sunset": 1573854886, "nautdusk": 1573858809, "latitude": 43.4501, "astrodusk": 1573860834, "longitude": -79.6829, "civdusk": 1573856735, "astrodawn": 1573813975, "sunrise": 1573819923 }
  Geofence: not running
====================================================================================================================================
Thermostat Control (#52) tripped
    Version 19082.6 11/15/19 00:43:16
    Message/status: Tripped
    Condition group "Thermostat Control" (OR)  TRUE as of 11-13.21:26:43 <root>
      |-F-group "Cooling On" (AND)  false as of 11-13.21:26:43 <grpkeaogii>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature > 23 [2.0 => 1.0 at 18:22:28; F/F as of 11-13.21:26:43/11-13.21:26:43] <condkeapfob>
      |-F-group "Fan Only" (AND)  false as of 11-13.21:26:43 <grpkeanbtj>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 23 [2.0 => 1.0 at 18:22:28; T/T as of 11-13.21:26:43/11-13.21:26:43] <condkeaqsh6>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 20 [2.0 => 1.0 at 18:22:28; F/F as of 11-13.21:26:43/11-13.21:26:43] <condkeasmqe>
      |-T-group "Heating On" (AND)  TRUE as of 11-13.21:26:43 <grpkeaofqv>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 20 [2.0 => 1.0 at 18:22:28; T/T as of 11-13.21:26:43/11-13.21:26:43] <condkeau3zn>
    Activity grpkeanbtj.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="Off" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaofqv.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="HeatOn", NewHeatSetpoint="23" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaogii.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="CoolOn", NewCoolSetpoint="22" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Events
        11/15/19 00:45:18 reload: notice=Luup reload
        11/15/19 00:45:18 start: 
    Devices
        Virtual Outdoor Temp (43) urn:schemas-micasaverde-com:device:VOTS:1 (17/-1); parent 0; plugin -

For specific times, add Date/Time conditions. For periodic, add an Interval condition. You can put these in a separate group called “Schedule”. Their existence will be enough for all of the rules to be checked when their time edges are handled–they don’t have to be combined into your existing logic tightly (i.e. you don’t have to AND or OR them in with the other conditions in this case). But forcing periodic evaluations may not be the best approach, as it leaves the potential for the operating mode and setpoint to be inconsistent with goal for long periods of time.

The approach that strikes me as best would be to combine your test conditions with state tests of the device. For example, if outside temp > 23 *and* ( cooling is not on or setpoint is not 22 ). Approaching the logic this way ensures that things are set the way you want for the conditions. My steps would be to first rename “Thermostat control” to “Thermostat conditions” or something to that effect, and make it a NUL group. Then, I would add a new group at root (sibling to “Thermostat conditions”, not child) called “Thermostat Operations”. Within that, I would add a subgroup:

  • Group “Thermostat Operations” – NUL
    • Group “Task Cooling On” – AND
      • Group State “(this ReactorSensor)” “Cooling On” “is TRUE”
      • Group “Thermostat Cooling State” – OR
        • Device State “thermostat” “ModeStatus” “not equals” “Cooling”
        • Device State “thermostat” “Cooling Setpoint” “not equals” 22

Then move the actions from the “Cooling On” activity to the new “Task Cooling On” group.

This is moving into Modular Logic. The Group State condition is used to check the result of the group you already have, and combining it with tests of the thermostat’s actual operating state and setpoint to see if work needs to be done. If cooling is needed and the thermostat settings aren’t a match, the actions fire.

And then same pattern for the other two conditions. Yes, that’s more complicated, but it will always immediately and delay or intervention set the thermostat to the desired state/mode.

Excellent thanks. I think I will implement the time stamp because I do want to have the ability to change the set point from time to time, and know that it will reset the next day, even if it was placed on “hold”.

So I’m a little confused on why adding the schedule group will trigger a check of the other groups?

If I understand correctly, the suggestion was:

  • Group “Thermostat Control” - OR
    • Group – “Schedule” - AND
    • Group – “Cooling on” – AND
    • Group – “Fan Only” – AND
    • Group – “ Heating On” - AND

In this setup, I’d have thought there was no activity assigned to “Schedule” so nothing would happen.

When the edges of a time condition are handled, all other conditions are re-evaluated. No actions needed.

Perfect thanks Patrick! As always appreciate the quick feedback!

So, gave this a shot and set the time to interval every 1 minute as a check, and thermostat is not updating.
I see the status indicator in reactor flicking green every minute.

I tried updating the activities slightly from a single device action “set thermostat mode” which has heat and temperature fields. to two actions which are set “set thermostat mode” and “set current setpoint”.

That didn’t work either.

Also tried changing on the thermostat directly from Permanent Hold to temporary hold…didn’t work.

Interesting that it does not display “current value”. So not sure I’m using the correct fields. Any way to poll the thermostat to return its current values so I can find the correct field…or is there another problem?

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 25
    System: Vera version 1.7.1040 on MiCasaVerde VeraLite; loadtime 1573796706; systemReady 1573796723; Lua 5.1; JSON dkjson 1.2
Local time: 2019-11-15T10:42:49-0500; DST=0; Oakville, Ontario Canada
House mode: plugin 1; system 1; tracking off
  Sun data: { "stamp": 2019319, "civdawn": 1573818074, "nautdawn": 1573816000, "sunset": 1573854886, "nautdusk": 1573858809, "latitude": 43.4501, "astrodusk": 1573860834, "longitude": -79.6829, "civdusk": 1573856735, "astrodawn": 1573813975, "sunrise": 1573819923 }
  Geofence: not running
====================================================================================================================================
Thermostat Control (#52) tripped
    Version 19082.10 11/15/19 09:59:26
    Message/status: Tripped
    Condition group "Thermostat Control" (OR)  TRUE as of 11-13.21:26:43 <root>
      |-F-group "Schedule" (AND)  false as of 10:42:01 <grpkgf7xgt>
      |     &-F-interval { "type": "interval", "mins": 1, "id": "condkgf88yk", "hours": 0, "days": 0, "basetime": "02,00" } [1573832460 => 1573832520 at 10:42:00; F/F as of 10:42:01/10:42:01] <condkgf88yk>
      |-F-group "Cooling On" (AND)  false as of 11-13.21:26:43 <grpkeaogii>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature > 23 [1.0 => 0.0 at 07:45:22; F/F as of 11-13.21:26:43/11-13.21:26:43] <condkeapfob>
      |-F-group "Fan Only" (AND)  false as of 11-13.21:26:43 <grpkeanbtj>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 23 [1.0 => 0.0 at 07:45:22; T/T as of 11-13.21:26:43/11-13.21:26:43] <condkeaqsh6>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 20 [1.0 => 0.0 at 07:45:22; F/F as of 11-13.21:26:43/11-13.21:26:43] <condkeasmqe>
      |-T-group "Heating On" (AND)  TRUE as of 11-13.21:26:43 <grpkeaofqv>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 20 [1.0 => 0.0 at 07:45:22; T/T as of 11-13.21:26:43/11-13.21:26:43] <condkeau3zn>
    Activity grpkeanbtj.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="Off" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaofqv.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="HeatOn" )
        Device Thermostat (3) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="23" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaogii.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="CoolOn" )
        Device Thermostat (3) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="22" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Events
        11/15/19 10:36:01 condchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:36:01 evalchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:37:00 condchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:37:00 evalchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:37:00 condchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:37:00 evalchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:37:01 condchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:37:01 evalchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:37:01 condchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:37:01 evalchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:38:00 condchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:38:00 evalchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:38:00 condchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:38:00 evalchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:38:01 condchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:38:01 evalchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:38:01 condchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:38:01 evalchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:39:00 condchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:39:00 evalchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:39:00 condchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:39:00 evalchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:39:01 condchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:39:01 evalchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:39:01 condchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:39:01 evalchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:40:00 condchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:40:00 evalchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:40:00 condchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:40:00 evalchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:40:01 condchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:40:01 evalchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:40:01 condchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:40:01 evalchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:41:00 condchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:41:00 evalchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:41:00 condchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:41:00 evalchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:41:01 condchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:41:01 evalchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:41:01 condchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:41:01 evalchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:42:00 condchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:42:00 evalchange: newState=true, cond=condkgf88yk, oldState=false
        11/15/19 10:42:00 condchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:42:00 evalchange: newState=true, cond=grpkgf7xgt, oldState=false
        11/15/19 10:42:01 condchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:42:01 evalchange: newState=false, cond=condkgf88yk, oldState=true
        11/15/19 10:42:01 condchange: newState=false, cond=grpkgf7xgt, oldState=true
        11/15/19 10:42:01 evalchange: newState=false, cond=grpkgf7xgt, oldState=true
    Devices
        Virtual Outdoor Temp (43) urn:schemas-micasaverde-com:device:VOTS:1 (17/-1); parent 0; plugin -

Is it really 1.0 degrees outside? That’s what your sensor rules are seeing.

Also making the conditions reevaluate does not force the actions to run. Actions are only run when group state changes, so if the conditions yield the same results as before, no actions are (re)performed.

I see some of your states are a couple of days old. Disable and re-enable the ReactorSensor to resync it.

Yup its actually 1C outside. It was -5C a day or two ago.

So If I read you correctly, to get the daily reset to work, I need the time condition part of each group.

I think the states are days old because the temp hasn’t risen above 20C since I added this RS. You’ll notice the schedule state was refreshing by the minute, but the rest didn’t change.

I reset it anyway to see if that makes it work.

Edit:
Nope didn’t work.
But what DID work was moving the time intervals to each of the groups.

  • Group “Thermostat Control” – NULL
    • Group – “Cooling on”, - AND
      • If outside temp > 23
      • Interval Daily
    • Group – “Fan Only”, -AND
      • If outside temp <=23 and >=20
      • Interval daily.
    • Group – “ Heating On” - AND
      • If outside temp < 20
      • Interval daily.

Disable/enable specifically (not Restart) dumps all prior state, so it would fire actions to get the ball rolling after the days-old condition states were reset. Did you disable/enable, or just restart?

A side effect of what you’ve done is now it will only change the thermostat once a day, so you’ve seriously blunted its temperature response.

Good point. I’ll try again

Yes tried disable/enable…didn’t work.

When I have it set to a 1 minute interval to test. I see it firing, but nothing happens to the thermostat.

When I disable/enable, it does change the thermostat, but that is the only time it changes the termperature, then I manually change the temp to see if it works again after 1 minute…nothing happens…puzzler.

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 25
    System: Vera version 1.7.1040 on MiCasaVerde VeraLite; loadtime 1574097508; systemReady 1574097522; Lua 5.1; JSON dkjson 1.2
Local time: 2019-11-18T12:23:18-0500; DST=0; Oakville, Ontario Canada
House mode: plugin 1; system 1; tracking off
  Sun data: { "stamp": 2019322, "civdawn": 1574077492, "nautdawn": 1574075406, "sunset": 1574113925, "nautdusk": 1574117875, "latitude": 43.4501, "astrodusk": 1574119907, "longitude": -79.6829, "civdusk": 1574115789, "astrodawn": 1574073374, "sunrise": 1574079356 }
  Geofence: not running
====================================================================================================================================
Thermostat Control (#52)
    Version 19082.19 11/18/19 12:20:36
    Message/status: Not tripped
    Condition group "Thermostat Control" (NUL)  false as of n/a <root>
      Z-F-group "Cooling On" (AND)  false as of 12:22:19 <grpkeaogii>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature > 23 [3.0 at 12:22:19; F/F as of 12:22:19/12:22:19] <condkeapfob>
      Z-F-group "Fan Only" (AND)  false as of 12:22:19 <grpkeanbtj>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 23 [3.0 at 12:22:19; T/T as of 12:22:19/12:22:19] <condkeaqsh6>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 20 [3.0 at 12:22:19; F/F as of 12:22:19/12:22:19] <condkeasmqe>
      Z-T-group "Heating On" (AND)  TRUE as of 12:22:19 <grpkeaofqv>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 20 [3.0 at 12:22:19; T/T as of 12:22:19/12:22:19] <condkeau3zn>
      Z-F-group "Schedule" (AND)  false as of 12:23:01 <grpkkwjb92>
      |     &-F-interval { "type": "interval", "mins": 1, "id": "condkkwjh8f", "hours": 0, "days": 0 } [1574097739 => 1574097780 at 12:23:00; F/F as of 12:23:01/12:23:01] <condkkwjh8f>
    Activity grpkeanbtj.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="Off" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaofqv.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="HeatOn", NewHeatSetpoint="23" )
        Device Thermostat (3) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="23" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaogii.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="CoolOn", NewCoolSetpoint="22" )
        Device Thermostat (3) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="22" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Events
        11/18/19 12:21:11 endscene: scene=grpkeaofqv.true, sceneName=grpkeaofqv.true
        11/18/19 12:21:12 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:21:12 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:21:12 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 12:21:12 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 12:22:00 condchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 12:22:00 evalchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 12:22:00 condchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 12:22:00 evalchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 12:22:01 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:22:01 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:22:01 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 12:22:01 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 12:22:04 action: action=SetEnabled, state=0
        11/18/19 12:22:18 action: action=SetEnabled, state=1
        11/18/19 12:22:18 action: action=Restart
        11/18/19 12:22:18 start: 
        11/18/19 12:22:19 condchange: newState=false, cond=condkeapfob
        11/18/19 12:22:19 evalchange: newState=false, cond=condkeapfob
        11/18/19 12:22:19 condchange: newState=false, cond=grpkeaogii
        11/18/19 12:22:19 evalchange: newState=false, cond=grpkeaogii
        11/18/19 12:22:19 condchange: newState=true, cond=condkeaqsh6
        11/18/19 12:22:19 evalchange: newState=true, cond=condkeaqsh6
        11/18/19 12:22:19 condchange: newState=false, cond=condkeasmqe
        11/18/19 12:22:19 evalchange: newState=false, cond=condkeasmqe
        11/18/19 12:22:19 condchange: newState=false, cond=grpkeanbtj
        11/18/19 12:22:19 evalchange: newState=false, cond=grpkeanbtj
        11/18/19 12:22:19 condchange: newState=true, cond=condkeau3zn
        11/18/19 12:22:19 evalchange: newState=true, cond=condkeau3zn
        11/18/19 12:22:19 condchange: newState=true, cond=grpkeaofqv
        11/18/19 12:22:19 evalchange: newState=true, cond=grpkeaofqv
        11/18/19 12:22:19 condchange: newState=true, cond=condkkwjh8f
        11/18/19 12:22:19 evalchange: newState=true, cond=condkkwjh8f
        11/18/19 12:22:19 condchange: newState=true, cond=grpkkwjb92
        11/18/19 12:22:19 evalchange: newState=true, cond=grpkkwjb92
        11/18/19 12:22:19 startscene: scene=grpkeaofqv.true, sceneName=grpkeaofqv.true
        11/18/19 12:22:19 runscene: scene=grpkeaofqv.true, sceneName=grpkeaofqv.true, group=1, notice=Starting scene group 1
        11/18/19 12:22:19 endscene: scene=grpkeaofqv.true, sceneName=grpkeaofqv.true
        11/18/19 12:22:20 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:22:20 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:22:20 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 12:22:20 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 12:23:00 condchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 12:23:00 evalchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 12:23:00 condchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 12:23:00 evalchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 12:23:01 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:23:01 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 12:23:01 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 12:23:01 evalchange: newState=false, cond=grpkkwjb92, oldState=true
    Devices
        Virtual Outdoor Temp (43) urn:schemas-micasaverde-com:device:VOTS:1 (17/-1); parent 0; plugin -

Well changing setpoint in the thermostat isn’t going to change anything, because all your conditions are triggered only by the temperature sensor. As I said, actions only fire when the condition state changes. Re-evaluating the condition every minute is going to give the same true/false result, unless the temperature changes enough to change the condition states. This is why I originally recommended that you also check the setpoint and mode in your conditions.

Right…the message has finally made it through this rock hard head. :stuck_out_tongue: Thanks.

Ok some weird stuff happening. I’ve updated the conditions as recommended and manually set my thermostat to 20C to force it to trigger. When I reset the RS, it shows the CurrentSetPoint change to 23C (as expected) but then it immediately changes back to 20C. - Why? There are no actions which say to change to 20C. Then, a couple minutes later (the time it took me to type this far), it changed to 23C.

Is it possible that it needs repeat commands to update? I’m worried that if I set it to daily (as desired) it may not update the temperature setpoint as expected.

Here are the conditions setup:
Group “Thermostat Control” – NULL

  • Group – “Cooling on”, - AND
    • If outside temp > 23
    • Group – “Cool Check” – OR
      • If CurrentSetoint not = 22
      • If Mode not = continuouson
      • If ModeStatus not = CoolOn
  • Group – “Fan Only”, -AND
    • If outside temp <=23 and >=20
    • Group – “Fan only Check” – OR
      • If Mode not = continuouson
      • If ModeStatus not = OFF
  • Group – “ Heating On” - AND
    • If outside temp < 20
    • Group “ Heat Check” – OR
      • If Mode not = continuouson
      • If ModeStatus not = HeatOn
      • If CurrentSetpoint not = 23
  • Group – “Schedule” – AND
    • Interval 1 day.
*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 25
    System: Vera version 1.7.1040 on MiCasaVerde VeraLite; loadtime 1574097508; systemReady 1574097522; Lua 5.1; JSON dkjson 1.2
Local time: 2019-11-18T14:53:13-0500; DST=0; Oakville, Ontario Canada
House mode: plugin 1; system 1; tracking off
  Sun data: { "stamp": 2019322, "civdawn": 1574077492, "nautdawn": 1574075406, "sunset": 1574113925, "nautdusk": 1574117875, "latitude": 43.4501, "astrodusk": 1574119907, "longitude": -79.6829, "civdusk": 1574115789, "astrodawn": 1574073374, "sunrise": 1574079356 }
  Geofence: not running
====================================================================================================================================
Thermostat Control (#52)
    Version 19082.29 11/18/19 14:39:59
    Message/status: Not tripped
    Condition group "Thermostat Operations" (NUL)  false as of n/a <root>
      Z-F-group "Cooling On" (AND)  false as of 14:48:34 <grpkeaogii>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature > 23 [3.0 at 14:48:34; F/F as of 14:48:34/14:48:34] <condkeapfob>
      |     &-T-group "CoolingCheck" (OR)  TRUE as of 14:48:34 <grpkl0qb9a>
      |     |     |-T-service Thermostat (3) urn:upnp-org:serviceId:TemperatureSetpoint1/CurrentSetpoint <> 22 [20.00 => 23.00 at 14:50:28; T/T as of 14:48:34/14:48:34] <condkl04oqs>
      |     |     |-F-service Thermostat (3) urn:upnp-org:serviceId:HVAC_FanOperatingMode1/Mode <> ContinuousOn [continuouson at 14:48:34; F/F as of 14:48:34/14:48:34] <condkl0kuls>
      |     |     |-T-service Thermostat (3) urn:upnp-org:serviceId:HVAC_UserOperatingMode1/ModeStatus <> CoolOn [heaton at 14:48:34; T/T as of 14:48:34/14:48:34] <condkl0lne8>
      Z-F-group "Fan Only" (AND)  false as of 14:48:34 <grpkeanbtj>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 23 [3.0 at 14:48:34; T/T as of 14:48:34/14:48:34] <condkeaqsh6>
      |     &-F-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 20 [3.0 at 14:48:34; F/F as of 14:48:34/14:48:34] <condkeasmqe>
      |     &-T-group "FanOnlyCheck" (OR)  TRUE as of 14:48:34 <grpkl0r4me>
      |     |     |-T-service Thermostat (3) urn:upnp-org:serviceId:HVAC_UserOperatingMode1/ModeStatus <> Off [heaton at 14:48:34; T/T as of 14:48:34/14:48:34] <condkl05ysc>
      |     |     |-F-service Thermostat (3) urn:upnp-org:serviceId:HVAC_FanOperatingMode1/Mode <> ContinuousOn [continuouson at 14:48:34; F/F as of 14:48:34/14:48:34] <condkl0ikg6>
      Z-T-group "Heating On" (AND)  TRUE as of 14:48:34 <grpkeaofqv>
      |     &-T-service Virtual Outdoor Temp (43) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 20 [3.0 at 14:48:34; T/T as of 14:48:34/14:48:34] <condkeau3zn>
      |     &-T-group "HeatingCheck" (OR)  TRUE as of 14:48:34 <grpkl0rst5>
      |     |     |-F-service Thermostat (3) urn:upnp-org:serviceId:HVAC_UserOperatingMode1/ModeStatus <> HeatOn [heaton at 14:48:34; F/F as of 14:48:34/14:48:34] <condkl0jhab>
      |     |     |-T-service Thermostat (3) urn:upnp-org:serviceId:TemperatureSetpoint1/CurrentSetpoint <> 23 [20.00 => 23.00 at 14:50:28; T/T as of 14:48:34/14:48:34] <condkl0jyo3>
      |     |     |-F-service Thermostat (3) urn:upnp-org:serviceId:HVAC_FanOperatingMode1/Mode <> ContinuousOn [continuouson at 14:48:34; F/F as of 14:48:34/14:48:34] <condkl0p35h>
      Z-F-group "Schedule" (AND)  false as of 14:53:01 <grpkkwjb92>
      |     &-F-interval { "type": "interval", "mins": 1, "id": "condkkwjh8f", "hours": 0, "days": 0 } [1574106720 => 1574106780 at 14:53:00; F/F as of 14:53:01/14:53:01] <condkkwjh8f>
    Activity grpkeanbtj.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="Off" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaofqv.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="HeatOn" )
        Device Thermostat (3) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="23" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Activity grpkeaogii.true
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="CoolOn" )
        Device Thermostat (3) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="22" )
        Device Thermostat (3) action urn:upnp-org:serviceId:HVAC_FanOperatingMode1/SetMode( NewMode="ContinuousOn" )
    Events
        11/18/19 14:48:34 runscene: scene=grpkeaofqv.true, sceneName=grpkeaofqv.true, group=1, notice=Starting scene group 1
        11/18/19 14:48:34 devicewatch: device=3, old="20.00", name=Thermostat, var=urn:upnp-org:serviceId:TemperatureSetpoint1/CurrentSetpoint, new="20.0"
        11/18/19 14:48:34 endscene: scene=grpkeaofqv.true, sceneName=grpkeaofqv.true
        11/18/19 14:48:34 devicewatch: device=3, old="20.0", name=Thermostat, var=urn:upnp-org:serviceId:TemperatureSetpoint1/CurrentSetpoint, new="23.00"
        11/18/19 14:48:34 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:48:34 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:48:34 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:48:34 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:48:36 devicewatch: device=3, old="23.00", name=Thermostat, var=urn:upnp-org:serviceId:TemperatureSetpoint1/CurrentSetpoint, new="20.00"
        11/18/19 14:49:00 condchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:49:00 evalchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:49:00 condchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:49:00 evalchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:49:01 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:49:01 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:49:01 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:49:01 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:50:00 condchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:50:00 evalchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:50:00 condchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:50:00 evalchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:50:01 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:50:01 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:50:01 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:50:01 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:50:28 devicewatch: device=3, old="20.00", name=Thermostat, var=urn:upnp-org:serviceId:TemperatureSetpoint1/CurrentSetpoint, new="23.00"
        11/18/19 14:51:00 condchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:51:00 evalchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:51:00 condchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:51:00 evalchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:51:01 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:51:01 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:51:01 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:51:01 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:52:00 condchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:52:00 evalchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:52:00 condchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:52:00 evalchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:52:01 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:52:01 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:52:01 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:52:01 evalchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:53:00 condchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:53:00 evalchange: newState=true, cond=condkkwjh8f, oldState=false
        11/18/19 14:53:00 condchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:53:00 evalchange: newState=true, cond=grpkkwjb92, oldState=false
        11/18/19 14:53:01 condchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:53:01 evalchange: newState=false, cond=condkkwjh8f, oldState=true
        11/18/19 14:53:01 condchange: newState=false, cond=grpkkwjb92, oldState=true
        11/18/19 14:53:01 evalchange: newState=false, cond=grpkkwjb92, oldState=true
    Devices
        ZWave (1) urn:schemas-micasaverde-com:device:ZWaveNetwork:1 (19/0); parent 0; plugin -
        Virtual Outdoor Temp (43) urn:schemas-micasaverde-com:device:VOTS:1 (17/-1); parent 0; plugin -
        Thermostat (3) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -

Looks like something the thermostat is doing itself. If you follow the events, you can see Reactor changes it and it triggers the watch at 14:48:34, then it changes back two seconds later, and then at 14:50:28 it updates back. What kind of thermostat? If it’s cloud-based, this would not be surprising as it probably polls periodically. But it does look like it changed it properly.

It’s a Honeywell z-wave. I’ll check up on this in about a week. Gonna be on the road. Thanks for your help!