Bosch/Buderus/Junkers... Heizungs-Integration in HA über KM200 oder EMS-EPS

Das Abtauen kann man bei mir gut in sensor.boiler_4_way_valve_vr4 sehen

PS : bei mir sehen die Abbauvorgänge so aus:

Die gelben Striche sind jeweils die Abbauvorgänge

Danke für den Hinweis! Das passt

Ich habe mir mit ki-Hilfe zu der Entität eine Art Kontrollleuchte für Dashboard gebaut:

type: custom:button-card
entity: sensor.boiler_4_way_valve_vr4
name: " "
show_state: false
show_label: true
state:
  - value: Kühlen & Abtauen
    color: red
    icon: mdi:snowflake
    lable: Abtauen
  - value: Heizen & Warmwasser
    color: grey
    icon: mdi:heat-wave
    label: null
  - operator: default
    color: grey
    icon: mdi:swap-horizontal
grid_options:
  columns: 6
  rows: 2

Ja! Ist tatsächlich so!

sensor.boiler_compressor_activity Ist die Entität bei mir.

Die gelben Striche sind entsprechend abtauen.

Hier sind die verschiedenen Betriebsarten zu sehen. Der Piek vom Rücklauf (gelbe Lienie) hat also mit dem Warmwasser (orange Liene) zu tun. Die letzte Farbe im Lieniendiagramm ist die aktuelle WW Temperatur.Die dünnen Striche sind das Abtauen.

Schon relativ komplex und schwierig zu verstehen.

Etwas off-topic… Habt ihr schonmal davon gehört, dass der Einsatz der EMS Auslesung über BBQkees gegen die Garantiebedingungen von Bosch oder Buderus verstößt? In einem der Kommentare zu dem Artikel.

https://www.heise.de/ratgeber/Heizungen-von-Bosch-Buderus-und-Junkers-ohne-Cloud-auswerten-und-steuern-10972705.html

@klaus123 Wenn ich das richtig sehe, dann hast Du zu dem Artikel auch kommentiert. Was konntest Du über BBQkees denn konfigurieren bzw ändern, so dass die Anlage in der Übergangszeit nicht taktet?

Habe ich weiter oben (bzw in dem anderen Thread zum Thema) schon mal beschrieben: In der Übergangszeit schaltet die WP immer ab, wenn die Temperaturdifferenz zwischen Soll und Vorlauf 4° überschreitet. Beim erreichen von 3° hebe ich dann die Raumsolltemperatur immer um 1° an (die Soll-Vorlauftempertatur kann ich nicht drekt änderne, obwohl das eigentlch möglich sein sollte). In der Folge steigt dann mit einer kurzen Verzögerung die Vorgabe für die Soll-Vorlauftemperatur. Nach jedem Ausschalten gehtr es wieder mit den Originalvorgaben weiter.

Neueste Erkenntnis ist, dass es auch im Abtauprozess zu der Bedingung kommt und fälschlicherweise huchgeschaltet wird. Schließe jetzt aus, dass in den letzten 30 Minuten kein Abtauvorgang war.

Hier noch mal der aktuelle Stand meiner Automation:

alias: WP Dynamische Erhöhung der Raumtemperatur
description: >-
  Bei einer Differenz >3 (bei 4 schaltet die WP ab) wird die
  Wunsch-Raumtempeartur um 1 erhöht und in der Folge Steigt selected_flow_temp
  um den ABstand wieder zu verkleinern.
triggers:
  - trigger: time_pattern
    minutes: /3
conditions:
  - condition: numeric_state
    entity_id: sensor.waermepumpe_power_total_2
    above: 200
  - condition: template
    value_template: |
      {{
        (states('sensor.boiler_current_flow_temperature') | float(0)) -
        (states('number.boiler_selected_flow_temperature') | float(0))
        > 3
      }}
  - condition: state
    entity_id: input_boolean.addwp_auto_control
    state: "off"
  - condition: state
    entity_id: input_boolean.addwp_auto_passiv
    state: "off"
  - condition: numeric_state
    entity_id: sensor.boiler_compressor_speed
    below: 20
  - condition: template
    value_template: |
      {% set history = states.sensor.boiler_4_way_valve_vr4 %} {{ not (
        'Kühlen & Abtauen' in
        state_attr('sensor.boiler_4_way_valve_vr4', 'history_30m') | default('')
      ) }}
