Eurotronic Spirit temperature not changing

I can confirm - this works for me. Good solution.

Hi There,
I’m a new user. Just to be sure. Should i download the whole config directory from and place this in for instance a folder called (zwave-config) in my /config folder?

What should be the exact config path? should this just be zwave-config/ or /config/zwave-config/

Hi there.

I am happy to hear you all guys managed to make the Spirit work.
I also managed to put the newer (not dev branch) config files and TRV is visible. I can also change the config parameters like battery and temperature reporting, etc.

But from the operational point of view I did just manage to turn if full off or full on. I was not yet able to set temperatures for Heat and Heat Eco. Neither at each shot nor permanently.

I am quite a new with HA and maybe I am omitting something obvious. But can you share some config files or automation?

(I ma planning to integrate 4 Spirits, some Fibaro relays and Xiaomi GW with detectors so I will later share also :wink: )


Hi @bartandeweg, I should have posted the config earlier since it took me some time to figure the exact semantics of config_path.
Here is relevant part of my zwave config in configuration.yaml file:

  config_path: /share/z-wave/open-zwave/config

The Eurotronic Spirit files are located here:

core-ssh:/share/z-wave/open-zwave/config/eurotronic# ls
eur_cometz.xml   eur_spiritz.xml  eur_stellaz.xml
core-ssh:/share/z-wave/open-zwave/config/eurotronic# pwd
1 Like

Hi @TriStone, I have similar components that you’ve described and also starting my journey with HA some keep in mind that the quality of my help is likely low.
Once you configure the relevant z-wave config you might also want to change the Tempreture Report Threshold (config param 5) to 1 (default 5). I’m not sure whether this is still the case, but the reporting of tempreture from the thermostat didn’t work as expected with default value.
There are bunch of entities created for the Eurotronic Spirit device. I’m using the one named climate.<id>_heating_1 in the UI and everything works fine.
I have two types of automations for the thermostat:

  1. Setting tempreture on schedule.
  2. Turning on/off on window close/open.

For (1) I have few of those:

- id: schedule_temperature_update_morning
  initial_state: "on"
    platform: time
    at: '06:00:00'
  - service: climate.set_temperature
      entity_id: climate.mela_thermostat_heating_1
      temperature: 21

For (2) I have following automation:

- id: mela_window_toggle
  initial_state: "on"
    platform: state
    entity_id: binary_sensor.door_window_sensor_158d0001de6492
    condition: template
    value_template: '{{ trigger.from_state.state != trigger.to_state.state }}'
    service: script.toggle_heating_for_entity_based_on_door_sensor
      entity: climate.mela_thermostat_heating_1
      sensor: binary_sensor.door_window_sensor_158d0001de6492

And associated scripts:

    - service: script.toggle_heating_for_entity
        entity: '{{ entity }}'
        mode: >
          {%- if is_state(sensor, 'on') -%}
          {%- else -%}
          {%- endif -%}

    - service: climate.set_operation_mode
        entity_id: '{{ entity }}'
        operation_mode: '{{ mode }}'

Thanks guys,

this worked well.
Just to share back for those that are running HASS.IO on linux systems, the \share folder mentioned will be in the root of your configuration, for example on my system I have \srv\docker\hassio configured.

Inside this folder, you will find, for example the folders

