Zigbee2mqtt with Eurotronic SPZB0001

Hi everybody,

are any of you using Eurotronic SPZB0001 wireless heater thermostats in home-assistant through zigbee2mqtt? I had previously used the zigbee Adapter for ioBroker for this, but am currently trying to switch all my devices to home-assistant.

zigbee2mqtt’s device page only shows minimal information about this device (unlike most other zigbee devices I am running). It does not even tell how to control the device via mqtt, and only let’s you display link quality but nothing else (no set temperature, no temperature readings, no rest temperature, etc.).

In home-assistant under settings => integration => mqtt: configuration.yaml, I can see some devices that have automatically paired with my CC2531 while I was setting up my sensors. They show up in a card like this

0x00158d000192d173
Spirit Zigbee wireless heater thermostat (SPZB0001)
von Eurotronic
Firmware: Zigbee2mqtt 1.5.1
0x00158d000192d173_linkquality
sensor.0x00158d000192d1

I am using mqtt auto discovery so everything I pair with zigbee2mqtt gets detected by and automatically added to home-assistant. (I had set up everything manually before by using each device’s mqtt topic and manually used value_template to extract all those values, but when using auto discovery, home-assistant pairs those values (for example, when I click on a temperature sensor, it will display its data as well as show humidity, pressure, link quality, and battery). Before, when I manually set up those sensors, they would only show their “actual” value without additional information (so if I clicked on temperature, I’d get temperature; if I wanted humidity, I’d have to search for and click on that entity - but now it is automatically combined).

I wouldn’t mind manually controlling those thermostats via mqtt, but since there is no example on the page linked above, I don’t know how to do this. Also, I am fairly new to home-assistant and don’t know best practice for doing this. Technically, it is a thermostat - but unlike American thermostats, that control an AC in your entire house, we have radiators in each room that can only be turned from 0 to 5 (or, with these thermostats, from 5°C to 30°C, and then they will measure current room temperature and regulate valves according to set temperature). So I guess even if I could manually set them up, I couldn’t set them up as thermostats because those things only control heating; they cannot “make it cooler” as in turn on any ACs. What kind of sensor/switch/else would I set them up as?

And has anybody already figured out how to use these thermostats? As they are officially supported by zigbee2mqtt and home-assistant works so well with zigbee2mqtt, I assume there must be a way to auto-discover and work with those thermostats as well…?

Afterall, ioBroker was/is able to do this, and home-assistant seems to be capable of everything it can do and then some… I’d prefer setting up these thermostats now to them not working when I actually need to heat the house in fall/winter.

Thanks in advance for your input :pray:

any news?
I saw the product and i interested to buy it. it’s possible control the temperature from HA?

Unfortunately not. I am considering using iobroker to control the device and control iobroker through home assistant via mqtt. That is so stupid though because it must be possible directly through zigbee2mqtt somehow - now we just need to find out how.

https://github.com/Koenkk/zigbee2mqtt/issues/980

I found this. One user say

You can set the current heating point to the desinred one by publishing the following message to the topic zigbee2mqtt/<device_id>/set

{
  "current_heating_setpoint": 19
}
```}

you can try to send this command manualy, if it works, you can think about creating a script or an automation

1 Like

update

I had missed a " when sending the mqtt message. It does work now.

This issue beside, though… those thermostats do work pretty well and reliably. They act instantly and worked fine even back when I only had one CC2531 in the entire house (added some CC2530 routers in the meantime).

I guess in order to avoid writing scripts, we probably could re-route the payload(s) via mqtt… I’ll have to look into it, but afaik home-assistant “expects” particular topics to “graps” what kind of device it is working with. If one would take the output from (in this case) home/zigbee2mqtt/Heizung_Arbeitszimmer/#, split the json payload into multiple payloads, and then sent those payloads to the appropriate topics, I guess discovery should work, right? Then there’d “only” be left doing something similar for sending data… either way, I’m sure we can figure this out.

I’m not sure i understood, why you want split the payload?
You want send on command to the boiler when eurotronic achieve the set temperature?
The eurotronic send the mqtt data with the current temp?
Sorry if I can’t help you with the tests, But I haven’t bought it yet.

I am still getting started with Home Assistant, but if I understand correctly, Home Assistant expects a certain structure in mqtt topics and payloads. I might be wrong, but from what I have read, this is how Home Assistant uses auto discovery to automatically add zigbee2mqtt (or, for example, Tasmota) devices without you having to manually put them in.

And it seems to me like this particular structure is not given when using the SPZB0001; or if it is, Home Assistant still cannot handle it for some other reason.

For example, this is my kitchen door sensor in Home Assistant
https://filebin.net/benn-uploads/yadshot-1566899897.png?t=vye9pg7r

What you see on the left is the Integrations page, on the right is the popup when I click the entity.

https://filebin.net/benn-uploads/yadshot-1566900413.png?t=vk2wju99
This, on the other hand, is some SPZB0001. “Some” because I have not named all devices as I just connected them very recently (because I was not able did not know how to use them before).

While you can see all relevant values such as local temperature and current heating setpoint, there is no way to control them via Home Assistant “directly” (other than using mqtt, which starts feeling like “too much manual labor” to me once I got into Home Assistant; I always had to use mqtt with ioBroker and node-red, but Home Assistant’s ability to automatically create switches for zigbee2mqtt devices made me lazy :smiley:; for example Innr light bulbs appear as lights once connected to zigbee2mqtt; I can toggle them, change brightness, color, etc. without having to touch mqtt once!).

While all these values are there, there is no way to control them, or I have just not figured out how to. So I just assumed that if the “mqtt structure” of this device would be different, Home Assistant would be able to control this device like any other without having to create mqtt devices for each thermostat. I have seven of those (plus one to be added), so automating this would be worth it. Sure, it works via mqtt and templating as well (I do this with all my tasmota switches as auto discovery does just not work with them), where I create one “master” switch, a template, and then add this template to all other additional switches.

I just don’t understand why zigbee2mqtt and Home Assistant work so well together (connect a light via z2mqtt, it pops up, everything works), while this thermostat has to be set up manually. It will be added as a device displaying status information without any option to control it.

So if I understand correctly this device won’t show up as an integrated climate/thermostat entity within HA?

Correct!
You will be able to control it via mqtt (and therefore, also within Home Assistant), but it will not automatically be created as a climate/thermostat entity. This was confusing to me when first adding them to zigbee2mqtt, as other devices (for example, Xiaomi Temperature / Humidity / Pressure sensors would show up as expected.

That’s why I though perhaps one could first modify, then forward the mqtt data between Home Assistant and zigbee2mqtt. This should be rather simple using node-red (which seems a better solution to me than doing it right inside Home Assistant). I meant to do this for a while now, but never got around to it. Just today I had to (and still am) re-pair ~60 zigbee devices because of an error with zigbee2mqtt (it was on me and I might have been able to avoid it, so no blaming z2m).

Left is SPZB0001 and right is Xiaomi aqara temperature, humidity, pressure sensor


The thermostat will only show display linkquality; everything else is only accessible via mqtt as far as I know.

1 Like

Bummer. I can find my way around node-red, but it would have been awesome to just plug those and play.

Have you tried setting it up on a MQTT climate platform? I can see this other TRV has some settings along these lines on their documentation page

Here is an example from my /config/packages/haus/heizungen.yaml file, which I use to control each of those devices.

The slider is to a) set the temperature to the value you want and b) display the current manually set temperature from each thermostat IF it is above 5°C (this is because of the template below that will set your thermostat to 5°C when a window opens and restores it when the windows gets shut again). This is done by grepping the value via the sensor from the bottom.

I advice you not to copy my template and rather just write your own package for this. I started Home Assistant not too long ago and began copying stuff from the forums, but you’ll learn so much more about the processes if you just use other peoples’ code as examples that you modify yourself. But if you want to copy it, you can copy and adapt each thermostat as well :slight_smile:

input_number:
# 1. Slider für jeden Heizkörper {{{
  # az_heizung:
  heiz_az:
    name: Arbeitszimmer
    initial: 17.5
    <<: &template_heizung
      # inital: 16
      min: 5
      max: 25
      step: 1
      icon: mdi:radiator
      unit_of_measurement: "°C"

  heiz_ku:
    name: Küche
    # initial: 16.5
    <<: *template_heizung

automation:
# {{{ Heizung Arbeitszimmer
   - id: 'heizung_az_set'
    alias: "[Heizung] AZ Set"
    trigger:
      - platform: state
        entity_id: input_number.heiz_az
      - platform: state
        entity_id: binary_sensor.arbeitszimmer_fenster_contact
    action:
      - service: mqtt.publish
        data_template:
          topic: "home/zigbee2mqtt/Arbeitszimmer_Heizung/set"
          payload: >
            {% if is_state('binary_sensor.arbeitszimmer_fenster_contact', 'off') %}
               {"current_heating_setpoint": {{ states('input_number.heiz_az') | float }}}
            {% else %}
               {"current_heating_setpoint": 5}
            {% endif %}
          qos: 2
          retain: false
  - id: 'heizung_az_transfer'
    alias: "[Heizung] AZ Transfer"
    trigger:
      - platform: state
        entity_id: sensor.heizung_az_current
    action:
      - service: input_number.set_value
        data_template:
          entity_id: input_number.heiz_az
          value: >
            {% if states('sensor.heizung_az_current') | float > 5 %}
              {{ states('sensor.heizung_az_current') }}
            {% else %}
              {{ states('input_number.heiz_az') }}
            {% endif %}
#}}}

sensor:
  - platform: mqtt
    name: "[Heizung] AZ Current"
    state_topic: "home/zigbee2mqtt/Arbeitszimmer_Heizung"
    value_template: "{{ value_json.current_heating_setpoint }}"
    qos: 2
    unit_of_measurement: "°C"
    icon: mdi:radiator


Thanks for sharing! I’m about to pull the trigger and order a few of these.

1 Like

So I just had 3 Eurotronics arrive, two jumped right into my zigbee network, but one refuses to pair with “ERR” :frowning: Anything I can do about it short of sending back to Amazon? EDIT: after a good reset to factory defaults it joined right away.

Other than that, with the dev branch of zigbee2mqtt I automatically get a climate entity with mode and target temp controls - no need to do it manually!

1 Like

Other than that, with the dev branch of zigbee2mqtt I automatically get a climate entity with mode and target temp controls - no need to do it manually!

Amazing news! Dear lord, please let them add this to the stable branch some time very soon! I have been factory-resetting and re-pairing too often recently due to problems with z2m, so I will not risk having to do that when switching to another version.

I hear you - ALL sorts of problems with z2m over here and as of this week I’m officially done with it. Conbee II stick is on the way, and hopefully, I’m never going to have to deal with that hot mess that the combination of z2m releases and cc2531 fw versions is…

I bought a Conbee stick ages ago just to play around with it (before my Home Assistant days as well). If I am not mistaken, back then it only worked with their own software which was impossible to integrate in my smart home setup.

Do you know if the Conbee II can

  • support > 70 devices
  • has enough range to cover an entire house (two stories) plus garden / garage (I currently use z2m with multiple CC2530 repeaters around the house and garage)
  • integrates well in Home Assistant

If so, I might give it another shot as well :slight_smile:

Can’t tell you from first hand experience yet but from all the research I’ve done I gather it’s a far more polished, mature and most of all stable product compared to z2m. We’ll see…

Good luck =) I just ordered one and will see what it can do as well.

Hi. Is Eurotronic SPZB0001 reporting back temperature to HA?

This is what my SPZB0001 currently reports via mqtt: