Is there any interest in a Stiebel Eltron climate platform?

So, my ISG is installed and connected to HomeAssistant - looking fine, worked right away.

Question now: Did anyone create any automations based on this integration yet?
First idea: heat up the water when I have plenty of solar power available.
Next idea: Find some clever way to predict whether heating is necessary this day and then trigger this so that it does the majority of the heating while there still is some solar power available instead of starting it in the evening when temperatures fall - but also no power from the roof is available.

1 Like

First try to automate something: convert excess pv energy into thermal energy

alias: Warmwassertemperatur regeln
description: ""
trigger:
  - platform: time_pattern
    minutes: /5
condition: null
action:
  - if:
      - condition: numeric_state
        entity_id: sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
        above: 5
      - condition: numeric_state
        entity_id: sensor.alpha_ess_battery_voltage
        above: 273
      - condition: numeric_state
        entity_id: sensor.pv
        above: 3000
      - condition: numeric_state
        entity_id: sensor.stiebel_eltron_isg_actual_temperature_water
        below: 45
    then:
      - service: water_heater.set_temperature
        data:
          temperature: 55
        target:
          entity_id: number.stiebel_eltron_isg_comfort_water_temperature_target
      - delay:
          hours: 1
          minutes: 0
          seconds: 0
          milliseconds: 0
    else:
      - service: water_heater.set_temperature
        data:
          temperature: 46
        target:
          entity_id: number.stiebel_eltron_isg_comfort_water_temperature_target
mode: single

The values are rather random so far. I need to figure out what is most reasonable.
(The delay is meant to prevent changes, so the inverter is no constantly switching on/off.)

Yes, I created an automation to do exactly that:

alias: PV-Überschuss Warmwasser 60° ein (außerhalb Heizperiode)
description: ""
trigger:
  - platform: time_pattern
    minutes: /15
condition:
  - condition: numeric_state
    entity_id: sensor.power_solar_generation
    above: 2500
  - condition: numeric_state
    entity_id: sensor.solaredge_b1_state_of_energy
    above: 70
  - condition: numeric_state
    entity_id: sensor.stiebel_eltron_isg_actual_temperature_water
    below: 55
  - condition: state
    entity_id: sensor.heiz_periode
    state: "no"
action:
  - type: turn_on
    device_id: MYDEVICEID
    entity_id: switch.stiebel_eltron_isg_sg_ready_input_1
    domain: switch
mode: single
1 Like

Does anybody know, if this decimal issue in Modbus is still the case with the most recent ISG FW 12.x. I am on 10.x and it does obviously have this flaw. Not sure if it makes sense to ask Stiebel customer service for an update. How do you all deal with the missing digits (all web scraping?). Calculations with missing digits are more ore less worthless (esp. as the missing digits at MWh are making quite a difference). tnx

Sauber echt !! Super Leistung

Dear all,
I’m just starting to think about integrating my LWZ 404 SOL into HA; thanks so much for all the useful information in this thread!
As I currently don’t own an ISG, I’am thinking about getting one. In the context of integration the LWZ 404, is there a real difference between the ISG-web and the ISG-plus? My main use case would be switching temperature for the water heater and the ventialtion levels and monitoring the various parameters.
Any feedback is greatly appreciated!!!

Stiebel-Eltron-Heating-Card

Preview


Dependencies

You need to have the following components to use this card:

What you need to to

Install the Dependencies, copy the YAML-Code to a new card an replace then entity-names with your entity-names.

YAML-Code