damian@Jarvis:/srv/docker/hassio$ ls -al
total 72
drwxr-xr-x 9 root root 4096 Mar 26 17:21 .
drwxr-xr-x 5 root root 4096 Mar 20 21:48 ..
drwxr-xr-x 6 root root 4096 Mar 19 22:44 addons
-rw-r--r-- 1 root root 5060 Mar 20 22:02 addons.json
drwxr-xr-x 2 root root 4096 Mar 18 17:37 backup
-rw-r--r-- 1 root root  170 Mar 26 17:17 config.json
drwxr-xr-x 9 root root 4096 Mar 26 17:21 .git
-rw-r--r-- 1 root root 2839 Mar 20 12:32 .gitattributes
-rw-r--r-- 1 root root  393 Mar 26 16:04 .gitignore
-rw-r--r-- 1 root root  121 Mar 26 17:21 .gitmodules
drwxr-xr-x 7 root root 4096 Mar 26 17:24 homeassistant
-rw-r--r-- 1 root root  156 Mar 26 17:17 homeassistant.json
drwxr-xr-x 3 root root 4096 Mar 26 17:21 share
drwxr-xr-x 2 root root 4096 Mar 18 17:37 ssl
drwxr-xr-x 2 root root 4096 Mar 18 17:37 tmp
-rw-r--r-- 1 root root   74 Mar 26 17:17 updater.json

I work mainly from the folder which is called homeassistant (go figure), and have initialized a GIT repo at the root, as you can see above from the hidden folder .git

Therefore to add the OpenZwave Dev branch, I am opting to use tha Git Submodule, which is to be hosted in the share folder, with the following command

sudo git submodule add -f -b Dev ../share/open-zwave

Which results in the following

damian@Jarvis:/srv/docker/hassio/share/open-zwave/config$ ls euro*
eur_cometz.xml  eur_spiritz.xml  eur_stellaz.xml

Now, from here I just update my configuration.yaml with the reference as suggested by @rsokolowski

  usb_path: /dev/ttyACM0
  network_key: !secret zwave_secure
  config_path: /share/open-zwave/config
  debug: false

And from this point, you should have all you need; Eject the TRV, restart the HASS.IO container, and Import the TRV :slight_smile:

thank you @rsokolowski for figuring it out


I also try to get the Spirit working with hassio.
I’ve uploaded the config folder of dev branch to the samba share /share/z-wave-open-zwave and updated the config_path in zwave component in my configurations.yaml.
The Spirit is still shown as “EUROtronic Unknown: type=0003, id=0001 Cooling 1” and I’m not able to set the temperature or receive the temperature (it’s always 254).
Do you have any idea what I’m doing wrong?

Hi @DamianFlynn, I have installed on a Raspberry Pi. I’m trying to setup the Spirit thermostat. As mentioned above already, I can setup a connection but can’t get the temperature on the thermostat set.
I copied the 3 Eurotronic Spirit xml files to a folder on the Raspberry Pi and added the folder name to the configuration.yaml file. I tried different locations but without success. Last try looks like this:

used folder: \hassio\config\open-zwave\config


usb_path: /dev/ttyACM0
config_path: /config/open-zwave/config

When I reboot, I have a “Invalid config” notification.

Do you know what’s wrong here?

Hi @FredericVV,

It does not work because you need to copy the complete open-zwave configuration files, including subfolders to your config folder. Additionally the files have to be linked in ‘manufacturer_specific.xml’ which is the entrypoint for all z-wave devices. It should look like this:

<Manufacturer id="0148" name="EUROtronic">
    <Product type="0001" id="0001" name="EUR_STELLAZ Wall Radiator Thermostat Valve Control" config="eurotronic/eur_stellaz.xml"/>
    <Product type="0002" id="0001" name="EUR_COMETZ Wall Radiator Thermostat Valve Control" config="eurotronic/eur_cometz.xml"/>
    <Product type="0003" id="0001" name="EUR_SPIRITZ Wall Radiator Thermostat" config="eurotronic/eur_spiritz.xml"/>
    <Product type="0003" id="0002" name="EUR_SPIRITZ Wall Radiator Thermostat" config="eurotronic/eur_spiritz.xml"/>
    <Product type="0003" id="0003" name="EUR_SPIRITZ Wall Radiator Thermostat" config="eurotronic/eur_spiritz.xml"/>

But before you try this I like to recommend to remove your custom open-zwave configuration and update the buildin configuration by calling the service ‘zwave.update_config’ using ‘services’ from the home assistant ‘Developer tools’. Since yesterday, the open-zwave master branch contains the ‘Eurotronic Spirit’ devices so it should work out of the box…

