CurrentSetpoint Heat & CurrentSetpoint Cool

Hello,

Is anybody aware of a way to update CurrentSetpoint Heat & CurrentSetpoint Cool automatically?

I have the thermostat, a Honeywell, set to auto mode. If I change the Heat or Cool setpoints from the thermostat VeraEdge doesn’t update the CurrentSetpoint Heat and CurrentSetpoint Cool. I can see that AllSetpoints gets updated but not the individual setpoints. I think CurrentSetpoint Heat and CurrentSetpoint Cool are virtual variables in Vera so i don’t think that they are polled individually from the thermostat.

Thanks

In UI5 the thermostat has two variables - both are just “CurrentSetPoint” and you have to figure out which is heat and which is cool.
But they update as soon as you change the value. I use the variables, along with CurrentTemperature, in my Climate PLEG to adjust ceiling fan speed

I’m using VeraEdge with UI7 and they don’t get updated.

I have the Honeywell thermostat too. I also have 2 Vera’s, in on house I have a Vera 3 UI5, and the other house has a Vera Edge, UI7. The UI5 works great with two different set points for heat and cool. But the UI7 (which I don’t like as much as the UI5 dashboard) just shows the one temperature setting. When in auto mode, it seems that the temperature set point does nothing, but if you want to set the cool, first select cool mode then set the temperature, the select heat mode, set that set point, then put your unit into auto mode. The temperature that is shows as a set point doesn’t seem to relate to anything, but the heat and cool points are indeed set, you can verify this by inspecting the actual thermostat.

Just to vent: who designs and integrates these things, obviously not a user. Why would you be able to change settings like “energy mode” or otherwise known as away mode but not be able to change those set points from the Vera module? It can only be set from the programming mode of the thermostat itself. And not be able to monitor the heating or cooling state of the thermostat from the Vera module, but it can be viewed at the thermostat itself. Makes very little sense.

It’s reaaly quite easy to tell the two “CurrentSetpoint” variables apart…

Heat is: “urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”/“CurrentSetpoint”
Cool is: “urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”/“CurrentSetpoint”

Same variable name, different service IDs.

To update them “automatically” (from luup code):

-- set heat setpoint
luup.variable_set("urn:upnp-org:serviceId:TemperatureSetpoint1_Heat","CurrentSetpoint",newHeatSetpointValue,DeviceID)

-- set cool setpoint
luup.variable_set("urn:upnp-org:serviceId:TemperatureSetpoint1_Cool","CurrentSetpoint",newCoolSetpointValue,DeviceID)

This works for both UI5 and UI7… Under the hood, UI7 still maintains and uses the two seperate setpoints, and adds a third setpoint variable:
Displayed setpoint is: “urn:upnp-org:serviceId:TemperatureSetpoint1”/“CurrentSetpoint”

That is correct… Even with UI5…

If you change the variables in luup, they do not immediately get sent to the thermostat… It gets sent the next time that the device is polled.

If you want an immediate change, you need to send a uPnP command to the thermostat device:

-- UI7 "global" setpoint
luup.call_action("urn:upnp-org:serviceId:TemperatureSetpoint1","SetCurrentSetpoint",{ ["NewCurrentSetpoint"] = NewSetpointValue}, deviceID)

-- heat setpoint
luup.call_action("urn:upnp-org:serviceId:TemperatureSetpoint1_Heat","SetCurrentSetpoint",{ ["NewCurrentSetpoint"] = NewSetpointValue}, deviceID)

-- cool setpoint
luup.call_action("urn:upnp-org:serviceId:TemperatureSetpoint1_Cool","SetCurrentSetpoint",{ ["NewCurrentSetpoint"] = NewSetpointValue}, deviceID)

Using the uPnP actions, the device takes care of sending the setpoint to the thermostat and updating all the related variables.

So what good is this “global set point”. If you have set your heat and cool set points, what does this global or current set point function? It just seems to be more confusing than functional.

The “global” setpoint is the one displayed by the UI7 thermostat device… If you set it, it will change the appropriate setpoint for the mode that is currently set.

What good it is, or isn’t, is not for me to say…

The “global” setpoint is the one displayed by the UI7 thermostat device… If you set it, it will change the appropriate setpoint for the mode that is currently set.

What good it is, or isn’t, is not for me to say…[/quote]

But what I am referring to is that when I have the thermostat set in Auto mode, changing this value does nothing. It does not change the heat or cool set points. It just changes the display to an ambiguous value that seems to do nothing on the thermostat. You need to set the unit in cool mode first to change the cool set point or in heat mode to change that set point. But when in auto, nothing changes except the display number. At least in UI5 there were separate values and controls for both heat and cool.

