ADC T200-thermostat help

@pdobrien3 and @bachya,

Quick update for my issue. As you know my T2000 was connected to smartthings and imported into HA. The problem with this approach is that i was using a custom device handler that was not passing the proper commands to HA. I connected with andrewsayre and he was was able to suggest some entries for the device handler that solved the problem.

Check out the git conversation for more details: https://github.com/home-assistant/home-assistant/issues/23936

Thanks everyone for your help with this!

1 Like

Glad you got it working. For now, nest/google have stated that as long as you have a dev account, you can continue to use it. I love the nest so far and hope status quo will continue.

Just a piece of advice, if you ever have to remove the wires from the T2000, be very careful and take your time. I ended up damaging the connectors on the first one I removed.

Peace.

I’m on HA 0.98.5 and have OZW (generic linux install), I presume with the OZW command class updates mentioned further up in the thread.

I just went through the same process as @bachya did a few posts above, but Heat and Auto modes just aren’t working. It doesn’t accept the heating setpoint from HA, and HA doesn’t reflect the heating setpoint when the mode is changed on the unit itself. In your first picture above you actually see this same behavior, where you say you set the mode to Auto and the setpoint to 72F, but the temperature field in the state still reads 75. Later in the “Unit Testing” section, you set it to Auto on the unit itself and a setpoint of 65, but the temperature state still says 79.

I’m not convinced these things work entirely out-of-the-box without their ADC service. There’s something missing still where the heat mode isn’t working; I can hear the relay click when I switch it to Heat or Auto, through HA or from the unit, but the setpoint reported in HA (and send from HA to the unit) is always the cool setpoint and never the heat one. Heat is also never applied based on the setpoint even if it’s well into the region where you’d expect heating to happen.

I tailed OZW_Log.txt for a bit and saw that even if I changed the mode to Heat through HA (HA state and unit agree on the mode), setpoint changes still go out to the cooling setpoint only:

