Entität 15 mal prüfen. Erst dann die Aktion ausführen. (Schleife mit Zähler)

Hallo,
ich möchte mit meiner Fotovoltaikanlage ein Heizungsrelais schalten. Bedingung ist das

  1. Mindestlaufzeit der Heizung 15 min
  2. Wenn eine Wolke für 2 min vor der Sonne ist, nicht auslösen. Also die „entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur“ 15 x prüfen, ob er wahr und unter -1000 liegt.
  3. Das selbe soll natürlich auch beim Ausschalten wirken. (Das Relais darf nicht Prellen, nur im 15 min Interwall)
    Die Automation habe ich einfach so erstellt und sie läuft.
    Kann mir jemand helfen.
    Danke Klaus
alias: Heitzung Relais1 on off 1000W
description: 1000W
triggers:
  - trigger: time_pattern
    minutes: "15"
conditions: []
actions:
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: switch.tasmota_2xrelais_tasmota_relais2x
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur
            below: -1000
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.tasmota_2xrelais_tasmota_relais2x
      - conditions:
          - condition: numeric_state
            entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur
            above: -900
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.tasmota_2xrelais_tasmota_relais2x
mode: single

EDIT: Code bitte immer über die Codefunktion „</>“ im Editor einfügen.

Hi, wieso willst du das 15x prüfen? Ich würde eine Automatisierung erstellen, die alle 5min prüft und dann schaut ob für 15min unter 1000 Watt oder für 15min über 900 Watt anliegen. Das wäre eine einfache Methode für das 15min Intervall.

alias: Heizung Relais on off 1000W
description: >-
  Schaltet das Heizrelais mit 15 Minuten Mindestlaufzeit
mode: single
triggers:
  - minutes: /5
    trigger: time_pattern
conditions: []
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur
            below: -1000
            for:
              minutes: 15
          - condition: state
            entity_id: switch.tasmota_2xrelais_tasmota_relais2x
            state: "off"
        sequence:
          - target:
              entity_id: switch.tasmota_2xrelais_tasmota_relais2x
            action: switch.turn_on
            data: {}
      - conditions:
          - condition: numeric_state
            entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur
            above: -900
            for:
              minutes: 15
          - condition: state
            entity_id: switch.tasmota_2xrelais_tasmota_relais2x
            state: "on"
        sequence:
          - target:
              entity_id: switch.tasmota_2xrelais_tasmota_relais2x
            action: switch.turn_off
            data: {}

Hallo,
danke für die schnelle Antwort. Der Intervall muss nicht 1 min sein. Sollte aber bei der letzten Prüfung gerade eine Wolke vor der Sonne sein, würde die Fotovoltaikeinspeisung für 15 min abschalten. Ich denke es ist besser ein Integral zu bilden und einen eventuellen Ausreißer von 1 min Wolken zu fangen. Meine Vorstellungen wären es, erst bei stetigen Wolken das Signal abzuschalten oder im Gegenzug einzuschalten.
Danke Klaus

Hallo und noch mal Danke,
ich habe noch ein Syntax Problem:
for:
minutes: 15
bekomme ich nicht in den yaml code. Es ist mir auch nicht gelungen dieses zu fixen.
Siehst du den Fehler schneller als ich?

Danke Klaus

Ja

conditions:
  - condition: numeric_state
    entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur
    below: -1000
    for:
      minutes: 15

EDIT:
Bei mir funktioniert es aber auch nicht mit Bedingung 15 min :relieved:

das geht anscheinend nicht bei „condition: numeric_state“ bei „condition: state“ geht das

Hallo, ich würde da einen Template Helfer als Binärsensor erstellen der dann bei unter 1000 auf true geht und dessen State dann in der Automation mit dem ‚seit 15 Minuten‘ abfragen.

Hallo,
Danke für die Hilfe und Unterstützung.
Die Einspeisung der Fotovoltaikanlage soll über 1000W sein um meine Wärmepumpe einzuschalten. Es existieren 2 Bedingungen.

  • Wärmepumpe muss mindestens 15 min laufen.
  • ein kleine Wolke vor der Sonne zum Messzeitpunkt, sollte die Anlage nicht abschalten.

Ich habe jetzt folgende Automatisierung.


alias: on off 1.1
description: 1000W
triggers:

  • trigger: time_pattern
    minutes: /5
    conditions:
    actions:
  • choose:
    • conditions:
      • condition: numeric_state
        entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur
        below: -1000
      • condition: state
        entity_id: switch.tasmota_2xrelais_tasmota_relais2x
        state: „off“
        for:
        hours: 0
        minutes: 15
        seconds: 0
        sequence:
      • target:
        entity_id: switch.tasmota_2xrelais_tasmota_relais2x
        action: switch.turn_on
        metadata: {}
        data: {}
    • conditions:
      • condition: numeric_state
        entity_id: sensor.tasmota_strom_zaehler_vol_voltaik_cur
        above: -900
      • condition: state
        entity_id: switch.tasmota_2xrelais_tasmota_relais2x
        state: „on“
        for:
        hours: 0
        minutes: 15
        seconds: 0
        sequence:
      • target:
        entity_id: switch.tasmota_2xrelais_tasmota_relais2x
        action: switch.turn_off
        data: {}
        mode: single

Ich glaube das ist nicht die Lösung, die ich mir vorstelle. Leider sind meine Programmierkenntnisse nicht besonders gut. Folgende Idee:

  • Entität „sensor.tasmota_strom_zaehler_vol_voltaik_cur“ 10 mal alle 2 min einlesen und in ein Array oder in 10 Variablen schreiben.
  • Auswerten ob 30% der Werte unter 1000 sind.
  • bei „Ja“ switch.turn_off
  • bei „nein“ switch.turn_on
  • Schleife neu beginnen, Array löschen neu beschreiben.
    Ist so was im Home Assistant überhaupt möglich?

Danke für die Unterstützung
Klaus