Zwave2mqtt ozw 1.6 upgrade broke SPIRITZ Eurotronic Thermostat

So far I used the zwave2mqtt add-on 0.4.2 (using openzwave 1.4) with my 3 thermostats SPIRIT-Z from Eurotronic. These Thermostats have 3 Modes Off, Heat and Heat Eco and you can also set the target temps for Heat and Heat Eco.

Today I was able to update to the newest version of the zwave2mqtt add-on (0.60) containing zwave2mqtt 3.02 and openzwave 1.6.974.

Unfortunately there are quite some changes with the SPIRIT-Z thermostats
“Heat Eco” is now named “Heat Econ” - not a problem, that was easy to adapt.

The big problem for me is that the parameters xx-67-1-1 (target temp for Heat mode) and xx-67-1-11 (target temp for Heat Econ mode) are no longer listed in the zwave2mqtt control panel.

The funny thing is that they are still sent via mqtt at startup and after a manual change at the thermostat.
The problem is that I am no longer able to change the values via mqtt.
A set topic (xx-67-1-1/set 22.5) command no longer sets the Heat target temp to 22.5 degree Celsius. It seems that zwave2mqtt is ignoring it.

Is there a way to update the parameter set in zwave2mqtt/oenzwave add on to repair this?

Am I the only one using these Thermostats with the news version of zwave2mqtt?

Any help is greatly appreciated
Chris

Ok I investigated a bit more. Obviously I have a wrong or outdated device config for the thermostat.
In accordance to the Add-On readme (section Known Issues & Limitations) I added the path

  • If the OpenZwave device database doesn’t seem to be loaded. Device names and options are missing: Go to Settings → Zwave → Config Path and set it to /etc/openzwave .

Then I checked the container data of the zwave2mqtt container. the ozwcache_0xdc1c5352.xml file does indeed contain the strange/wrong device definitions for command classes 64 and 67 which are causing the problem.

			<CommandClass id="64" name="COMMAND_CLASS_THERMOSTAT_MODE">
				<Compatibility />
				<State>
					<CCVersion>3</CCVersion>
					<InNif>true</InNif>
					<StaticRequests>0</StaticRequests>
				</State>
				<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">
					<Help>Set the Thermostat Mode</Help>
					<Item label="Off" value="0" />
					<Item label="Heat" value="1" />
					<Item label="Heat Econ" value="11" />
					<Item label="Full Power" value="15" />
				</Value>
				<SupportedModes>
					<Mode index="0" label="Off" />
					<Mode index="1" label="Heat" />
					<Mode index="11" label="Heat Econ" />
					<Mode index="15" label="Full Power" />
				</SupportedModes>
			</CommandClass>
			<CommandClass id="67" name="COMMAND_CLASS_THERMOSTAT_SETPOINT">
				<Compatibility />
				<State>
					<CCVersion>3</CCVersion>
					<InNif>true</InNif>
					<StaticRequests>0</StaticRequests>
				</State>
				<Instance index="1" />
				<Value type="decimal" genre="user" instance="1" index="2" label="Cooling 1" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0">
					<Help>Set the Thermostat Setpoint Cooling 1</Help>
				</Value>
				<Value type="decimal" genre="user" instance="1" index="8" label="Dry Air" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0">
					<Help>Set the Thermostat Setpoint Dry Air</Help>
				</Value>
				<Value type="decimal" genre="user" instance="1" index="100" label="Unused 0_minimum" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0">
					<Help></Help>
				</Value>
				<Value type="decimal" genre="user" instance="1" index="200" label="Unused 0_maximum" units="C" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0">
					<Help></Help>
				</Value>
			</CommandClass>

Here you will find “Heat Econ” instead “Heat Eco” and the Setpoint Commands 67-1-1 and 67-1-11 missing in command class 67 as described in my initial post.

I then checked openzwave 1.6 config for the thermostat and found the following in open-zwave/config/eurotronic/eur_spiritz.xml at master · OpenZWave/open-zwave · GitHub

  <CommandClass id="64">
    <Instance index="1"/>
    <Value genre="user" index="0" instance="1" label="Mode" type="list">
      <Help>
                Off: No heating, only frost protection.
                Heat: Room temperature will be kept at the configured setpoint.
                Heat Eco: Energy save heating mode. Room temperature will be lowered to the configured eco setpoint in order to save energy.
                Full Power: Full power heating. This mode is left automatically after 5 minutes.
                Manufacturer Specific: Direct valve control mode. The valve opening percentage can be controlled using the switch multilevel command class.
            </Help>
      <Item label="Off" value="0"/>
      <Item label="Heat" value="1"/>
      <Item label="Heat Eco" value="11"/>
      <Item label="Full Power" value="15"/>
      <Item label="Manufacturer Specific" value="31"/>
    </Value>
    <SupportedModes>
      <Mode index="0" label="Off"/>
      <Mode index="1" label="Heat"/>
      <Mode index="11" label="Heat Eco"/>
      <Mode index="15" label="Full Power"/>
      <Mode index="31" label="Manufacturer Specific"/>
    </SupportedModes>
  </CommandClass>
  <!-- Setpoints -->
  <CommandClass id="67">
    <Instance index="1"/>
    <Value genre="user" index="1" instance="1" label="Heat" max="28" min="8" read_only="false" type="decimal" units="°C" value="20" write_only="false"/>
    <Value genre="user" index="11" instance="1" label="Heat Eco" max="28" min="8" read_only="false" type="decimal" units="°C" value="16" write_only="false"/>
    <Compatibility>
      <Base>0</Base>
      <AltTypeInterpretation>false</AltTypeInterpretation>
    </Compatibility>
  </CommandClass>

And this is perfectly fine and would solve my problem instantly as it was with the zwave2mqtt 0.42 add-on I used until today.

So why do I get an outdated/wrong device config when I upgrade to zwave2mqtt add-on 0.6 using ozw 1.6???
And how do I fix this?

kind regards
Chris

Ok I found the root cause. I had a zwfgxxxx.xml file which contained the outdated info. After deleting this and restarting zwave2mqtt everything seems ok. The odd thing is that these wrong settings weren’t used and they came up just after the upgrade.
I think it would be a good thing to mention this in the readme to check any zwfg files and consider delete it before the upgrade