Honeywell T6 Z-Wave thermostat

Hi,

Running hass.io on a RPi 3 with a Zooz ZST10 zwave stick. I have been migrating my zwave devices from SmartThings and so far it has been going pretty well. When I added the tstat it comes up with 4 devices in the overview, none make sense or work correctly. Any ideas how to fix it? OpenZWave is supposed to support it as of April 7 (see https://github.com/OpenZWave/open-zwave/pull/1757).

climate.honeywell_unknown_type_0011_id_0008_cooling_1
climate.honeywell_unknown_type_0011_id_0008_dry_air
climate.honeywell_unknown_type_0011_id_0008_unused_3
climate.honeywell_unknown_type_0011_id_0008_moist_air

Thanks!

Jon

Those entities represent the ZWave Thermostat Setpoints, for the thermostat modes supported by the thermostat. In HA, the setpoints are individually represented, instead of being combined into a single climate entity. You have to control them separately, so to adjust the heating temperature you’d have to modify a heat entity, and to adjust A/C you’d modify a cool entity. There is also the custom dual thermostat which can combine two separate entities.

As for the names, they are provided by OpenZWave. unused_3 is setpoint ID 3, which has no use. Here are the list of setpoints from the spec (available here):

Each setpoint has a corresponding thermostat mode.



Obviously the cool_1 setpoint is used for cooling. Not sure about the Dry and Moist modes, because the manual says it measures humidity but does not control it. Are you sure you don’t have a heat_1 entity either? If you go to the Integrations->ZWave panel, what are the entities listed for that node?

There is also some information about this thermostat in the Smartthings forum. The posted device handler code only recognizes the Heating and Cooling setpoint/modes, so the unused, dry and moist can probably just be ignored. The device handler also enables polling of the device every 5 minutes, which is not great. You might want to see what happens in HA if you adjust the temperature on the thermostat itself, do the setpoint values change, or do you also need to enable polling?

Thanks for the fast reply!
The modules in the zwave entities are as follows, I don’t seem to have heating entity at all. Do you think something went wrong adding it?

climate.honeywell_unknown_type_0011_id_0008_cooling_1
climate.honeywell_unknown_type_0011_id_0008_dry_air
climate.honeywell_unknown_type_0011_id_0008_moist_air
climate.honeywell_unknown_type_0011_id_0008_unused_3
sensor.honeywell_unknown_type_0011_id_0008_power_management
sensor.honeywell_unknown_type_0011_id_0008_sourcenodeid
sensor.honeywell_unknown_type_0011_id_0008_alarm_level
sensor.honeywell_unknown_type_0011_id_0008_alarm_type
sensor.honeywell_unknown_type_0011_id_0008_relative_humidity
sensor.honeywell_unknown_type_0011_id_0008_temperature

Are you using it on batteries or connected to the c-wire?

It is connected to C wire.

Can you copy/paste the contents of your zwcfg*.xml file for that node? If you haven’t already, you’ll need to save the config file (can be done from the zwave control panel).

was able to save it, not sure how to look at it?

The file resides in the same directory as the HA config files, so however you access that.

I had to edit the zwcfg file to include the cooling entity when I discovered mine, not sure why it didn’t populate. Here is what that section ended up looking like.

			<CommandClass id="66" name="COMMAND_CLASS_THERMOSTAT_OPERATING_STATE" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="string" genre="user" instance="1" index="0" label="Operating State" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Cooling" />
			</CommandClass>
			<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="5" innif="true" base="1">
				<Instance index="1" />
				<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="71.0" />
				<Value type="decimal" genre="user" instance="1" index="2" label="Cooling 1" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="76.0" />
				<Value type="decimal" genre="user" instance="1" index="3" label="Unused 3" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0" />
				<Value type="decimal" genre="user" instance="1" index="8" label="Dry Air" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0" />
				<Value type="decimal" genre="user" instance="1" index="9" label="Moist Air" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0" />
			</CommandClass>

How did you get a base value of 1? The config file is overriding it and setting it to 0.

I have no bearing on what that means. I probably modified the request flags to 5 when I added cooling, but otherwise didn’t mess with that line. It was a few months ago and everything has worked since, so I have forgotten some of the details.

You’ve got me. Normally I would use SSH to get files but apparently that add-on doesn’t work in hass.io. I’ll keep mucking with it and hopefully come up with some means to get to my config files.

What is wrong with the ssh addon, why wouldn’t it work? How are you editing your configuration.yaml now?

I use Node RED, don’t use the yaml config file. I assume you can edit it through the web interface. Don’t see a way to get to the zwave config through web interface.
I added the ssh, copied my public key into the config and it wouldn’t work. Noticed a note in the add-on says it doesn’t work with hass.io.

Isn’t there a Samba share addon for hassio? You could use that to expose the file structure to the internal network.

I had to change my openzwave config file. The thermostat actually supports Heat Econ and Cool Econ commands (puts the thermostat in away mode). There was a breaking change in 0.96.x with the Econ modes; it will be resolved in 0.97.

			<CommandClass id="64" name="COMMAND_CLASS_THERMOSTAT_MODE" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="list" genre="user" instance="1" index="0" label="Mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
					<Item label="Off" value="0" />
					<Item label="Heat" value="1" />
					<Item label="Cool" value="2" />
					<Item label="Heat Econ" value="11" />
					<Item label="Cool Econ" value="12" />
				</Value>
				<SupportedModes>
					<Mode index="0" label="Off" />
					<Mode index="1" label="Heat" />
					<Mode index="2" label="Cool" />
					<Mode index="11" label="Heat Econ" />
					<Mode index="12" label="Cool Econ" />
				</SupportedModes>
			</CommandClass>
			<CommandClass id="66" name="COMMAND_CLASS_THERMOSTAT_OPERATING_STATE" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="string" genre="user" instance="1" index="0" label="Operating State" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Idle" />
			</CommandClass>
			<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="1" request_flags="4" innif="true" base="1">
				<Instance index="1" />
				<Value type="decimal" genre="user" instance="1" index="1" label="Heating" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="65.0" />
				<Value type="decimal" genre="user" instance="1" index="2" label="Cooling" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="78.0" />
				<Value type="decimal" genre="user" instance="1" index="11" label="Heating Econ" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="62.0" />
				<Value type="decimal" genre="user" instance="1" index="12" label="Cooling Econ" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="80.0" />
			</CommandClass>

The Samba share worked great. Was able to mod the zwcfg file with the above config items. Whenever I reboot Hass, the config file reverts to the non-working version.

You can only modify the OpenZWave file when home assistant is shutdown. You can stop home assistant within settings, make the changes and then restart it.

FWIW, the reason the setpoints are detected incorrectly is because a) OZW is using Interpretation B to parse the setpoint bitmask, when it appears this thermostat is reporting with Interpretation A, and b) there is an off-by-one problem with the set bits. If you left shift the set bits by one (or the indices) and use Interpretation A it works out correctly.


The only thing missing is the Auto Changeover setpoint, which the product database says it supports.