Scene to slowly raise temperature

I would like to have a scene that when triggered will slowly raise the temperature in the house. The idea being that you expend less energy by going in increments. Just like how you spend the most gas in a car by accelerating, not high RPM driving as many think. How would I make a scene that would raise the temperature 2° every 20 minutes or so until it reaches 68°? I currently have a scene which raises the temp to 64° and then an hour later raises it to 68° but this isn’t smooth enough. Also when I go on vacation I want the thermostat set to as low as it will go (55° as I recall) and would prefer to just be able to run a “coming home” scene to heat the house back up.

Any ideas?

Not to rain on the parade, but I do not think you would see any savings if you do this.

You may be subscribing to what is called the “valve theory,” namely the belief that the thermostat functions like a gas pedal: the higher you set it, the hotter your furnace runs. In reality, most furnaces pump out heat at the same rate regardless of the setting; they just cycle on and off as needed to keep the house at whatever temp the thermostat dictates.

In fact it would cost more in the long run as the house would be heated (hence losing heat) for longer.

The less time the house is above ambient the less time there is for heat to be lost


[quote=“nickrwym, post:3, topic:169694”]In fact it would cost more in the long run as the house would be heated (hence losing heat) for longer.

The less time the house is above ambient the less time there is for heat to be lost


Actually, I think this may depend on your HVAC. If I have a “dumb” thermostat and pop the setting from 55 to 70 all at once, that’s guaranteed to kick me into “backup heat” usage…which is fine for us, as our backup source is natural gas, which is currently pretty cheap, but if you had a heat pump and your emergency source was resistive electrical or some other expensive alternative, that could hurt a lot.

A lot of modern 'stats take this into account, and do something called “adaptive intelligent recovery”, which means that for internally scheduled changes like this, the 'stat does what the original poster is talking about–starts nudging the set point up far enough in advance to avoid requiring backup heat. But if you are jerking the 'stat around from the outside (via Z-wave, for example), the stat can’t anticipate that this is needed.

If your only heat source is fossil fuel or resistive electric, I agree–it does nothing to help your energy usage. If you have a combo system with a heat pump and a more expensive back-up source, it makes a lot of sense.


Which of course says “without knowledge of the heat source there is no way to make a definitive answer”.

The most most effective way given system knowledge is to turn it on enough time before the inside temperature is wanted for it to “just get there in time”. Knowing the rate of rise achievable and the outside temperature is needed for this.

I’ve just started gathering data on that here, it’s making interesting reading so far.


I lost track of this one with the UI 5 debacle. Sorry everyone. Whether or not it saves energy I don’t like the heat to go from 58 to 68 at once. I wake up and it’s cold and then 15 minutes later it’s too hot. And still it’s cold inside my closet. When I raise the temperature slowly the process is much less jarring and everything heats up evenly. My heat is baseboard water radiant. If I call for a dramatic climb in temperature the house ends up at 70 instead of 68.

So any ideas on how this can be accomplished?

Add this code in an empty scene. You must set the correct thermostat device number. Also you can freely adjust the other parameters to suit your needs. By default, this increases the thermostat heat setpoint by 2 degrees every 20 minutes until the setpoint equals the target temperature of 70 degrees.

local THERMOSTAT_ID = 12
local TARGET_TEMP = 70  -- Degrees Fahrenheit
local STEP = 2          -- Degrees Fahrenheit
local MINUTES = 20      -- Time between setpoint increments

function increaseHeatSetpoint()
    local currentSetpoint = luup.variable_get("urn:upnp-org:serviceId:TemperatureSetpoint1_Heat", "CurrentSetpoint", THERMOSTAT_ID)
    currentSetpoint = tonumber(currentSetpoint) or TARGET_TEMP
    if (currentSetpoint < TARGET_TEMP) then
        luup.call_action("urn:upnp-org:serviceId:TemperatureSetpoint1_Heat", "SetCurrentSetpoint", {NewCurrentSetpoint = tostring(currentSetpoint + STEP)}, THERMOSTAT_ID)
        luup.call_timer("increaseHeatSetpoint", 1, MINUTES.."m")