Explain to me how Thermostats work?


Can someone explain to me how Thermostats work ?

I added a new Thermostat to Vera and it has all these buttons on it in the GUI.

Heat Mode and Current Set Point I understand and OFF.

What is Cool Mode and a Cooling set point ?

What is Auto ?

Fan buttons what are they for? Air con units ?

Energy / Normal what are these for ?

This is how Vera added this Thermostat:

device_type: urn:schemas-upnp-org:device:HVAC_ZoneThermostat:1
device_file: D_HVAC_ZoneThermostat1.xml
device_json: D_HVAC_ZoneThermostat1.json
category_num: 5
subcategory_num: 1


In the following part, I am referring to the physical device on the wall called “thermostat”, not the Vera device of the same name… I’ll get to the latter…

Some thermostats can control both heating and cooling, and often the air handler is a single unit with a cooling coil and a heat exchanger, or in the case of heat pumps, a single coil that serves both functions. Some thermostats can automatically switch between heating and cooling (“Auto” or auto-changeover) mode, but not all can. Some heating-cooling thermostats are dual-setpoint, where the lower value setpoint is the temperature at which heat is called, and the higher temperature is the point at which cooling is called, and the thermostat maintains a minimum gap between the two (i.e. so you can’t set them equal or heating > cooling). Some heating-cooling thermostats use a single setpoint with a differential, and heating is called when the ambient goes below setpoint minus differential, and cooling is called when the ambient goes above setpoint plus differential.

In cooling mode, the thermostat will only make calls for cooling; if the controlled area gets really cold, no call for heat will be forthcoming. In heating mode, the thermostat will only make calls for heating, and if the area gets too warm, no call for cooling will be made. In auto-changeover, the thermostat will determine which is needed and call as appropriate to maintain setpoint.

The air handler in a typical forced air system has a blower that moves the air through the system. In simple heating-only systems, the fan is often controlled by a temperature switch in the AHU that clicks the fan on itself when the heat exchanger temperature gets to a certain point. More commonly, I think, the blower is controlled by the thermostat (separate wire, often green here in US). The thermostat decides when the fan should run (“Fan Auto”), and that is usually whenever heating or cooling is called. The thermostat is expected to run the fan for short time after making heat setpoint and turning the heating unit(s) off as a cooldown; this is a fixed period on many thermostats, programmable/selectable on others.

Some thermostats allow you to turn on the fan manually (“Fan On”) whenever you want, to circulate air through the system/home just for ventilation (or really air movement, as ventilation implies an exchange of air that typically doesn’t really occur). Some thermostats allow you to run the fan periodically for ventilation (“Fan Cycle” or “Periodic”).

Clearly this is modeling a forced-air heating/cooling system. If you are using a radiant system (underfloor, baseboard, steam, etc.) these would not apply.

Some thermostats implement an “energy saving” mode. This is done many ways, but I think the most common is simply adjusting the setpoints to alternate value(s). For example, Nest will operate your thermostat on a schedule, but if you put it in “Eco” mode it will use a separate fixed pair of setpoints (since Nest is a heating-cooling dual-setpoint auto-changeover thermostat) and not the schedule (and they are wider, like 60F/80F here in the US, but configurable).

With regard to the Vera device you now see: it may or may not have a lot to do with the capabilities of the device on the wall. Thermostats are a mess in Vera. Their model, I think, is fundamentally broken, and the evolution of the code and device reflect that. There is an extremely complex and not-well-documented set of state variables behind the scenes that model the goals and states of the device. I think early on they didn’t understand (or just ignored) some of the details of the UPnP specifications for thermostats (and how to handle exceptions), so there are extra variables they’ve created for various purposes that are not supported by all thermostats (so inconsistency across the landscape of supported devices), and even the standard variables are used in ways that the specs didn’t contemplate. Their attempt to model the capabilities of various thermostat products also seems pretty flawed; while it started with the goal of using state variables as flags for capabilities and the presentation of controls in the UI, that has apparently broken down over the years, and now there is a plethora of different device files and static JSON files that try to sort it all out, and that has also failed, and now the UI7 JavaScript code is loaded with some of the most poorly-conceived hard-coded exceptions (hacks) to get things working for specific brands and models. As a plugin developer, thermostats are the bane of my existence in Vera, because it’s hard to get the standard device interfaces to work properly – the hard-coded exceptions have side-effects that break things, and despite all of that, the device model still can miss features that a new thermostat may have (dehumidification and humidification, for example). The only way to get these in is to roll your own, and as soon as you do that, the Vera and third-party mobile apps don’t have a UI for your new device. Every firmware revision that comes out, I recode one of my thermostat plugins to see if the new firmware/UI fixes any of the problems previously experienced and I can switch to the standard devices rather than a custom device. It’s a time sink and a pain. I’ve gotten one bug fixed in thermostats, and it took over a year from first report to appearance in firmware. Generally speaking, it just continues going backwards, and at this point, given impending EOL of this firmware, I don’t think this area will ever see the rework it needs.

