Is there any interest in a Stiebel Eltron climate platform?

I went for Option 2 and did exaxtly what you recommended. This is how the logs Look like :confused:

type or paste code hereLogger: homeassistant.setup
Source: components/stiebel_eltron/__init__.py:45
First occurred: 19:24:27 (1 occurrences)
Last logged: 19:24:27

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'

This sounds like an error message from the official “Stiebel Eltron”-integration, not the HACS “Stiebel Eltron ISG”-integration. Did you remove the official Stiebel Eltron-Integration from your integrations?

You are right. I removed it and restartet HA. Now I dont receive any error log in the logbook.

But the values are still empty. Interestingly the Buttons for SG Ready are active. But all the values stay empty :confused:

Are some of the registers correct/incorrect?

Ok, maybe this could be an issue. Our Wärmepumpe has also an integrated Ventilation System. According to the Standard documentation all the registers differ from the Normal wärmepumpe when you have this Ventilation System integrated.
They Look like this:


Can I change the default registers that are integrated in the HACS component?

Best regards

No, you can´t change it yourself. You should open an issue here → Issues · pail23/stiebel_eltron_isg_component · GitHub

Maybe the maintainer of the integration can integrate the fitting registers for you.

Otherwise you´ll have to go with option 3 and define the sensors for your self. But this is much more complicated.

Hello all, I am slowly as well taking the path with the Stiebel and Modbus story. I´ve read here some infos and want to share some as well.
ISG from Stiebel and Tecalor use the same registers.
Modbus is included within ISG from the firmware Version 8.6.4 (you can see the version down right on the starting page). Actually is the firmware by 12.x.x.
If you have EMI with the new 12.1.2 firmware, you can use Modbus as well.
All heat pumps that use WPM3, 3i and WPM System can use Modbus.

@ingo.niehues Can you please share how is your working setup set up? Because that´s all you need by a heat pump, it´s really good one.

I speak german better as english, so no problem in german as well.Thanks.

sure.

This is my entry in my configuration.yaml (tried to put it in a seperate .yaml-file via !include but that did not work.

# Wärmempumpe mit Modbus steuern
modbus:

# Neubau
  - type: tcp
    host: 192.168.188.144
    port: 502
    name: ISG_Niehues
    close_comm_on_error: false
    retry_on_empty: true
    retries: 10

    # Sensoren
    sensors:

      # INPUT-Entities - nur lesender Zugriff

      - name:                wp_neubau_sg_ready_status
        unique_id:           wp_neubau_sg_ready_status
        slave:               1
        address:             5000 #5001 - 1 
        input_type:          input
        data_type:           uint16
        scan_interval:       30

      - name:                wp_neubau_ist_temp_aussen
        unique_id:           wp_neubau_ist_temp_aussen
        slave:               1
        address:             506 #507 - 1
        input_type:          input
        unit_of_measurement: °C
        device_class:        temperature
        state_class:         measurement
        scale:               0.1
        precision:           1

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

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

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

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

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

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

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

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

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

      - name:                wp_neubau_waermemenge_heizen_tag
        unique_id:           wp_neubau_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_neubau_waermemenge_heizen_ges_kwh
        unique_id:           wp_neubau_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_neubau_waermemenge_heizen_ges_mwh
        unique_id:           wp_neubau_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_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

      - name:                wp_neubau_waermemenge_warmwasser_ges_kwh
        unique_id:           wp_neubau_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_neubau_waermemenge_warmwasser_ges_mwh
        unique_id:           wp_neubau_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_neubau_stromverbrauch_heizen_tag
        unique_id:           wp_neubau_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_neubau_stromverbrauch_heizen_ges_kwh
        unique_id:           wp_neubau_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_neubau_stromverbrauch_heizen_ges_mwh
        unique_id:           wp_neubau_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_neubau_stromverbrauch_warmwasser_tag
        unique_id:           wp_neubau_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_neubau_stromverbrauch_warmwasser_ges_kwh
        unique_id:           wp_neubau_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_neubau_stromverbrauch_warmwasser_ges_mwh
        unique_id:           wp_neubau_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 - Lesender und schreibender Zugriff

      - name:                wp_neubau_sg_ready_switch_state
        unique_id:           wp_neubau_sg_ready_switch_state
        slave:               1
        address:             4000 #4001 - 1 
        input_type:          holding
        data_type:           uint16

      - name:                wp_neubau_sg_ready_eingang_1_state
        unique_id:           wp_neubau_sg_ready_eingang_1_state
        slave:               1
        address:             4001 #4002 - 1 
        input_type:          holding
        data_type:           uint16

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

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

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

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

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

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

To set the temperature (SOLL / IST) i created input_number-helpers and for the “program mode” i created an input_select-helper. These are the automations to (1) change the helpers values if the value of a sensors changes and (2) to change the value via modbus if a helper-value changes:

(1) change helper values

alias: Wärmepumpe neubau - Inputs aktualisieren
description: ""
trigger:
  - platform: state
    entity_id: sensor.wp_neubau_heizkreis1_temp_eco
    id: eco
    alias: Eco-Temperatur aktualisiert
  - platform: state
    entity_id: sensor.wp_neubau_heizkreis1_temp_komfort
    id: komfort
    alias: Komfort-Temperatur aktualisiert
  - platform: state
    entity_id: sensor.wp_neubau_warmwasser_temp_eco
    id: ww_eco
    alias: Eco-Temperatur aktualisiert
  - platform: state
    entity_id: sensor.wp_neubau_warmwasser_temp_komfort
    id: ww_komfort
    alias: Komfort-Temperatur aktualisiert
  - platform: state
    entity_id:
      - sensor.wp_neubau_betriebsart
    id: betriebsart
    alias: Betriebsart aktualisiert
  - platform: state
    entity_id: sensor.wp_neubau_heizkreis1_heizkurve
    id: heizkurve
    alias: Heizkurve aktualisiert
condition: []
action:
  - 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_neubau_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_neubau_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_neubau_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_neubau_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_neubau_betriebsart
                state: "0"
            then:
              - service: input_select.select_option
                data:
                  option: Notbetrieb
                target:
                  entity_id: input_select.wp_neubau_betriebsart
            else:
              - if:
                  - condition: state
                    entity_id: sensor.wp_neubau_betriebsart
                    state: "1"
                then:
                  - service: input_select.select_option
                    data:
                      option: Bereitschaftsbetrieb
                    target:
                      entity_id: input_select.wp_neubau_betriebsart
                else:
                  - if:
                      - condition: state
                        entity_id: sensor.wp_neubau_betriebsart
                        state: "2"
                    then:
                      - service: input_select.select_option
                        data:
                          option: Programmbetrieb
                        target:
                          entity_id: input_select.wp_neubau_betriebsart
                    else:
                      - if:
                          - condition: state
                            entity_id: sensor.wp_neubau_betriebsart
                            state: "3"
                        then:
                          - service: input_select.select_option
                            data:
                              option: Komfortbetrieb
                            target:
                              entity_id: input_select.wp_neubau_betriebsart
                        else:
                          - if:
                              - condition: state
                                entity_id: sensor.wp_neubau_betriebsart
                                state: "4"
                            then:
                              - service: input_select.select_option
                                data:
                                  option: Eco-Betrieb
                                target:
                                  entity_id: input_select.wp_neubau_betriebsart
                            else:
                              - if:
                                  - condition: state
                                    entity_id: sensor.wp_neubau_betriebsart
                                    state: "5"
                                then:
                                  - service: input_select.select_option
                                    data:
                                      option: Warmwasserbetrieb
                                    target:
                                      entity_id: input_select.wp_neubau_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_neubau_heizkurve
            alias: Input-Number für Heizkurve anpassen
mode: single

(2) set heat pump values to changed helper values

alias: Wärmepumpe Neubau - Anlage durch Inputs steuern
description: ""
trigger:
  - platform: state
    entity_id:
      - input_number.wp_neubau_temp_eco
    id: eco
    alias: Eco-Temperatur aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_neubau_ww_temp_eco
    id: ww_eco
    alias: Eco-Temperatur Warmwasser aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_neubau_temp_komfort
    id: komfort
    alias: Komfort-Temperatur aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_neubau_ww_temp_komfort
    id: ww_komfort
    alias: Komfort-Temperatur Warmwasser aktualisiert
  - platform: state
    entity_id:
      - input_select.wp_neubau_betriebsart
    id: betriebsart
    alias: Betriebsart aktualisiert
  - platform: state
    entity_id:
      - input_number.wp_neubau_heizkurve
    id: heizkurve
    alias: Heizkurve aktualisiert
condition: []
action:
  - 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_Niehues
      - 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_Niehues
      - 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_Niehues
      - 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_Niehues
      - conditions:
          - condition: trigger
            id: betriebsart
            alias: Auslöser Betriebsart
        sequence:
          - if:
              - condition: state
                entity_id: input_select.wp_neubau_betriebsart
                state: Notbetrieb
            then:
              - service: modbus.write_register
                data:
                  address: 1500
                  slave: 1
                  value: 0
                  hub: ISG_Niehues
            else:
              - if:
                  - condition: state
                    entity_id: input_select.wp_neubau_betriebsart
                    state: Bereitschaftsbetrieb
                then:
                  - service: modbus.write_register
                    data:
                      address: 1502
                      slave: 1
                      value: 1
                      hub: ISG_Niehues
                else:
                  - if:
                      - condition: state
                        entity_id: input_select.wp_neubau_betriebsart
                        state: Programmbetrieb
                    then:
                      - service: modbus.write_register
                        data:
                          address: 1502
                          slave: 1
                          value: 2
                          hub: ISG_Niehues
                    else:
                      - if:
                          - condition: state
                            entity_id: input_select.wp_neubau_betriebsart
                            state: Komfortbetrieb
                        then:
                          - service: modbus.write_register
                            data:
                              address: 1502
                              slave: 1
                              value: 3
                              hub: ISG_Niehues
                        else:
                          - if:
                              - condition: state
                                entity_id: input_select.wp_neubau_betriebsart
                                state: Eco-Betrieb
                            then:
                              - service: modbus.write_register
                                data:
                                  address: 1502
                                  slave: 1
                                  value: 4
                                  hub: ISG_Niehues
                            else:
                              - if:
                                  - condition: state
                                    entity_id: input_select.wp_neubau_betriebsart
                                    state: Warmwasserbetrieb
                                then:
                                  - service: modbus.write_register
                                    data:
                                      address: 1502
                                      slave: 1
                                      value: 5
                                      hub: ISG_Niehues
      - 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 | int }}"
              hub: ISG_Niehues
