Heatit thermostat - channel needed in Z-wave database for ON/OFF state tracking

I have 13 of these thermostats in my house:

http://www.cd-jackson.com/index.php/zwave/zwave-device-database/zwave-device-list/devicesummary/247

These report their ON/OFF state via association group 2, through a Basic Set command. I guess it is possible (and maybe simple) to add a channel for this in the Z-wave database, but I am unsure how to do it?

I have managed to confirm this is working through code that parses the DEBUG log-file to trace these Basic Set - few other home automation softwares get this one right.

It should be possible, and maybe even easy to add, but I guess the first question is if it’s needed? Why not use the mode - is this not also sent when it changes?

I’ve no great problem with adding the channel, but on the other hand I’d also prefer not to add channels that can easily, and possibly better, already be performed in another way


The mode (THERMOSTAT_MODE) tells the thermostat to be permanently off, or to employ its thermostat functions - which means: “activate the heating if it is cold”. Then if it is actually “cold” - below the setpoint - the thermostat will send a Basic Set to Association group 2 whenever the relay is activated (and power is actually drawn) and not.

So yes, there is a need for a channel for it.

Ok, that’s fine. I’ll add it. Apologies if it seems like I’m being difficult, but I just want to ensure we don’t add lots of unnecessary channels


Excellent! No apologies needed, the question was right to ask :slight_smile: Thanks for your contribution.

Did any changes from this topic end up in OpenHAB 2.3, or some newer nightly build? I would be happy to test, but can’t find it in 2.3 at least.

Apologies, I missed this. I’ve just added it now so it should be in the next snapshot in the next day or so.

I tried the latest snapshot (2.4.0.201806152142), but did not manage to find any extra channel (that would report the active state of the thermostat). Should an extra channel pop up by itself in Paper UI/Habmin? I also tried deleting the xml-file and let it be regenerated, but still I did not see any extra channel. If I need to exclude and reinclude, I will do that.

No - the thing definition doesn’t update - you need to delete the thing and add it in again.

You don’t need to do this - just delete the thing, do a search in the inbox, and add the device.

Got it - I deleted the thing and readded it, and saw the new channel called ‘Thermostat state’. But it is linked to switch_binary, which apparently is the functionality for turning the thermostat entirely off, or on (which also can be accomplished with the channel ‘Thermostat Mode’).

It is the message sent to association group 2 I would like to capture in a channel, which tells me whether there is power being drawn at the moment. Maybe it is difficult to get into a channel?

Did you ever get a hold of the the message sent to ass group 2?

No, it does not work yet (I am still using a Python parser on the z-wave DEBUG statements to capture the state)

To be clear, the binding doesn’t know anything about association groups - only the commands it receives. When the device sends a command, there is no way to know why it sent the command - eg which association group might have caused it. Association groups are what the device uses to provide functionality only


So, with that said, we did add a channel called “Thermostat State” a few months back - if this doesn’t work, then I would need to see logs to see what the binding is actually sending as this channel was linked to the basic command class as requested in the original request.

Looking at the database, and the exported XML, this is definately not the case -:

It’s clearly linked to the basic class.

I am not able to state how it should be accomplished in the Z-wave database (or if it is even possible). But my log-file-parser looks for DEBUG statements like this:

2018-03-17 00:00:47.060 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - NODE 5: Basic Set sent to the controller will be processed as Basic Report
2018-03-17 00:00:47.067 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - NODE 5: Basic report, value = 0x00

where the “Basic Set” is the crucial point, and the value 0x00 is then picked up and interpreted as the thermostat being turned off.

In addition I get a lot of events like this:

2018-03-17 08:24:38.061 [DEBUG] [ssage.ApplicationCommandMessageClass] - NODE 23: Incoming command class BASIC
2018-03-17 08:24:38.064 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - NODE 23: Received Basic Request
2018-03-17 08:24:38.067 [DEBUG] [.commandclass.ZWaveBasicCommandClass] - NODE 23: Basic report, value = 0xFF

which I should ignore, the 0xFF here does not mean that the thermostat just turned on.

Python-code doing this parsing is available at https://pastebin.com/yaTtsS1R

From this it sounds like the thermostat reports when it is turned OFF (stops heating), but not when it is turned ON (heating starts)?

I am interested in this because I want to know the energy consumption on my non-energy-reporting thermostats. One solution might be to set up a recurring check that uses what we know (temperature, setpoint, hysteris), something along the lines of (pseudo code):

var powerConsumptionDiningRoom = 0.60 * 50 // watts * square meters for floor heating
var isOn = (heating_setpoint-temperature+hysteresis)>0
var currentConsumption = isOn*powerConsumptionDiningRoom

But I’m not sure if I want to have a lot of recurring rules running very often


The thermostat is reporting both ON and OFF correctly (with Basic Set), the log excerpt is just an example.

In my case half of my thermostats do not have a floor sensor, and then there is no readout of measured temperature from the thermostat (it measures air internally, but refuses to send it over Z-wave as it is affected by internal heating inside the unit), and such a recurring check would not work at all. For the others, the check could work, but most likely with quite a bit of uncertainty.

Hi Berland,

Did you also delete the XML-file after deleting the Thing?

I upgraded to the latest snapshot and deleted and readded the termostat, but cannot find a new channel.

As you can see, the channel is configured to use the BASIC command class, so it should work as far as I can see. Please provide a log showing this data being received so I can see what is happening.

I upgraded from 2.3 release to openHAB 2.4.0 Build #1326 on openhabianpi using the “upgrade to latest snapshot tool” in the console.

I then deleted the thermostat and added it again and added the stick to association group 2. But I don’t see a new channel.

Does the version of the binding follow the version of the openHAB version, or do I have to upgrade the z-wave binding too?