Verständnisproblem: Warum funktioniert diese Automation nicht?

Mahlzeit,

irgendwie verstehe ich scheinbar die Logik hinter den Automationen noch nicht so richtig.
Kann mir jemand auf die Sprünge helfen warum untenstehende Automation nicht funktioniert?

Was soll passieren?

Wenn Kanal 1 ODER Kanal 2 “on” ist soll Kanal 3 “on” geschaltet werden.
Das funktioniert prima!

Der else-Part allerdings will nicht und mir erschließt sich nicht warum:

Wenn Kanal 1 UND Kanal 2 zusammen für min. 10sec “off” sind soll Kanal 3 ebenfalls “off” geschaltet werden.
(Die Zeit von 10sec. ist nur zum testen).
Warum triggert der else-Part nicht?

alias: "Pumpe EIN/AUS"
description: ""
trigger:
  - platform: state
    entity_id:
      - switch.zigbee_4relais_heizung_l2
      - switch.zigbee_4relais_heizung_l1
condition: []
action:
  - if:
      - condition: or
        conditions:
          - condition: state
            entity_id: switch.zigbee_4relais_heizung_l2
            state: "on"
          - condition: state
            entity_id: switch.zigbee_4relais_heizung_l1
            state: "on"
    then:
      - service: switch.turn_on
        data: {}
        target:
          entity_id: switch.zigbee_4relais_heizung_l3
    else:
      - if:
          - condition: and
            conditions:
              - condition: state
                entity_id: switch.zigbee_4relais_heizung_l2
                state: "off"
                for:
                  hours: 0
                  minutes: 0
                  seconds: 10
              - condition: state
                entity_id: switch.zigbee_4relais_heizung_l1
                state: "off"
                for:
                  hours: 0
                  minutes: 0
                  seconds: 10
        then:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.zigbee_4relais_heizung_l3
mode: single

Problem ist ganz klar der “for 10sec” Part, (ohne geht auch der Part) mir erschliesst sich aber der Grund nicht.
Muss ich das irgendwie anders lösen? Brauche dort einen Nachlauf…

Danke für einen Hinweis in die richtige Richtung.

gruß

Bin nicht sicher, aber wenn einer deiner Trigger auslöst, kann er die Bedingung (10s off) doch noch gar nicht erfüllen.
Und wenn beide ihn erfüllen könnten, hast du nichts mehr das triggert.
Oder hab ich auch einen Knoten im Hirn?

Irgendwie sowas wird es sein, meine Erwartung wäre eigentlich dass der Timestamp überprüft wird, wenn Kanal 1 “off” geht (für 10sec) und Kanal 2 schon seit 1Std. “off” ist sollte die Bedingung doch erfüllt sein?!

Wenn ich die Automation so umbaue funktioniert sie:

alias: "Pumpe EIN/AUS"
description: ""
trigger:
  - platform: state
    entity_id:
      - switch.zigbee_4relais_heizung_l2
      - switch.zigbee_4relais_heizung_l1
condition: []
action:
  - if:
      - condition: or
        conditions:
          - condition: state
            entity_id: switch.zigbee_4relais_heizung_l2
            state: "on"
          - condition: state
            entity_id: switch.zigbee_4relais_heizung_l1
            state: "on"
    then:
      - service: switch.turn_on
        data: {}
        target:
          entity_id: switch.zigbee_4relais_heizung_l3
    else:
      - if:
          - condition: and
            conditions:
              - condition: state
                entity_id: switch.zigbee_4relais_heizung_l2
                state: "off"
              - condition: state
                entity_id: switch.zigbee_4relais_heizung_l1
                state: "off"
        then:
          - delay:
              hours: 0
              minutes: 0
              seconds: 10
              milliseconds: 0
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.zigbee_4relais_heizung_l3
mode: restart

Welchen “Sinn” bzw Nutzen hat dann die “for-time” Bedingung?

Es ist genau so wie @silberfuxx sagst. Der Else-Part kann überhaupt nie errfüllt werden.

Was ist das Ziel deiner Automation, @C0mmanda?

Das Ziel ist:
Kanal 1 + 2 sind Heizungskessel und Pelletofen,
Kanal 3 die Umwälzpumpe der Heizung.
Wenn eins von beiden an ist soll die Pumpe laufen, wenn Kessel und Ofen aus sind soll die Pumpe noch nachlaufen und dann ausschalten.

Mein zweiter Code mit einem delay funktioniert jetzt einwandfrei, ich frage mich nun halt nur wo die „for-time“ Bedingung von nutzen sein kann… :man_shrugging:t3:

Die zeitliche Überprüfung ist in den Aktionen gar nicht vorgesehen, ist nur in den Bedingungen möglich. Sieht man aber nur wenn man sich die Automationen im Auswahlmenü (Grafische Oberfläche?) anzeigen lässt.

Wie meinst du das?
Ist in der grafischen Oberfläche doch vorhanden?
Zustand —> für (Zeit)

Ähm ja… Warum hat der mir das eben nicht angezeigt?

Edit: Ich weiß jetzt auch warum, ich hatte bei “Gerät” und nicht bei “Zustand” geschaut. Sorry… :slight_smile:

In dem meisten Fällen braucht man For-Time nicht. Nicht desto trotz kann es Automationen geben, bei dem man dies braucht. Das macht die HA-Automationen so mächtig.

Wo kann das denn nützlich sein, bzw wann triggert for-time denn?

Bspw. nutze ich dies für meine „Coming Home“ Automation, wenn geprüft wird, ob die Temperatur für eine gewisse Dauer unter einem Wert liegt, schaltet es die Heizung ein.

Das Problem hier ist dass es ein State Change sein muss der für 10sec erfüllt sein muss… Also von an auf aus und das 10 für 10sec.
Wenn allerdings eine der beiden Heizungen schon seit einer Stunde Off ist, erfüllt sich die Bedingung nicht. Meist gut im Trace nachzuvollziehen.
Lösung: Helper der nach 10sec Off auf einen Zustand wechselt.
Dann brauchst du nur noch diesen Zustand abfragen für die dann Bedingung.
Hoffe das ist verständlich.
Wenn erste Heizung irgendwann abschaltet geht Helper 1 nach 10sec auf Status “aus”. Das gleiche für die 2. Heizung.
Die Abfrage erfolgt dann auf die beiden Helper. Also sind beide auf “aus” dann den 3. Schalter auf “Off”.
Gruss