mode: single

i also created some template-sensors, mostly for energy-management

template:
  - sensor:
      - unique_id: wp_tage_in_betrieb
        name: wp_tage_in_betrieb
        state: "{{ ((as_timestamp(now(),0)-as_timestamp(states('input_datetime.warmepumpe_inbetriebnahme'),0)) | int /60/1440) | round(default=0) }}"
        unit_of_measurement: d
        device_class: duration
        state_class: measurement

      - unique_id: wp_neubau_stromverbrauch_heizen_je_tag
        name: wp_neubau_stromverbrauch_heizen_je_tag
        state: "{{ (states('sensor.wp_neubau_stromverbrauch_heizen_gesamt') | float(0) / states('sensor.wp_tage_in_betrieb') | int) | round(2) }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing

      - unique_id: wp_neubau_stromverbrauch_warmwasser_je_tag
        name: wp_neubau_stromverbrauch_warmwasser_je_tag
        state: "{{ (states('sensor.wp_neubau_stromverbrauch_warmwasser_gesamt') | float(0) / states('sensor.wp_tage_in_betrieb') | int) | round(2) }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing

      - unique_id: wp_neubau_waermemenge_heizen_je_tag
        name: wp_neubau_waermemenge_heizen_je_tag
        state: "{{ (states('sensor.wp_neubau_waermemenge_heizen_gesamt') | float(0) / states('sensor.wp_tage_in_betrieb') | int) | round(2) }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing

      - unique_id: wp_neubau_waermemenge_warmwasser_je_tag
        name: wp_neubau_waermemenge_warmwasser_je_tag
        state: "{{ (states('sensor.wp_neubau_waermemenge_warmwasser_gesamt') | float(0) / states('sensor.wp_tage_in_betrieb') | int) | round(2) }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing

      - unique_id: wp_neubau_stromverbrauch_heizen_gesamt
        name: wp_neubau_stromverbrauch_heizen_gesamt
        state: "{{ states('sensor.wp_neubau_stromverbrauch_heizen_ges_mwh') | int * 1000 + states('sensor.wp_neubau_stromverbrauch_heizen_ges_kwh') | int + states('sensor.wp_neubau_stromverbrauch_heizen_tag') | int }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        attributes:
          last_reset: "{{ as_timestamp(states('input_datetime.warmepumpe_inbetriebnahme')) | timestamp_local }}"

      - unique_id: wp_neubau_stromverbrauch_warmwasser_gesamt
        name: wp_neubau_stromverbrauch_warmwasser_gesamt
        state: "{{ states('sensor.wp_neubau_stromverbrauch_warmwasser_ges_mwh') | int * 1000 + states('sensor.wp_neubau_stromverbrauch_warmwasser_ges_kwh') | int + states('sensor.wp_neubau_stromverbrauch_warmwasser_tag') | int }}"
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        attributes:
          last_reset: "{{ as_timestamp(states('input_datetime.warmepumpe_inbetriebnahme')) | timestamp_local }}"

      - unique_id: wp_neubau_waermemenge_heizen_gesamt
        name: wp_neubau_waermemenge_heizen_gesamt
        state: "{{ states('sensor.wp_neubau_waermemenge_heizen_ges_mwh') | int * 1000 + states('sensor.wp_neubau_waermemenge_heizen_ges_kwh') | int + states('sensor.wp_neubau_waermemenge_heizen_tag') | int }}"
        unit_of_measurement: kWh  
        device_class: energy
        state_class: total_increasing

      - unique_id: wp_neubau_waermemenge_warmwasser_gesamt
        name: wp_neubau_waermemenge_warmwasser_gesamt
        state: "{{ states('sensor.wp_neubau_waermemenge_warmwasser_ges_mwh') | int * 1000 + states('sensor.wp_neubau_waermemenge_warmwasser_ges_kwh') | int + states('sensor.wp_neubau_waermemenge_warmwasser_tag') | int }}"
        unit_of_measurement: kWh  
        device_class: energy
        state_class: total_increasing


      - unique_id: wp_neubau_scop_heizen_tag
        name: wp_neubau_scop_heizen_tag
        state: >
          {% set dividend = states('sensor.wp_neubau_waermemenge_heizen_tag') | float(0) %}
          {% set divisor = states('sensor.wp_neubau_stromverbrauch_heizen_tag') | float(0) %}
          {% if 0 not in [ dividend , divisor ] %}
            {{ dividend / divisor | float(0) }}
          {% else %}
            0
          {% endif %}
        device_class: power_factor
        state_class: measurement

      - unique_id: wp_neubau_scop_heizen_gesamt
        name: wp_neubau_scop_heizen_gesamt
        state: >
          {% set dividend = states('sensor.wp_neubau_waermemenge_heizen_gesamt') | float(0) %}
          {% set divisor = states('sensor.wp_neubau_stromverbrauch_heizen_gesamt') | float(0) %}
          {% if 0 not in [ dividend , divisor ] %}
            {{ dividend / divisor | float(0) }}
          {% else %}
            0
          {% endif %}
        device_class: power_factor
        state_class: measurement

      - unique_id: wp_neubau_scop_heizen_je_tag
        name: wp_neubau_scop_heizen_je_tag
        state: >
          {% set dividend = states('sensor.wp_neubau_waermemenge_heizen_je_tag') | float(0) %}
          {% set divisor = states('sensor.wp_neubau_stromverbrauch_heizen_je_tag') | float(0) %}
          {% if 0 not in [ dividend , divisor ] %}
            {{ dividend / divisor | float(0) }}
          {% else %}
            0
          {% endif %}
        device_class: power_factor
        state_class: measurement

      - unique_id: wp_neubau_scop_warmwasser_tag
        name: wp_neubau_scop_warmwasser_tag
        state: >
          {% set dividend = states('sensor.wp_neubau_waermemenge_warmwasser_tag') | float(0) %}
          {% set divisor = states('sensor.wp_neubau_stromverbrauch_warmwasser_tag') | float(0) %}
          {% if 0 not in [ dividend , divisor ] %}
            {{ dividend / divisor | float(0) }}
          {% else %}
            0
          {% endif %}
        device_class: power_factor
        state_class: measurement

      - unique_id: wp_neubau_scop_warmwasser_gesamt
        name: wp_neubau_scop_warmwasser_gesamt
        state: >
          {% set dividend = states('sensor.wp_neubau_waermemenge_warmwasser_gesamt') | float(0) %}
          {% set divisor = states('sensor.wp_neubau_stromverbrauch_warmwasser_gesamt') | float(0) %}
          {% if 0 not in [ dividend , divisor ] %}
            {{ dividend / divisor | float(0) }}
          {% else %}
            0
          {% endif %}
        device_class: power_factor
        state_class: measurement

      - unique_id: wp_neubau_scop_warmwasser_je_tag
        name: wp_neubau_scop_warmwasser_je_tag
        state: >
          {% set dividend = states('sensor.wp_neubau_waermemenge_warmwasser_je_tag') | float(0) %}
          {% set divisor = states('sensor.wp_neubau_stromverbrauch_warmwasser_je_tag') | float(0) %}
          {% if 0 not in [ dividend , divisor ] %}
            {{ dividend / divisor | float(0) }}
          {% else %}
            0
          {% endif %}
        device_class: power_factor
        state_class: measurement

      - unique_id: wp_neubau_preis_je_kwh_waerme_oel
        name: wp_neubau_preis_je_kwh_waerme_oel
        state: "{{ states('input_number.neubau_kosten_heizol_je_liter') | float(0) / states('input_number.neubau_ol_kwh_je_liter') | float(0) }}"
        unit_of_measurement: EUR/kWh
        device_class: monetary
        state_class: total

      - unique_id: wp_neubau_preis_je_kwh_waerme_strom
        name: wp_neubau_preis_je_kwh_waerme_strom
        state: "{{ states('input_number.neubau_kosten_strom_je_kwh') | float(0) / states('input_number.neubau_scop_der_warmepumpe') | float(0) }}"
        unit_of_measurement: EUR/kWh
        device_class: monetary
        state_class: total

      - unique_id: wp_neubau_waermebedarf_kwh_pro_jahr
        name: wp_neubau_waermebedarf_kwh_pro_jahr
        state: "{{ states('input_number.neubau_heizolverbrauch_in_litern') | float(0) * states('input_number.neubau_ol_kwh_je_liter') | float(0) }}"  
        unit_of_measurement: kWh
        device_class: energy
        state_class: total

      - unique_id: wp_neubau_heizkosten_oel_jahr
        name: wp_neubau_heizkosten_oel_jahr
        state: "{{ states('sensor.wp_neubau_waermebedarf_kwh_pro_jahr') | float(0) * states('sensor.wp_neubau_preis_je_kwh_waerme_oel') | float(0) }}"  
        unit_of_measurement: EUR
        device_class: monetary
        state_class: total

      - unique_id: wp_neubau_heizkosten_oel_monat
        name: wp_neubau_heizkosten_oel_monat
        state: "{{ states('sensor.wp_neubau_heizkosten_oel_jahr') | float(0) / 12 }}"  
        unit_of_measurement: EUR
        device_class: monetary
        state_class: total

      - unique_id: wp_neubau_heizkosten_strom_jahr
        name: wp_neubau_heizkosten_strom_jahr
        state: "{{ states('sensor.wp_neubau_waermebedarf_kwh_pro_jahr') | float(0) * states('sensor.wp_neubau_preis_je_kwh_waerme_strom') | float(0) }}"  
        unit_of_measurement: EUR
        device_class: monetary
        state_class: total

      - unique_id: wp_neubau_heizkosten_strom_monat
        name: wp_neubau_heizkosten_strom_monat
        state: "{{ states('sensor.wp_neubau_heizkosten_strom_jahr') | float(0) / 12 }}"  
        unit_of_measurement: EUR
        device_class: monetary
        state_class: total

      - unique_id: wp_neubau_heizkosten_strom_kwh_jahr
        name: wp_neubau_heizkosten_strom_kwh_jahr
        state: "{{ states('sensor.wp_neubau_waermebedarf_kwh_pro_jahr') | float(0) / states('input_number.neubau_scop_der_warmepumpe') | float(0) }}"  
        unit_of_measurement: kWh
        device_class: energy
        state_class: total

      - unique_id: wp_neubau_heizkosten_strom_kwh_monat
        name: wp_neubau_heizkosten_strom_kwh_monat
        state: "{{ states('sensor.wp_neubau_heizkosten_strom_kwh_jahr') | float(0) / 12 }}"  
        unit_of_measurement: kWh
        device_class: energy
        state_class: total

      - unique_id: wp_neubau_heizkosten_oel_liter_jahr
        name: wp_neubau_heizkosten_oel_liter_jahr
        state: "{{ states('sensor.wp_neubau_waermebedarf_kwh_pro_jahr') | float(0) / states('input_number.neubau_ol_kwh_je_liter') | float(0) }}"  
        unit_of_measurement: L
        device_class: water
        state_class: total_increasing

      - unique_id: wp_neubau_heizkosten_oel_liter_monat
        name: wp_neubau_heizkosten_oel_liter_monat
        state: "{{ states('sensor.wp_neubau_heizkosten_oel_liter_jahr') | float(0) / 12 }}"  
        unit_of_measurement: L
        device_class: water
        state_class: total_increasing

      - unique_id: wp_neubau_stromverbrauch_heizen_und_warmwasser_gesamt
        name: wp_neubau_stromverbrauch_heizen_und_warmwasser_gesamt
        state: "{{ (states('sensor.wp_neubau_stromverbrauch_heizen_gesamt') | float(0) + states('sensor.wp_neubau_stromverbrauch_warmwasser_gesamt') | float(0) | float(0)) | round(0) }}"
        unit_of_measurement: kWh
        state_class: total_increasing
        device_class: energy
        attributes:
          last_reset: "{{ as_timestamp(states('input_datetime.warmepumpe_inbetriebnahme')) | timestamp_local }}"

  - binary_sensor:
      # Betriebsstatus Wärmepumpe Neubau
      - name: wp_neubau_betriebsstatus_hk1_pumpe
        unique_id: wp_neubau_betriebsstatus_hk1_pumpe
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(1) > 0 }}"
        device_class: running
        icon: mdi:pump
      - name: wp_neubau_betriebsstatus_hk2_pumpe
        unique_id: wp_neubau_betriebsstatus_hk2_pumpe
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(2) > 0 }}"
        device_class: running
        icon: mdi:pump
      - name: wp_neubau_betriebsstatus_aufheizprogramm
        unique_id: wp_neubau_betriebsstatus_aufheizprogramm
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(4) > 0 }}"
        device_class: running
        icon: mdi:heat-wave
      - name: wp_neubau_betriebsstatus_NHZ_STUFEN_IN_BETRIEB
        unique_id: wp_neubau_betriebsstatus_NHZ_STUFEN_IN_BETRIEB
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(8) > 0 }}"
        device_class: running
        icon: mdi:stairs
      - name: wp_neubau_betriebsstatus_HEIZBETRIEB
        unique_id: wp_neubau_betriebsstatus_HEIZBETRIEB
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(16) > 0 }}"
        device_class: running
        icon: mdi:radiator
      - name: wp_neubau_betriebsstatus_WARMWASSERBETRIEB
        unique_id: wp_neubau_betriebsstatus_WARMWASSERBETRIEB
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(32) > 0 }}"
        device_class: running
        icon: mdi:fire
      - name: wp_neubau_betriebsstatus_VERDICHTER
        unique_id: wp_neubau_betriebsstatus_VERDICHTER
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(64) > 0 }}"
        device_class: running
        icon: mdi:arrow-collapse-vertical
      - name: wp_neubau_betriebsstatus_SOMMERBETRIEB
        unique_id: wp_neubau_betriebsstatus_SOMMERBETRIEB
        state: " {{ states('sensor.wp_neubau_betriebsstatus')|int|bitwise_and(128) > 0 }}"
        device_class: running
        icon: mdi:sun-thermometer
      - name: wp_neubau_fehlerstatus_binary
        unique_id: wp_neubau_fehlerstatus_binary
        state: " {{ states('sensor.wp_neubau_fehlerstatus') | int }}"
        device_class: problem
        icon: mdi:alert

