Automationsschleifen - WW-Bereitung PV-Überschuss

Hallo zusammen,

ich bräuchte ein wenig Hilfe von Automations-Expert*innen. Ich bin gerade dabei eine Automation für die WW-Bereitung meiner Wärmepumpe zu programmieren. Hier ist der aktuelle Stand:

Es wird geschaut, ob die Einspeiseleistung für 5 Minuten > 3 kW ist. Wenn ja, wird die WW-Einmalladung aktiviert, wenn ein paar Bedingungen erfüllt sind.

alias: WW-Einmalladung bei PV-Überschuss
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.psupply_2
    for:
      hours: 0
      minutes: 5
      seconds: 0
    above: 3000
condition:
  - condition: and
    conditions:
      - condition: time
        before: "17:00:00"
      - condition: numeric_state
        entity_id: sensor.sn_3002897465_battery_soc_total
        above: 50
      - condition: numeric_state
        entity_id: sensor.wohnzimmer_temperature
        above: 20.8
      - condition: numeric_state
        entity_id: sensor.esstisch
        above: 20.8
      - condition: numeric_state
        entity_id: sensor.kuche_temperature
        above: 20.8
action:
  - device_id: 4b7bc7500605307cfab2b98929aeaaf4
    domain: number
    entity_id: b7fb5e40b08b4d0b9c8de0cda4e58c01
    type: set_value
    value: 60
  - device_id: 8880ad74e640ca7e3e857c5070793bfe
    domain: number
    entity_id: d8f5d2ecbd271c43be1be8c856d55305
    type: set_value
    value: 60
  - type: turn_on
    device_id: 4b7bc7500605307cfab2b98929aeaaf4
    entity_id: f8b98b0f797c0efb31c6d7b40ba418eb
    domain: switch
mode: single

Ich möchte sie nun so anpassen, dass folgendes umgesetzt wird:
1 Kelvin bevor die WW-Zieltemperatur erreicht wird soll geschaut werden, ob die PV-Erzeugungsleistung (nicht Einspeisung, weil die ja aufgrund der WW-Bereitung vermutlich nahe 0 ist) noch ausreichend hoch ist und es sollen weitere Bedingungen geprüft werden → Was muss ich hier für Bausteine verwenden?
Wenn alle Bedingungen erfüllt sind, soll die WW-Zieltemperatur neu gesetzt werden (10 Kelvin höher als zuvor) → Das soll als Schleife so lange ausgeführt werden, bis entweder die Bedingungen nicht mehr erfüllt sind, oder bis eine maximale Zieltemperatur erreicht wurde (90 Grad).
Außerdem benötige ich noch eine Abbruch-Bedingung: Wenn während der WW-Bereitung irgendwann die Raumtemperaturen unter einen bestimmten Schwellenwert fallen, soll abgebrochen werden.

Hat jemand eine Idee, wie ich das am besten umsetze?

Vielen Dank vorab.

Kann hier niemand helfen? Ich bin inzwischen bei diesem code, aber so werden die Bedingungen nur einmalig überprüft.

alias: WW-Einmalladung bei PV-Überschuss
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.psupply_2
    for:
      hours: 0
      minutes: 10
      seconds: 0
    above: 3000
condition:
  - condition: time
    before: "17:00:00"
  - condition: numeric_state
    entity_id: sensor.sn_3002897465_battery_soc_total
    above: 50
  - condition: numeric_state
    entity_id: sensor.wohnzimmer_temperature
    above: 20.8
  - condition: numeric_state
    entity_id: sensor.esstisch
    above: 20.8
  - condition: numeric_state
    entity_id: sensor.kuche_temperature
    above: 20.8
  - condition: template
    value_template: >-
      {{ as_timestamp(now()) -
      (as_timestamp(state_attr("automation.ww_einmalladung_bei_pv_uberschuss",
      "last_triggered")) or 0) > 43200 }}
action:
  - device_id: 4b7bc7500605307cfab2b98929aeaaf4
    domain: number
    entity_id: b7fb5e40b08b4d0b9c8de0cda4e58c01
    type: set_value
    value: 120
  - device_id: 8880ad74e640ca7e3e857c5070793bfe
    domain: number
    entity_id: d8f5d2ecbd271c43be1be8c856d55305
    type: set_value
    value: 70
  - type: turn_on
    device_id: 4b7bc7500605307cfab2b98929aeaaf4
    entity_id: f8b98b0f797c0efb31c6d7b40ba418eb
    domain: switch
  - if:
      - condition: or
        conditions:
          - condition: numeric_state
            entity_id: sensor.psupply
            below: 2500
          - condition: numeric_state
            entity_id: sensor.boiler_hptw1
            above: number.boiler_wwseltempsingle
          - condition: numeric_state
            entity_id: sensor.wohnzimmer_temperature
            below: 20.8
          - condition: numeric_state
            entity_id: sensor.bad_temperature
            below: 20.8
    then:
      - type: turn_off
        device_id: 4b7bc7500605307cfab2b98929aeaaf4
        entity_id: f8b98b0f797c0efb31c6d7b40ba418eb
        domain: switch
mode: single