actions:
  - action: number.increment
    metadata: {}
    data:
      amount: 1
    target:
      entity_id: number.thermostat_hc1_selected_room_temperature
mode: single

1 „Gefällt mir“

Hallo zusammen,

ich möchte mit euch meine Automationen teilen, mit denen ich meine Luft/Wasser-Wärmepumpe und die Warmwasseraufbereitung steuere. Mein Ziel ist maximale Effizienz und eine möglichst hohe Nutzung des eigenen PV-Stroms, um den Netzbezug zu minimieren.

  • Haus 4 Jahre alt, gut gedämmt
  • Use Cases nach Familie ausgerichtet, z.B. Duschen am Abend

Vielleicht hilft das dem ein oder anderen, oder ihr habt noch Ideen zur Optimierung!

Hier ist mein Setup unterteilt in Warmwasser und Heizung.


Teil 1: Warmwasser-Steuerung

Meine Warmwasser-Logik besteht aus drei Automationen, die aufeinander aufbauen:

  1. Ein Master-Modus-Schalter (Erweiterter Energiesparmodus).

  2. Ein dynamischer Lade-Manager, der den Heizstab je nach PV-Überschuss steuert.

  3. Eine smarte Legionellenschaltung.

1.1 Master-Modus: Der erweiterte Energiesparmodus

Diese Automation ist der Kopf der ganzen Operation. Sie schaltet den grundsätzlichen Betriebsmodus der Warmwasserbereitung je nach Tageszeit, Sonnenstand und Temperatur um. Sie agiert als eine Art übergeordneter Schalter.

Die Logik dahinter:

  • An/Aus: Lässt sich über einen input_boolean manuell (de-)aktivieren. Ist der Modus aus, läuft die WP im normal Betrieb.

  • Komfort-Modus: Zum PV-Peak wird auf Komfort geschaltet, um die maximale Sonnenenergie für eine volle Ladung zu nutzen.

  • Eco-Modus: Abends (1h vor Sonnenuntergang) und morgens (1h nach Sonnenaufgang) wird auf normal geschaltet, um die Grundversorgung sicherzustellen.

  • Nacht-Abschaltung: Um 20:00 Uhr wird der WW-Betrieb komplett auf aus gestellt, um nächtliche Ladezyklen zu verhindern.

  • Sicherheitsnetz: Fällt die Temperatur unter 35°C, schaltet die Automation sofort zurück in den normal-Modus, um kaltes Wasser zu vermeiden.

alias: Erweiterter Energiesparmodus Warmwasser Steuerung
description: >-
  Steuert den WW-Modus basierend auf dem Energiesparmodus, Zeit, Sonne und
  Temperatur.
triggers:
  - entity_id: input_boolean.erweiterter_energiesparmodus_warmwasser
    to: "off"
    id: modus_ausgeschaltet
    trigger: state
  - entity_id: input_boolean.erweiterter_energiesparmodus_warmwasser
    to: "on"
    id: modus_eingeschaltet
    trigger: state
  - event: sunset
    offset: "-01:00:00"
    id: abend_eco
    trigger: sun
  - at: "20:00:00"
    id: abend_aus
    trigger: time
  - event: sunrise
    offset: "01:00:00"
    id: morgen_an
    trigger: sun
  - entity_id:
      - sensor.boiler_dhw_current_extern_temperature
    below: 35
    id: temp_sicherheit
    trigger: numeric_state
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - at: input_datetime.spitzen_temperaturzeit_heute
    id: peak_erreicht
    trigger: time