square: false
columns: 1
type: grid
cards:
  - type: grid
    columns: 1
    square: false
    cards:
      - type: custom:mushroom-chips-card
        alignment: start
        chips:
          - type: template
            content: Heizung
            icon: mdi:heat-pump-outline
            tap_action:
              action: none
            card_mod:
              style: |
                ha-card {
                  border: none !important;
                  box-shadow: none !important;
                  background: none !important;
                  font-size: 3.5rem !important;
                }     
          - type: spacer
          - type: template
            content: mehr anzeigen
            icon: mdi:arrow-right
            tap_action:
              action: navigate
              navigation_path: /dashboard-jeschke/heizung
      - type: custom:stack-in-card
        mode: vertical
        keep:
          background: true
          border_radius: true
          box_shadow: true
          margin: true
          outer_padding: true
        cards:
          - type: grid
            columns: 2
            square: false
            cards:
              - type: custom:mushroom-template-card
                entity: select.stiebel_eltron_isg_altbau_operation_mode
                primary: |
                  {% if states(entity) == "Eco" %}
                    Eco-Modus
                  {% elif states(entity) == "Comfort" %}
                    Eco-Modus            
                  {% elif states(entity) == "Program" %}
                    Eco-Modus                        
                  {% endif %}
                icon: |
                  {% if states(entity) == "Eco" %}
                    mdi:tree
                  {% elif states(entity) == "Comfort" %}
                    mdi:fire
                  {% elif states(entity) == "Program" %}
                    mdi:clock-outline
                  {% endif %}
                icon_color: |
                  {% if states(entity) == "Eco" %}
                    green
                  {% elif states(entity) == "Comfort" %}
                    red
                  {% elif states(entity) == "Program" %}
                    blue
                  {% endif %}
                secondary: Heizmodus
                card_mod:
                  style: |
                    ha-card {
                      border: none !important;
                      box-shadow: none !important;
                      background: none !important;
                      padding: 3px !important;
                    }            
              - type: horizontal-stack
                cards:
                  - type: custom:button-card
                    variables:
                      modus: Program
                      icon: mdi:clock-outline
                      name: Programm
                      color: 61, 90, 254
                    entity: select.stiebel_eltron_isg_altbau_operation_mode
                    tap_action:
                      action: call-service
                      service: select.select_option
                      data:
                        option: '[[[ return variables.modus ]]]'
                      target:
                        entity_id: select.stiebel_eltron_isg_altbau_operation_mode
                    show_state: false
                    show_name: false
                    name: '[[[ return variables.name ]]]'
                    show_icon: true
                    icon: '[[[ return variables.icon ]]]'
                    styles:
                      card:
                        - padding: 3px
                        - height: 3rem
                        - box-shadow: none
                        - border: none
                        - background: rgba(var(--rgb-primary-text-color), 0.05)
                        - border-radius: 1rem
                      icon:
                        - height: 2rem
                        - width: 2rem
                      name:
                        - font-size: 1rem
                    state:
                      - value: '[[[ return variables.modus ]]]'
                        styles:
                          card:
                            - background-color: >-
                                [[[ return "rgba(" + variables.color + ", 0.2)"
                                ]]]
                          icon:
                            - color: >-
                                [[[ return "rgba(" + variables.color + ", 1)"
                                ]]]
                          name:
                            - color: >-
                                [[[ return "rgba(" + variables.color + ", 1)"
                                ]]]
                  - type: custom:button-card
                    variables:
                      modus: Comfort
                      icon: mdi:fire
                      name: Komfort
                      color: 245, 68, 54
                    entity: select.stiebel_eltron_isg_altbau_operation_mode
                    tap_action:
                      action: call-service
                      service: select.select_option
                      data:
                        option: '[[[ return variables.modus ]]]'
                      target:
                        entity_id: select.stiebel_eltron_isg_altbau_operation_mode
                    show_state: false
                    show_name: false
                    name: '[[[ return variables.name ]]]'
                    show_icon: true
                    icon: '[[[ return variables.icon ]]]'
                    styles:
                      card:
                        - padding: 3px
                        - height: 3rem
                        - box-shadow: none
                        - border: none
                        - background: rgba(var(--rgb-primary-text-color), 0.05)
                        - border-radius: 1rem
                      icon:
                        - height: 2rem
                        - width: 2rem
                      name:
                        - font-size: 1rem
                    state:
                      - value: '[[[ return variables.modus ]]]'
                        styles:
                          card:
                            - background-color: >-
                                [[[ return "rgba(" + variables.color + ", 0.2)"
                                ]]]
                          icon:
                            - color: >-
                                [[[ return "rgba(" + variables.color + ", 1)"
                                ]]]
                          name:
                            - color: >-
                                [[[ return "rgba(" + variables.color + ", 1)"
                                ]]]
                  - type: custom:button-card
                    variables:
                      modus: Eco
                      icon: mdi:tree
                      name: Eco
                      color: 1, 200, 82
                    entity: select.stiebel_eltron_isg_altbau_operation_mode
                    tap_action:
                      action: call-service
                      service: select.select_option
                      data:
                        option: '[[[ return variables.modus ]]]'
                      target:
                        entity_id: select.stiebel_eltron_isg_altbau_operation_mode
                    show_state: false
                    show_name: false
                    name: '[[[ return variables.name ]]]'
                    show_icon: true
                    icon: '[[[ return variables.icon ]]]'
                    styles:
                      card:
                        - padding: 3px
                        - height: 3rem
                        - box-shadow: none
                        - border: none
                        - background: rgba(var(--rgb-primary-text-color), 0.05)
                        - border-radius: 1rem
                      icon:
                        - height: 2rem
                        - width: 2rem
                      name:
                        - font-size: 1rem
                    state:
                      - value: '[[[ return variables.modus ]]]'
                        styles:
                          card:
                            - background-color: >-
                                [[[ return "rgba(" + variables.color + ", 0.2)"
                                ]]]
                          icon:
                            - color: >-
                                [[[ return "rgba(" + variables.color + ", 1)"
                                ]]]
                          name:
                            - color: >-
                                [[[ return "rgba(" + variables.color + ", 1)"
                                ]]]
          - type: custom:mushroom-number-card
            entity: number.stiebel_eltron_isg_altbau_heating_curve_rise_hk1
            primary_info: state
            secondary_info: name
            display_mode: buttons
            layout: horizontal
            card_mod:
              style: |
                ha-card {
                  border: none !important;
                  box-shadow: none !important;
                  background: none !important;
                  padding: 3px !important;
                }                 
          - type: grid
            columns: 2
            square: false
            cards:
              - type: custom:mushroom-entity-card
                entity: >-
                  number.stiebel_eltron_isg_altbau_comfort_temperature_target_hk1
                icon_color: red
                primary_info: state
                secondary_info: name
                card_mod:
                  style: |
                    ha-card {
                      border: none !important;
                      box-shadow: none !important;
                      background: none !important;
                      padding: 3px !important;
                    }           
              - type: custom:mushroom-entity-card
                entity: number.stiebel_eltron_isg_altbau_eco_temperature_target_hk1
                icon_color: green
                primary_info: state
                secondary_info: name
                card_mod:
                  style: |
                    ha-card {
                      border: none !important;
                      box-shadow: none !important;
                      background: none !important;
                      padding: 3px !important;
                    }          
              - type: custom:mushroom-entity-card
                entity: >-
                  number.stiebel_eltron_isg_altbau_comfort_water_temperature_target
                icon_color: red
                primary_info: state
                secondary_info: name
                card_mod:
                  style: |
                    ha-card {
                      border: none !important;
                      box-shadow: none !important;
                      background: none !important;
                      padding: 3px !important;
                    }          
              - type: custom:mushroom-entity-card
                entity: number.stiebel_eltron_isg_altbau_eco_water_temperature_target
                icon_color: green
                primary_info: state
                secondary_info: name
                card_mod:
                  style: |
                    ha-card {
                      border: none !important;
                      box-shadow: none !important;
                      background: none !important;
                      padding: 3px !important;
                    }        
          - type: markdown
            style:
              .: |
                ha-markdown.no-header {
                  padding-top: 0px !important; 
                  }
                ha-markdown {
                  padding: 0px 0px 0px !important; 
                  }
                ha-card {
                  border-radius: 20px;
                  overflow: hidden;
                  margin: 0 auto;
                  background: none;
                  box-shadow: none;
                }     
            content: >-
              <ha-alert title="Stromverbrauch">Heute wurden **{{
              states("sensor.stiebel_eltron_isg_altbau_consumed_heating_today")
              | int(default=0) +
              states("sensor.stiebel_eltron_isg_altbau_consumed_water_heating_today")
              | int(default=0) }} kWh** Strom verbraucht, davon **{{
              states("sensor.stiebel_eltron_isg_altbau_consumed_heating_today")
              | int(default=0) }} kWh fĂźr die Heizung** und **{{
              states("sensor.stiebel_eltron_isg_altbau_consumed_water_heating_today")
              | int(default=0) }} kWh fĂźr
              Warmwasser.**</ha-alert>                            
          - type: conditional
            conditions:
              - entity: binary_sensor.stiebel_eltron_isg_altbau_is_heating
                state: 'on'
            card:
              type: markdown
              style:
                .: |
                  ha-markdown.no-header {
                    padding-top: 0px !important; 
                    }
                  ha-markdown {
                    padding: 0px 0px 0px !important; 
                    }
                  ha-card {
                    border-radius: 20px;
                    overflow: hidden;
                    margin: 0 auto;
                    background: none;
                    box-shadow: none;
                  }     
              content: >-
                <ha-alert alert-type="success">Die Wärmepumpe ist im
                **Heizmodus.**</ha-alert>
          - type: conditional
            conditions:
              - entity: binary_sensor.stiebel_eltron_isg_altbau_is_in_summer_mode
                state: 'on'
            card:
              type: markdown
              style:
                .: |
                  ha-markdown.no-header {
                    padding-top: 0px !important; 
                    }
                  ha-markdown {
                    padding: 0px 0px 0px !important; 
                    }
                  ha-card {
                    border-radius: 20px;
                    overflow: hidden;
                    margin: 0 auto;
                    background: none;
                    box-shadow: none;
                  }     
              content: >-
                <ha-alert alert-type="info">Die Wärmepumpe ist im
                **Sommermodus**</ha-alert>
          - type: conditional
            conditions:
              - entity: binary_sensor.stiebel_eltron_isg_altbau_error_status
                state: 'on'
            card:
              type: markdown
              style:
                .: |
                  ha-markdown.no-header {
                    padding-top: 0px !important; 
                    }
                  ha-markdown {
                    padding: 0px 0px 0px !important; 
                    }
                  ha-card {
                    border-radius: 20px;
                    overflow: hidden;
                    margin: 0 auto;
                    background: none;
                    box-shadow: none;
                  }     
              content: >-
                <ha-alert
                alert-type="error">{{states('sensor.stiebel_eltron_isg_altbau_active_error')}}
                - es **liegt ein Fehler vor**</ha-alert>
          - type: custom:uptime-card
            card_mod:
              style: |
                ha-card {
                  border: none !important;
                  box-shadow: none !important;
                  padding: 0px !important;
                }  
            icon: mdi:fire
            entity: binary_sensor.stiebel_eltron_isg_altbau_is_heating
            title_adaptive_color: true
            status_adaptive_color: true
            icon_adaptive_color: true
            tooltip_adaptive_color: true
            hours_to_show: 24
            alignment:
              status: spaced
              header: left
              icon_first: true
            bar:
              spacing: 4
              height: 10
              round: 4
            color:
              ok: red
              half: darkorange
              ko: grey
            alias:
              ok: heizen
              ko: aus
            show:
              header: true
              title: true
              icon: true
              status: false
              timeline: true
              footer: true
              average: false
          - type: custom:tabbed-card
            card_mod:
              style: |
                .mdc-tab {
                    min-width: 1rem !important;
                }   
            tabs:
              - card:
                  type: custom:apexcharts-card
                  card_mod:
                    style: |
                      ha-card {
                        padding: 0px 0px 0px 0px;
                        box-shadow: none;
                      }
                      #state__value > #state {
                        font-size: 1.2em !important;
                      }
                      .apexcharts-tooltip-series-group {
                        padding-top: 0px !important;
                        padding-bottom: 0px !important;
                        margin-top: 0px !important;
                        margin-bottom: 0px !important;
                        display: none;
                        text-align: left;
                        justify-content: left;
                        align-items: center;
                      }
                      #header {
                          padding: 3px !important;
                      } 
                  apex_config:
                    chart:
                      height: 150px
                    legend:
                      show: false
                  span:
                    end: minute
                  graph_span: 48h
                  header:
                    show: true
                    title: ' '
                    show_states: true
                    colorize_states: true
                  all_series_config:
                    statistics:
                      type: mean
                    show:
                      in_header: raw
                    opacity: 0
                    type: area
                    stroke_width: 2
                  series:
                    - entity: sensor.altbau_erdgeschoss_temperatur
                      name: Erdgeschoss
                      color: var(--google-red)
                      statistics:
                        type: mean
                    - entity: sensor.stiebel_eltron_isg_altbau_outdoor_temperature
                      name: außen
                      color: var(--google-blue)
                      statistics:
                        type: mean
                styles:
                  '--mdc-theme-primary': var(--google-red)
                  '--mdc-tab-horizontal-padding': 0px !important
                attributes:
                  icon: mdi:thermometer
                  minWidth: true
                  stacked: true
                  label: Wohnung
              - card:
                  type: custom:apexcharts-card
                  card_mod:
                    style: |
                      ha-card {
                        padding: 0px 0px 0px 0px;
                        box-shadow: none;
                      }
                      #state__value > #state {
                        font-size: 1.2em !important;
                      }
                      .apexcharts-tooltip-series-group {
                        padding-top: 0px !important;
                        padding-bottom: 0px !important;
                        margin-top: 0px !important;
                        margin-bottom: 0px !important;
                        display: none;
                        text-align: left;
                        justify-content: left;
                        align-items: center;
                      }
                      #header {
                          padding: 3px !important;
                      } 
                  apex_config:
                    chart:
                      height: 150px
                    legend:
                      show: false
                  span:
                    end: minute
                  graph_span: 48h
                  header:
                    show: true
                    title: ' '
                    show_states: true
                    colorize_states: true
                  all_series_config:
                    statistics:
                      type: mean
                    show:
                      in_header: raw
                    opacity: 0
                    type: area
                    stroke_width: 2
                  series:
                    - entity: >-
                        sensor.stiebel_eltron_isg_altbau_actual_temperature_water
                      color: var(--google-blue)
                    - entity: >-
                        sensor.stiebel_eltron_isg_altbau_target_temperature_water
                      color: var(--google-grey)
                      opacity: 1
                      type: line
                styles:
                  '--mdc-theme-primary': var(--google-blue)
                  '--mdc-tab-horizontal-padding': 0px !important
                attributes:
                  icon: mdi:water-thermometer
                  minWidth: true
                  stacked: true
                  label: Wasser
              - card:
                  type: custom:apexcharts-card
                  card_mod:
                    style: |
                      ha-card {
                        padding: 0px 0px 0px 0px;
                        box-shadow: none;
                      }
                      #state__value > #state {
                        font-size: 1.2em !important;
                      }
                      .apexcharts-tooltip-series-group {
                        padding-top: 0px !important;
                        padding-bottom: 0px !important;
                        margin-top: 0px !important;
                        margin-bottom: 0px !important;
                        display: none;
                        text-align: left;
                        justify-content: left;
                        align-items: center;
                      }
                      #header {
                          padding: 3px !important;
                      } 
                  apex_config:
                    chart:
                      height: 150px
                    legend:
                      show: false
                  span:
                    end: minute
                  graph_span: 48h
                  header:
                    show: true
                    title: ' '
                    show_states: true
                    colorize_states: true
                  all_series_config:
                    statistics:
                      type: mean
                    show:
                      in_header: raw
                    opacity: 0
                    type: area
                    stroke_width: 2
                  series:
                    - entity: >-
                        sensor.stiebel_eltron_isg_altbau_actual_temperature_buffer
                      color: purple
                    - entity: >-
                        sensor.stiebel_eltron_isg_altbau_target_temperature_buffer
                      color: var(--google-grey)
                      opacity: 1
                      type: line
                styles:
                  '--mdc-theme-primary': purple
                  '--mdc-tab-horizontal-padding': 0px !important
                attributes:
                  icon: mdi:storage-tank-outline
                  minWidth: true
                  stacked: true
                  label: Puffer