Anyway, whether the Vera device in front of you models what your thermostat is capable of is anyone’s guess, but I suppose you’re going to find out.

1 Like

And even the Nest thermostats which are Vera supported devices are missing functionality.
Unless this is a corruption in my environment my Nest E thermostat is missing drop downs for
several notifications that my Nest Pro has.
Most importantly for me would be ‘Ambient temperature goes below’

Supports answer was to change my device files for the Nest E to that of the Nest Pro but my E is heat only so its not an accurate representation.

My guess would be that the json and xml files could some how be modified to include the notifications but I wasn’t real sure how to do that, so to remedy I changed the files back and add a scene to monitor the temp.

If you tell me the name of the standard static JSON file (D_xxxx.json) that is configured/correct for your Nest E device, I’ll be happy to modify the file for you.


Patrick, thanks for the detailed explanation, your knowledge never ceases to amaze me.

The new Thermostat I installed yesterday is a TKBHome TZE93.716 thermostat for electric underfloor heating.

So fairly simply I guess. HEAT turns it on and I set a Current set point and OFF turns it off.

Here in the UK most houses have a Gas central heating boiler system and radiators on the walls in the rooms.

I’ve had a Z-Wave Secure SRT322 battery powered thermostat and a boiler reciever relay switch installed for years.

In Vera that Secure thermostat never had any of these buttons for Heat / Cool / Auto / Off etc.

I don’t know why that is? Perhaps if I unpaired it and paired it again today the Vera inclusion process may be different.

I’ve just controlled the Gas central heating boiler system by just setting it to 23 degrees for on and 10 degrees for off and never done much else with it.

This is the new TKB Home underfloor heating thermostat:


And this is the old Secure boiler thermostat:


This is how Vera added the Secure thermostat:

device_type: urn:schemas-upnp-org:device:Heater:1
device_file: D_Heater1.xml
device_json: D_HeaterTempNoOnOff1.json
category_num: 5
subcategory_num: 2

I’ve never really given any of this much thought, until I added the new TKB Home thermostat yesterday and saw all these new buttons in the GUI.

Also in Home Remote the new TKB Home thermostat is showing a label on the device tile that the Secure thermostat is not.

Here you can see it says “Idle”


And when I turn the underfloor heating on it says “Heating”


Looking at this label in the Home Remote designer its looking at a device binding of:


Looking at the Vera’s SDATA stream that appears to translate so something called:


{ "name": "Underfloor Heating", "altid": "111", "id": 597, "category": 5, "subcategory": 1, "room": 2, "parent": 1, "configured": "1", "temperature": "21.40", "status": "1", "mode": "HeatOn", "setpoint": "23.00", "heat": "23.00", "cool": "23.00", "state": 4, "comment": "Underfloor Heating: SUCCESS! Transmit was OK", "hvacstate": "Heating" },

My Secure boiler system thermostat does not have that data in SDATA.

Although in SDATA I can see “heat” and “cool” even though I do not have those button on this thermostat in the GUI

{ "name": "Thermostat", "altid": "57", "id": 189, "category": 5, "subcategory": 2, "room": 8, "parent": 1, "mode": "HeatOn", "commands": "heater_setpoint", "configured": "1", "batterylevel": "56", "commFailure": "0", "temperature": "18.90", "setpoint": "10.00", "heat": "10.00", "cool": "10.00", "state": -1, "comment": "" },

So all in all it is quite confusing for me.


Hi Patrick,
It’s using D_VeraConnectWWNThermostat1_NoCool.json and it looks like there is something in the json under “id”: 7 I just don’t see it in my drop down list?

Which drop-down list?

This is the dropdown for my Nest E thermostat:
This is the dropdown for my Nest Pro thermostat:
The only notification I could see that wouldn’t be relative for the Nest E would be ‘Thermostat COOL setpoint goes below’ because its heat only.