My issue is not how to set them, the issue is that they are not updated when the setpoint on the thermostat changes. I know how to set them from LUA but if I change the Coo/Heat setpoint on the thermostat while in auto mode only the AllSetpoint variable is updated, the CurrentSetpoint Cool/Heat are left untouched.

That could possibly be because your thermostat supports it’s own auto mode, with it’s own auto mode setpoint…

My thermostat does not support it’s own auto mode… to change the setpoints, I need to change to the mode I want then change the setpoint, then return to the operating mode needed… My VeraEdge changes modes and records the correct setpoint changes.

You mentions that you are using a Honeywell thermostat… Is it a ZWSTAT (VisionPro/(Y)TH8320ZW) or one of the WiFi models…

The ZWSTAT is the only Honeywell thermostat that is controlled/monitored natively by the Vera… It has it’s own auto mode, so it does have 3 seperate setpoints…

The other Honeywell thermostats are controlled/monitored by a plugin… And the various models have differing support for their own auto mode… Some uses automatic changeover mode that switches between the seperate heat/cool modes… some use a seperate third setpoint… Also, the plugin may not properly handle seperate heat/cool setpoints when set to automatic mode…

I have the zwave version, YTH8320ZW1007.

The TStat does report the set points, since the “AllSetpoints” variable is updated correctly, but the CurrentSetpoint Cool/Heat are not updated.

[quote=“geniepro, post:11, topic:189769”]I have the zwave version, YTH8320ZW1007.

The TStat does report the set points, since the “AllSetpoints” variable is updated correctly, but the CurrentSetpoint Cool/Heat are not updated.[/quote]

I have the same unit and have the same problems with my Edge UI7. On my older Vera 3 still using UI5 I think it has a much better dashboard display. With UI7 I have to do the same as geniepro, select the mode then change the set point. So what I did was to set up a few scenes and change the set points with LuuP code. Here is an example for home and away settings. I have 4 Honeywell thermostats in two different locations and two Veras that are bridged.

[code]Home

luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “76”},170)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “76”},171)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “78”},216)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “78”},214)

luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “65”},170)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “60”},171)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “65”},216)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “65”},214)

luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 170)
luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 171)
luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 216)
luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 214)

Away

luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “85”},170)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “78”},171)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “85”},216)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Cool”,“SetCurrentSetpoint”,{NewCurrentSetpoint = “85”},214)

luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “55”},170)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “55”},171)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “55”},216)
luup.call_action(“urn:upnp-org:serviceId:TemperatureSetpoint1_Heat”,“SetCurrentSetpoint”, {NewCurrentSetpoint = “55”},214)

luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 170)
luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 171)
luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 216)
luup.call_action(“urn:micasaverde-com:serviceId:HaDevice1”, “Poll”, {}, 214)
[/code]

I was finally able to fix this, a bit complicated - I had to install PLEG:

  1. Create an input - for the thermostat & AllSetpoints Device Parameter - named (p1)
  2. Create o condition - named(c1) that contains just (p1).
  3. Then create an action on c1 with the following luua code:

local value, tstamp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSetpoint1","AllSetpoints",11) local heat, cool, mix = value:match("([^,]+),([^,]+),([^,]+)") luup.variable_set("urn:upnp-org:serviceId:TemperatureSetpoint1_Cool","CurrentSetpoint",cool ,11) luup.variable_set("urn:upnp-org:serviceId:TemperatureSetpoint1_Heat","CurrentSetpoint",heat,11)

I was not aware of any other way to get a trigger when AllSetpoints is changed.

If anybody cares I ended up with the following code in Startup Lua

[code]luup.variable_watch(“check_setpoints_11”,“urn:upnp-org:serviceId:TemperatureSetpoint1”,“AllSetpoints”,11)
luup.variable_watch(“check_setpoints_3”,“urn:upnp-org:serviceId:TemperatureSetpoint1”,“AllSetpoints”,3)

function check_setpoints_11()
check_setpoints(11)
end

function check_setpoints_3()
check_setpoints(3)
end

function check_setpoints(deviceID)

if deviceID > 0 then
    local value, tstamp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSetpoint1","AllSetpoints",deviceID)
    local heat, cool, mix = value:match("([^,]+),([^,]+),([^,]+)")

    luup.variable_set("urn:upnp-org:serviceId:TemperatureSetpoint1_Cool","CurrentSetpoint",cool,deviceID)
    luup.variable_set("urn:upnp-org:serviceId:TemperatureSetpoint1_Heat","CurrentSetpoint",heat,deviceID)
end

end[/code]

I have two thermostats, 3 and 11.