Simulation einer Automation? Oder wo liegt mein Fehler?

Ich würde gerne meine Poolpumpe nicht zu festen Zeiten schalten, sondern dynamisch.

Dafür habe ich zwei Helfer:
input_datetime.poolpumpe_einschaltzeit
input_datetime.poolpumpe_ausschaltzeit

Screenshot 2024-08-13 204214

die ich in der Automation nutze:

alias: Steuerung Poolpumpe
description: Schaltet die Steckdose für die Poolpumpe
trigger:
  - platform: template
    value_template: >-
      {{ states('sensor.time') ==
      states('input_datetime.poolpumpe_einschaltzeit')[0:5] }}
  - platform: template
    value_template: >-
      {{ states('sensor.time') ==
      states('input_datetime.poolpumpe_ausschaltzeit')[0:5] }}
action:
  - choose:
      - conditions:
          - condition: template
            value_template: >-
              {{ states('sensor.time') ==
              states('input_datetime.poolpumpe_einschaltzeit')[0:5] }}
        sequence:
          - target:
              device_id: 2fe0a321fca12119e4ffe29a793dfcd3
            action: switch.turn_on
            data: {}
      - conditions:
          - condition: template
            value_template: >-
              {{ states('sensor.time') ==
              states('input_datetime.poolpumpe_ausschaltzeit')[0:5] }}
        sequence:
          - target:
              device_id: 2fe0a321fca12119e4ffe29a793dfcd3
            action: switch.turn_off
            data: {}
mode: single

Leider funktioniert das nicht. Kann man simulieren, wie die Automation ablaufen wird? Oder sieht jemand meinen Denkfehler?

Mach es Dir doch nicht so schwer und verwende Deine zwei input_datetime Helfer direkt als Zeit Auslöser.

alias: Steuerung Poolpumpe
description: Schaltet die Steckdose für die Poolpumpe
trigger:
  - platform: time
    at: input_datetime.poolpumpe_einschaltzeit
    id: einschalten
  - platform: time
    at: input_datetime.poolpumpe_ausschaltzeit
    id: ausschalten
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - einschalten
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.poolpumpe
      - conditions:
          - condition: trigger
            id:
              - ausschalten
        sequence:
          - action: switch.turn_off
            data: {}
            target:
              entity_id: switch.poolpumpe
mode: single

switch.poolpumpe musst Du gegen Deine Switch Entität austauschen.

Gruß
Osorkon

2 „Gefällt mir“

:open_mouth: … Ok, da habe ich mir das echt zu schwer gemacht. Danke für die Korrektur meins Codes :slightly_smiling_face:

Wenn morgen um 10:00 die Pumpe anspringt, bin ich happy! Ich danke dir!

Wenn Dein input_datetime.poolpumpe_einschaltzeit auf 10 Uhr eingestellt ist, wird sie das auch tun.
Vorausgesetzt der Plug ist eingesteckt und Du hast switch.poolpumpe durch die richtige Entitäts-ID ausgetauscht. :wink:

Gruß
Osorkon

Es hat funktioniert! Vielen Dank!!!

Hallo

Da ich vor dem gleichen Problem stehe würde mich Interessieren wie die Helfer:

input_datetime.poolpumpe_einschaltzeit

Und ausschaltzeit

Aussehen.

Desweiteren welche Zeiteinheit hast bei Data benutzt.

Hast du das Programm als Automation oder bei Yaml?

Beider Erstellung des Helfers „Zeitpunkt-Eingabe“ gibt es kein „Aussehen“. Man muss lediglich festlegen, ob man Uhrzeit oder Datum oder beides eingeben will.

Für Data gibt es in diesem Zusammenhang keinen Wert. Da wird keine Zeiteinheit eingestellt.

Einfach wie in der Automation oben die Input Datetime als Auslöser verwenden.
Die Input Datetime Helfer sind vom Typ Uhrzeit.

Gruß Osorkon

Danke

Für eure Info

Werde das mal Testen

Habe das jetzt mal auf meine Gegebenheiten angepasst:

alias: Steuerung Poolpumpe
description: Schaltet die Steckdose für die Poolpumpe
trigger:
  - platform: time
    at: input_datetime.poolpumpe_einschaltzeit
    id: einschalten
  - platform: time
    at: input_datetime.poolpumpe_ausschaltzeit
    id: ausschalten
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - einschalten
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.shellyoutdoorsg3_e4b063dec678
      - conditions:
          - condition: trigger
            id:
              - ausschalten
        sequence:
          - action: switch.turn_off
            data: {}
            target:
              entity_id: switch.shellyoutdoorsg3_e4b063dec678
mode: single

Verstehe noch nicht was ich bei:

sequence:
          - action: switch.turn_on
            data: {}
            target:

data und target eintragen soll.

Ist Data meine 5 bzw 1 Minute ? Was ist target ?

