Is there any interest in a Stiebel Eltron climate platform?

Is someone having an idea how I can set the temporary ventilation level (and time)?
I would like to include it in some of my automations (fire automation, better ventilation during hot days, …).

Would you be so kind to share your full configuration.yaml for stiebel? Like the komfort temp etc?

Sure, no problem:

Disclaimer: Most of the things i know i found here. Thank you for this great community!

Here is my code in the configuration.yaml (i tried to put it in a modbus.yaml with modbus: !include in configuration.yaml but that didn´t work.

# Altbau
  - type: tcp
    host: 192.168.188.156 #IP-Adress of your ISGweb or ISGplus
    port: 502
    name: STIEBELELTRON #Name for your Heat-Pump, needed if you have more than one (as i have)
    close_comm_on_error: false
    retry_on_empty: true
    retries: 10

    # Sensoren
    sensors:

      # INPUT-Entities - Only for Reading

      - name:                wp_altbau_ist_temp_aussen
        unique_id:           wp_altbau_ist_temp_aussen # Unique ID enables you to rename it and change Icon etc via UI
        slave:               1
        address:             506 #507 - 1 <== Meaning: In the Documentation the Modbus-Adress is 507, here i need to use 506 (always -1)
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_ist_temp_heizkreis1
        unique_id:           wp_altbau_ist_temp_heizkreis1
        slave:               1
        address:             507 #508 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_soll_temp_heizkreis1
        unique_id:           wp_altbau_soll_temp_heizkreis1
        slave:               1
        address:             509 #510 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_ruecklauf_ist_temp
        unique_id:           wp_altbau_ruecklauf_ist_temp
        slave:               1
        address:             515 #516 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_puffer_ist_temp
        unique_id:           wp_altbau_puffer_ist_temp
        slave:               1
        address:             517 #518 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_puffer_soll_temp
        unique_id:           wp_altbau_puffer_soll_temp
        slave:               1
        address:             518 #519 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_ist_temp_warmwasser
        unique_id:           wp_altbau_ist_temp_warmwasser
        slave:               1
        address:             521 #522 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_soll_temp_warmwasser
        unique_id:           wp_altbau_soll_temp_warmwasser
        slave:               1
        address:             522 #523 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_betriebsstatus
        unique_id:           wp_altbau_betriebsstatus
        slave:               1
        address:             2500 #2501 - 1 
        input_type:          input
        data_type:           uint16

      - name:                wp_altbau_fehlerstatus
        unique_id:           wp_altbau_fehlerstatus
        slave:               1
        address:             2503 #2504 - 1 
        input_type:          input
        data_type:           uint16

      - name:                wp_altbau_waermemenge_heizen_tag
        unique_id:           wp_altbau_waermemenge_heizen_tag
        slave:               1
        address:             3500 #3501 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_waermemenge_heizen_ges_kwh
        unique_id:           wp_altbau_waermemenge_heizen_ges_kwh
        slave:               1
        address:             3501 #3502 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_waermemenge_heizen_ges_mwh
        unique_id:           wp_altbau_waermemenge_heizen_ges_mwh
        slave:               1
        address:             3502 #3503 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: MWh
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_waermemenge_warmwasser_tag
        unique_id:           wp_altbau_waermemenge_warmwasser_tag
        slave:               1
        address:             3503 #3504 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_waermemenge_warmwasser_ges_kwh
        unique_id:           wp_altbau_waermemenge_warmwasser_ges_kwh
        slave:               1
        address:             3504 #3505 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_waermemenge_warmwasser_ges_mwh
        unique_id:           wp_altbau_waermemenge_warmwasser_ges_mwh
        slave:               1
        address:             3505 #3506 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: MWh
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_stromverbrauch_heizen_tag
        unique_id:           wp_altbau_stromverbrauch_heizen_tag
        slave:               1
        address:             3510 #3511 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_stromverbrauch_heizen_ges_kwh
        unique_id:           wp_altbau_stromverbrauch_heizen_ges_kwh
        slave:               1
        address:             3511 #3512 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_stromverbrauch_heizen_ges_mwh
        unique_id:           wp_altbau_stromverbrauch_heizen_ges_mwh
        slave:               1
        address:             3512 #3513 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: MWh
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_stromverbrauch_warmwasser_tag
        unique_id:           wp_altbau_stromverbrauch_warmwasser_tag
        slave:               1
        address:             3513 #3514 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_stromverbrauch_warmwasser_ges_kwh
        unique_id:           wp_altbau_stromverbrauch_warmwasser_ges_kwh
        slave:               1
        address:             3514 #3515 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      - name:                wp_altbau_stromverbrauch_warmwasser_ges_mwh
        unique_id:           wp_altbau_stromverbrauch_warmwasser_ges_mwh
        slave:               1
        address:             3515 #3516 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: MWh
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30

      # HOLDING-Entities - Read AND Write possible

      - name:                wp_altbau_betriebsart
        unique_id:           wp_altbau_betriebsart
        slave:               1
        address:             1500 #1501 - 1 
        input_type:          holding
        data_type:           uint16

      - name:                wp_altbau_heizkreis1_heizkurve
        unique_id:           wp_altbau_heizkreis1_heizkurve
        slave:               1
        address:             1503 #1504 - 1
        input_type:          holding
        scale:               0.01
        precision:           2

      - name:                wp_altbau_heizkreis1_temp_komfort
        unique_id:           wp_altbau_heizkreis1_temp_komfort
        slave:               1
        address:             1501 #1502 - 1
        input_type:          holding
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_heizkreis1_temp_eco
        unique_id:           wp_altbau_heizkreis1_temp_eco
        slave:               1
        address:             1502 #1503 - 1
        input_type:          holding
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_warmwasser_temp_komfort
        unique_id:           wp_altbau_warmwasser_temp_komfort
        slave:               1
        address:             1509 #1510 - 1
        input_type:          holding
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

      - name:                wp_altbau_warmwasser_temp_eco
        unique_id:           wp_altbau_warmwasser_temp_eco
        slave:               1
        address:             1510 #1511 - 1
        input_type:          holding
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

To get the current “total” of power consumption you have sum MWH + KWH + TODAY. I did this via template sensors like this:

template:
  - sensor:
      - unique_id: wp_altbau_waermemenge_heizen_gesamt
        name: wp_altbau_waermemenge_heizen_gesamt
        state: "{{ states('sensor.wp_altbau_waermemenge_heizen_ges_mwh') | int * 1000 + states('sensor.wp_altbau_waermemenge_heizen_ges_kwh') | int + states('sensor.wp_altbau_waermemenge_heizen_tag') | int }}"
        unit_of_measurement: kWh  
        device_class: energy
        state_class: total_increasing

      - unique_id: wp_altbau_waermemenge_warmwasser_gesamt
        name: wp_altbau_waermemenge_warmwasser_gesamt
        state: "{{ states('sensor.wp_altbau_waermemenge_warmwasser_ges_mwh') | int * 1000 + states('sensor.wp_altbau_waermemenge_warmwasser_ges_kwh') | int + states('sensor.wp_altbau_waermemenge_warmwasser_tag') | int }}"
        unit_of_measurement: kWh  
        device_class: energy
        state_class: total_increasing

To change settings like comfort-temp i use mushroom-cards with “tap_action:” to call a service:

service: modbus.write_register
data:
  address: 1510
  slave: 1
  value: "{{ trigger.to_state.state | float(0) * 10 | int }}"
  hub: STIEBELELTRON

I would recomment to read the modbus-documentation from stiebel eltron:
https://www.stiebel-eltron.de/content/dam/ste/cdbassets/historic/bedienungs-_u_installationsanleitungen/ISG_Modbus__b89c1c53-6d34-4243-a630-b42cf0633361.pdf

4 Likes

Anyone had success with reading values from an ISG Web running firmware 12.0.0 on a LWZ 5S Plus?
I bought one recently and it looks like modbus is not active, Stiebel Eltron support tells me it should be.

Tried reading values trough home assistant using above config or directly with pymodbus.
Always running into an exception: (132, 4, IllegalAddress)

Realized that the LWZ 5S Plus is categorized as “integral ventilation units” so I was just looking in the wrong table for the modbus addresses.

Thanks @ingo.niehues for this input.

I am convinced that this help will allow me to set up a more user-friendly monitoring of the installation than the native ISG platform.
I just need to get rid of a “sensor” error. :slight_smile:

1 Like

Ask me If you need Help.

HELP ! :smiley:

Thank you very much for the proposal.
I placed the modbus part in a dedicated yaml, and the sensors part in another dedicated yaml.
I only left 16 of all the “sensors” you placed on your side.
When I check from “Check and restart” I get the following message 16 times.

Invalid config for [sensor]: required key not provided @ data['platform']. Got None. (See /config/configuration.yaml, line 29)

I had the same error before doing the split in separate yamls, so I don’t think the problem is there.

Thank you in advance to anyone who can enlighten me :slight_smile:

I´ve had problems with my modbus-configuration when i put the modbus-configuration in a separated file witch i “include: …” in the configuration.yaml.

When i put ALL my modbus-configuration directly in the configuration.yaml there is no problem. Don´t know why, but this way it works for me.

Maybe you could share your modbus-part of your configuration or send me a message with it.

Hello @ingo.niehues and thanks for the feedback.

It seems that it was caused by a syntax problem (and modbus declaration).
I kept only one sensor for the moment, in order to simplify debugging if necessary.
I still have to see how to go further to display the indicators and especially to use the sensors in “write”. :slight_smile:
I wish you a good week !

Voici le code pour ceux qui rencontreraient aussi un soucis:

modbus:
  - name: STIEBEL_ELTRON #Name for your Heat-Pump
    type: tcp
    host: 192.168.0.109 #IP-Adress of your ISGweb or ISGplus
    port: 502
    close_comm_on_error: false
    retry_on_empty: true
    retries: 10
   
    sensors:
      - name: temp_ext
        unique_id:           temp_ext # Unique ID enables you to rename it and change Icon etc via UI
        address: 506 #507 - 1 <== Meaning: In the Documentation the Modbus-Adress is 507, here i need to use 506 (always -1)
        slave:               1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

You have to use a service call to write to a register.

service: modbus.write_register
data:
  address: 1510 #Register for Eco-Mode-Temperature for Warmwater
  slave: 1           #same as the read-sensor
  value: "{{ trigger.to_state.state | float(0) * 10 | int }}" # see below
  hub: STIEBELELTRON #same as the "name" under "modbus:" in configuration-yaml

HOW you have to write data to a register depends on the datatype of the register.
image

To control values like set-temperature for “eco” and “comfort”-mode i use helpers (input_number) and the following to automations to (1) update the helpers if a value changes in the heatpump and (2) set a value to the heat-pump if a helper has a changed value.

# automation to update helpers if a value in the heatpump changed
alias: Wärmepumpe Altbau - Inputs aktualisieren 
description: ""
trigger: # if one of these sensors have changed values
  - platform: state
    entity_id: sensor.wp_altbau_heizkreis1_temp_eco
    id: eco
    alias: Eco-Temperatur aktualisiert
  - platform: state
    entity_id: sensor.wp_altbau_heizkreis1_temp_komfort
    id: komfort
    alias: Komfort-Temperatur aktualisiert
  - platform: state
    entity_id: sensor.wp_altbau_warmwasser_temp_eco
    id: ww_eco
    alias: Eco-Temperatur aktualisiert
  - platform: state
    entity_id: sensor.wp_altbau_warmwasser_temp_komfort
    id: ww_komfort
    alias: Komfort-Temperatur aktualisiert
  - platform: state
    entity_id:
      - sensor.wp_altbau_betriebsart
    id: betriebsart
    alias: Betriebsart aktualisiert
  - platform: state
    entity_id: sensor.wp_altbau_heizkreis1_heizkurve
    id: heizkurve
    alias: Heizkurve aktualisiert
condition: []
action: #... then change the input_number (and input_select) to that value
  - choose:
      - conditions:
          - condition: trigger
            id: eco
            alias: Auslöser Eco-Temperatur
        sequence:
          - service: input_number.set_value
            data:
              value: "{{ trigger.to_state.state | float(0) }}"
            target:
              entity_id: input_number.wp_altbau_temp_eco
            alias: Input-Number für Eco-Temperatur anpassen
      - conditions:
          - condition: trigger
            id: ww_eco
            alias: Auslöser Eco-Temperatur Warmwasser
        sequence:
          - service: input_number.set_value
            data:
              value: "{{ trigger.to_state.state | float(0) }}"
            target:
              entity_id: input_number.wp_altbau_ww_temp_eco
            alias: Input-Number für Eco-Temperatur Warmwasser anpassen
      - conditions:
          - condition: trigger
            id: ww_komfort
            alias: Auslöser Eco-Temperatur
        sequence:
          - service: input_number.set_value
            data:
              value: "{{ trigger.to_state.state | float(0) }}"
            target:
              entity_id: input_number.wp_altbau_ww_temp_komfort
            alias: Input-Number für Komfort-Temperatur Warmwasser anpassen
      - conditions:
          - condition: trigger
            id: komfort
            alias: Auslöser Komfort-Temperatur
        sequence:
          - service: input_number.set_value
            data:
              value: "{{ trigger.to_state.state | float(0) }}"
            target:
              entity_id: input_number.wp_altbau_temp_komfort
            alias: Input-Number für Komfort-Temperatur anpassen
      - conditions:
          - condition: trigger
            id: betriebsart
            alias: Auslöser Betriebsart
        sequence:
          - if:
              - condition: state
                entity_id: sensor.wp_altbau_betriebsart
                state: "0"
            then:
              - service: input_select.select_option
                data:
                  option: Notbetrieb
                target:
                  entity_id: input_select.wp_altbau_betriebsart
            else:
              - if:
                  - condition: state
                    entity_id: sensor.wp_altbau_betriebsart
                    state: "1"
                then:
                  - service: input_select.select_option
                    data:
                      option: Bereitschaftsbetrieb
                    target:
                      entity_id: input_select.wp_altbau_betriebsart
                else:
                  - if:
                      - condition: state
                        entity_id: sensor.wp_altbau_betriebsart
                        state: "2"
                    then:
                      - service: input_select.select_option
                        data:
                          option: Programmbetrieb
                        target:
                          entity_id: input_select.wp_altbau_betriebsart
                    else:
                      - if:
                          - condition: state
                            entity_id: sensor.wp_altbau_betriebsart
                            state: "3"
                        then:
                          - service: input_select.select_option
                            data:
                              option: Komfortbetrieb
                            target:
                              entity_id: input_select.wp_altbau_betriebsart
                        else:
                          - if:
                              - condition: state
                                entity_id: sensor.wp_altbau_betriebsart
                                state: "4"
                            then:
                              - service: input_select.select_option
                                data:
                                  option: Eco-Betrieb
                                target:
                                  entity_id: input_select.wp_altbau_betriebsart
                            else:
                              - if:
                                  - condition: state
                                    entity_id: sensor.wp_altbau_betriebsart
                                    state: "5"
                                then:
                                  - service: input_select.select_option
                                    data:
                                      option: Warmwasserbetrieb
                                    target:
                                      entity_id: input_select.wp_altbau_betriebsart
            alias: Betriebsart-Input aktualisieren
      - conditions:
          - condition: trigger
            id: heizkurve
            alias: Auslöser Heizkurve
        sequence:
          - service: input_number.set_value
            data:
              value: "{{ trigger.to_state.state | float(0) }}"
            target:
              entity_id: input_number.wp_altbau_heizkurve
            alias: Input-Number für Heizkurve anpassen
mode: single

and

# automation to send new values from helpers to the heatpump
alias: Wärmepumpe altbau - Anlage durch Inputs steuern
description: ""
trigger: # if a value of a helper changed...
  - platform: state
    entity_id:
      - input_number.wp_altbau_temp_eco
    id: eco
    alias: Eco-Temperatur aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_altbau_ww_temp_eco
    id: ww_eco
    alias: Eco-Temperatur Warmwasser aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_altbau_temp_komfort
    id: komfort
    alias: Komfort-Temperatur aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_altbau_ww_temp_komfort
    id: ww_komfort
    alias: Komfort-Temperatur Warmwasser aktualisiert
  - platform: state
    entity_id:
      - input_select.wp_altbau_betriebsart
    id: betriebsart
    alias: Betriebsart aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_altbau_heizkurve
    id: heizkurve
    alias: Heizkurve aktualisiert
condition: []
action: # send service calls to update the values of the heatpump
  - choose:
      - conditions:
          - condition: trigger
            id: eco
            alias: Auslöser Eco-Temperatur
        sequence:
          - service: modbus.write_register
            data:
              address: 1502
              slave: 1
              value: "{{ trigger.to_state.state | float(0) * 10 | int }}"
              hub: ISG_Jeschke
      - conditions:
          - condition: trigger
            id: ww_eco
            alias: Auslöser Eco-Temperatur Warmwasser
        sequence:
          - service: modbus.write_register
            data:
              address: 1510
              slave: 1
              value: "{{ trigger.to_state.state | float(0) * 10 | int }}"
              hub: ISG_Jeschke
      - conditions:
          - condition: trigger
            id: komfort
            alias: Auslöser Komfort-Temperatur
        sequence:
          - service: modbus.write_register
            data:
              address: 1501
              slave: 1
              value: "{{ trigger.to_state.state | float(0) * 10 | int }}"
              hub: ISG_Jeschke
      - conditions:
          - condition: trigger
            id: ww_komfort
            alias: Auslöser Komfort-Temperatur Warmwasser
        sequence:
          - service: modbus.write_register
            data:
              address: 1509
              slave: 1
              value: "{{ trigger.to_state.state | float(0) * 10 | int }}"
              hub: ISG_Jeschke
      - conditions:
          - condition: trigger
            id: betriebsart
            alias: Auslöser Betriebsart
        sequence:
          - if:
              - condition: state
                entity_id: input_select.wp_altbau_betriebsart
                state: Notbetrieb
            then:
              - service: modbus.write_register
                data:
                  address: 1500
                  slave: 1
                  value: 0
                  hub: ISG_Jeschke
            else:
              - if:
                  - condition: state
                    entity_id: input_select.wp_altbau_betriebsart
                    state: Bereitschaftsbetrieb
                then:
                  - service: modbus.write_register
                    data:
                      address: 1502
                      slave: 1
                      value: 1
                      hub: ISG_Jeschke
                else:
                  - if:
                      - condition: state
                        entity_id: input_select.wp_altbau_betriebsart
                        state: Programmbetrieb
                    then:
                      - service: modbus.write_register
                        data:
                          address: 1502
                          slave: 1
                          value: 2
                          hub: ISG_Jeschke
                    else:
                      - if:
                          - condition: state
                            entity_id: input_select.wp_altbau_betriebsart
                            state: Komfortbetrieb
                        then:
                          - service: modbus.write_register
                            data:
                              address: 1502
                              slave: 1
                              value: 3
                              hub: ISG_Jeschke
                        else:
                          - if:
                              - condition: state
                                entity_id: input_select.wp_altbau_betriebsart
                                state: Eco-Betrieb
                            then:
                              - service: modbus.write_register
                                data:
                                  address: 1502
                                  slave: 1
                                  value: 4
                                  hub: ISG_Jeschke
                            else:
                              - if:
                                  - condition: state
                                    entity_id: input_select.wp_altbau_betriebsart
                                    state: Warmwasserbetrieb
                                then:
                                  - service: modbus.write_register
                                    data:
                                      address: 1502
                                      slave: 1
                                      value: 5
                                      hub: ISG_Jeschke
      - conditions:
          - condition: trigger
            id: heizkurve
            alias: Auslöser Heizkurve
        sequence:
          - service: modbus.write_register
            data:
              address: 1503
              slave: 1
              value: "{{ trigger.to_state.state | float(0) * 100 }}"
              hub: ISG_Jeschke
mode: single
1 Like

If you use “HACS” you should maybe give this a try → GitHub - pail23/stiebel_eltron_isg_component: Stiebel Eltron Modbus component for Home Assistant

Should be much easier, if it works for you.

2 Likes

Am I right that it’s not possible to change the current Lüfterstufe via Modbus?

Hello,

I didn’t check my notifications and I missed your replies.
Finally the sensor created (to first retrieve the setpoint t°) does not work, I have to clean up my way of creating sensors.
I try to move forward step by step according to the time available for this project :slight_smile:
Thanks for the help.

1 Like

Are you also noticing that the power consumption of a given day never starts at 0?
Currently parsing these from the Stiebel Eltron Web interface. But even the values shown on the heat pump are not 0 at midnight.

This applies for both hot water and heating.

I can fix that downstream in e.g. Grafana but I was wondering if this is a known issue.

I´ve had the same problem. There are 2 ways to solve this:

1.) Maybe your WPM has set the wrong time (this was in my case). You can change it directly from your WPM.
2.) The Update of the values from your Heat Pump doesn´t come excatly when you need them to “start the new day”. I fixed this by adding a “scan_interval” to my energy-entities like this:

      - name:                wp_neubau_waermemenge_warmwasser_tag
        unique_id:           wp_neubau_waermemenge_warmwasser_tag
        slave:               1
        address:             3503 #3504 - 1 
        input_type:          input
        data_type:           uint16
        unit_of_measurement: kWh  
        device_class:        energy
        state_class:         total_increasing
        scan_interval:       30  # <- Updates come every 30 seconds

Edit:
The “Total MWH” and “Total KWH”-values only updates once a day. If you want the current total you have to sum up “Total MHW / 1000” + “Total KWH” + “Today KWH” via a template sensor.

Edit 2:
Just read that you parse your values from the Web Interface (“Servicewelt”). I did this before, but got better values via ModBus-Integration. Hope you´ll find a soltution for your problem. Sadly the Modbus-Integration does not give decimals on “Today KWH” even if they are there in “Servicewelt”. I´ve contacted Stiebel Eltron and asked them. For now there are no decimal values in ModBus, maybe that changes in the future.

Irgendwie bin ich am verzweifeln :frowning: Ich dreh mich im Kreis.
Ich habe Modbus aktiviert, allerdings ohne besondere Configs.
Im Moment sieht der so aus:


#Modbus

modbus:
  - name: "hub1modbus"
    type: tcp
    host: 192.168.0.92
    delay: 5 
    type: tcp
    port: 502

# Stiebel Eltron Wärmepumpe

stiebel_eltron:
  name: LWZ504e

In meinem Log wirft er folgenden Fehler:

Logger: homeassistant.setup
Source: components/stiebel_eltron/__init__.py:45
First occurred: 22:09:30 (1 occurrences)
Last logged: 22:09:30

Error during setup of component stiebel_eltron
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 256, in _async_setup_component
    result = await task
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/stiebel_eltron/__init__.py", line 45, in setup
    modbus_client = hass.data[MODBUS_DOMAIN][config[DOMAIN][CONF_HUB]]
KeyError: 'modbus_hub'

Ich wollte eigentlich nur hin und wieder meine Lüftung steuern und evtl. Luftwärme konfigurieren.
Jemand einen Tipp wo ich suchen muss? :confused:

German:
Ich empfehle dir über HACS die folgende Integration zu verwenden. Das geht viel einfacher und funktioniert auch. Mit der standard Stiebel Eltron Integration hab ich auch keine Verbindung hinbekommen:

PS: Poste hier bitte in englisch, damit jeder etwas davon hat.


English:
I would recommend to use the following integration via HACS. It is much easier and works flawless. I´ve also had problems with the standard stiebel eltron integration in home assistant und could not make it work.

1 Like

Hi Ingo.Niehues,

I will continue in english to give more people the chance to benefit from my questions. Thanks for the hint!
With the help of your link I got the component running. I still see only “Unknown” values.
I assume this is related to a not properly configured modbus? Is there a way to check if the modbus works?

Ok, Verständnisfrage: Wühle mich durch Tutorials und Videos:
Muss ich für jeden Wert den auslesen möchte in der Modbus Konfiguration (YAML) einen entsprechenden Sensor anlegen? Da die ganzen Sensoren schon in der Integration aufgelistet sind (Siehe Bild) hatte ich gehofft, dass diese schon dabei sind.
Ich habe leider keine Heizung von Stiebel Eltron direkt, sondern Tecalor. Allerdings sind die Tecalor Wärmepumpen am Ende vom Tag Stiebel Eltron Geräte als Whitelabel verkauft. ISG Gateway ist das gleiche und Heizungssteuerung auch.
Gibt es eine Liste aller Modbus Register für Tecalor/Stiebel Eltron Geräte?
Und gibt es jemand der alle Sensoren im Modbus schon angelegt hat? Sonst muss ich wohl viel Mühe aufwenden, die alle anzulegen :slight_smile:

    sensors:
      - name: temp_ext
        unique_id:           temp_ext # Unique ID enables you to rename it and change Icon etc via UI
        address: 506 #507 - 1 <== Meaning: In the Documentation the Modbus-Adress is 507, here i need to use 506 (always -1)
        slave:               1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        scale:               0.1
        precision:           1