conditions:
  - condition: state
    entity_id: input_select.anwesenheit
    state: Anwesend
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: modus_ausgeschaltet
          - condition: template
            value_template: |
              {{ states('select.thermostat_dhw_operating_mode') != 'normal' }}
        sequence:
          - target:
              entity_id: select.thermostat_dhw_operating_mode
            data:
              option: normal
            action: select.select_option
      - conditions:
          - condition: state
            entity_id: input_boolean.erweiterter_energiesparmodus_warmwasser
            state: "on"
        sequence:
          - choose:
              - conditions:
                  - condition: trigger
                    id: abend_eco
                  - condition: template
                    value_template: >
                      {{ states('select.thermostat_dhw_operating_mode') !=
                      'normal' }}
                sequence:
                  - target:
                      entity_id: select.thermostat_dhw_operating_mode
                    data:
                      option: normal
                    action: select.select_option
              - conditions:
                  - condition: trigger
                    id: abend_aus
                  - condition: template
                    value_template: >
                      {{ states('select.thermostat_dhw_operating_mode') != 'aus'
                      }}
                sequence:
                  - target:
                      entity_id: select.thermostat_dhw_operating_mode
                    data:
                      option: aus
                    action: select.select_option
              - conditions:
                  - condition: trigger
                    id: morgen_an
                  - condition: template
                    value_template: >
                      {{ states('select.thermostat_dhw_operating_mode') !=
                      'normal' }}
                sequence:
                  - target:
                      entity_id: select.thermostat_dhw_operating_mode
                    data:
                      option: normal
                    action: select.select_option
              - conditions:
                  - condition: trigger
                    id: temp_sicherheit
                  - condition: template
                    value_template: >
                      {{ states('select.thermostat_dhw_operating_mode') !=
                      'normal' }}
                sequence:
                  - target:
                      entity_id: select.thermostat_dhw_operating_mode
                    data:
                      option: normal
                    action: select.select_option
              - conditions:
                  - condition: trigger
                    id: peak_erreicht
                  - condition: template
                    value_template: >
                      {{ states('select.thermostat_dhw_operating_mode') !=
                      'Komfort' }}
                sequence:
                  - target:
                      entity_id: select.thermostat_dhw_operating_mode
                    data:
                      option: Komfort
                    action: select.select_option
              - conditions:
                  - condition: trigger
                    id: modus_eingeschaltet
                  - condition: numeric_state
                    entity_id: sensor.boiler_dhw_current_extern_temperature
                    below: 40
                  - condition: template
                    value_template: >
                      {{ states('select.thermostat_dhw_operating_mode') !=
                      'normal' }}
                sequence:
                  - target:
                      entity_id: select.thermostat_dhw_operating_mode
                    data:
                      option: normal
                    action: select.select_option
mode: single

1.2 Der Lade-Manager: Dynamische Heizstab-Leistung

Diese Automation ist der “Arbeiter”. Wenn die Wassertemperatur unter 55°C fällt (und der Master-Modus die Ladung erlaubt), prüft sie den PV-Überschuss und schaltet den Heizstab mit der passenden Leistung zu.

Die Logik:

  • Smarte Leistungsanpassung: Prüft kaskadierend, ob >9,3kW, >6,3kW oder >4,3kW Überschuss (Prognose + Echtzeit) da sind und wählt die höchste mögliche Stufe.

  • EVCC-Berücksichtigung: Meine netzbezug-Sensoren verrechnen, ob mein E-Auto gerade lädt, um den wahren Überschuss für den Heizstab zu ermitteln.

alias: Warmwasser Automation nach Temp & PV
description: ""
triggers:
  - entity_id: sensor.boiler_dhw_current_extern_temperature
    trigger: state
