Store a (temp) Variable, change the setting and return to saved later

Hi,
I have a multizone heating setup using Eurotronic Spirit TRVs (Same as Aeotec just launched rebranded)
I’m struggling with the export/store of a variable to re-use later. I need to store a current setpoint, change it to something else for 30 minutes, then use that variable to revert to the previous value. (Use case is the minimum setpoint is 8 degrees on these. I have them turned off in empty rooms, and want to turn them on to heat/25 degrees as a boost to prevent pipes freezing in winter (if rooms get to 2 degrees). In the UK I can’t leave at 8 as that means the boiler would be firing all winter for empty rooms, as its normally lower than that. Each room is its own independantly controlled zone, each able to demand the boiler fire even if all the others are off or closed and not demanding heat).

Could someone please guide. I have the variable defined, it’s just the save, change and re-set later i’m stuck with. Thanks :slight_smile:



The approach to that was covered as part of this thread: Dimmer enters to 2 different light levels based on Day or Night time when triggered by an armed Motion sensor - #2 by rigpapa - Reactor - Ezlo Community

Take a look there, and see if that helps. If not, we’ll approach it step by step.

Hi,
I had found that but I still didn’t get the variable returned/saved. I just get null ( even after changing the variable after saving the expressions). I’ve replicated exactly including expression names but still null. I do have several uses (including lights on and return to same state as in referenced post) to take stored temp related variables and setting them back after, specifically this case and also ‘night’ mode for the occupied rooms, but returning to whatever the radiators were set to the previous day

OK. Can you post a Logic Summary from the tools page (note posting instructions at top of report if you haven’r done it before)?

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.4 config 19226 cdata 19082 ui 19237 pluginDevice 185
    System: Vera version 1.7.4453 on Sercomm G450; loadtime 1573561383; systemReady 1573561407; ALTUI v2.45; Lua 5.1; JSON dkjson 1.2
Local time: 2019-11-12T12:41:12+0000; DST=0; Lincoln, England United Kingdom
House mode: plugin 1; system 1; tracking on
  Sun data: { "stamp": 2019316, "civdawn": 1573540931, "nautdawn": 1573538407, "sunset": 1573575134, "nautdusk": 1573579952, "latitude": 53.2268, "astrodusk": 1573582392, "longitude": -0.53792, "civdusk": 1573577428, "astrodawn": 1573535966, "sunrise": 1573543225 }
  Geofence: running in quick mode, last update 07:33:00, data version 2
            User 1249051 ishome=0 inlist= since=07:33:00
            |    1 "Home" type="home" status="" since=11-08.19:30:00
            Raw: { "updated": 1573562460, "users_settings": [ { "id": 1249051, "ishome": 0 } ], "mode": 1 }