2019-09-19 04:45:26.111 Info, Node003, Received thermostat mode: Off
2019-09-19 04:45:26.111 Detail, Node003,   Expected reply and command class was received
2019-09-19 04:45:26.111 Detail, Node003,   Message transaction complete
2019-09-19 04:45:26.111 Detail,
2019-09-19 04:45:26.111 Detail, Node003, Removing current message
2019-09-19 04:45:26.112 Detail, Node003, Notification: ValueChanged
2019-09-19 04:45:29.449 Info, Node003, Value::Set - COMMAND_CLASS_THERMOSTAT_MODE - Mode - 0 - 1 - Heat
2019-09-19 04:45:29.449 Detail, Node003, Queuing (Send) ThermostatModeCmd_Set (Node=3): 0x01, 0x0a, 0x00, 0x13, 0x03, 0x03, 0x40, 0x01, 0x01, 0x25, 0x47, 0xc4
2019-09-19 04:45:29.449 Detail, Node003, Queuing (Send) ThermostatModeCmd_Get (Node=3): 0x01, 0x09, 0x00, 0x13, 0x03, 0x02, 0x40, 0x02, 0x25, 0x48, 0xcb 2019-09-19 04:45:29.449 Detail,
2019-09-19 04:45:29.449 Info, Node003, Sending (Send) message (Callback ID=0x47, Expected Reply=0x13) - ThermostatModeCmd_Set (Node=3): 0x01, 0x0a, 0x00, 0x13, 0x03, 0x03, 0x40, 0x01, 0x01, 0x25, 0x47, 0xc4
2019-09-19 04:45:29.463 Detail, Node003,   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2019-09-19 04:45:29.463 Detail, Node003,   ZW_SEND_DATA delivered to Z-Wave stack
2019-09-19 04:45:29.477 Detail, Node003,   Received: 0x01, 0x05, 0x00, 0x13, 0x47, 0x00, 0xae
2019-09-19 04:45:29.478 Detail, Node003,   ZW_SEND_DATA Request with callback ID 0x47 received (expected 0x47)
2019-09-19 04:45:29.478 Info, Node003, Request RTT 28 Average Request RTT 44
2019-09-19 04:45:29.478 Detail,   Expected callbackId was received
2019-09-19 04:45:29.478 Detail,   Expected reply was received
2019-09-19 04:45:29.478 Detail,   Message transaction complete
2019-09-19 04:45:29.478 Detail,
2019-09-19 04:45:29.478 Detail, Node003, Removing current message
2019-09-19 04:45:29.478 Detail,
2019-09-19 04:45:29.478 Info, Node003, Sending (Send) message (Callback ID=0x48, Expected Reply=0x04) - ThermostatModeCmd_Get (Node=3): 0x01, 0x09, 0x00, 0x13, 0x03, 0x02, 0x40, 0x02, 0x25, 0x48, 0xcb
2019-09-19 04:45:29.542 Detail, Node003,   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2019-09-19 04:45:29.542 Detail, Node003,   ZW_SEND_DATA delivered to Z-Wave stack
2019-09-19 04:45:29.557 Detail, Node003,   Received: 0x01, 0x05, 0x00, 0x13, 0x48, 0x00, 0xa1
2019-09-19 04:45:29.557 Detail, Node003,   ZW_SEND_DATA Request with callback ID 0x48 received (expected 0x48)
2019-09-19 04:45:29.557 Info, Node003, Request RTT 78 Average Request RTT 61
2019-09-19 04:45:29.557 Detail,   Expected callbackId was received
2019-09-19 04:45:29.767 Detail, Node003,   Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x03, 0x03, 0x40, 0x03, 0x01, 0xb0
2019-09-19 04:45:29.767 Detail,
2019-09-19 04:45:29.767 Info, Node003, Response RTT 288 Average Response RTT 265
2019-09-19 04:45:29.767 Detail, Node003, Refreshed Value: old value=0, new value=1, type=list
2019-09-19 04:45:29.767 Detail, Node003, Changes to this value are not verified
2019-09-19 04:45:29.767 Info, Node003, Received thermostat mode: Heat
2019-09-19 04:45:29.767 Detail, Node003,   Expected reply and command class was received
2019-09-19 04:45:29.767 Detail, Node003,   Message transaction complete
2019-09-19 04:45:29.767 Detail,
2019-09-19 04:45:29.767 Detail, Node003, Removing current message
2019-09-19 04:45:29.767 Detail, Node003, Notification: ValueChanged
2019-09-19 04:45:35.136 Info, Node003, Value::Set - COMMAND_CLASS_THERMOSTAT_SETPOINT - Cooling 1 - 2 - 1 - 76
2019-09-19 04:45:35.136 Detail, Node003, Queuing (Send) ThermostatSetpointCmd_Set (Node=3): 0x01, 0x0c, 0x00, 0x13, 0x03, 0x05, 0x43, 0x01, 0x02, 0x09, 0x4c, 0x25, 0x49, 0x8f
2019-09-19 04:45:35.137 Detail, Node003, Queuing (Send) ThermostatSetpointCmd_Get (Node=3): 0x01, 0x0a, 0x00, 0x13, 0x03, 0x03, 0x43, 0x02, 0x02, 0x25, 0x4a, 0xca
2019-09-19 04:45:35.137 Detail,
2019-09-19 04:45:35.137 Info, Node003, Sending (Send) message (Callback ID=0x49, Expected Reply=0x13) - ThermostatSetpointCmd_Set (Node=3): 0x01, 0x0c, 0x00, 0x13, 0x03, 0x05, 0x43, 0x01, 0x02, 0x09, 0x4c, 0x25, 0x49, 0x8f
2019-09-19 04:45:35.151 Detail, Node003,   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2019-09-19 04:45:35.151 Detail, Node003,   ZW_SEND_DATA delivered to Z-Wave stack
2019-09-19 04:45:35.165 Detail, Node003,   Received: 0x01, 0x05, 0x00, 0x13, 0x49, 0x00, 0xa0
2019-09-19 04:45:35.166 Detail, Node003,   ZW_SEND_DATA Request with callback ID 0x49 received (expected 0x49)
2019-09-19 04:45:35.166 Info, Node003, Request RTT 28 Average Request RTT 44
2019-09-19 04:45:35.166 Detail,   Expected callbackId was received
2019-09-19 04:45:35.166 Detail,   Expected reply was received
2019-09-19 04:45:35.166 Detail,   Message transaction complete
2019-09-19 04:45:35.166 Detail,
2019-09-19 04:45:35.166 Detail, Node003, Removing current message
2019-09-19 04:45:35.166 Detail,
2019-09-19 04:45:35.166 Info, Node003, Sending (Send) message (Callback ID=0x4a, Expected Reply=0x04) - ThermostatSetpointCmd_Get (Node=3): 0x01, 0x0a, 0x00, 0x13, 0x03, 0x03, 0x43, 0x02, 0x02, 0x25, 0x4a, 0xca
2019-09-19 04:45:35.224 Detail, Node003,   Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2019-09-19 04:45:35.224 Detail, Node003,   ZW_SEND_DATA delivered to Z-Wave stack
2019-09-19 04:45:35.238 Detail, Node003,   Received: 0x01, 0x05, 0x00, 0x13, 0x4a, 0x00, 0xa3
2019-09-19 04:45:35.238 Detail, Node003,   ZW_SEND_DATA Request with callback ID 0x4a received (expected 0x4a)
2019-09-19 04:45:35.238 Info, Node003, Request RTT 71 Average Request RTT 57
2019-09-19 04:45:35.238 Detail,   Expected callbackId was received
2019-09-19 04:45:35.297 Detail, Node003,   Received: 0x01, 0x0c, 0x00, 0x04, 0x00, 0x03, 0x06, 0x43, 0x03, 0x02, 0x2a, 0x02, 0xf8, 0x60
2019-09-19 04:45:35.297 Detail,
2019-09-19 04:45:35.297 Info, Node003, Response RTT 131 Average Response RTT 198
2019-09-19 04:45:35.297 Detail, Node003, Refreshed Value: old value=75.0, new value=76.0, type=decimal
2019-09-19 04:45:35.297 Detail, Node003, Changes to this value are not verified
2019-09-19 04:45:35.297 Info, Node003, Received thermostat setpoint report: Setpoint Cooling 1 = 76.0F
2019-09-19 04:45:35.297 Detail, Node003,   Expected reply and command class was received
2019-09-19 04:45:35.297 Detail, Node003,   Message transaction complete
2019-09-19 04:45:35.298 Detail,
2019-09-19 04:45:35.298 Detail, Node003, Removing current message
2019-09-19 04:45:35.298 Detail, Node003, Notification: ValueChanged

