Automation zur Steuerung Warmwasserheizung

Hallo,

ich bin dabei eine Automation zu erstellen welche die Elektro-Warmwasserheizung steuern soll und das zur Eigenverbrauchsoptimierung meiner PV-Anlage.

Da ich ungern viele Automationen anlege, versuche ich alle Möglichkeiten in eine Automation zu packen.

Hier der Anfang von meinem Code:

alias: Warmwasser-Elekroheizung
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.solarfaktor
    for:
      hours: 0
      minutes: 0
      seconds: 0
    above: 40000
    id: EIN Solarfaktor erreicht
    alias: EIN Solarfaktor erreicht
  - platform: numeric_state
    entity_id: sensor.solarfaktor
    for:
      hours: 0
      minutes: 0
      seconds: 0
    below: 36000
    id: AUS Solarfaktor unterschritten
    alias: AUS Solarfaktor unterschritten
  - platform: state
    entity_id:
      - sensor.solarfaktor
    to: unavailable
    for:
      hours: 0
      minutes: 0
      seconds: 0
    id: AUS Solarfaktor nicht verfügbar
    alias: AUS Solarfaktor nicht verfügbar
  - platform: state
    entity_id:
      - sensor.solarfaktor
    to: unknown
    for:
      hours: 0
      minutes: 0
      seconds: 0
    id: AUS Solarfaktor unbekannt
    alias: AUS Solarfaktor unbekannt
  - platform: numeric_state
    entity_id: sensor.envoy_122206102883_current_power_production
    for:
      hours: 0
      minutes: 0
      seconds: 0
    id: EIN Erzeugung hoch
    above: 3500
    alias: EIN Erzeugung hoch
  - platform: numeric_state
    entity_id: sensor.envoy_122206102883_current_power_production
    for:
      hours: 0
      minutes: 0
      seconds: 0
    below: 3000
    id: AUS Erzeugung niedrig
    alias: AUS Erzeugung niedrig
  - platform: numeric_state
    entity_id: sensor.envoy_122206102883_current_battery_capacity
    for:
      hours: 0
      minutes: 0
      seconds: 0
    alias: EIN Ladezustand erreicht
    id: EIN Ladezustand erreicht
    above: 8000
  - platform: numeric_state
    entity_id: sensor.envoy_122206102883_current_battery_capacity
    for:
      hours: 0
      minutes: 0
      seconds: 0
    alias: AUS Ladezustand unterschritten
    below: 7000
    id: AUS Ladezustand unterschritten
condition: []
action:
  - if:
      - condition: trigger
        id: EIN Solarfaktor erreicht
    then:
      - type: turn_on
        device_id: 990c1fa02f5750c74695320f637ed36c
        entity_id: switch.warmwasser_heizung_ss00_blau_tz3000_gjnozsaz_ts011f_switch_2
        domain: switch
      - wait_for_trigger: []
      - type: turn_off
        device_id: 990c1fa02f5750c74695320f637ed36c
        entity_id: switch.warmwasser_heizung_ss00_blau_tz3000_gjnozsaz_ts011f_switch_2
        domain: switch
mode: single

Wichtig sind im Moment nur die Trigger “EIN Solarfaktor erreicht” und “AUS Solarfaktor unterschritten”.
Wenn der Solarfaktor über einen Wert steigt, soll die Heizung angehen. Diese soll wieder ausgehen wenn “AUS Solarfaktor unterschritten” wird (aber eben nur, wenn Sie vorher auch auf Grund von “EIN Solarfaktor erreicht” eingeschalten wurde).

Ich wollte also diesen Teil der Automation so gestalten:

  • bei Trigger “EIN Solarfaktor erreicht” Heizung anschalten
  • dann warten auf Trigger “AUS Solarfaktor unterschritten” oder Timeout-Zeit - wenn erreicht die Heizung ausschalten.
    Leider kann ich bei “warten auf Auslöser” keine Trigger-ID wählen, würde dort ungern nochmals den Trigger-Wert eingeben, da man ihn dann bei Auslösern oben und eben hier ändern müsste.
    Habt Ihr eine Lösung?

Die anderen Trigger bitte erst einmal nicht beachten.

Gruß Werner

Du könntest den Triggerwert in einen Helper packen und diesen beliebig oft abfragen. Den Helper kannst du dann einfach immer wieder anpassen

Hallo Danke für die Antwort.
Da ich lieber alles in einer Automation hätte, ist das für mich nicht so geeignet.

Den Code kann man nicht in der Art irgendwie schreiben?:

      - wait_for_trigger: [AUS Solarfaktor unterschritten]

Gruß Werner

Bedenke bei deiner Automation, dass es an wolkigen Tagen zu vielen Schaltvorgängen kommen kann. Um das etwas abzufedern, würde ich die Elektroheizung wenn sie mal an ist, mindestens eine bestimmte Zeit laufen lassen.

Meine persönliche Meinung ist, lieber mehrere einfache leicht verständliche Automatisierungen als eine große wo alles drin ist. Macht debugging und späteres Fehlersuchen um einiges einfacher.

Ach und zu deiner Frage. Wenn du 2 Automatisierungen machst eine für ein und eine für aus, kannst du in der Condition den Status abfragen. Also nur ausschalten wenn sie “ein” ist.

Hallo und danke für die Hinweisse, evtl. werde ich es auch so machen. Habe schon nach Vorlagen zur Eigenverbrauchsoptimierung gesucht aber nichts gefunden.
Klar, ich werde noch Zeiten einfügen, ist nur für den Test alles auf Null.