Well, nothing really stands out except that the IDs for the events are not sequential. I made them sequential, but that seemed to make no difference to the Notifications drop-down, so I’m guessing there’s one of their famous UI hard-coded exceptions going there, or maybe just a UI bug. In either case, that drop-down isn’t changing.

But, if you go into the scene editor, select device trigger, select the Nest E, does it appear there as a trigger? It does for me. So, you should be able to select it and go on to “Notify These Users” as the scene action and finish it off.

All notifications are just scenes in Vera. The only difference doing it this way is that it won’t be hidden. If you create it through the “Notifications” tab in the device control panel, it makes it hidden.

I’m looking at the UI JS now, but I think going through the scene editor is the way to go.

I could be way off base but if all you are doing is controlling heat you could probably use the same device_type, device_file and device_json for the underfloor heating as is used for the Secure boiler?

Or you might try changing the subcategory from 1 (HVAC) to 2 (HEAT)?

They do show up there and that’s ultimately what I wound up doing. It’s crazy to me that the functionality is there for the Pro but not the E when they are using ultimately the same files.
Thanks again for your help. I don’t know where some of us users would be without the knowledge of some of the developers and super users.


Possibly I could change some device files.

I am starting to think my Secure thermostat wasn’t setup properly?

The guy on this thread here has a 2 channel boiler reciever, where as I have a 1 channel.

However he has a parent thermostat device the same as mine, with no buttons for Heat / Cool / Auto / Off etc, but he then has two child devices that do have those buttons.

One child device is for heating and the other is for hot water, if you look at his screen shots on that thread

I dont have a child device at all for my Secure thermostat.

If that is correct or not for a 1 channel setup I dont know.

It was really that Idle / Heating label I was Interested in getting working for the Secure thermostat in the Home Remote app.

Yes I did notice they had different sub categories.

The Secure thermostat has a sub category of 2

And the new TKB Home thermostat has a sub category of 1

Getting a little out of my league here but I don’t think the sub category has much to do with what buttons are displayed in the GUI, I think that comes more from the json file.
My Nest E and Nest Pro are configured both as category 5 and subcategory 1 and have different button displays on the GUI.
If you notice in the screenshots for the other guys config its using D_HVAC_Zone… and if you open the json it has provisions for cooling etc.

I’ve used the Boiler Receiver (relay switch) devices “ThermostatMode” instead for the label on the tile for the Secure Thermostat, in the Home Remote app.


SDATA for the Boiler Receiver relay switch

{ "name": "Boiler Receiver", "altid": "58", "id": 190, "category": 5, "subcategory": 2, "room": 8, "parent": 1, "commands": "heater_off,heater_heat", "configured": "1", "commFailure": "0", "status": "1", "mode": "HeatOn", "state": -1, "comment": "" }

Means I need two different tile Thermostat templates in the Home Remote, but that is OK.



Nest has a special implementation. Mine is heat only (the fan is controlled by another thermostat - quite common here in Italy) and D_VeraConnectWWNThermostat1.xml / * D_VeraConnectWWNThermostat1_NoCool.json* is enough. But you’ll need to set CustomModeConfiguration variable to


CustomModeControls to


Then, HeatSetpointEnabled to 1 and CoolSetpointEnabled to 0.
This was done automatically for me.


As we know, thermostat support in Vera is a mess. I’m trying to build a virtual cool only thermostat (for my fans + AC) and it’s a lot of moving parts and it’s very difficult to do.

EDIT: and also HasFan to 0.

Just noticed this device isn’t polling or updating properly, so don’t think my last post will work.

It’s set to poll every 60 secs in Vera but its not polling it automatically.

And I don’t think this relay switch has instant updates either :roll_eyes:

If I manually poll it by pressing the poll now button in the GUI that works OK, so don’t know why Vera isn’t polling it every 60 secs.

I haven’t changed any of the global polling settings in Z-Wave settings area

Strange all my stuff looks to be configured the same as yours and I’m not getting an error that the setpoint can not be changed while in ECO but its in heat mode. I also see the green leaf in the vera GUI.

I am also getting a BLOCKED error that I’ve never seen before.

I wonder if this is fallout from them changing the json file?

Maybe it’s coming from nest api itself. Do you have t’stat block enabled?

Not that I’m aware of.
I power cycled by Vera Plus and now it seems to be working, strange as I had restarted the engine manually several times. The leaf icon seems to show when it should but otherwise it seems to be functioning again.

Best Home Automation shopping experience. Shop at getvera!

© 2020 Vera Control Ltd., All Rights Reserved. Terms of Use | Privacy Policy | Forum Rules