All of the mode changes and setpoint changes were done within HA. The unit reflects the mode changes and the relay makes an audible click when entering Heat mode, but the setpoint is only for cooling. It’s probably obvious given that the endpoint/node given to us by default is one that’s literally labeled “cooling” whereas the other is “unused.” I’m at a loss as to how to get the “heating” bits enabled or visible though. Their manual mentions extra modes and configurations being available via their application but they offer no further detail.

1 Like

Uh oh, that’s not good. I haven’t had occasion to use heating mode yet this year… I suppose I’ll find out soon. :laughing:

1 Like

I’ve found that only the cooling climate entity is created and not the heating climate entity. I’ve edited the zwcfg file as seen below and was able to get the heat set point to take effect on the thermostat by changing the temperature on the heating climate entity.

			<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 1" units="F" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="68" />
				<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="77" />
3 Likes

Nice! :tada: Now, for the all important question: does this mean you have to have two thermostat cards in Home Assistant?

EDIT: found this: https://github.com/enriqg9/dual-thermostat

How’d you get the changes to take effect? I tried editing the zwcfg_<homeid>.xml in the HA config directory but I didn’t see any new nodes or anything, and my changes didn’t survive a HA restart.

EDIT: I just found this thread that seems to answer the question. The zwcfg file gets written on OZW shutdown so you have to make changes after that. And @diaphanouscloak ninja’d me anyway, serves me right for not looking before posting. :slight_smile:

@bachya
I’m using the dual thermostat card as you’ve found.

@pokemane
I believe most recommend stopping HA before editing the zwcfg file. I’ve been able to get away with just stopping the Z-wave network before editing.

1 Like

Thanks! Everything’s going smoothly now, heating and cooling both work well with the dual thermostat card.

I wonder why the entities don’t populate properly on their own. Regardless, I appreciate you and @bachya replying to a 4-month thread necro and I’m glad it’s sorted. Hopefully this helps someone else too.

All,
Stumbled upon this thread while looking up z wave thermostats. I’m between the ecobee and this unit right now although ideally I’d prefer total local control that is not cloud dependent. Would anyone who owns it still recommend it at this point? If so how easy would it be to integrate into Google home for voice control via home assistant? Thanks for any and all help

I definitely still recommend it; it’s worked wonderfully for us thus far and there’s no cloud dependency.

A voice assistant is one area where this can be a little challenging since there are two climate entities (one for heating and one for cooling). We are an Alexa household; in that case, I have to create a group in the Alexa app (“Thermostat”) that contains both the cooling entity and the heating entity. Then, when I tell her to modify the “Thermostat,” she modifies both at the same time. Seems to work well. If Google Home can do the same thing, you’re set; if not, you’ll be resigned to asking it to modify each of those entities separately.

EDIT: thinking about this further – I suppose there’s no reason you couldn’t create a similar group in Home Assistant itself if Google Home doesn’t have that functionality.

I will sell you mine if you are interested.

