My workaround for Set Heat Point and Set Cool Point omission in UI7

Coming from Homeseer (HS), I had all of my HVAC scenes (events in HS) for the heating season and cooling season set up to run at their regular schedules, regardless of which season it was. Since HS supported setting Cool Setpoints and Heat Setpoints, and ignored either if not in that mode (i.e. if the system was cooling, it ignored heat setpoints) I could leave my scenes running and HS would ignore the setpoints that were not applicable to the mode (heat or cool). When the season dictated, I would just switch the mode of my thermostat and the applicable scenes would do their thing.

As been discussed in other threads, UI7 has removed that ability, and even if you do an advanced action and specify a heat or cool setpoint, it ignores the heat or cool part, and just sets the temperature on the thermostat. Even if you do LUUP code, it still ignores the “Heat” or “Cool” part of the instruction and just sets the temp.

Anyway, if I had both my heat and cool scenes running year roundin VeraLite with UI7 it would mess up my home temps!

I don’t know if this is a clever solution or not that big a deal, but I am new to VeraLite and LUUP coding so, I was pretty stoked when I got it all working the way I wanted.

Instead of doing a device action for my scheduled temperature changes, I use LUUP code that checks to see what mode the thermostat is in. For my heating scenes, if the thermostat in HEAT mode it sets the temp, otherwise it does nothing, and the same for the cool scenes.

Here is the LUUP code for a Cool scene:

local hvac_mode = luup.variable_get("urn:upnp-org:serviceId:HVAC_UserOperatingMode1", "ModeStatus", 8)
if (hvac_mode == "CoolOn") then
  luup.call_action("urn:upnp-org:serviceId:TemperatureSetpoint1_Cool","SetCurrentSetpoint", {NewCurrentSetpoint = "68"},8)
end

And an example of a Heat scene

local hvac_mode = luup.variable_get("urn:upnp-org:serviceId:HVAC_UserOperatingMode1", "ModeStatus", 8)
if (hvac_mode == "HeatOn") then
  luup.call_action("urn:upnp-org:serviceId:TemperatureSetpoint1_Heat","SetCurrentSetpoint", {NewCurrentSetpoint = "67"},8)
end

This is working as I had hoped.

Specifying “TemperatureSetpoint1_Cool” or “TemperatureSetpoint1_Heat” are interchangeable since VeraLite ignores the “_Heat” and “_Cool” part and just sets the temp regardless of mode, but I was specific just in cast they “fix” what I don’t think they think is a broken, from what I have read in other threads.

Just wanted to share in case it helps anyone out there.

This was very helpful!

I was able to combine setting heat and cool temps in the same scene:

[code]local my_dev_id = 38
local hvac_mode = luup.variable_get(“urn:upnp-org:serviceId:HVAC_UserOperatingMode1”, “ModeStatus”, my_dev_id)
local target_heat_temp = 68
local target_cool_temp = 78

if (hvac_mode == “HeatOn”) then
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = target_heat_temp}, my_dev_id)
elseif (hvac_mode == “CoolOn”) then
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”, {NewCurrentSetpoint = target_cool_temp}, my_dev_id)
end

return false
[/code]

I can change the thermostat mode either manually or using Vera, and this should still work!

Since I have 2 thermostats and already had to create 4 or 5 heat scenes each, at least I won’t have to duplicate them for cooling!

Other notes:

[ul][li]I return false to prevent the scene from actually changing anything else on the thermostat (like setting the thermostat to heat mode, for example).[/li]
[li]I have one scene operate in any Vera mode and the others only run while I’m at home, so going on vacation should be easily supported.[/li][/ul]

So I am new to Vera and have set up some scenes that work fine but I haven’t done anything yet that incorporates any Luup code. What you have worked out here looks like what I am looking for for the new CT100 t-stat that I have. My problem is that I am not sure what triggers to set up to get this Luup code to do what I want. Could you give me an example of how you set up the scene itself, and then how the code was incorporated into it? I think that this would be a great way for me to start to get the gist of how to do this for other scenes that I want to put other qualifiers on.

Thanks.

You might set up a couple of scenes on schedules like work day, work night, weekend. In the scene editor you would use the luup code menu. On UI5 that is a tab in the scene editor, on ui7 it is in step 3 under “also execute the following luup code”

I eventually went to PLEG.

If outside temp < 60, turn on heat mode. If > 65, turn on cooling mode.

I then set both heating and cooling setpoints depending on House Mode. Home/Away - 68 heat, 75 cooling. Night - 65/72. Vacation 60/80. I seldom look at the thermostat and this really helps in the spring/fall when you may be heating in the morning and cooling in the afternoon.

I have also setup schedules in PLEG to turn on Night Mode during the week differently than the weekend.

Thanks for the response kigmatzomat. I have since fiddled around and managed to get something working ok. The luup code can be a little tedious, though.

Don, I have downloaded the PLEG app and am starting to play with that as well. It looks like that may give me more flexibility if I can get the hang of it. Thanks for that.

Just fiddle with it. Eventually you will get the hang of it. You can also learn a lot by reading this: http://forum.micasaverde.com/index.php/topic,21603.0.html

PLEG is a great logic engine. My hvac relies on it to compensate for the temperature differential between upstairs and downstairs. Essentially, it replicates an Ecobee.

Scenes work up to a point but most people find a need for pleg. Fyi, you can have scenes triggered by pleg conditions so you can keep a lot of your existing functional scenes and just change the trigger event.