conditions:
  - condition: numeric_state
    entity_id: sensor.boiler_dhw_current_extern_temperature
    below: 55
  - condition: or
    conditions:
      - condition: time
        after: "09:00:00"
        before: "10:00:00"
      - condition: time
        after: "12:30:00"
        before: "20:00:00"
  - condition: state
    entity_id: switch.thermostat_dhw_charge
    state: "off"
  - condition: state
    entity_id: input_select.anwesenheit
    state: Anwesend
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.solcast_pv_forecast_forecast_next_hour
            above: 9300
          - condition: template
            value_template: >-
              {% set netzbezug = states('sensor.netzbezug_durchschnitt_2') |
              float(0) if is_state('input_boolean.evcc_priorisierung', 'on')
              else states('sensor.netzbezug_ohne_evcc_durchschnitt') | float(0)
              %} {{ netzbezug < -9300 }}
          - condition: template
            value_template: |
              {{ states('select.boiler_dhw_heat_limit') != '9 kW' }}
        sequence:
          - target:
              entity_id: select.boiler_dhw_heat_limit
            data:
              option: 9 kW
            action: select.select_option
          - target:
              entity_id: switch.thermostat_dhw_charge
            action: switch.turn_on
          - target:
              entity_id: input_datetime.warmwasser_letzter_durchlauf
            data:
              datetime: "{{ now().isoformat() }}"
            action: input_datetime.set_datetime
      - conditions:
          - condition: numeric_state
            entity_id: sensor.solcast_pv_forecast_forecast_next_hour
            above: 6300
          - condition: template
            value_template: >-
              {% set netzbezug = states('sensor.netzbezug_durchschnitt_2') |
              float(0) if is_state('input_boolean.evcc_priorisierung', 'on')
              else states('sensor.netzbezug_ohne_evcc_durchschnitt') | float(0)
              %} {{ netzbezug < -6300 }}
          - condition: template
            value_template: |
              {{ states('select.boiler_dhw_heat_limit') != '6 kW' }}
        sequence:
          - target:
              entity_id: select.boiler_dhw_heat_limit
            data:
              option: 6 kW
            action: select.select_option
          - target:
              entity_id: switch.thermostat_dhw_charge
            action: switch.turn_on
          - target:
              entity_id: input_datetime.warmwasser_letzter_durchlauf
            data:
              datetime: "{{ now().isoformat() }}"
            action: input_datetime.set_datetime
      - conditions:
          - condition: numeric_state
            entity_id: sensor.solcast_pv_forecast_forecast_next_hour
            above: 4300
          - condition: template
            value_template: >-
              {% set netzbezug = states('sensor.netzbezug_durchschnitt_2') |
              float(0) if is_state('input_boolean.evcc_priorisierung', 'on')
              else states('sensor.netzbezug_ohne_evcc_durchschnitt') | float(0)
              %} {{ netzbezug < -4300 }}
          - condition: template
            value_template: |
              {{ states('select.boiler_dhw_heat_limit') != '4 kW' }}
        sequence:
          - target:
              entity_id: select.boiler_dhw_heat_limit
            data:
              option: 4 kW
            action: select.select_option
          - target:
              entity_id: switch.thermostat_dhw_charge
            action: switch.turn_on
          - target:
              entity_id: input_datetime.warmwasser_letzter_durchlauf
            data:
              datetime: "{{ now().isoformat() }}"
            action: input_datetime.set_datetime
mode: single

1.3 PV-optimierte wöchentliche Desinfektion (Legionellen)

Statt eines starren Zeitplans passiert das bei mir dynamisch: Nur wenn die letzte Desinfektion > 7 Tage her ist UND gerade PV-Peak ist (>4kW Überschuss), wird hochgeheizt.

alias: Warmwasser Wöchentliche Desinfektion (PV-optimiert, >=7 Tage)
description: >
  Prüft täglich zur PV-Peakzeit, ob die letzte WW-Hochladung mindestens 7 Tage
  her ist. Wenn ja und der PV-Überschuss > 4 kW ist, wird eine Einmalladung
  gestartet.
triggers:
  - trigger: time
    at: input_datetime.heutiger_pv_peak
conditions:
  - condition: template
    value_template: >
      {% set last_run = states('input_datetime.warmwasser_letzter_durchlauf') %}
      {% if last_run != 'unknown' %}
        {% set last_run_time = as_datetime(last_run).replace(tzinfo=None) %}
        {% set now_time = now().replace(tzinfo=None) %}
        {{ (now_time - last_run_time).days >= 7 }}
      {% else %}
        false
      {% endif %}
  - condition: numeric_state
    entity_id: sensor.solarnet_verbrauchsleistung
    above: 4000
  - condition: state
    entity_id: switch.thermostat_dhw_charge
    state: "off"
  - condition: state
    entity_id: input_select.anwesenheit
    state: Anwesend
actions:
  - if:
      - condition: template
        value_template: |
          {{ states('select.boiler_dhw_heat_limit') != '4 kW' }}
    then:
      - action: select.select_option
        target:
          entity_id: select.boiler_dhw_heat_limit
        data:
          option: 4 kW
  - delay:
      seconds: 5
  - action: switch.turn_on
    target:
      entity_id: switch.thermostat_dhw_charge
  - delay:
      seconds: 5
  - action: input_datetime.set_datetime
    target:
      entity_id: input_datetime.warmwasser_letzter_durchlauf
    data:
      datetime: "{{ now().isoformat() }}"