data kannst Du ignorieren, es werden einfach keine weiteren Daten übermittelt bzw. benötigt.

Als Target hast Du doch bereits die zu schaltende Entität angegeben.

Gruß Osorkon

Ich habe den Eindruck du bearbeitest die Automation im yaml-Modus, richtig? Ich empfehle dir in den Visuellen-Modus zu wechseln.

1 „Gefällt mir“

Ja

Habe ich jetzt auch gesehen das das geht.

Dachte erst das wäre nur YAML.

Wenn ich das jetzt so verstehe geht es bei dieser Automation nur um eine EIN- und eine AUSschaltzeit?

Genau. Den ein und ausschalt Zeitpunkt, kannst Du wie in Deinem Beispiel über 2 Input Datetime Helfer realisieren. Wenn es mehrere ein und ausschalt Vorgänge pro Tag sein sollen, würde ich aber einen Zeitplan als Helfer verwenden.

Gruß Osorkon

Ok

Habe ich jetzt verstanden.

Ich habe eigentlich ein ganz anderes Anliegen.

Ich brauche einen EIN-AUSschaltzyklus.

1 Minute AN, 5 Minuten AUS

Und das zwischen 10:00 und 20:00

Habe mich schon an einer Automation versucht, mit 2 Timern, habe aber immer noch das Problem das der 2. Timer aktiv bleibt und somit nicht zurück gesetzt wird.

Gibt es für diesen Flip Flop evtl. einen Blueprint.

Da in der Blueprints Auswahl ja alles in Englisch steht finde ich da nichts.

Um 10 Uhr einschalten, um 22 Uhr ausschalten

Zwischen 10 und 22 Uhr
Wenn Schalter 1 min an, dann ausschalten
Wenn Schalter 5 min aus, dann einschalten


description: ""
mode: single
triggers:
  - trigger: time
    at: "10:00:00"
    id: einschalten
  - trigger: time
    at: "22:00:00"
    id: ausschalten
  - trigger: state
    entity_id:
      - switch.xyz
    to:
      - "on"
    for:
      hours: 0
      minutes: 1
      seconds: 0
    id: ausschalten
  - trigger: state
    entity_id:
      - switch.xyz
    to:
      - "off"
    for:
      hours: 0
      minutes: 5
      seconds: 0
    id: einschalten
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - einschalten
          - condition: time
            after: "10:00:00"
            before: "22:00:00"
        sequence:
          - action: switch.turn_on
            metadata: {}
            target:
              entity_id: switch.xyz
            data: {}
      - conditions:
          - condition: trigger
            id:
              - ausschalten
          - condition: time
            after: "10:00:00"
            before: "22:01:00"
        sequence:
          - action: switch.turn_off
            metadata: {}
            target:
              entity_id: switch.xyz
            data: {}


Gruß Osorkon

Oder über das UI (visueller Modus):

Versuch mal den Screenshot als neue Automation anzulegen. :wink:
Den Yaml Code kannst Du dagegen 1:1 kopieren und eine neue Automation erstellen.

Dein Bsp. hat zusätzlich den Schönheitsfehler, dass jeder Neustart, geplant oder ungeplant die Automation vorzeitig beendet. Mit Verzögerungen würde ich definitiv nicht arbeiten.

Gruß Osorkon

Dein Code funktioniert.

Genau das was ich gesucht habe.

Vielen Dank :grinning_face:

1 „Gefällt mir“

Das ist ja wohl kinderleicht. Und der Lerneffekt ist für den Fragesteller wesentlich größer, als wenn er deinen fertigen Code kopiert. Da kann man besser Claude fragen und bekommt einen deutlich kompakteren Code mit Erklärungen zu den einzelnen Schritten:

alias: Blinklicht 10-20 Uhr
trigger:
  - platform: time_pattern
    minutes: "/1"
condition:
  - condition: time
    after: "10:00:00"
    before: "20:00:00"
action:
  - variables:
      phase: >
        {{ ((now().hour * 60 + now().minute) - (10 * 60)) % 6 }}
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ phase == 0 }}"
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.DEIN_LICHT
      - conditions:
          - condition: template
            value_template: "{{ phase == 1 }}"
        sequence:
          - service: light.turn_off
            target:
              entity_id: light.DEIN_LICHT
mode: single

Erklärungen:

Wie es funktioniert:

Läuft jede Minute, aber nur zwischen 10:00 und 20:00 Uhr (Condition)

phase berechnet die Minuten seit 10:00 Uhr modulo 6

phase == 0 → Licht an (1 Minute)

phase == 1 → Licht aus (bleibt dann 5 Minuten aus, bis phase wieder 0 ist)

Dein Einwand bzgl. Neustart von HA ist berechtigt, das Problem lässt sich aber sehr einfach durch einen Helfer vermeiden.