switch:
  - platform: template
    switches:

      # Schalter SG Ready
      wp_neubau_sg_ready:
        friendly_name: Wärmepumpe Neubau SG Ready
        value_template: "{{ is_state('sensor.wp_neubau_sg_ready_switch_state', '1') }}"
        unique_id: wp_neubau_sg_ready
        turn_on:
          service: modbus.write_register
          data:
            hub: ISG_Niehues
            address: 4000
            slave: 1
            value: 1
        turn_off:
          service: modbus.write_register
          data:
            hub: ISG_Niehues
            address: 4000
            slave: 1
            value: 0

      # Schalter SG Ready Eingang 1
      wp_neubau_sg_ready_eingang_1:
        friendly_name: Wärmepumpe Neubau SG Ready Eingang 1
        value_template: "{{ is_state('sensor.wp_neubau_sg_ready_eingang_1_state', '1') }}"
        unique_id: wp_neubau_sg_ready_eingang_1
        turn_on:
          service: modbus.write_register
          data:
            hub: ISG_Niehues
            address: 4001
            slave: 1
            value: 1
        turn_off:
          service: modbus.write_register
          data:
            hub: ISG_Niehues
            address: 4001
            slave: 1
            value: 0

utility_meter:
  wp_neubau_stromverbrauch_heizung_hourly:
    unique_id: wp_neubau_stromverbrauch_heizung_hourly
    source: sensor.wp_neubau_stromverbrauch_heizen_gesamt
    cycle: hourly
  wp_neubau_stromverbrauch_heizung_daily:
    unique_id: wp_neubau_stromverbrauch_heizung_daily
    source: sensor.wp_neubau_stromverbrauch_heizen_gesamt
    cycle: daily
  wp_neubau_stromverbrauch_heizung_weekly:
    unique_id: wp_neubau_stromverbrauch_heizung_weekly
    source: sensor.wp_neubau_stromverbrauch_heizen_gesamt
    cycle: weekly
  wp_neubau_stromverbrauch_heizung_monthly:
    unique_id: wp_neubau_stromverbrauch_heizung_monthly
    source: sensor.wp_neubau_stromverbrauch_heizen_gesamt
    cycle: monthly
  wp_neubau_stromverbrauch_heizung_yearly:
    unique_id: wp_neubau_stromverbrauch_heizung_yearly
    source: sensor.wp_neubau_stromverbrauch_heizen_gesamt
    cycle: yearly