mode: single


Teil 2: Effizienz-optimiertes Heizen

Hier nutze ich die thermische Masse des Hauses als Speicher.

2.1 PV-Überhöhung und Nachtabsenkung

  • Tagsüber (PV-Überschuss >3kW oder Sonnen-Peak): Die Soll-Temperatur wird auf 23°Cangehoben (“Überladen”).

  • Abends (ab 21:00 Uhr): Nachtabsenkung auf 20°C.

  • Morgens (ab 06:00 Uhr): Normalbetrieb auf 21.5°C.

alias: Heizung Effizienz-optimiert mit PV und Lastmanagement
description: >
  Erhöht die Raumtemperatur bei PV-Überschuss, Sonnenpeak und setzt sie zurück.
  Inklusive Nachtabsenkung: 21 Uhr auf 20°C, 6 Uhr auf 21,5°C.
triggers:
  - value_template: >
      {{ now().strftime('%H:%M') ==
      (states('input_datetime.spitzen_temperaturzeit_heute') | as_datetime |
      as_local - timedelta(hours=1)).strftime('%H:%M') }}
    id: start_peak_time
    trigger: template
  - value_template: |
      {% if is_state('input_boolean.evcc_priorisierung', 'off') %}
        {{ states('sensor.netzbezug_ohne_evcc_durchschnitt') | float(0) < -3000 }}
      {% else %}
        {{ states('sensor.netzbezug_durchschnitt_2') | float(0) < -3000 }}
      {% endif %}
    id: start_surplus
    trigger: template
  - event: sunset
    offset: "-01:00:00"
    id: stop_speichern
    trigger: sun
  - at: "21:00:00"
    id: nachtabsenkung_start
    trigger: time
  - at: "06:00:00"
    id: nachtabsenkung_ende
    trigger: time
conditions:
  - condition: not
    conditions:
      - condition: state
        entity_id: select.thermostat_hc1_operating_mode
        state: Aus
  - condition: state
    entity_id: input_select.anwesenheit
    state: Anwesend
actions:
  - choose:
      - conditions:
          - condition: or
            conditions:
              - condition: trigger
                id: start_peak_time
              - condition: and
                conditions:
                  - condition: trigger
                    id: start_surplus
                  - condition: or
                    conditions:
                      - condition: time
                        after: "09:00:00"
                        before: "10:00:00"
                      - condition: time
                        after: "12:30:00"
                        before: "20:00:00"
          - condition: template
            value_template: >-
              {{ states('number.thermostat_hc1_manual_temperature') | float(0)
              != 23 }}
        sequence:
          - target:
              entity_id: number.thermostat_hc1_manual_temperature
            data:
              value: 23
            action: number.set_value
      - conditions:
          - condition: trigger
            id: nachtabsenkung_start
          - condition: template
            value_template: >-
              {{ states('number.thermostat_hc1_manual_temperature') | float(0)
              != 20 }}
        sequence:
          - target:
              entity_id: number.thermostat_hc1_manual_temperature
            data:
              value: 20
            action: number.set_value
      - conditions:
          - condition: or
            conditions:
              - condition: trigger
                id: stop_speichern
              - condition: trigger
                id: nachtabsenkung_ende
          - condition: template
            value_template: >-
              {{ states('number.thermostat_hc1_manual_temperature') | float(0)
              != 21.5 }}
        sequence:
          - target:
              entity_id: number.thermostat_hc1_manual_temperature
            data:
              value: 21.5
            action: number.set_value
mode: single

2.2 Automatische Sommer-/Winter-Umschaltung

Damit die Heizung in der Übergangszeit nicht unnötig anspringt, schaltet sie sich basierend auf der 24h-Durchschnittstemperatur aus (>17°C) oder wieder an (<16°C).

alias: Heizung Sommer-Winter-Umschaltung
description: Schaltet die Heizung in den Sommermodus, wenn es warm genug ist.
triggers:
  - at: "04:00:00"
    trigger: time