Hi @m.tesche,

Many thanks for your reply!

And great news the ‘Eurotronic Spirit’ is integrated now.

Currently my Z-wave USB stick is not working any more :frowning: . I ordered a new one and it should arrive in a few days. As soon as I have it, I’ll be able to test and let know if it really works “out of the box”.

Sadly it’s not working for me (yet).
Is there any way I can check if the update_config command did actually work?

Checking out the master branch into the shared folder and using the config from there worked for me.
I now have three climate controls for the spirit: furnace, heat and heat-eco.
I can set a temperature on all three.
Currently I’m thinking about buying another thermostat because I’m still not sure how the spirit actually works

I need to check, but i am sure that i read somewhere in the last 2 or 3 days that the latest version of openzwave have been merged with the dev branch moving our configuration files into master; and potentially negating the need for the config folder trick.

If this is the case i assume we need to be on at least 0.80; when i get some time later in the week Ill verify this information. But first; Its almost time for ExpertsLive Europe


I bought 2 of these devices a few month back but was waiting to add them until it gets colder and they are supported with a stable release.

I joined one a few minutes ago but it seems the configuration is still not up to date (0.80.3).

I have to climate device after pairing (one thermostat):

Temperature does not update as does setting a target temperature.

PS: i tried to run the zwave.update_config command wioth no difference.

BTW, what is the difference between heat and heat econ?

1 Like

I have the same experience as you, so i will follow this thread. The difference in heating modes is answered in the xml file on github:

Ok i just tried the method posted above (using latest config files from github) and after removing and readding the thermostat it now shows up as 3 devices and is now completely configureable.

Thanks for the link, that explains the heating modes. But now im wondering why this thing shows up as the different thermostats ( furnace, head and heat eco). I thought those were modes, why also seperate devices? :slight_smile: guess i have to read a bit more.

Nice! What did you do to make it work because I do not quite understand what you did?

Followed the tutorials posted above:

Downloaded the up to date open zwave config files, but them inside a folder in my hass config direcotry and added that path to the zwave config directory.

Then i removed the thermostat, restarted hass and added it again.

I also changed the Temperature Report Threshold as described by rsokolowski:

without it the temperature detection didnt work correctly


So the Heating and Heat Eco climate device are for setting the different temperatures for those two modes. But what is the purpose of the furnace enitity?

1 Like

While with the updated configuration on the master branch I am able to control the temperature and Heat & Eco modes, I think there a still missing pieces for the thermostat to be entirely supported.
When you look at the old pull requests which were merged into the dev branch, there were also necessary code changes and additional fields in the xml config.
These are still not present on the master branch.

I didn’t have much luck getting this working with the zwave.update_config service, but using the config_path option along with the latest version of OpenZWave master has done the trick and I can control it now.

I do also see the furnace option which I don’t think should be there. However, from what I understand reading the various issues and PR on the OpenZWave Github, there are some fundamental changes to OpenZWave itself that were made in order to support a newer version of the SetPoint class used by the thermostat - i.e. changes beyond the XML files that give friendly names to the sensors and configuration options. At the moment, these are only merged in to the Dev branch and I wouldn’t expect them to be merged back in to 1.4.

So for the moment, what I understand is that although 1.4’s master may now have the appropriate XML files to give friendly names etc, we won’t have full support for all of the thermostat functions until the Dev branch is released as 1.6, and then Python-OpenZWave and then Home Assistant are updated to use this.

This is good point regarding core openzwave lib. FWIW, the openzwave lib embedded to Hass works just fine for typical thermostat operations (heat, off, set temperature). Ive disabled temperature reporting so I don’t care that much about whether it works or not. I do get warnings in ozw logs regarding decimal values which (looking at the aforementioned PR) might be related. Still, no harm to typical functionality.