====================================================================================================================================
All TRV No Freeze (#209)
    Version 19082.24 11/12/19 08:14:59
    Message/status: Not tripped
    Variable/expressions
       0: currentlevel             getstate( 80, "urn:upnp-org:serviceId:TemperatureSetpoint1_Heat", "CurrentSetpoint" ) [last "8.50"(string)] (exported)
       1: savedlevel                [last (no value)(nil)]
    Condition group "All TRVs" (OR)  false as of 11-10.17:59:41 <root>
      |-F-group "Master Bedroom TRV" (AND)  false as of 11-10.18:00:59 <grpk9ig8w8>
      |     &-F-service Spirit TRV 1 (80) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [12.22 => 12.05 at 12:26:46; F/F as of 11-10.17:59:41/11-10.17:59:41] <cond0>
      |-F-group "Kitchen TRV1" (AND)  false as of 11-10.18:00:59 <grpk9ifkoo>
      |     &-F-service Spirit TRV 2 (97) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [13.38 => 13.11 at 08:24:53; F/F as of 11-10.18:00:59/11-10.18:00:59] <condk9ifqdn>
      |-F-group "Kitchen TRV2" (AND)  false as of 11-10.18:02:06 <grpk9ihaef>
      |     &-F-service Spirit TRV 3 (96) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [13.65 => 13.47 at 08:26:36; F/F as of 11-10.18:02:06/11-10.18:02:06] <condk9ihcob>
      |-F-group "Guest 2 Bed" (AND)  false as of 14:04:56 <grpkapal6m>
      |     &-F-service Spirit TRV 4 (106) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [8.89 => 8.62 at 09:37:04; F/F as of 14:04:56/14:04:56] <condkapam7r>
      |-F-group "Guest 2 Bath" (AND)  false as of 14:04:56 <grpkapbux4>
      |     &-F-service Spirit TRV 5 (104) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [9.25 => 9.07 at 10:53:22; F/F as of 14:04:56/14:04:56] <condkapbvtj>
      |-F-group "Guest 2 Bed" (AND)  false as of 14:04:56 <grpkapdoks>
      |     &-F-service Spirit TRV 6 (105) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [5.45 => 5.26 at 10:46:30; F/F as of 14:04:56/14:04:56] <condkapdptr>
      |-F-group "Master Bathroom" (AND)  false as of 14:08:54 <grpkaphlba>
      |     &-F-service Spirit TRV 7 (154) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [13.56 => 12.58 at 09:10:29; F/F as of 14:08:54/14:08:54] <condkaphm52>
      |-F-group "Single Bedroom" (AND)  false as of 14:08:54 <grpkapijav>
      |     &-F-service Spirit TRV 8 (111) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [10.61 => 10.16 at 09:04:36; F/F as of 14:08:54/14:08:54] <condkapik3u>
      |-F-group "Guest 1 Bath" (AND)  false as of 14:08:54 <grpkapjekm>
      |     &-F-service Spirit TRV 9 (113) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [5.74 => 5.55 at 09:19:11; F/F as of 14:08:54/14:08:54] <condkapjfgf>
      |-F-group "Lounge" (AND)  false as of 14:25:23 <grpkaq5847>
      |     &-F-service Spirit TRV 10 (116) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [10.61 => 10.16 at 05:02:55; F/F as of 14:25:23/14:25:23] <condkaq59j3>
      |-F-group "Double Bedroom" (AND)  false as of 14:08:54 <grpkapk972>
      |     &-F-service Spirit TRV 11 (161) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature <= 2 [12.58 => 12.05 at 11:21:56; F/F as of 14:08:54/14:08:54] <condkapka01>
    Activity grpk9ifkoo.true
        Device Spirit TRV 2 (97) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="HeatOn" )
        Delay 60 inline
        Device Spirit TRV 2 (97) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="18" )
        Delay 1800 inline
        Device Spirit TRV 2 (97) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="Off" )
    Activity grpk9ihaef.true
        Device Spirit TRV 3 (96) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="HeatOn" )
        Delay 60 inline
        Device Spirit TRV 3 (96) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="18" )
        Delay 1800 inline
        Device Spirit TRV 3 (96) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="Off" )
    Activity grpk9ig8w8.true
        Device Spirit TRV 1 (80) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="HeatOn", NewHeatSetpoint="{Get_TRV_Setpoint}" )
        Delay 60 inline
        Device Spirit TRV 1 (80) action urn:upnp-org:serviceId:TemperatureSetpoint1_Heat/SetCurrentSetpoint( NewCurrentSetpoint="18" )
        Delay 1800 inline
        Device Spirit TRV 1 (80) action urn:upnp-org:serviceId:HVAC_UserOperatingMode1/SetModeTarget( NewModeTarget="Off" )
    Events
        11/12/19 12:23:22 reload: notice=Luup reload
        11/12/19 12:23:23 start: 
        11/12/19 12:23:24 variable: newval=(luaxp.NULL), variable=savedlevel
        11/12/19 12:26:46 devicewatch: device=80, old="12.22", name=Spirit TRV 1, var=urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature, new="12.05"
    Devices
        ZWave (1) urn:schemas-micasaverde-com:device:ZWaveNetwork:1 (19/0); parent 0; plugin -
        Spirit TRV 7 (154) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 6 (105) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 2 (97) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 8 (111) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 1 (80) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 9 (113) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 4 (106) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 10 (116) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 5 (104) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 11 (161) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -
        Spirit TRV 3 (96) urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1 (5/1); parent 1; plugin -

