Hi all,
I’m new to both Home Assistant and Z Wave.
I’ve recently tried to get a Z Wave network up and running using Home Assistant OS on an RPi4, using an Aeotec Gen5 stick as a controller. After some initial setup hassles, I’ve managed to get the Z Wave network up and running, using the MQTT broker/OpenZWave(beta) 0.8.0 add-ons. So far so good.
Now I’ve also bought a device called “HeatIt Z Water” ( https://www.heatit.com/heating-control/water-based-heating/hatit-z-water/ or docs at: https://www.thermo-floor.no/media/multicase/documents/_tfasdokumentasjon/heatit%20controls/heatit%20z-water/manual_heatit_z-water_analog%20inputs_fw%202.1_ver2019-a_eng.pdf )
This unit contains 10 internal relays, to control floor heating. Now, I can add this unit to the network just fine, however, the unit only shows up as one binary switch instead of 10.
Through some help on the HA Discord, I’ve managed to find and extract the ozwcache.xml settings, and they look like this:
<Node id="10" name="" location="" basic="4" generic="16" specific="6" roletype="5" devicetype="5376" nodetype="0" type="Valve Open Close" listening="true" frequentListening="false" beaming="true" routing="true" max_baud_rate="100000" version="4" secured="true" configrevision="3" query_stage="Complete">
<Neighbors>1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</Neighbors>
<Manufacturer id="19b" name="ThermoFloor AS">
<Product type="3" id="20a" name="Heatit Z-Water TF 20a">
<!-- removed to be able to post -->
</Product>
</Manufacturer>
<CommandClasses>
<CommandClass id="32" name="COMMAND_CLASS_BASIC">
<Compatibility>
<Mapping>37</Mapping>
</Compatibility>
<State>
<CCVersion>2</CCVersion>
<StaticRequests>1</StaticRequests>
</State>
<Instance index="1" />
</CommandClass>
<CommandClass id="37" name="COMMAND_CLASS_SWITCH_BINARY">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>1</StaticRequests>
</State>
<Instance index="1" />
<Value type="bool" genre="user" instance="1" index="0" label="Switch" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Turn On/Off Device</Help>
</Value>
</CommandClass>
<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>5</StaticRequests>
</State>
<Instance index="1" />
</CommandClass>
<CommandClass id="94" name="COMMAND_CLASS_ZWAVEPLUS_INFO">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<InNif>true</InNif>
<StaticRequests>7</StaticRequests>
</State>
<Instance index="1" endpoint="1" />
<Instance index="2" endpoint="2" />
<Instance index="3" endpoint="3" />
<Instance index="4" endpoint="4" />
<Instance index="5" endpoint="5" />
<Instance index="6" endpoint="6" />
<Instance index="7" endpoint="7" />
<Instance index="8" endpoint="8" />
<Instance index="9" endpoint="9" />
<Instance index="10" endpoint="10" />
<Instance index="11" endpoint="11" />
<Instance index="12" endpoint="12" />
<Instance index="13" endpoint="13" />
<Instance index="14" endpoint="14" />
<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">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="2" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="3" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="4" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="5" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="6" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="7" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="8" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="9" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="10" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="11" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="12" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="13" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<Value type="byte" genre="system" instance="14" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1">
<Help>ZWave+ Version Supported on the Device</Help>
</Value>
<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="5376">
<Help>Icon File to use for the Installer Application</Help>
</Value>
<!-- Repeated for instance 2-14 -->
<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="5376">
<Help>Icon File to use for the User Application</Help>
</Value>
<!-- Repeated for instance 2-14 -->
</CommandClass>
<CommandClass id="96" name="COMMAND_CLASS_MULTI_INSTANCE/CHANNEL">
<Compatibility>
<MapRootToEndpoint>true</MapRootToEndpoint>
</Compatibility>
<State>
<CCVersion>4</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>1</StaticRequests>
</State>
<Instance index="1" />
</CommandClass>
<CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>5</StaticRequests>
</State>
<Instance index="1" />
<Value type="list" genre="config" instance="1" index="1" label="status LED" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="1" size="1">
<Help>Set LED mode</Help>
<Item label="LED turned off" value="0" />
<Item label="LED turned on.(default)" value="1" />
<Item label="2 LED flashing at 1 second intervals (½ Hz)" value="2" />
<Item label="3 LED flashing at ½ second interval (1 Hz)" value="3" />
</Value>
<Value type="byte" genre="config" instance="1" index="2" label="Specifies the brightness level of the LED when it is on.(0-100) Default is 50" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="50">
<Help>Set Brightnes</Help>
</Value>
<!--values removed to be able to post-->
</CommandClass>
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC">
<Compatibility />
<State>
<CCVersion>2</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>1</StaticRequests>
</State>
<Instance index="1" />
<Value type="int" genre="system" instance="1" index="0" label="Loaded Config Revision" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3">
<Help>Revision of the Config file currently loaded</Help>
</Value>
<Value type="int" genre="system" instance="1" index="1" label="Config File Revision" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3">
<Help>Revision of the Config file on the File System</Help>
</Value>
<Value type="int" genre="system" instance="1" index="2" label="Latest Available Config File Revision" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3">
<Help>Latest Revision of the Config file available for download</Help>
</Value>
</CommandClass>
<CommandClass id="115" name="COMMAND_CLASS_POWERLEVEL">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>5</StaticRequests>
</State>
<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">
<Help>Output RF PowerLevel</Help>
<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">
<Help>Timeout till the PowerLevel is reset to Normal</Help>
</Value>
<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">
<Help>Apply the Output PowerLevel and Timeout Values</Help>
</Value>
<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">
<Help>Node to Perform a test against</Help>
</Value>
<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">
<Help>PowerLevel to use for the Test</Help>
<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">
<Help>How Many Messages to send to the Node for the Test</Help>
</Value>
<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">
<Help>Perform a PowerLevel Test against the a Node</Help>
</Value>
<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">
<Help>Get the results of the latest PowerLevel Test against a Node</Help>
</Value>
<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">
<Help>The Current Status of the last PowerNode Test Executed</Help>
<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">
<Help>Number of Messages successfully Acked by the Target Node</Help>
</Value>
</CommandClass>
<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>5</StaticRequests>
</State>
<Instance index="1" />
<Associations num_groups="5">
<Group index="1" max_associations="5" label="Lifeline. - Reset notification - Basic Report On / Off - Multilevel Sensor Report" auto="true" multiInstance="true">
<Node id="1" instance="1" />
</Group>
<Group index="2" max_associations="5" label="Sends Multilevel Sensor Reports for input 1" auto="false" multiInstance="true" />
<Group index="3" max_associations="5" label="Sends Multilevel Sensor Reports for input 2" auto="false" multiInstance="true" />
<Group index="4" max_associations="5" label="Sends Multilevel Sensor Reports for input 3" auto="false" multiInstance="true" />
<Group index="5" max_associations="5" label="Sends Multilevel Sensor Reports for input 4" auto="false" multiInstance="true" />
</Associations>
</CommandClass>
<CommandClass id="134" name="COMMAND_CLASS_VERSION">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>5</StaticRequests>
</State>
<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">
<Help>Z-Wave Library Version</Help>
</Value>
<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="6.04">
<Help>Z-Wave Protocol Version</Help>
</Value>
<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="3.01">
<Help>Application Version</Help>
</Value>
</CommandClass>
<CommandClass id="142" name="COMMAND_CLASS_MULTI_CHANNEL_ASSOCIATION">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<Encrypted>true</Encrypted>
<StaticRequests>5</StaticRequests>
</State>
<Instance index="1" />
<Associations num_groups="5">
<Group index="1" max_associations="5" label="Lifeline. - Reset notification - Basic Report On / Off - Multilevel Sensor Report" auto="true" multiInstance="true">
<Node id="1" instance="1" />
</Group>
<Group index="2" max_associations="5" label="Sends Multilevel Sensor Reports for input 1" auto="false" multiInstance="true" />
<Group index="3" max_associations="5" label="Sends Multilevel Sensor Reports for input 2" auto="false" multiInstance="true" />
<Group index="4" max_associations="5" label="Sends Multilevel Sensor Reports for input 3" auto="false" multiInstance="true" />
<Group index="5" max_associations="5" label="Sends Multilevel Sensor Reports for input 4" auto="false" multiInstance="true" />
</Associations>
</CommandClass>
<CommandClass id="152" name="COMMAND_CLASS_SECURITY">
<Compatibility />
<State>
<CCVersion>1</CCVersion>
<InNif>true</InNif>
<StaticRequests>5</StaticRequests>
</State>
<Instance index="1" endpoint="1" />
<Instance index="2" endpoint="2" />
<Instance index="3" endpoint="3" />
<Instance index="4" endpoint="4" />
<Instance index="5" endpoint="5" />
<Instance index="6" endpoint="6" />
<Instance index="7" endpoint="7" />
<Instance index="8" endpoint="8" />
<Instance index="9" endpoint="9" />
<Instance index="10" endpoint="10" />
<Instance index="11" endpoint="11" />
<Instance index="12" endpoint="12" />
<Instance index="13" endpoint="13" />
<Instance index="14" endpoint="14" />
<Value type="bool" genre="system" instance="1" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<Value type="bool" genre="system" instance="2" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<Value type="bool" genre="system" instance="3" index="0" label="Secured" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False">
<Help>Is Communication with Device Encrypted</Help>
</Value>
<!-- repeated 4-14 -->
</CommandClass>
</CommandClasses>
</Node>
Now, one can see that a number of endpoints are discovered on the device, however, they do not show up under <CommandClass id="37" name="COMMAND_CLASS_SWITCH_BINARY">
. How can I get them to show up there? Does anyone know?