conditions: []
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.durchschnittstemperatur
            above: 17
          - condition: template
            value_template: |
              {{ states('select.thermostat_hc1_operating_mode') != 'Aus' }}
        sequence:
          - target:
              entity_id: select.thermostat_hc1_operating_mode
            data:
              option: Aus
            action: select.select_option
      - conditions:
          - condition: numeric_state
            entity_id: sensor.durchschnittstemperatur
            below: 16
          - condition: template
            value_template: |
              {{ states('select.thermostat_hc1_operating_mode') != 'Manuell' }}
        sequence:
          - target:
              entity_id: select.thermostat_hc1_operating_mode
            data:
              option: Manuell
            action: select.select_option
mode: single

Hallo Ich habe mal eine Frage in die Runde! Nachdem ich am Anfang der Heizperiode mit dem “häufigen Ein-Ausschalten” beschäftgt habe sieht das mitlerweile, meiner Meinung nach, besser aus.

Jetzt ist mir noch etwas anderes aufgefallen: Meine WP schaltet die Heizung (Heizung aktiv / boiler_heating_active) schon gegen etwa 17Uhr40 aus (Einschaltung danach erst wieder am nächsten morgen). Das Heizprogramm Ende in der Bosch App ist jedoch auf 22Uhr eingestellt. Auch bei manuellem Heizbetrieb (in der Bosch App) schaltet die Heizung schon früh ab.

Hat jemand eine Idee woran das liegen könnte oder ob das normal ist?

Schaltet Dein System immer zu den exakt gleichen Zeitpunkten morgens ein und abends aus?

Falls ja, kann es an der Einstellung des Zeitprogramms der WP liegen. Bei meiner WP (WPLS.2) kann das nur direkt am Gerät eingestellt werden - nicht über EMS-ESP. Ich habe zu meiner WP auch keine App, daher weiß ich nicht, ob das damit einzustellen ist.

Hallo! Nein die Schaltzeiten sind unterschiedlich! Die eingestellten Zeiten der App finde ich auch am Display der WP-Inneneinheit wieder. Am EMS-ESP kann man das glaube ich auch nicht einstellen, habe ich jedenfalls nicht probiert. Besonders Abends ist das für mich nicht nachzuvollziehen das der Heizungvorgang schon so früh stoppt.

PS: Habe jetzt auch gesehen das es in der Nacht manchmal Schaltvorgänge gibt (hier Kompressor und Heizmodus dargestellt). Alles etwas ungewöhnlich finde ich

ok - wie sieht es mit der Temperatur des Puffers/des Vorlaufs aus → überschreiten die die berechnete Vorlauftemperatur am Abend vor der Abschaltung?
Wie hast Du die Sommer-/Winterwechseltemperatur gewählt? Wenn die gedämpfte Außentemperatur diese unter- oder überschreitet wird die WP mit einem zeitlichen Abstand gestartet oder gestoppt. Dieser zeitliche Abstand lässt sich über die Schaltverzögerungen (z.B. number.thermostat_hc1_heatoffdelay einstellen. Dadurch kann es vorkommen, dass um z.B. 2 Uhr nachts die Wechseltemperatur unterschritten wird → durch Dämpfung reagiert die WP aber ggf erst 1h später darauf. Wenn nun eine Verzögerung von 4h eingestellt ist, startet die WP um 7 Uhr mit dem Heizvorgang.

Hier ein Bild der Temperaturverläufe bei mir als Beispiel:

Um 12 Uhr startete die WW-Zubereitung.

gegen 12:45 Uhr wurde die “Berechnete Vorlauftemperatur” durch die Anpassung des “Sollwertes Raumtemperatur” erhöht. Die Temperatur des Puffers liegen dadurch unterhalb und die WP startet ~ 30 Min später mit dem Heizvorhang. Sobald die die Vorlauftemperatur die “Berechnete Vorlauftemperatur” erreicht hat, reduziert die WP ihre Leistung. Falls sie die unterste Leistungsgrenze erreicht hat, schaltet sie ab (nicht dargestellt). gegen 16 Uhr habe ich zusätzliche Heizkreise geöffnet. um 18:15 Uhr wurden die Ventile der Heizkreise in Summe geschlossen. Die Vorlauftemperatur steigt. Zusätzlich habe ich die “Berechnete Vorlauftemperatur” runtergestellt → die WP schaltet kurzzeitig später ab.
Zu jedem Zeitpunkt liegt die gedämpfte Außentemperatur unter der Wechseltemperatur.

Vielleicht können wir mal die Sensoren abgleichen? Welche Temperaturen sollte ich gegenüberstellen:

sensor.boiler_heat_carrier_return_tc0 Boiler Kältemittelrücklauf (TC0)
sensor.boiler_return_temperature Boiler Rücklauftemperatur
number.boiler_selected_flow_temperature Gewählte Vorlauftemperatur
number.thermostat_hc1_hp_min_flow_temp Thermostat HK1 Max. Vorlauftemperatur
number.thermostat_hc1_min_flow_temperature Thermostat HK1 Min. Vorlauftemperatur
sensor.boiler_current_flow_temperature Boiler Aktuelle Vorlauftemperatur
sensor.thermostat_hc1_target_flow_temperature Thermostat HK1 Berechnete Vorlauftemperatur

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Bei mir sind es:

Vorlauftemperatur: sensor.boiler_curflowtemp (zusätzlich habe ich am Puffer und an der Vorlaufleitung noch einen Sensor übers ESP32 Installiert um Ausreißer festzustellen)

Rücklauftemperatur: sensor.boiler_rettemp oder sensor.boiler_hptc0 - beide recht identisch (rosa). Leider werden hier aber auch die Rückläufe der WW-Generierung angezeigt → auch hier habe ich meinen ESP32 Temperaturfühler am Rücklaufrohr befestigt = grün)