Thanks a lot, it´s a big help. I have now arranged the modbus parameters in my home assistant.
But I am struggling with input-select helpers. If I do write them in the configuration.yaml there is an error message:
Integration error: description - Integration ‘description’ not found.
Integration error: alias - Integration ‘alias’ not found.
Integration error: trigger - Integration ‘trigger’ not found.

What am I making wrong?
Thank you.

One thing what I´ve found out by the Servicewelt:
Decimals on Today KWH: Unfortunately they are not given to the Modbus, but they do not get lost. If the Today KWh is resetted at midnight, the decimals stay and will be added to the next day.

So If you have for example 4,25 KWh on the day, Modbus gives you 4KWh, bud the 0,25KWh will be added the next day.

I know. It is weird that Stiebel Eltern have the data but don´t let you access it via modbus. I already contacted the stiebel eltron support and asked if it would be possible to get the decimals via modbus. Sadly it ist NOT possible at the moment. But they told me, that they would inform the technical team about my wish. Hopefully there will be a modbus-register for that data too in the future.

“alias”, “description” and “trigger” are my automation, not the “input select”. You could easily set up your input_select via UI. Just go to settings → devices & integrations → helper → add helper → Drop-Down

Just to be sure if I made it correctly:
All the Modbus register are in that configuration.yaml - that works for me
(1) Change helper values are in automations.yaml
(2) set heat pump values to changed helper values are also in automations.yaml
Template sensors are in configuration.yaml

Do you need some other thing to configure or write?

Other thing though:
Your Frontend for the heat pump looks really good!
Could you please share that? That´s all what i want to see…

Hello @ingo.niehues I want to really thank you with your help, I have managed really a great amount of data through your parameters and created another ones. My setup looks like this now:

What I would like to know, how you managed the frontend with diagrams and +/- switches.

1 Like

I’ve reworked my page for the heat pump. It now looks like this:

In this view i make use of

  • mushroom-card (HACS)
  • button-card (HACS)
  • apex-charts-card (HACS)
  • stack-in-a-card (HACS)
  • grid

It contains 3 columns.

Here is the yaml-code for the first column:

square: false
columns: 1
type: grid
cards:
  - type: grid
    columns: 1
    square: false
    cards:
      - type: grid
        columns: 3
        square: false
        cards:
          - type: custom:mushroom-template-card
            icon: mdi:home-automation
            entity: input_select.wp_altbau_betriebsart
            primary: Programm
            secondary: Modus
            icon_color: |
              {% if is_state(config.entity, 'Programmbetrieb') %}
                white
              {% else %}
                grey
              {% endif %}
            tap_action:
              service: modbus.write_register
              service_data:
                address: 1500
                slave: 1
                hub: ISG_Jeschke
                value: 2
              action: call-service
            card_mod:
              style: |
                ha-card {
                  padding: 3px !important;
                  background-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Programmbetrieb' %}var(--google-blue) !important;
                    {%- endif %}
                  --icon-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Programmbetrieb' %}white !important;
                    {%- endif %}
                  --primary-text-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Programmbetrieb' %}white !important;
                    {%- endif %}
                  --secondary-text-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Programmbetrieb' %}lightgrey !important;
                    {%- endif %}
                  }
          - type: custom:mushroom-template-card
            icon: mdi:tree
            entity: input_select.wp_altbau_betriebsart
            primary: Eco
            secondary: Modus
            icon_color: |
              {% if is_state(config.entity, 'Eco-Betrieb') %}
                white
              {% else %}
                grey
              {% endif %}
            tap_action:
              service: modbus.write_register
              service_data:
                address: 1500
                slave: 1
                hub: ISG_Jeschke
                value: 4
              action: call-service
            card_mod:
              style: |
                ha-card {
                  padding: 3px !important;
                  background-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Eco-Betrieb' %}green !important;
                    {%- endif %}
                  --icon-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Eco-Betrieb' %}white !important;
                    {%- endif %}
                  --primary-text-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Eco-Betrieb' %}white !important;
                    {%- endif %}
                  --secondary-text-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Eco-Betrieb' %}lightgrey !important;
                    {%- endif %}
                  }
          - type: custom:mushroom-template-card
            icon: mdi:fire
            entity: input_select.wp_altbau_betriebsart
            primary: Komfort
            secondary: Modus
            icon_color: |
              {% if is_state(config.entity, 'Komfortbetrieb') %}
                white
              {% else %}
                grey
              {% endif %}
            tap_action:
              service: modbus.write_register
              service_data:
                address: 1500
                slave: 1
                hub: ISG_Jeschke
                value: 3
              action: call-service
            card_mod:
              style: |
                ha-card {
                  padding: 3px !important;
                  background-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Komfortbetrieb' %}red !important;
                    {%- endif %}
                  --icon-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Komfortbetrieb' %}white !important;
                    {%- endif %}
                  --primary-text-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Komfortbetrieb' %}white !important;
                    {%- endif %}
                  --secondary-text-color:
                    {%- set sensor = states(config.entity) %}
                    {%- if sensor == 'Komfortbetrieb' %}lightgrey !important;
                    {%- endif %}
                  }
      - type: custom:mushroom-number-card
        layout: horizontal
        display_mode: buttons
        card_mod:
          style: |
            ha-card {
              padding: 3px !important;
            {
        entity: input_number.wp_altbau_temp_eco
      - type: custom:mushroom-number-card
        layout: horizontal
        display_mode: buttons
        card_mod:
          style: |
            ha-card {
              padding: 3px !important;
            {
        entity: input_number.wp_altbau_temp_komfort
      - type: custom:mushroom-number-card
        layout: horizontal
        display_mode: buttons
        card_mod:
          style: |
            ha-card {
              padding: 3px !important;
            {
        entity: input_number.wp_altbau_ww_temp_eco
      - type: custom:mushroom-number-card
        layout: horizontal
        display_mode: buttons
        card_mod:
          style: |
            ha-card {
              padding: 3px !important;
            {
        entity: input_number.wp_altbau_ww_temp_komfort
      - type: custom:mushroom-number-card
        layout: horizontal
        display_mode: buttons
        card_mod:
          style: |
            ha-card {
              padding: 3px !important;
            {
        entity: input_number.wp_altbau_heizkurve
      - type: custom:button-card
        template: ueberschrift
        name: Aktuell laufende Funktionen der Wärmepumpe
      - type: custom:auto-entities
        show_empty: false
        card:
          type: custom:mushroom-chips-card
        card_param: chips
        filter:
          exclude:
            - entity_id: binary_sensor.wp_*2*
          include:
            - entity_id: binary_sensor.wp_altbau_betriebsstatus_*
              state: 'on'
              options:
                type: entity
                alignment: justify
                tap_action:
                  action: more-info
                content_info: name
                icon_color: blue
            - entity_id: binary_sensor.wp_altbau_fehler*binary
              state: 'on'
              options:
                type: entity
                alignment: justify
                tap_action:
                  action: more-info
                content_info: name
                card_mod:
                  style: |
                    ha-card {
                      background-color: red !important;
                      --icon-color: white !important;
                      --text-color: white !important;
                    }
        sort:
          method: name
      - type: custom:apexcharts-card
        stacked: true
        card_mod:
          style: |
            ha-card {
              padding: 0px 0px 0px 0px;
            }
            #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: 125px
          legend:
            show: false
          dataLabels:
            style:
              fontSize: 9px
        span:
          end: day
        graph_span: 30d
        header:
          show: true
          title: Stromverbrauch Wärmepumpe
          show_states: true
          colorize_states: true
          floating: false
        yaxis:
          - id: first
            decimals: 0
            apex_config:
              tickAmount: 4
              forceNiceScale: true
        all_series_config:
          show:
            in_header: true
            datalabels: false
            legend_value: false
          type: column
          stroke_width: 2
          statistics:
            type: sum
          group_by:
            func: diff
            start_with_last: true
            duration: 1d
        series:
          - entity: sensor.wp_altbau_stromverbrauch_heizen_tag
            yaxis_id: first
            name: Heizung
            color: var(--google-red)
          - entity: sensor.wp_altbau_stromverbrauch_warmwasser_tag
            yaxis_id: first
            name: Warmwasser
            color: var(--google-blue)
      - type: custom:apexcharts-card
        card_mod:
          style: |
            ha-card {
              padding: 0px 0px 0px 0px;
            }
            #state__value > #state {
              font-size: 1.2em !important;
            }   
        yaxis:
          - id: first
            min: 0
            max: 40
            decimals: 0
            apex_config:
              tickAmount: 4
              forceNiceScale: true
          - id: second
            opposite: true
            decimals: 0
            min: ~0
            max: ~25
            apex_config:
              tickAmount: 4
              forceNiceScale: true
        apex_config:
          chart:
            height: 125px
          legend:
            show: false
        span:
          end: day
        graph_span: 30d
        header:
          show: true
          title: ' '
          show_states: true
          colorize_states: true
        series:
          - entity: sensor.esp_stromzahler_jaschke_total
            yaxis_id: first
            float_precision: 0
            show:
              in_header: true
              datalabels: false
              legend_value: false
            type: column
            name: Gesamt
            color: var(--google-grey)
            group_by:
              func: diff
              duration: 1d
              start_with_last: true
          - entity: >-
              sensor.wp_altbau_stromverbrauch_heizen_und_warmwasser_gesamt_utility_meter
            yaxis_id: first
            float_precision: 0
            show:
              in_header: true
              datalabels: false
              legend_value: false
            type: column
            name: davon Wärmepumpe
            color: var(--google-red)
            group_by:
              func: diff
              duration: 1d
              start_with_last: true
          - entity: sensor.wp_altbau_ist_temp_aussen
            yaxis_id: second
            float_precision: 0
            show:
              in_header: true
              datalabels: false
              legend_value: false
            type: area
            name: min. Temp.
            color: var(--google-blue)
            opacity: 0.2
            stroke_width: 2
            group_by:
              func: min
              duration: 1d
          - entity: sensor.wp_altbau_ist_temp_aussen
            yaxis_id: second
            float_precision: 0
            show:
              in_header: true
              datalabels: false
              legend_value: false
            type: area
            opacity: 0.2
            stroke_width: 2
            name: max. Temp.
            color: var(--google-blue)
            group_by:
              func: max
              duration: 1d

And for the second column:

square: false
columns: 1
type: grid
cards:
  - type: custom:button-card
    template: ueberschrift
    name: Heizung
  - type: custom:apexcharts-card
    card_mod:
      style: |
        ha-card {
          padding: 0px 0px 0px 0px;
        }
        #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: 30d
    header:
      show: true
      title: ' '
      show_states: true
      colorize_states: true
    all_series_config:
      statistics:
        type: mean
        period: hour
      show:
        in_header: true
      opacity: 0.2
      type: area
      stroke_width: 2
    series:
      - entity: sensor.altbau_erdgeschoss_temperatur
        name: Erdgeschoss
        color: var(--google-red)
      - entity: sensor.wp_altbau_ist_temp_aussen
        name: Draußen
        color: grey
  - type: custom:apexcharts-card
    card_mod:
      style: |
        ha-card {
          padding: 0px 0px 0px 0px;
        }
        #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: 125px
      legend:
        show: false
      dataLabels:
        style:
          fontSize: 9px
    span:
      end: day
    graph_span: 30d
    header:
      show: true
      title: Stromverbrauch Heizen
      show_states: true
      colorize_states: true
      floating: false
    yaxis:
      - id: first
        decimals: 0
        apex_config:
          tickAmount: 4
          forceNiceScale: true
    all_series_config:
      show:
        in_header: true
        datalabels: false
        legend_value: false
      type: column
      stroke_width: 2
      statistics:
        type: sum
      group_by:
        func: diff
        start_with_last: true
        duration: 1d
    series:
      - entity: sensor.wp_altbau_stromverbrauch_heizen_tag
        yaxis_id: first
        name: Heizung
        color: var(--google-red)
  - type: custom:apexcharts-card
    card_mod:
      style: |
        ha-card {
          padding: 0px 0px 0px 0px;
        }
        #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: 125px
      legend:
        show: false
      dataLabels:
        style:
          fontSize: 9px
    span:
      end: day
    graph_span: 30d
    header:
      show: true
      title: Wärmemenge je kWh Strom
      show_states: true
      colorize_states: true
      floating: false
    yaxis:
      - id: first
        decimals: 0
        min: 0
        max: ~3
        apex_config:
          tickAmount: 4
          forceNiceScale: true
    all_series_config:
      show:
        in_header: false
        datalabels: false
        legend_value: false
      type: column
      stroke_width: 2
      group_by:
        func: avg
        start_with_last: true
        duration: 1d
    series:
      - entity: sensor.wp_altbau_scop_heizen_tag
        yaxis_id: first
        name: Heizung
        color: var(--google-red)
  - square: false
    columns: 3
    type: grid
    cards:
      - type: custom:button-card
        template: ueberschrift
        name: Stromverbrauch
      - type: custom:button-card
        template: ueberschrift
        name: Wärmemenge
      - type: custom:button-card
        template: ueberschrift
        name: Verhältnis
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_stromverbrauch_heizen_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:lightning-bolt
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_waermemenge_heizen_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:fire
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_scop_heizen_tag
        primary: 1 / {{states(config.entity) | round(2) }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:ab-testing
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_stromverbrauch_heizen_gesamt
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:lightning-bolt
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_waermemenge_heizen_gesamt
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:fire
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_scop_heizen_gesamt
        primary: 1 / {{states(config.entity) | round(2) }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:ab-testing
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_stromverbrauch_heizen_je_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:lightning-bolt
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_waermemenge_heizen_je_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:fire
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_scop_heizen_je_tag
        primary: 1 / {{states(config.entity) | round(2) }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:ab-testing
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
  - type: custom:apexcharts-card
    card_mod:
      style: |
        ha-card {
          padding: 0px 0px 0px 0px;
        }
        #state__value > #state {
          font-size: 1.2em !important;
        }   
    apex_config:
      chart:
        height: 150px
      legend:
        show: false
    span:
      end: minute
    graph_span: 30d
    header:
      show: true
      title: Wärmepumpe - Vor- und Rücklauf
      show_states: true
      colorize_states: true
      floating: false
    all_series_config:
      show:
        in_header: true
      type: area
      stroke_width: 2
      opacity: 0.2
      statistics:
        type: mean
        period: hour
    series:
      - entity: sensor.wp_altbau_ist_temp_heizkreis1
        name: Vorlauf
        color: var(--google-red)
      - entity: sensor.wp_altbau_ruecklauf_ist_temp
        name: Rücklauf
        color: var(--google-blue)
      - entity: sensor.wp_altbau_ist_temp_aussen
        name: Außen
        color: grey

…and for the third one:

square: false
columns: 1
type: grid
cards:
  - type: custom:button-card
    template: ueberschrift
    name: Warmwasser
  - type: custom:apexcharts-card
    card_mod:
      style: |
        ha-card {
          padding: 0px 0px 0px 0px;
        }
        #state__value > #state {
          font-size: 1.2em !important;
        }   
    apex_config:
      chart:
        height: 150px
      legend:
        show: false
      tooltip:
        enabled: true
        shared: true
    span:
      end: minute
    graph_span: 30d
    header:
      show: true
      title: ''
      show_states: true
      colorize_states: true
      floating: false
    series:
      - entity: sensor.wp_altbau_ist_temp_warmwasser
        show:
          in_header: true
        type: area
        opacity: 0.2
        stroke_width: 2
        name: Ist
        color: var(--google-blue)
        statistics:
          type: mean
          period: 5minute
      - entity: sensor.wp_altbau_soll_temp_warmwasser
        show:
          in_header: true
        type: area
        opacity: 0.2
        stroke_width: 2
        name: Soll
        color: var(--google-grey)
        statistics:
          type: mean
          period: 5minute
  - type: custom:apexcharts-card
    card_mod:
      style: |
        ha-card {
          padding: 0px 0px 0px 0px;
        }
        #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: 125px
      legend:
        show: false
      dataLabels:
        style:
          fontSize: 9px
    span:
      end: day
    graph_span: 30d
    header:
      show: true
      title: Stromverbrauch Warmwasser
      show_states: true
      colorize_states: true
      floating: false
    yaxis:
      - id: first
        decimals: 0
        apex_config:
          tickAmount: 4
          forceNiceScale: true
    all_series_config:
      show:
        in_header: true
        datalabels: false
        legend_value: false
      type: column
      stroke_width: 2
      statistics:
        type: sum
      group_by:
        func: diff
        start_with_last: true
        duration: 1d
    series:
      - entity: sensor.wp_altbau_stromverbrauch_warmwasser_tag
        yaxis_id: first
        name: Warmwasser
        color: var(--google-blue)
  - type: custom:apexcharts-card
    card_mod:
      style: |
        ha-card {
          padding: 0px 0px 0px 0px;
        }
        #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: 125px
      legend:
        show: false
      dataLabels:
        style:
          fontSize: 9px
    span:
      end: day
    graph_span: 30d
    header:
      show: true
      title: Wärmemenge je kWh Strom
      show_states: true
      colorize_states: true
      floating: false
    yaxis:
      - id: first
        decimals: 0
        min: 0
        max: ~3
        apex_config:
          tickAmount: 4
          forceNiceScale: true
    all_series_config:
      show:
        in_header: false
        datalabels: false
        legend_value: false
      type: column
      stroke_width: 2
      group_by:
        func: avg
        start_with_last: true
        duration: 1d
    series:
      - entity: sensor.wp_altbau_scop_warmwasser_tag
        yaxis_id: first
        name: Heizung
        color: var(--google-blue)
  - square: false
    columns: 3
    type: grid
    cards:
      - type: custom:button-card
        template: ueberschrift
        name: Stromverbrauch
      - type: custom:button-card
        template: ueberschrift
        name: Wärmemenge
      - type: custom:button-card
        template: ueberschrift
        name: Verhältnis
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_stromverbrauch_warmwasser_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:lightning-bolt
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_waermemenge_warmwasser_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:fire
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_scop_warmwasser_tag
        primary: 1 / {{states(config.entity) | round(2) }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:ab-testing
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_stromverbrauch_warmwasser_gesamt
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:lightning-bolt
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_waermemenge_warmwasser_gesamt
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:fire
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_scop_warmwasser_gesamt
        primary: 1 / {{states(config.entity) | round(2) }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:ab-testing
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_stromverbrauch_warmwasser_je_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:lightning-bolt
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_waermemenge_warmwasser_je_tag
        primary: >-
          {{states(config.entity) | round(0) }}
          {{state_attr(config.entity,"unit_of_measurement") }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:fire
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        entity: sensor.wp_altbau_scop_warmwasser_je_tag
        primary: 1 / {{states(config.entity) | round(2) }}
        secondary: '{{ state_attr(config.entity,"friendly_name") }}'
        icon: mdi:ab-testing
        icon_color: blue
        style: |
          ha-card {
            
            padding: 3px !important;
          }
        tap_action:
          action: more-info
1 Like

Thank you very much, that´s a great help. I have learned again.
One thing though:
You have created a template probably for button-card. I can´t get over it, no success:
image

Another one is auto-entities.
image

Could you please help me with that? You are really helpful and I appreciate it.

You´re right. Sorry.

You can install “Auto Entities Card” via HACS.

The Button-Card-Template for “ueberschrift” is here:
(how to use “templates” for button cards? → GitHub - custom-cards/button-card: ❇️ Lovelace button-card for home assistant)

button_card_templates:
  ueberschrift:
    type: custom:button-card
    variables:
      - text: Überschrift
      - symbol: mdi-star
      - farbe: none
    styles:
      card:
        - padding: 0px
        - background: none
        - border: none
        - box-shadow: none
        - width: auto
        - padding-right: 3px
        - margin-top: 12px
      name:
        - font-size: 1.5rem
        - color: rgb(75,75,75)
        - align-self: start
        - justify-self: start
    name: '[[[ return variables.text ]]]'

Not a problem, I appreciate your time and help. But after all, I still have some problems with the frontend. Would it be maybe possible that you look on my configuration to enhance my bad config? I do see only that:

1.) to get color for the bars in the apex-charts you will have to change the color-names (e.g. “red”, “blue”…). I´ve used “var(–google-red” which is part of my theme.

2.) The set-temperature for “eco” and “comfort” is missing cause you have to set your “input_numbers” (see “helpers”) there

Thank you very much. What I do not understand are 2 points, which I hope you can explain to me.
Sorry this one will be a little longer…

First:
I have copied your helpers in automations.yaml - is that correct? I´ts almost the same as you have:

  • id: ‘Modbus’
    alias: ISG - Inputs aktualisieren
    description: “”
    trigger:
    • platform: state
      entity_id: sensor.wp_heizkreis1_temp_eco
      id: eco
      alias: Eco-Temperatur aktualisiert
    • platform: state
      entity_id: sensor.wp_heizkreis1_temp_komfort
      id: komfort
      alias: Komfort-Temperatur aktualisiert
    • platform: state
      entity_id: sensor.wp_warmwasser_temp_eco
      id: ww_eco
      alias: Eco-Temperatur aktualisiert
    • platform: state
      entity_id: sensor.wp_warmwasser_temp_komfort
      id: ww_komfort
      alias: Komfort-Temperatur aktualisiert
    • platform: state
      entity_id:
      • sensor.wp_betriebsart
        id: betriebsart
        alias: Betriebsart aktualisiert
    • platform: state
      entity_id: sensor.wp_heizkreis1_heizkurve
      id: heizkurve
      alias: Heizkurve aktualisiert
      condition: []
      action:
    • 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_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_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_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_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_betriebsart
            state: “0”
            then:
          • service: input_select.select_option
            data:
            option: Notbetrieb
            target:
            entity_id: input_select.wp_betriebsart
            else:
          • if:
            • condition: state
              entity_id: sensor.wp_betriebsart
              state: “1”
              then:
            • service: input_select.select_option
              data:
              option: Bereitschaftsbetrieb
              target:
              entity_id: input_select.wp_betriebsart
              else:
            • if:
              • condition: state
                entity_id: sensor.wp_betriebsart
                state: “2”
                then:
              • service: input_select.select_option
                data:
                option: Programmbetrieb
                target:
                entity_id: input_select.wp_betriebsart
                else:
              • if:
                • condition: state
                  entity_id: sensor.wp_betriebsart
                  state: “3”
                  then:
                • service: input_select.select_option
                  data:
                  option: Komfortbetrieb
                  target:
                  entity_id: input_select.wp_betriebsart
                  else:
                • if:
                  • condition: state
                    entity_id: sensor.wp_betriebsart
                    state: “4”
                    then:
                  • service: input_select.select_option
                    data:
                    option: Eco-Betrieb
                    target:
                    entity_id: input_select.wp_betriebsart
                    else:
                  • if:
                    • condition: state
                      entity_id: sensor.wp_betriebsart
                      state: “5”
                      then:
                    • service: input_select.select_option
                      data:
                      option: Warmwasserbetrieb
                      target:
                      entity_id: input_select.wp_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_heizkurve
          alias: Input-Number für Heizkurve anpassen
          mode: single
          alias: ISG - Anlage durch Inputs steuern
          description: “”
          trigger:
    • platform: state
      entity_id:
      • input_number.wp_temp_eco
        id: eco
        alias: Eco-Temperatur aktualisiert
    • platform: state
      entity_id:
      • input_number.wp_ww_temp_eco
        id: ww_eco
        alias: Eco-Temperatur Warmwasser aktualisiert
    • platform: state
      entity_id:
      • input_number.wp_temp_komfort
        id: komfort
        alias: Komfort-Temperatur aktualisiert
    • platform: state
      entity_id:
      • input_number.wp_ww_temp_komfort
        id: ww_komfort
        alias: Komfort-Temperatur Warmwasser aktualisiert
    • platform: state
      entity_id:
      • input_select.wp_betriebsart
        id: betriebsart
        alias: Betriebsart aktualisiert
    • platform: state
      entity_id:
      • input_number.wp_heizkurve
        id: heizkurve
        alias: Heizkurve aktualisiert
        condition: []
        action:
    • 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
      • 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
      • 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
      • 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
      • conditions:
        • condition: trigger
          id: betriebsart
          alias: Auslöser Betriebsart
          sequence:
        • if:
          • condition: state
            entity_id: input_select.wp_betriebsart
            state: Notbetrieb
            then:
          • service: modbus.write_register
            data:
            address: 1500
            slave: 1
            value: 0
            hub: ISG
            else:
          • if:
            • condition: state
              entity_id: input_select.wp_betriebsart
              state: Bereitschaftsbetrieb
              then:
            • service: modbus.write_register
              data:
              address: 1502
              slave: 1
              value: 1
              hub: ISG
              else:
            • if:
              • condition: state
                entity_id: input_select.wp_betriebsart
                state: Programmbetrieb
                then:
              • service: modbus.write_register
                data:
                address: 1502
                slave: 1
                value: 2
                hub: ISG
                else:
              • if:
                • condition: state
                  entity_id: input_select.wp_betriebsart
                  state: Komfortbetrieb
                  then:
                • service: modbus.write_register
                  data:
                  address: 1502
                  slave: 1
                  value: 3
                  hub: ISG
                  else:
                • if:
                  • condition: state
                    entity_id: input_select.wp_betriebsart
                    state: Eco-Betrieb
                    then:
                  • service: modbus.write_register
                    data:
                    address: 1502
                    slave: 1
                    value: 4
                    hub: ISG
                    else:
                  • if:
                    • condition: state
                      entity_id: input_select.wp_betriebsart
                      state: Warmwasserbetrieb
                      then:
                    • service: modbus.write_register
                      data:
                      address: 1502
                      slave: 1
                      value: 5
                      hub: ISG
      • 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 | int }}”
          hub: ISG
          mode: single

Point numer 2: I do really not understand where to put the button card template, this one:
button_card_templates:
ueberschrift:
type: custom:button-card
variables:
- text: Überschrift
- symbol: mdi-star
- farbe: none
styles:
card:
- padding: 0px
- background: none
- border: none
- box-shadow: none
- width: auto
- padding-right: 3px
- margin-top: 12px
name:
- font-size: 1.5rem
- color: rgb(75,75,75)
- align-self: start
- justify-self: start
name: ‘[[[ return variables.text ]]]’

Because when I put this one directly to the frontend like this:
square: false
columns: 1
type: grid
cards:

  • type: grid
    columns: 1
    square: false
    cards:
    • type: grid
      columns: 3
      square: false
      cards:
      • type: custom:mushroom-template-card
        icon: mdi:home-automation
        entity: input_select.wp_betriebsart
        primary: Programm
        secondary: Betrieb
        icon_color: |
        {% if is_state(config.entity, ‘Programmbetrieb’) %}
        white
        {% else %}
        grey
        {% endif %}
        tap_action:
        service: modbus.write_register
        service_data:
        address: 1500
        slave: 1
        hub: ISG
        value: 2
        action: call-service
        card_mod:
        style: |
        ha-card {
        padding: 3px !important;
        background-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Programmbetrieb’ %}blue !important;
        {%- endif %}
        –icon-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Programmbetrieb’ %}white !important;
        {%- endif %}
        –primary-text-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Programmbetrieb’ %}white !important;
        {%- endif %}
        –secondary-text-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Programmbetrieb’ %}lightgrey !important;
        {%- endif %}
        }
      • type: custom:mushroom-template-card
        icon: mdi:tree
        entity: input_select.wp_betriebsart
        primary: Eco
        secondary: Modus
        icon_color: |
        {% if is_state(config.entity, ‘Eco-Betrieb’) %}
        white
        {% else %}
        grey
        {% endif %}
        tap_action:
        service: modbus.write_register
        service_data:
        address: 1500
        slave: 1
        hub: ISG
        value: 4
        action: call-service
        card_mod:
        style: |
        ha-card {
        padding: 3px !important;
        background-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Eco-Betrieb’ %}green !important;
        {%- endif %}
        –icon-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Eco-Betrieb’ %}white !important;
        {%- endif %}
        –primary-text-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Eco-Betrieb’ %}white !important;
        {%- endif %}
        –secondary-text-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Eco-Betrieb’ %}lightgrey !important;
        {%- endif %}
        }
      • type: custom:mushroom-template-card
        icon: mdi:fire
        entity: input_select.wp_betriebsart
        primary: Komfort
        secondary: Modus
        icon_color: |
        {% if is_state(config.entity, ‘Komfortbetrieb’) %}
        white
        {% else %}
        grey
        {% endif %}
        tap_action:
        service: modbus.write_register
        service_data:
        address: 1500
        slave: 1
        hub: ISG
        value: 3
        action: call-service
        card_mod:
        style: |
        ha-card {
        padding: 3px !important;
        background-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Komfortbetrieb’ %}red !important;
        {%- endif %}
        –icon-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Komfortbetrieb’ %}white !important;
        {%- endif %}
        –primary-text-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Komfortbetrieb’ %}white !important;
        {%- endif %}
        –secondary-text-color:
        {%- set sensor = states(config.entity) %}
        {%- if sensor == ‘Komfortbetrieb’ %}lightgrey !important;
        {%- endif %}
        }
    • type: custom:mushroom-number-card
      layout: horizontal
      display_mode: buttons
      card_mod:
      style: |
      ha-card {
      padding: 3px !important;
      {
      entity: input_number.wp_temp_eco
    • type: custom:mushroom-number-card
      layout: horizontal
      display_mode: buttons
      card_mod:
      style: |
      ha-card {
      padding: 3px !important;
      {
      entity: input_number.wp_temp_komfort
    • type: custom:mushroom-number-card
      layout: horizontal
      display_mode: buttons
      card_mod:
      style: |
      ha-card {
      padding: 3px !important;
      {
      entity: input_number.wp_ww_temp_eco
    • type: custom:mushroom-number-card
      layout: horizontal
      display_mode: buttons
      card_mod:
      style: |
      ha-card {
      padding: 3px !important;
      {
      entity: input_number.wp_ww_temp_komfort
    • type: custom:mushroom-number-card
      layout: horizontal
      display_mode: buttons
      card_mod:
      style: |
      ha-card {
      padding: 3px !important;
      {
      entity: input_number.wp_heizkurve
    • type: custom:button-card
      template: ueberschrift
      name: Aktuell laufende Funktionen der Wärmepumpe
    • type: custom:auto-entities
      show_empty: false
      card:
      type: custom:mushroom-chips-card
      card_param: chips
      filter:
      exclude:
      - entity_id: binary_sensor.wp_2
      include:
      - entity_id: binary_sensor.wp_betriebsstatus_*
      state: ‘on’
      options:
      type: entity
      alignment: justify
      tap_action:
      action: more-info
      content_info: name
      icon_color: blue
      - entity_id: binary_sensor.wp_fehler*binary
      state: ‘on’
      options:
      type: entity
      alignment: justify
      tap_action:
      action: more-info
      content_info: name
      card_mod:
      style: |
      ha-card {
      background-color: red !important;
      –icon-color: white !important;
      –text-color: white !important;
      }
      sort:
      method: name
    • type: custom:apexcharts-card
      stacked: true
      card_mod:
      style: |
      ha-card {
      padding: 0px 0px 0px 0px;
      }
      #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: 125px
      legend:
      show: false
      dataLabels:
      style:
      fontSize: 9px
      span:
      end: day
      graph_span: 30d
      header:
      show: true
      title: Stromverbrauch Wärmepumpe
      show_states: true
      colorize_states: true
      floating: false
      yaxis:
      • id: first
        decimals: 0
        apex_config:
        tickAmount: 4
        forceNiceScale: true
        all_series_config:
        show:
        in_header: true
        datalabels: false
        legend_value: false
        type: column
        stroke_width: 2
        statistics:
        type: sum
        group_by:
        func: diff
        start_with_last: true
        duration: 1d
        series:
      • entity: sensor.wp_stromverbrauch_heizen_tag
        yaxis_id: first
        name: Heizung
        color: lightred
      • entity: sensor.wp_stromverbrauch_warmwasser_tag
        yaxis_id: first
        name: Warmwasser
        color: lightblue
    • type: custom:apexcharts-card
      card_mod:
      style: |
      ha-card {
      padding: 0px 0px 0px 0px;
      }
      #state__value > #state {
      font-size: 1.2em !important;
      }
      yaxis:
      • id: first
        min: 0
        max: 40
        decimals: 0
        apex_config:
        tickAmount: 4
        forceNiceScale: true
      • id: second
        opposite: true
        decimals: 0
        min: ~0
        max: ~25
        apex_config:
        tickAmount: 4
        forceNiceScale: true
        apex_config:
        chart:
        height: 125px
        legend:
        show: false
        span:
        end: day
        graph_span: 30d
        header:
        show: true
        title: ’ ’
        show_states: true
        colorize_states: true
        series:
      • entity: sensor.wp_stromverbrauch_heizen_gesamt
        yaxis_id: first
        float_precision: 0
        show:
        in_header: true
        datalabels: false
        legend_value: false
        type: column
        name: Gesamt
        color: grey
        group_by:
        func: diff
        duration: 1d
        start_with_last: true
      • entity: sensor.wp_stromverbrauch_heizen_und_warmwasser_gesamt
        yaxis_id: first
        float_precision: 0
        show:
        in_header: true
        datalabels: false
        legend_value: false
        type: column
        name: davon Wärmepumpe
        color: red
        group_by:
        func: diff
        duration: 1d
        start_with_last: true
      • entity: sensor.aussentemperatur
        yaxis_id: second
        float_precision: 0
        show:
        in_header: true
        datalabels: false
        legend_value: false
        type: area
        name: min. Temp.
        color: blue
        opacity: 0.2
        stroke_width: 2
        group_by:
        func: min
        duration: 1d
      • entity: sensor.aussentemperatur
        yaxis_id: second
        float_precision: 0
        show:
        in_header: true
        datalabels: false
        legend_value: false
        type: area
        opacity: 0.2
        stroke_width: 2
        name: max. Temp.
        color: blue
        group_by:
        func: max
        duration: 1d

Then it looks by me like this:

I appreciate your patience and hope the other appreciate it too, because that´s a lot what you have shared with us.