Hilfe bei einer Automatisation - Pool-Pumpe mit Bedingung und Zeitvorgaben

Also hier zuerst mal die korrekte Automatisierung mit Verwendung "Letze Ausführung" als Template Bedingung.

Damit das ganze funktioniert, muss in den Bedingung Teil, die Bedingungen aus den Optionen rein.
So, dass es nur weiter geht, wenn auch einen der 3 Optionen ausgeführt werden kann. Und nicht die Standart Option greift.

YAML:
alias: Poolpumpe
description: ""
trigger:
  - platform: time_pattern
    minutes: 1
condition:
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            below: 26
          - condition: template
            value_template: >
              {{ now() - (this.attributes.last_triggered | default((now() -
              timedelta(hours = 4 )), true)) > timedelta(hours=3, minutes = 59)
              }}
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            above: 26
          - condition: time
            after: "06:00:00"
            before: "21:00:00"
          - condition: template
            value_template: >
              {{ now() - (this.attributes.last_triggered | default((now() -
              timedelta(hours = 1 )), true)) > timedelta(minutes=59) }}
      - condition: and
        conditions:
          - condition: time
            after: "21:00:00"
            before: "06:00:00"
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            above: 26
          - condition: template
            value_template: >
              {{ now() - (this.attributes.last_triggered | default((now() -
              timedelta(hours = 3 )), true)) > timedelta(hours=2, minutes = 59)
              }}
  - condition: state
    entity_id: input_boolean.pool_vorhanden
    state: "on"
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            below: 26
          - condition: template
            value_template: >-
              {{ now() - (this.attributes.last_triggered | default((now() -
              timedelta(hours = 4 )), true)) > timedelta(hours=3, minutes = 59)
              }}
        sequence:
          - service: light.turn_on
            data: {}
            target:
              entity_id: light.steckdose_garten_kanal_1_pool
          - service: timer.start
            data:
              duration: "00:30:00"
            target:
              entity_id: timer.pooltimer
      - conditions:
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            above: 26
          - condition: time
            after: "06:00:00"
            before: "21:00:00"
          - condition: template
            value_template: >-
              {{ now() - (this.attributes.last_triggered | default((now() -
              timedelta(hours = 1 )), true)) > timedelta(minutes=59) }}
        sequence:
          - service: light.turn_on
            data: {}
            target:
              entity_id: light.steckdose_garten_kanal_1_pool
          - service: timer.start
            data:
              duration: "00:20:00"
            target:
              entity_id: timer.pooltimer
      - conditions:
          - condition: time
            after: "21:00:00"
            before: "06:00:00"
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            above: 26
          - condition: template
            value_template: >-
              {{ now() - (this.attributes.last_triggered | default((now() -
              timedelta(hours = 3 )), true)) > timedelta(hours=2, minutes = 59)
              }}
        sequence:
          - service: light.turn_on
            data: {}
            target:
              entity_id: light.steckdose_garten_kanal_1_pool
          - service: timer.start
            data:
              duration: "00:20:00"
            target:
              entity_id: timer.pooltimer
mode: single

Wusste nicht wie Du Deinen Helfer für Pool vorhanden benannt hast, bei mir heisst er:
input_boolean.pool_vorhanden.

Mit den zusätzlichen Bedingungen wird es ganz schön unübersichtlich. Auch muss man drauf achten diese richtig mit UND und ODER zu verknüpfen.

Die Automatisierung, welche "Wann wurde die Pumpe zuletzt ausgeschaltet" berücksichtigt, könnte dann so aussehen.


YAML:
alias: Poolpumpe
description: ""
mode: single
trigger:
  - platform: time_pattern
    minutes: 1
    id: einschalten
  - platform: state
    entity_id:
      - timer.pooltimer
    to: idle
    id: ausschalten
  - platform: state
    entity_id:
      - light.steckdose_garten_kanal_1_pool
    from: "off"
    to: "on"
    for:
      hours: 0
      minutes: 30
      seconds: 30
    id: ausschalten
condition:
  - condition: state
    entity_id: input_boolean.pool_vorhanden
    state: "on"
action:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            below: 26
          - condition: state
            entity_id: light.steckdose_garten_kanal_1_pool
            state: "off"
            for:
              hours: 3
              minutes: 29
              seconds: 0
          - condition: trigger
            id:
              - einschalten
        sequence:
          - service: light.turn_on
            data: {}
            target:
              entity_id: light.steckdose_garten_kanal_1_pool
          - service: timer.start
            data:
              duration: "00:30:00"
            target:
              entity_id: timer.pooltimer
      - conditions:
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            above: 26
          - condition: time
            after: "06:00:00"
            before: "21:00:00"
          - condition: state
            entity_id: light.steckdose_garten_kanal_1_pool
            state: "off"
            for:
              hours: 0
              minutes: 39
              seconds: 0
          - condition: trigger
            id:
              - einschalten
        sequence:
          - service: light.turn_on
            data: {}
            target:
              entity_id: light.steckdose_garten_kanal_1_pool
          - service: timer.start
            data:
              duration: "00:20:00"
            target:
              entity_id: timer.pooltimer
      - conditions:
          - condition: time
            after: "21:00:00"
            before: "06:00:00"
          - condition: numeric_state
            entity_id: sensor.aussentemperatur01_temperature
            above: 26
          - condition: state
            entity_id: light.steckdose_garten_kanal_1_pool
            state: "off"
            for:
              hours: 2
              minutes: 39
              seconds: 0
          - condition: trigger
            id:
              - einschalten
            enabled: true
        sequence:
          - service: light.turn_on
            data: {}
            target:
              entity_id: light.steckdose_garten_kanal_1_pool
          - service: timer.start
            data:
              duration: "00:20:00"
            target:
              entity_id: timer.pooltimer
      - conditions:
          - condition: trigger
            id:
              - ausschalten
        sequence:
          - service: light.turn_off
            data: {}
            target:
              entity_id: light.steckdose_garten_kanal_1_pool

Habe das Ausschalten der Pumpe nach Ablauf des Timers, ebenfalls in die Automatisierung eingebaut.
Sowie einen zusätzlichen Trigger, wenn Pumpe 30 min und 30s sek an, soll sie ebenfalls ausgeschaltet werden.
Falls diese Manuel eingeschaltet wird, geht sie dann nach 30:30 min aus.

Kannst Du ja wieder raus nehmen, wenn Du das als separate Automatisierung haben möchtest.

Hoffe ich habe all Deinen Entitäten richtig übernommen. Am besten noch malrichtig drüber schauen.

Leider alles scripting Themen und für mich nicht so einfach umsetzbar. Oder kannst du mit zeigen, wie ich das auch z.B. im Grafikeditor gelöst bekomme?

Erstelle meinen Automatisierungen, fast Ausschließlich im grafischen Editor, auch diese beiden hier.
Es ist nur einfacher den yaml Code zu teilen, als irgendwelche Screenshots.
 
Zuletzt bearbeitet:
Holy moly. Ich muss mir das alles mal in ruhe ansehen und testen. Ich melde mich wieder.

Btw die Entitäten passen alle soweit. Klasse.

Und noch was, gibts einen Grund, warum die zweite Automatisierung relativ simpel im Vergleich zu ersten ist mit den ganzen UND und ODER?

Btw2 der erste Test hat die Pumpe schon mal gestartet.
 
Code:
alias: Poolpumpe
description: ""
trigger:
  - platform: time_pattern
    minutes: 1
condition:
  - condition: or

Ich bin skeptisch, das es so funktioniert.
Ich wollte mir auch gerade eine Automatisierung schreiben, die alle 10 Sekunden eine Bedingung prüft.
Code:
alias: Nulleinspeisung
description: ""
trigger:
  - platform: time_pattern
    seconds: "10"
Und was ist ? Die löst jede Minute einmal aus.
Sprich, immer um xx:xx:10 Uhr. Also jede Minute in der 10.ten Sekunde.
Bei deinem Beispiel würde jede Stunde um eine Minute nach voll geprüft.
Ich habe mir jetzt damit beholfen, das ich
Code:
alias: Nulleinspeisung
description: ""
trigger:
  - platform: time_pattern
    seconds: "10"
  - platform: time_pattern
    seconds: "20"
  - platform: time_pattern
    seconds: "30"
  - platform: time_pattern
    seconds: "40"
  - platform: time_pattern
    seconds: "50"
  - platform: time_pattern
    seconds: "00"
mache, damit löst er alle 10 Sekunden aus. Aber für jede Minute wäre das Blödsinn, da ich 60 Einträge machen müßte.
Gibt es den keinen Auslöser, der alle 10 Sekunden auslöst ?
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Letzte Anleitungen

Statistik des Forums

Themen
6.115
Beiträge
59.425
Mitglieder
6.160
Neuestes Mitglied
gonzo12345
Zurück
Oben