Hi all,
My Issue:
I have an Alarm.com branded T2000 thermostat which I’m having difficulties controlling. I have successfully added it to my Zwave network and can see four entities for it, but three are sensors (temperature, humidity, and battery level) and one is “unknown”, so I am unable to send commands to it as if it were a climate entity. The device is listed as “Building 36 Technologies Unknown: type=0001, id=0001”
I want to display the thermostat as an entity in Lovelace and control it using the GUI.
My Home Assistant Environment:
I’m running Home Assistant 0.115.4 in a Docker on an UnRaid server.
My Zwave device is an AEON Labs ZW090 Z-Stick Gen5 US.
What I’ve Tried:
Of course I rebooted my server and healed the Zwave network - this made no difference.
I referred to this old thread a lot but have been unable to resolve this issue so far: ADC T200-thermostat help
I’ve done some research and some people are saying that the device isn’t recognized by my instance of Open-Zwave and I need to update the device database. I checked the database online, and it does indeed include an entry for my thermostat. I am confused as to how to update the database though - apparently I need to edit manufacturer_specific.xml, but as I’m running in a Docker, I’m not sure how to edit this file, or if I even should. Am I confused about this step? Do I need to update Open-Zwave so that the device database is up to date, or is this a manual change that I need to make?
My zwcfg_xxxxx.xml Entry:
<Node id="24" name="" location="" basic="4" generic="8" specific="6" roletype="7" devicetype="4608" nodetype="0" type="General Thermostat V2" listening="false" frequentListening="true" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
<Manufacturer id="190" name="Building 36 Technologies">
<Product type="1" id="1" name="Unknown: type=0001, id=0001" />
</Manufacturer>
<CommandClasses>
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" request_flags="4" innif="true" mapping="64">
<Instance index="1" />
</CommandClass>
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="6" innif="true">
<Instance index="1" />
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="F" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="74.4" />
<Value type="decimal" genre="user" instance="1" index="5" label="Relative Humidity" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="44" />
</CommandClass>
<CommandClass id="64" name="COMMAND_CLASS_THERMOSTAT_MODE" version="3" 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="2" size="1">
<Item label="Off" value="0" />
<Item label="Heat" value="1" />
<Item label="Cool" value="2" />
<Item label="Auto" value="3" />
</Value>
<SupportedModes>
<Mode index="0" label="Off" />
<Mode index="1" label="Heat" />
<Mode index="2" label="Cool" />
<Mode index="3" label="Auto" />
</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="3" innif="true" base="1" typeInterpretation="B">
<Instance index="1" />
<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="75.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>
<CommandClass id="68" name="COMMAND_CLASS_THERMOSTAT_FAN_MODE" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Fan Mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Auto Low" value="0" />
<Item label="On Low" value="1" />
<Item label="Circulate" value="6" />
</Value>
<SupportedModes>
<Mode index="0" label="Auto Low" />
<Mode index="1" label="On Low" />
<Mode index="6" label="Circulate" />
</SupportedModes>
</CommandClass>
<CommandClass id="69" name="COMMAND_CLASS_THERMOSTAT_FAN_STATE" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="user" instance="1" index="0" label="Fan State" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Idle" />
</CommandClass>
<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="94" name="COMMAND_CLASS_ZWAVEPLUS_INFO" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="system" instance="1" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1" />
<Value type="short" genre="system" instance="1" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="4608" />
<Value type="short" genre="system" instance="1" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="4608" />
</CommandClass>
<CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
<Instance index="1" />
</CommandClass>
<CommandClass id="115" name="COMMAND_CLASS_POWERLEVEL" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="system" instance="1" index="0" label="Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Normal" value="0" />
<Item label="-1dB" value="1" />
<Item label="-2dB" value="2" />
<Item label="-3dB" value="3" />
<Item label="-4dB" value="4" />
<Item label="-5dB" value="5" />
<Item label="-6dB" value="6" />
<Item label="-7dB" value="7" />
<Item label="-8dB" value="8" />
<Item label="-9dB" value="9" />
</Value>
<Value type="byte" genre="system" instance="1" index="1" label="Timeout" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
<Value type="button" genre="system" instance="1" index="2" label="Set Powerlevel" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="byte" genre="system" instance="1" index="3" label="Test Node" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
<Value type="list" genre="system" instance="1" index="4" label="Test Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Normal" value="0" />
<Item label="-1dB" value="1" />
<Item label="-2dB" value="2" />
<Item label="-3dB" value="3" />
<Item label="-4dB" value="4" />
<Item label="-5dB" value="5" />
<Item label="-6dB" value="6" />
<Item label="-7dB" value="7" />
<Item label="-8dB" value="8" />
<Item label="-9dB" value="9" />
</Value>
<Value type="short" genre="system" instance="1" index="5" label="Frame Count" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
<Value type="button" genre="system" instance="1" index="6" label="Test" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="button" genre="system" instance="1" index="7" label="Report" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
<Value type="list" genre="system" instance="1" index="8" label="Test Status" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
<Item label="Failed" value="0" />
<Item label="Success" value="1" />
<Item label="In Progress" value="2" />
</Value>
<Value type="short" genre="system" instance="1" index="9" label="Acked Frames" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
</CommandClass>
<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="69" />
</CommandClass>
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="2" size="1">
<Item label="Monday" value="1" />
<Item label="Tuesday" value="2" />
<Item label="Wednesday" value="3" />
<Item label="Thursday" value="4" />
<Item label="Friday" value="5" />
<Item label="Saturday" value="6" />
<Item label="Sunday" value="7" />
</Value>
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="11" />
</CommandClass>
<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Associations num_groups="1">
<Group index="1" max_associations="4" label="Group 1" auto="true">
<Node id="1" />
</Group>
</Associations>
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
<Instance index="1" />
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3" />
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="4.54" />
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.20" />
</CommandClass>
</CommandClasses>
</Node>
TL;DR:
I believe that I need to make sure that Open-Zwave recognizes the thermostat properly as a climate device in order to use it - I just don’t know how to do this or configure it that way. Please let me know if any other details would be helpful.
Any assistance would be greatly appreciated.
EDIT: RESOLVED, SOLUTION BELOW
Hey guys - some very nice people in Discord helped me resolve this. Here were the steps I performed as advised by them:
-
Make backup of zwcfg_xxxxxxxx.xml
-
Stop Docker
-
Edit zwcfg_xxxxxxxxx.xml:
Change
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="3" innif="true" base="1" typeInterpretation="B">
to
<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT" version="3" innif="true" base="0" typeInterpretation="B">
Remove this line:
<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" />
After <Instance index="1" />
add:
<Value type="decimal" genre="user" instance="1" index="1" label="Heating 1" units="C" read_only="false" write_only="false" verify_changes="false">
-
Save changes
-
Start Docker
-
Give HA some time to reconnect to everything.
-
Party!