Einmal mit 506 und 507 probiert, hat nicht geklappt :frowning: Was mach ich falsch?

List of all modbus-registers for stiebel eltron:

There are different options for integrating a stiebel eltron heat pump into home assistant:

1.) The official Stiebel Eltron Integration => STIEBEL ELTRON - Home Assistant (did not work for me)

2.) The “Stiebel Eltron ISG”-Integration via HACS => GitHub - pail23/stiebel_eltron_isg_component: Stiebel Eltron Modbus component for Home Assistant (works for me)

3.) The Modbus-Integration of Home Assistant => Modbus - Home Assistant (works for me)

If you use the Modbus-Integration (3.) you have to configure your Sensors via YAML-Code in the configuration.yaml. The other to methods (1. and 2.) don´t require manually YAML-Configuration.

If you use the “Stiebel Eltron Modbus” you should NOT set up “Modbus” in configuation.yaml. If you do so, then two Modbus connection to your heat pump will exists (one from the “modbus”-integration and one from the “ISG”-integration - this may lead to problems, as multiple modbus connections may not work).

So my advice is:
1.) remove the “modbus:…”-code from your configuration.yaml
2.) restart home assistant
3.) Check if you get sensor values from the “ISG”-integration

If not: Check your Logs for “modbus” or “ISG”.