Berechnete Vorlauftemperatur: sensor.thermostat_hc1_targetflowtemp

Sollwert Raumtemperatur: number.thermostat_hc1_seltemp

gedämpfte Außentemperatur: sensor.thermostat_dampedoutdoortemp

Außentemperatur Wechsel Sommer/Winter: number.thermostat_hc1_summertemp

Einschaltverzögerung: number.thermostat_hc1_heatondelay

Ausschaltverzögerung: number.thermostat_hc1_heatoffdelay

Min. Vorlauftemperatur: number.thermostat_hc1_minflowtemp fix auf 25°C

Max. Vorlauftemperatur: number.thermostat_hc1_maxflowtemp fix auf 48°C

melde mich später nochmals

Guten Morgen zusammen,

ich beschäftige mich auch grade damit, die Wärmepumpe in Sachen Heizung etwas zu optimieren.
Wir sind zu viert, haben ein Einfamilienhaus, Baujahr 2014, Holzrahmenkonstruktion, KfW70, 3 Etagen (kein Keller), offene Bauweise, 230qm, Fußbodenheizung, Fliesen bzw. Linoleum als Bodenbelag, viele Fenster.

Neben der Bosch CS7001i habe ich einen Bosch Stora WH 370 Wasserspeicher und eine Vallox Lüftungsanlage.

Warmwasser lasse ich nur einmal am Tage aufbereiten. Dazu habe ich in der Bosch App (HomeCom) einen entsprechenden Zeitplan angelegt. Von 11:30 bis 17:00 Uhr darf Warmwasser aufbereitet werden im Komfortprogramm, ansonsten ist die Aufbereitung aus. Damit komme ich auch gut hin und wir haben immer ausreichend warmes Wasser.

Nachdem was ich so gelesen habe, finde ich das Bild, was der Kompressor abgibt nicht so gut. Die Wärmepumpe schaltet häufig ab. Meine bisherigen Versuche, über Fuß- und Endpunkt der Heizkurve Einfluss zu nehmen, waren nicht so erfolgreich. Mein Fußpunkt liegt bei 22°, der Endpunkt bei 33°. Max Vorlauf ist auf 32° gestellt. Der Raumeinfluss ist aus. Nachts senke ich nicht ab. Die Soll-Temperatur ist konstant bei 21,5°.

Mit meinem momentanem Verständnis ist mein Ziel, die Phasen in denen die Wärmepumpe heizt zu verlängern und möglichst zu verhindern, dass sie abschaltet.

Habt ihr Hinweise für mich, oder fällt euch was auf, was ich noch verändern oder ausprobieren könnte?

Hi,

bei mir habe ich die Randbedingungen wie folgt gewählt:

“number.thermostat_hc1_maxflowtemp” Maximale Vorlauftemperatur auf 48°C
“number.thermostat_hc1_minflowtemp” Minimale Vorlauftemperatur auf 25°C

Über die Einstellung zur “number.thermostat_hc1_seltemp” Sollwert Raumtemperatur triggere ich die WP. Setzte ich diese hoch (~24°C) geht die “berechnete Vorlauftemperatur” auf Werte ~33-36°C (abhängig von der Außentemperatur; wähle ich Werte um 22°C liegt die Berechnete Vorlauftemepratur entsprechned niedriger). Dann startet die WP kurze Zeit später und startet die Wärmeerzeugung. Falls die Vorlauftemperatur über die “Berechnete Vorlauftemperatur” nach der Einschwingzeit der WP steigen sollte, öffene ich weitere Kreisläufe um das abzufangen. Zum Beenden des Heizvorganges stelle ich die “Sollwert Raumtemperatur” auf 15°C.

Hier kann man schön sehen, wie die WP nach erreichen des Sollwertes (gegen 16 Uhr) runtermoduliert und deutlich weniger Energie benötigt als beim Anlaufen.

Meine Heizkreise sind eigentlich alle permanent geöffnet. Habe extra in den Räumen entsprechend höhere Soll-Temperaturen eingestellt.

Solange die berechnete Vorlauftemperatur unter der maximalen Vorlauftemperatur liegt, hat eine Anhebung vermutlich keinen Effekt, oder?

Ich habe das gestern Abend auch versucht. Sieht man auch oben in der Grafik. Um ca. 21:00 habe ich die Soll-Raumtemperatur um 1k auf 22,5° erhöht. Entsprechend ist die berechnete Vorlauftemperatur hoch gegangen. Ich hätte eigentlich erwartet, dass die Wärmepumpe weiter heizt, bis die Rücklauftemperatur die berechnete Vorlauftemperatur erreicht bzw. überschritten hat. Das ist aber nicht passiert. Ggf. habe ich die Anpassung zu spät vorgenommen.

Deine Grafik zeigt ja sehr schön, wie es aussehen könnte bzw. soll. Eine sehr lange Heizphase.

Mein Verständnis ist aber grundsätzlich richtig, das es “ein Takt” ist, wenn der Kompressor den Modus wechselt, oder?

Ist es bei dir auch so, dass die Änderung der Raumtemperatur über Home Assistant um 0 Uhr zurückgesetzt wird?

Wenn die aktuelle Vorlauftemperatur die berechnete Vorlauftemperatur erreicht regelt die Anlage runter → die Leistung wird reduziert. Wenn sie es dann nicht unter die berechnete Vorlauftemperatur schafft, wird die Wärmeerzeugung deaktiviert.
Teste mal was passiert, wenn Du die Sollwert Raumtemperatur generell etwas erhöhst - ggf. bleibt dann die Vorlauftemperatur unter der berechneten Vorlauftemperatur (ich stelle hier Werte zwischen 22 und 24 °C ein). Ich vermute auch, dass Deine Anpassung hier etwas zu spät war.
Die maximale Vormauftemperatur gibt den “Endschalter” an - der nicht überschritten werden soll.

Wenn Du als “ein Takt” einen zusammenhängenden Betrieb der WP in verscheidenen Stufen meinst - ja.

Welchen Sensor meinst Du, der um 0 Uhr zurückgestellt wird - dann schaue ich mal nach?

number.thermostat_hc1_seltemp
Habe ich um 21:00 Uhr auf 22,5° erhöht und um 0 Uhr wurde der Wert auf 21,5° zurückgesetzt.

Ich habe die Raumtemperatur bisher nicht hochgesetzt, weil ich davon ausgegangen bin, dass die Wärmepumpe dann eher zu viel heizt.

Edit:
Mir sind grade zwei Sensoren aufgefallen:


Berechnete Vorlauftemperatur habe ich die ganze Zeit schon auf dem Schirm.
Laut ChatGPT bestimmt number.boiler_selflowtemp die minimale Vorlauftemperatur. Das kann ich aber aus meinen Diagrammen nicht erkennen. Spielt der Sensor zur Heizungssteuerung eine Rolle?