I don’t see anywhere you’re saving current in your actions. There should be a SetVariable action run against the ReactorSensor. Check the linked example’s actions and you’ll see them.

Thanks, On it. Appreciate the guidance. New to Reactors ways and I did try to read the guide :slight_smile:

You’re definitely into an advanced topic, but pushing limits is a good thing–you get to do new stuff, and I get to see where I can smooth things out more.

Something like this?

I add the delay between heaton temp set as sometimes it takes a while to confirm/apply settings on these. They use flirs and no polling

Yes, but in the VariableName for the actions you have {savedlevel}, make it plain savedlevel (no braces in that field).

Great, thanks. Now i’ll know for the future. I do feel I can use the delaylight somewhere in this to tidy things up.

On a Seperate note ( to create a heating dashboard on the web ui and imperihome), I used reactor to create an indicator panel in multiswitch to show which rooms (each including bed and bathroom) were demanding heat based on setpoint vs temp -1.2 degrees (which stops valves closing too far near matched temps). It is brilliant to group devices and then return a true/false for status, even though no actions are needed there.
multi

I also used reactor to create a quick set button in another multiswitch to 1.turn the guest room bedroom to 18, bath to 15 degrees, or set both to 8, and also an All Guests Off to set all rooms to 8 and turn the TRVs off (but they are still protected by the “anti freeze” sensor you just helped me configure :))

1 Like

One thing that would be brilliant (unsure if exists or possible) would be the ability to create a contexed variable based on the device, where many of the same device types are used. It looks like I have to create 2 seperate variable for all my TRVs to save the state.
If only there were a way to create a generic variable for specific value ( like “urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”, “CurrentSetpoint”) but be able to easily pull it and store from multiple devices .
Or even a way to create the individual variables in a batch or near copy based on a selection. (like with 10+ TRVs that are identical function wise but i need to save the same value and return the value later on each one). Perhaps Similar to the copy function elsewhere. Maybe where add variable is, an add similar that keeps the whole expression but just allows selection of specific device and doesn’t require the functions to be chosen again (kind of like a copy expression with a find/replace of the device ID if that makes sense.
Actually, that feature would be also great when using the “copy from” in activities, the ability to choose a replacement device would save lots of reselecting in multiple places, the next device (TRV in this case)
In any case, i’ll be donating to your development pot :slight_smile:
Thanks again.

Yeah, I have another plugin that I haven’t released publicly that, among its capabilities, saves the state of devices as they are being modified and can restore them later to a point in time. I’ve been pondering how to get such a feature into Reactor, but it requires a good bit of additional data that Vera doesn’t keep handy natively, and I’m trying not to have the device information file Reactor already has not get a lot larger (almost unavoidable). Much to ponder here, but it’s definitely on my radar as a higher priority item.

1 Like

That sounds awesome for the state saving. It is so handy for temps and light levels. I can also see it being used in energy monitoring triggers too (which I use to turn things on to charge batteries etc to prevent solar export to grid).
I’ll happily test anything if you think my setup is of use (i’m running over 20 reactor sensors and haven’t even properly started moving the multizone heating control from PLEG over yet).

A real big thing if you see value/have time would be the copy and device replace in activities tab (for more complex series actions).
My copy only effectively copies delays and I have to reselect every device, variable and value for each identical TRV.
The state variables are only a small part of the repetition here :slight_smile:
Everything in yellow, I have to redo another 11 times :smiley: