Stiebel eltron configuration

After I have solved my lcn problem remains almost only the connection of my Stiebel Eltron LWZ 403 SOL. For this I have the following addition in my configuration.yaml :

#Stiebel Eltron Konfiguration

modbus:
  name: "Stiebel_Modbus"
  type: tcp
  host: 192.168.121.32
  port: 502
  delay: 5

stiebel_eltron:
  name: LWZ403SOL
  hub: "Stiebel_Modbus"

Unfortunately, however, no new devices or entities are displayed to me. Am I doing something wrong with the configuration? Can someone help me further?

I have updated my ISG Web to version 12.2.2. This supports Modbus communication according to Stiebel support (all from version 8.6.4).

Well, you need something more for this to work :slight_smile:

Maybe you can adapt my configuration (attention: it’s not inside the configuration.yaml but as a package):

modbus:
  - name: ISG
    type: tcp
    host: 192.168.xx.xx
    port: 502
  #  timeout: 30
  #  delay_between_queries: 30

    sensors:
      #############################
      ###  Raumtemperatur
      #############################
      - name: 'THZ RAUMISTTEMP-HK1'
        slave: 1
        address: 1
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ RAUMTEMP-TAG'
        slave: 1
        address: 1001
        input_type: holding
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      #############################
      ###  Heizen
      #############################
      - name: 'THZ BETRIEBSART'
        slave: 1
        address: 1000
        input_type: holding

      - name: 'THZ AUSSENTEMPERATUR'
        slave: 1
        address: 6
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1


      - name: 'THZ ISTWERT-HK1'
        slave: 1
        address: 7
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ SOLLWERT-HK1'
        slave: 1
        address: 8
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ VORLAUFTEMP'
        slave: 1
        address: 11
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale:  0.1
        precision: 1

      - name: 'THZ RUECKLAUFTEMP'
        slave:  1
        address: 12
        input_type: input
        unit_of_measurement: °C
        device_class:  temperature
        scale: 0.1
        precision: 1

      - name: 'THZ DRUCK-HEIZKREIS'
        slave: 1
        address: 13
        input_type: input
        unit_of_measurement: bar
        device_class: pressure
        scale: 0.1
        precision: 1

      - name: 'THZ VOLUMENSTROM'
        slave: 1
        address: 14
        input_type: input
        unit_of_measurement: l/min
        scale: 0.1
        precision: 1

      #############################
      ###  Warmwasser
      #############################
      - name: 'THZ WW-ISTTEMP'
        slave: 1
        address: 15
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ WW-SOLLTEMP'
        slave: 1
        address: 16
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ WW-SOLL-TAG'
        slave: 1
        address: 1011
        input_type: holding
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      #############################
      ###  LĂŒften
      #############################
      - name: 'THZ ZULUFT-IST-LUEFTERDREHZAHL'
        slave: 1
        address: 17
        input_type: input
        unit_of_measurement: Hz

      - name: 'THZ ZULUFT-SOLL-VOLUMENSTROM'
        slave: 1
        address: 18
        input_type: input
        unit_of_measurement: mÂł/h

      - name: 'THZ ABLUFT-IST-LUEFTERDREHZAHL'
        slave: 1
        address: 19
        input_type: input
        unit_of_measurement: Hz

      - name: 'THZ ABLUFT-SOLL-VOLUMENSTROM'
        slave: 1
        address: 20
        input_type: input
        unit_of_measurement: mÂł/h

      - name: 'THZ ABLUFTFEUCHTE'
        slave: 1
        address: 21
        input_type: input
        unit_of_measurement: '%'
        device_class: humidity

      - name: 'THZ ABLUFTTEMPERATUR'
        slave: 1
        address: 22
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ ABLUFTTAUPUNKT'
        slave: 1
        address: 23
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ STUFE-TAG'
        slave: 1
        address: 1017
        input_type: holding

      - name: 'THZ STUFE-NACHT'
        slave: 1
        address: 1018
        input_type: holding

      #############################
      ###  Prozesswerte
      #############################
      - name: 'THZ HEISSGASTEMP'
        slave: 1
        address: 27
        input_type: input
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

      - name: 'THZ HOCHDRUCK'
        slave:  1
        address: 28
        input_type: input
        unit_of_measurement: bar
        device_class: pressure
        scale: 0.01
        precision: 2

      - name: 'THZ NIEDERDRUCK'
        slave: 1
        address: 29
        input_type: input
        unit_of_measurement: bar
        device_class: pressure
        scale: 0.01
        precision: 2

      #############################
      ###  WĂ€rmemenge
      #############################
      - name: 'THZ WM-HEIZEN-TAG'
        slave: 1
        address: 3000
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ WM-HEIZEN-SUMME MWh'
        slave: 1
        address: 3002
        input_type: input
        unit_of_measurement: MWh
        device_class: energy

      - name: 'THZ WM-HEIZEN-SUMME kWh'
        slave: 1
        address: 3001
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ WM-WW-TAG'
        slave: 1
        address: 3003
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ WM-WW-SUMME MWh'
        slave: 1
        address: 3005
        input_type: input
        unit_of_measurement: MWh
        device_class: energy

      - name: 'THZ WM-WW-SUMME kWh'
        slave: 1
        address: 3004
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ WM-NE-HEIZEN-SUMME mWh'
        slave: 1
        address: 3007
        input_type: input
        unit_of_measurement: MWh
        device_class: energy

      - name: 'THZ WM-NE-HEIZEN-SUMME kWh'
        slave: 1
        address: 3006
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ WM-NE-WW-SUMME MWh'
        slave: 1
        address: 3009
        input_type: input
        unit_of_measurement: MWh
        device_class: energy

      - name: 'THZ WM-NE-WW-SUMME kWh'
        slave: 1
        address: 3008
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ WM-WRG-TAG'
        slave: 1
        address: 3010
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ WM-WRG-SUMME MWh'
        slave: 1
        address: 3012
        input_type: input
        unit_of_measurement: MWh
        device_class: energy

      - name: 'THZ WM-WRG-SUMME kWh'
        slave: 1
        address: 3011
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      #############################
      ###  Leistungsaufnahme
      #############################
      - name: 'THZ P-HEIZUNG-TAG'
        slave: 1
        address: 3021
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ P-HEIZUNG-SUMME MWh'
        slave: 1
        address: 3023
        input_type: input
        unit_of_measurement: MWh
        device_class: energy

      - name: 'THZ P-HEIZUNG-SUMME kWh'
        slave: 1
        address: 3022
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ P-WW-TAG'
        slave: 1
        address: 3024
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      - name: 'THZ P-WW-SUMME MWh'
        slave: 1
        address: 3026
        input_type: input
        unit_of_measurement: MWh
        device_class: energy

      - name: 'THZ P-WW-SUMME kWh'
        slave: 1
        address: 3025
        input_type: input
        unit_of_measurement: kWh
        device_class: energy

      #############################
      ###  Laufzeiten
      #############################
      - name: 'THZ VERDICHTER-HEIZEN'
        slave: 1
        address: 3027
        input_type: input
        unit_of_measurement: h

      - name: 'THZ VERDICHTER-WW'
        slave: 1
        address: 3029
        input_type: input
        unit_of_measurement: h

      - name: 'THZ ELEKTR-NE-HEIZEN'
        slave: 1
        address: 3030
        input_type: input
        unit_of_measurement: h

      - name: 'THZ ELEKTR-NE-WW'
        slave: 1
        address: 3031
        input_type: input
        unit_of_measurement: h

      - name: 'THZ BETRIEBSSTATUS'
        address: 2000 # Betriebsstatus = Modbus Adresse 2001 - Offset 1
        slave: 1
        count: 1
        input_type: input
        data_type: uint16 

binary_sensor:
  - platform: template
    sensors:
      thz_schaltprogramm_aktiv:
          friendly_name: "THZ Schaltprogramm aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(1) > 0 }}"
      thz_kompressor_aktiv:
          friendly_name: "THZ Kompressor aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(2) > 0 }}"
      thz_heizbetrieb_aktiv:
          friendly_name: "THZ Heizbetrieb aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(4) > 0 }}"      
      thz_warmwasserbereitung_aktiv:
          friendly_name: "THZ WW Bereitung aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(16) > 0 }}"          
      thz_elektrische_nacherwaermung_aktiv:
          friendly_name: "THZ elektrische NacherwÀrmung aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(32) > 0 }}"  
      thz_service_aktiv:
          friendly_name: "THZ Service aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(64) > 0 }}"  
      thz_evu_sperre:
          friendly_name: "THZ EVU Sperre aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(128) > 0 }}"
      thz_filterwechsel:
          friendly_name: "THZ Filterwechsel beide Filter"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(256) > 0 }}"      
      thz_lueftung_aktiv:
          friendly_name: "THZ LĂŒftung aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(512) > 0 }}"       
      thz_heizkreispumpe:
          friendly_name: "THZ Heizkreispumpe aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(1024) > 0 }}"
      thz_abtauen:
          friendly_name: "THZ Abtauen aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(2048) > 0 }}"
      thz_filterwechsel_abluft:
          friendly_name: "THZ Filterwechsel Abluft"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(4096) > 0 }}"
      thz_filterwechsel_zuluft:
          friendly_name: "THZ Filterwechsel Zuluft"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(8192) > 0 }}"
      thz_aufheizprogramm_aktiv:
          friendly_name: "THZ Aufheizprogramm aktiv"
          value_template: "{{ states('sensor.thz_betriebsstatus')|int|bitwise_and(16384) > 0 }}"

Thanks for the quick reply. I’ll take a look at it. Is quite a lot. Waht for you need the stiebel-eltron integration? You don’t use it at all, but have apparently defined all Modbus addresses yourself. I am still a total newbee in Home Assistant and in yaml file editing and understanding. You never stop learning.

Bevore I used ioBroker. I installed the ISG plugin and after about 2 seconds I had all data points automatically visible in my ioBroker and all controllable. Except for the integration of my LCN bus, this is so far the only drawback.

Thanks again. Does anyone else know what the stiebel-eltron integration is good for?

The stiebel eltron integration is not working - for whatever reasons.
That’s why you need to define everything on your own. There are several threads in the forum.

ioBroker and FHEM having working integrations, Home Assistant sadly not.

Ich schreibe mal in Deutsch. Aufgrund Deiner Namen in der yaml schließe ich mal, dass Du eher Deutschsprachiger Natur bist. Wenn nicht kommt im Anschluss noch mal die englische Version (auch fĂŒr die anderen Mitleser) Danke fĂŒr Deine Tolle Arbeit. GrundsĂ€tzlich scheint es schon mal zu funktionieren. Ich habe zwar noch nicht alle EntitĂ€ten ĂŒberprĂŒft aber zwei Beispiele habe ich schon mal geprĂŒft und die Werte passen. Kann ich damit auch Werte in der LWZ Ă€ndern, z.B. um die Warmwasser Solltemperatur anzupassen?

Mit der Konfiguration der binary_sensors habe ich noch Probleme. Da wirft mir die PrĂŒfung immer eine Fehlermeldung, wenn ich die Konfiguration mit in meine modbus.yaml einbaue, die ich per includ in meine configuration.yaml eingebunden habe. Wie gesagt bin ich neu in dem Thema und kann weder die Fehlermeldung interpretieren noch kenn ich die AbhĂ€ngigkeiten oder Nomenklaturen.

Noch eine Anmerkung. Beim Untersuchen der Enteties gibt mir der HA folgende Meldung:

Diese EntitĂ€t ("sensor.lwz403_abluft_ist_luefterdrehzahl") hat keine eindeutige ID, daher können die Einstellungen nicht ĂŒber die UI verwaltet werden. Schaue in der [Dokumentation](https://www.home-assistant.io/faq/unique_id) nach fĂŒr mehr Details.

Kann ich das Ändern. Ich wĂŒrde die Werte natĂŒrlich gerne weiter nutzen können?

I write once in German. Because of your names in the yaml I conclude that you are rather German-speaking nature. If not, the English version comes afterwards (also for the other readers) Thanks for your great work. Basically it seems to work. I have not yet checked all entities but I have already checked two examples and the values fit. Can I also use it to change values in the LWZ, e.g. to adjust the hot water setpoint temperature?

I still have problems with the configuration of the binary_sensors. There the check always throws me an error message when I include the configuration in my modbus.yaml, which I have included via includ in my configuration.yaml. As I said, I’m new to the topic and can neither interpret the error message nor do I know the dependencies or nomenclature.

One more comment. When examining the Enteties, the HA gives me the following message:

This entity ("sensor.lwz403_exhaust_air_is_fan_speed") does not have a unique ID, so the settings cannot be managed through the UI. Check the [documentation](https://www.home-assistant.io/faq/unique_id) for more details.

Can I change this. I would like to be able to continue using the values of course?

Well, first of all it’s not my work. I just copied&pasted from other users :slight_smile:

And try not to split the configuration but use Packages - Home Assistant and keep it in one single file.

So in your configuration.yaml just put in the homeassistant part the following line:

packages: !include_dir_named packages

Meaning it should be like

homeassistant:
 ...
  packages: !include_dir_named packages

Now create a new directory called packages in the main directory of Home Assistant and inside this directory create a new file, e.g. stiebel.yaml
And put the whole stuff inside.

Using packages makes it much easier to keep things together which glues together.

Many thanks, that works and with the packages is really much clearer. Can I also assign values to the sensors? e.g. to the sensor

      - name: 'THZ WW-SOLL-TAG'
        slave: 1
        address: 1011
        input_type: holding
        unit_of_measurement: °C
        device_class: temperature
        scale: 0.1
        precision: 1

can I assign a new temperature to heat up the water and if so how? Are the values then also written to the system or do I have to do this via modbus.write_register?

Looks like it’s been a year since the last activity on this thread. Were you able to get your sensors working?

I think I’m currently stuck in the same place you were. My experimental configuration currently looks like this:

#Heizung Stiebel Eltron ISG Web
modbus:
  name: "ISG"
  type: tcp
  host: 192.168.XX.XX
  port: 502
  
  sensors:
    - name: 'QUELLENTEMP'
      slave: 1
      address: 536
      input_type: input
      unit_of_measurement: °C
      device_class: temperature
      scale: 0.1
      precision: 1    

stiebel_eltron:
  name: WPF-7-cool
  hub: "ISG"`

I’m not getting any errors, and the entity “QUELLENTEMP” does show up, but is listed as unavailable.
I got the modbus address from this document.

The value I’m looking for should be this, as seen when accessing the ISG through the ‘Servicewelt’:
image

Anyone willing to give me a push in the right direction?

Edit: Just noticed that the stiebel-eltron integration does seem to be doing something. The following entity is showing up as in HA, but doesn’t seem to be working:

I’ve made some progress, and am now reading certain values correctly through modbus, like the QUELLENTEMP I mentioned above. This thread has been a great help so far.

However, I’m currently stuck trying to read the power consumption as @Eimeel does in his example above

  #############################
  ###  Leistungsaufnahme
  #############################
  - name: 'THZ P-HEIZUNG-TAG'
    slave: 1
    address: 3021
    input_type: input
    unit_of_measurement: kWh
    device_class: energy

If I just copy your code, the sensor show the value ‘1’, whereas the ISG web portal (Servicewelt) shows that the correct value is 1.574kWh. My suspicion was that I might be reading as an int, and it should be a float, so I modified the yaml to look like this:

  - name: 'VD 3021'
    slave: 1
    address: 3021
    input_type: input
    unit_of_measurement: kWh
    device_class: energy
    data_type: float16
    precision: 4

but now it is showing ‘0’, which I find somewhat confusing.

The web portal is showing all the values I’m looking for, and it’s listing them in exactly the order of ascending modbus addresses, according to the manual, so I’m pretty sure it’s just reading those values.

What am I doing wrong here?

Update, and a frustrated one:

Turns out, I wasn’t doing anything wrong. My first configuration above was correct and the modbus really does only supply the truncated, whole number (in kWh) for energy consumption.

The digits after the decimal point are stored in a different register, that isn’t provided to the user through the modbus interface. Check this thread from over in the loxone forums. One of those guys has found out that you need to modify some files on the SD-card in the ISG Web to allow access to the additional values, including the decimal digits for pretty much all the enrgy consumption values (VD_HEIZUNG, VD_WARMWASSER, etc.). Oh, and while you’re at it, you can go ahead and enable root access via ssh too.

I can’t believe how unbelievably customer unfriendly such a setup from Stiebel-Eltron is.

I’ve now gone the alternative route and am reading the values I wanted from the ISG Servicewelt web portal, using the scrape integration and a template sensor. Unfortunately, the update intervals for that are around once an hour - sometimes even longer.

1 Like

Let me know if you need help setting up the Modbus integration with Stiebel Eltron. I could set mine up, at least the reading is working now.

Last comment is long time ago. But today IÂŽm also try to inmlement the Stiebel-eltron Integration.
After reading your very helpfull hints, if found also that the read values are not the same as shown as in the stiebel-eltron web interface of the isg. I found a note in the Stiebel-eltron dokumentation Page 4 (DE) or Page 26 (EN): “ISG addresses are 1 based.” I guess my isg Web Adress starts with 0 so i need to subtract 1 by all adress. e.g. Outdoor temprature in the do = adress 507. I need to use 506. Hope that helps.