2 Likes

Wow, this looks great and is exactly what I had in mind when I started with HASS.
We have a WPL25AC with ISG. And that iteracfe is awful indeed:

Just to be sure: you manage to change all the settings in your heatpump via HASS?
brgds, Leon

Yes, you can change (most, not all) settings via HASS.

What exactly is being shown with the “Heizfunktion” dots? What is red, whats is orange, what is grey?

It Shows If the Heat pump ist heating.

Red = full hour
orange = parts of the hour
grey = No heating in that hour

1 Like

Almost all. It ist Not possible to Set the schedule for Eco and Komfort in program Mode. For that there is the MyStiebel app

Here are some screenshots of the available entities for my heat pump:

These are different entities to change settings for your heat pump

These are read only sensors:
image


Thank you all for getting me started with the Stiebel heatpump integration.
Very valuable to read all the things everybody already tried. I must say, it was not easy to get started. As it is working now, I thought may interesting to share my experience so far. And pose some questions and suggestions :wink:

NB: my goal is to make optimum use of available own solar energy or temporarily cheap electricity from the net. At those periods, I want to heat up the water more than necessary, to create a heat buffer.

My first attempt was to installation the custom Stiebel ISG integration. I tried via the link in Github ( Link to HACS: Repository – My Home Assistant ) , but this gave an error (I have a HomeAssistant - Green with latest software version).