Hope some find this useful.

			<CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1" request_flags="4" innif="true">
				<Instance index="1" />
				<Value type="list" genre="config" instance="1" index="1" label="HVAC System Type" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="0" size="1" >
					<Help>Configures the type of heating system used. 0 - Normal (Default), 1 - Heat Pump</Help>
					<Item label="Normal" value="0" />
					<Item label="Heat Pump" value="1" />
				</Value>
				<Value type="short" genre="config" instance="1" index="2" label="Number of Heat Stages" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="3" value="2" size="1" >
					<Help>Heat Stages 0-3 Default is 2.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="3" label="Number of Cool Stages" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="2" value="2" size="1" >
					<Help>Cool Stages 0-2 Default is 2.</Help>
				</Value>
				<Value type="list" genre="config" instance="1" index="4" label="Heat Fuel Type" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="1" size="1" >
					<Help>Choose type of fuel. Reality - whether unit is boiler vs forced air. 0 - Fossil Fuel, 1 - Electric (Default)</Help>
					<Item label="Fossil Fuel" value="0" />
					<Item label="Electric" value="1" />
				</Value>
				<Value type="short" genre="config" instance="1" index="5" label="Calibration Temperature" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="-100" max="100" value="0" size="4" >
					<Help>Calibration Temperature Range (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="6" label="Overshoot" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="30" value="5" size="4" >
					<Help>Overshoot Range (in deg. F) Precision is tenths of a degree. Default is 5.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="7" label="Swing" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="30" value="0" size="4" >
					<Help>Swing Range (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="8" label="Heat Staging Delay" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="1" max="60" value="10" size="1" >
					<Help>Heat Staging Delay (in min)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="9" label="Cool Staging Delay" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="1" max="60" value="10" size="1" >
					<Help>Cool Staging Delay (in min)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="10" label="Balance Setpoint" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="950" value="350" size="4" >
					<Help>Balance Setpont Range (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="list" genre="config" instance="1" index="11" label="Recovery Settings" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="1" size="1" >
					<Help>Whether thermostat uses intelligence to try and make the best of energy usage. 0 - Comfort, 1 - Efficient (Default)</Help>
					<Item label="Comfort" value="0" />
					<Item label="Efficient" value="1" />
				</Value>
				<Value type="short" genre="config" instance="1" index="12" label="Fan Circulation Period" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="10" max="240" value="20" size="1" >
					<Help>Fan Circulation Period (in min)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="13" label="Fan Circulation Duty Cycle" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="100" value="25" size="1" >
					<Help>Duty Cycle (percentage)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="14" label="Fan Purge Time" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="1" max="3600" value="60" size="2" >
					<Help>Purge Time (in seconds)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="15" label="Maximum Heat Setpoint" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="350" max="950" value="950" size="4" >
					<Help>Max Heat Setpoint Range (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="16" label="Minimum Heat Setpoint" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="350" max="950" value="350" size="4" >
					<Help>Min Heat Setpoint Range (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="17" label="Maximum Cool Setpoint" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="500" max="950" value="950" size="4" >
					<Help>Max Cool Setpoint Range(in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="18" label="Minimum Cool Setpoint" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="500" max="950" value="500" size="4" >
					<Help>Min Cool Setpoint (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="list" genre="config" instance="1" index="19" label="Thermostat Lock" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="0" size="1" >
					<Help>Lock out physical thermostat controls. 0 - Disabled (Default), 1 - Enabled</Help>
					<Item label="Disabled" value="0" />
					<Item label="Enabled" value="1" />
				</Value>
				<Value type="short" genre="config" instance="1" index="20" label="Compressor Delay" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="60" value="5" size="1" >
					<Help>Compressor Delay (in min)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="21" label="Demand Response Period" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="10" max="240" value="10" size="1" >
					<Help>Demand Response Period (in min)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="22" label="Demand Response Duty Cycle" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="100" value="25" size="1" >
					<Help>Demand Response Duty Cycle (percentage)</Help>
				</Value>
				<Value type="list" genre="config" instance="1" index="23" label="Temperature Display Units" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="1" size="1" >
					<Help>Celsius or Farenheit for temperature display. 0 - Celsius, 1 - Farenheit (Default)</Help>
					<Item label="Celsius" value="0" />
					<Item label="Farenheit" value="1" />
				</Value>
				<Value type="list" genre="config" instance="1" index="24" label="HVAC Modes Enabled" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="3" max="31" value="15" size="1" >
					<Help>Which heating/cooling modes are available. 3 - Off, Heat; 5 - Off, Cool; 7 - Off, Heat, Cool; 15 - Off, Heat, Cool, Auto (Default); 19 - Off, Heat, Emergency Heat; 23 - Off, Heat, Cool, Emergency Heat; 31 - Off, Heat, Cool, Auto, Emergency Heat</Help>
					<Item label="Off, Heat" value="3" />
					<Item label="Off, Cool" value="5" />
					<Item label="Off, Heat, Cool" value="7" />
					<Item label="Off, Heat, Cool, Auto (Default)" value="15" />
					<Item label="Off, Heat, Emergency Heat" value="19" />
					<Item label="Off, Heat, Cool, Emergency Heat" value="23" />
					<Item label="Off, Heat, Cool, Auto, Emergency Heat" value="31" />
				</Value>
				<Value type="list" genre="config" instance="1" index="25" label="Configurable Terminal Setting" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="3" value="0" size="1" >
					<Help>Changes control of configurable terminal 0 - Disabled (Default); 1 - W3 - Third Stage HEAT or 2nd Stage of 2-Stage Auxiliary / Backup heat; 2 - H - External Dehumidifier Control; 3 - DH - External Dehumidifier Operation</Help>
					<Item label="Disabled" value="0" />
					<Item label="W3" value="1" />
					<Item label="H" value="2" />
					<Item label="DH" value="3" />
				</Value>
				<Value type="list" genre="config" instance="1" index="26" label="Power Source" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="0" size="1" >
					<Help>Which source of power is utilized. 0 - Battery (Default), 1 - C-Wire</Help>
					<Item label="Battery" value="0" />
					<Item label="C-Wire" value="1" />
				</Value>
				<Value type="short" genre="config" instance="1" index="27" label="Battery Alert Threshold Low" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="100" value="30" size="1" >
					<Help>Battery Alert Range (percentage)</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="28" label="Battery Alert Threshold Very Low" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="100" value="15" size="1" >
					<Help>Very Low Battery Alert Range (percentage)</Help>
				</Value>
				<Value type="list" genre="config" instance="1" index="30" label="Remote Temperature Enable" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="0" size="1" >
					<Help>Enables remote temperature sensor instead of built-in. 0 - Disabled (Default), 1 - Enabled</Help>
					<Item label="Disabled" value="0" />
					<Item label="Enabled" value="1" />
				</Value>
				<Value type="short" genre="config" instance="1" index="31" label="Heat Differential" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="10" max="100" value="30" size="4" >
					<Help>Heat Differential (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="32" label="Cool Differential" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="10" max="100" value="30" size="4" >
					<Help>Cool Differential (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="short" genre="config" instance="1" index="33" label="Temperature Reporting Threshold" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="5" max="20" value="10" size="4" >
					<Help>Temperature Reporting Range (in deg. F) Precision is tenths of a degree.</Help>
				</Value>
				<Value type="list" genre="config" instance="1" index="34" label="O/B Select" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="1" size="1" >
					<Help>Configuration of O/B terminal. 0 - O/B Terminal acts as B terminal, closed when cooling; 1 - O/B Terminal acts as O terminal, closed when heating (Default)</Help>
					<Item label="O/B as B" value="0" />
					<Item label="O/B as O" value="1" />
				</Value>
				<Value type="list" genre="config" instance="1" index="35" label="Z-Wave Echo Association Reports" units="" read_only="false" write_only="false" verify_changes="true" poll_intensity="0" min="0" max="1" value="0" size="1" >
					<Help>Enable/Disabled Echo Assoc. Reports. 0 - Disabled (Default), 1 - Enabled</Help>
					<Item label="Disabled" value="0" />
					<Item label="Enabled" value="1" />
				</Value>
1 Like

I just wanted to reply and say that on the latest version of hassio I still needed to edit the zwave configuration file and add the “Heating 1” (at index 1) to the COMMAND_CLASS_THERMOSTAT_SETPOINT section as diaphanouscloak suggested.

Just to be explicit for anyone who runs across this in the future. I shut down my zwave network, edited the zwcfg_*.xml file, added the “Heating 1” entry, and then restarted my zwave network. After doing that everything is working great with the default hassio thermostat card. Here is the entire COMMAND_CLASS_THERMOSTAT_SETPOINT section of my zwave config now. The rest of the entries were automatically added when including the thermostat. I think by default hassio tried to use the “Cooling 1” and “Unused 3” items.

<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="3" request_flags="2" innif="true" base="1" typeInterpretation="B">
	<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="68" />
	<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="81.0" />
	<Value type="decimal" genre="user" instance="1" index="3" label="Unused 3" units="C" 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="101" label="Heating 1_minimum" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="900.2" />
	<Value type="decimal" genre="user" instance="1" index="102" label="Cooling 1_minimum" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1284.2" />
	<Value type="decimal" genre="user" instance="1" index="201" label="Heating 1_maximum" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="-0.00" />
	<Value type="decimal" genre="user" instance="1" index="202" label="Cooling 1_maximum" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="-0.00" />
</CommandClass>

Thanks for the help sorting out this issue!

1 Like

To fix this behavior you would need to modify the device XML in the source to force base="0"

I just replaced my two old Honeywell ZWave thermostats with a couple of the ADT ZWave+ I found on EBay for $30 each. I really liked those for their minimalist look. It took some effort to gather information to set them up for my Heat Pump system and have HA recognize them properly. Thanks in part to this thread, they have been working fantastic!

1 Like

FYI, I submitted a PR to officially get this included in the version of OZW that HASS will use in the future: https://github.com/OpenZWave/open-zwave/pull/2383

1 Like

Stumbled upon this. Excellent! Thanks for sharing.

My 2 ADC T200s occasionally show State 07 or State 10 instead of “Heating”.

Anyone experiencing this?

Thanks

By default the thermostat is configured with two heating stages and two cooling stages. When it enters the “second” stage (even if your HVAC unit doesn’t technically support that) it will change the state to 07 or 10 depending on heating a cooling.

This really has zero effect on the operation of the system, but if you want to fix it you can change the number of heat and number of cool stages to 1 in the config parameters.

1 Like