But since I learned in this blog how to setup the modbus interface and read the signals from ISG, I tried a YAML-integration in a similar way as Ingo Niehues ( Is there any interest in a Stiebel Eltron climate platform? - #169 by EdgeWalker ) It worked: I could read all the values. I also managed to put everything in a package, which keeps the configuration.yaml clean…

But I missed the functionality to write to the registers and change settings,

And in particular: to define programs as can be done in the web-interface of ISG:


(NB: the Stiebel app is not avaliable for NL). My only option today is via the web-interface, Using VPN, it can be done from outside, but the interface is a nightmare.

So I tried again to install the HA integration, this time manually: https://github.com/pail23/stiebel_eltron_isg_component/blob/main/README.md#manual-installation
This worked without any problem.

The integration comes with a Control, allowing to change settings:

Now I have a first dashboard like this:

Still work in progress:

  • The nice-looking thermostate is too sensitive: on a mobile, the temperature is quickly changed unnoticed and not by purpose. It is only available because for heating temperatures, not for hot water.

  • The slide bars for heating setting are too sensitive to set at a desired value.

  • Therefore, I prefer the up/down input fields as for the water temperature. They can be changed accurately.

→ I tried to find the code to change the sliders at ‘heating’ to ‘up/down’ fields, does anybody know how to change this?

  • I want to add cards for the energy production and consumption (one for heating, one for hot water), similar like in the card in the energy dashboard:

→ I tried the custom mushroom card, but didn’t manage to get it installed yet. The mushroom.js here:

but something is wrong as I cannot find the custom cards:

  • I really would like to add the 'program-the-program" functionality, because that allows me to switch the pump on and off, depending on triggers like - expected periods of cheap energy (too much solar energy, or low dynamic energy price from the grid). It seems it cannot be done via the modbus.

→ But maybe it can be done by using scrape-sensors of the ISG-interface. The start and finish time to be calculated by an automation algorithm, then using scrape manipulate the ISG-web interface. Did anybody already try this?

And again, thank you all for sharing your knowledge and experience!

I also think it’s not possible to switch between fixed temperature and outside-temperature-based flow-temperature (Vorlauftemperatur).

Dear all

We all see that not being able to impact the domestic hot water production time slots is frustrating when we know how to vary so many other parameters.
But in fact, if we leave the production ranges complete and only vary the eco and comfort temperatures according to the desired scenarios, we should achieve the same result.

1 Like

Hey, nice view.
What is displayed when you click on “mehr anzeigen”?

under “mehr anzeigen” i show a sub-page with information about consumption, heat-production and scop-values for heating, warm-water and both combined:

1 Like

could you please share the yaml-code for this dashboard?

Sure.

YAML-Code for the 1. Column
YAML-Code for the 2. Column
YAML-Code for the 3. Column
YAML-Code for the template sensors

This View needs the following components:

Configure your View-Tab like this so that the View will use all the space on wide screens and will be fitting even for mobile views: