Lichtschaltung (Kreuzschaltung) wird ausgelöst weil Schalter kurz nicht verfügbar wird

Hi, ich habe ein kleines Problem…
Das Licht im Treppenhaus oben wird durch 2 Zigbee-Schalter ein und ausgeschaltet. Im EG ist ein Zigbee Doppelschalter und oben im Treppenhaus ist hinter dem Schalter ein unterputz Zigbee Switch.
EG:

OG:

Die Steuerung ist so, wenn sich der Zustand des unteren Schalters ändert dann wird der obere geschaltet und der obere Schalter ist ja diret in dem Switch verkabelt (S1 S2).

Problem ist jetzt, relativ selten wird (meistens mitten in der Nacht) der untere Schalter kurz nicht verfügbar (ca 3 Sekunden lang) und wenn er wieder verfügbar wird macht er “Power-on-behavior” wieder den letzten Zustand, heisst das Licht geht für 3 Sekunden an und wieder aus.
Ich habe dann eine Bedingung mit in die Automation gemacht “wenn Bedingung NICHT erfüllt ist: Wenn Schalter nicht verfügbar ist”, aber das eliminiert nur eine der zwei Änderungen, also ist das Licht angeblieben und hat sich nicht nach 3 Sekungen wieder Ausgeschaltet.

Habt ihr eine Idee wie ich das ändern könnte?
Das Licht leuchtet bis ins Schlafzimmer und im schlimmsten Fall weckt es das Baby… Meine Frau meint schon es spukt im Haus :ghost: und der Akzeptanz-Faktor für “diesen Smart-Sch***” wird dadurch auch nicht besser :sweat_smile:

Hier noch die Automation wenn es hilft:

alias: Treppenaufgang Licht an Schalter unten
description: ""
triggers:
  - entity_id:
      - switch.schalter_flur_2er_l2
    trigger: state
conditions:
  - condition: not
    conditions:
      - condition: state
        entity_id: switch.schalter_flur_2er_l2
        state: unavailable
actions:
  - action: switch.toggle
    data: {}
    target:
      entity_id: switch.schalter_treppenaufgang_licht_oben
mode: single

Erste Idee wäre eine weitere Automatisierung und ein Helfer (Schalter / boolean Input).

Sobald es auf nicht verfügbar geht, wird der Helfer eingeschaltet, gewartet, bis der Schalter wieder verfügbar ist, eine Minute gewartet und der Helfer ausgeschaltet.

Als Bedingung wird in Deine jetzige Automatisierung aufgenommen, dass der Helfer aus sein muss. Die Minute kannst Du natürlich auf X Sekunden verkürzen, wenn das reicht.

Wäre vermutlich eher ein work around.

Und beim überlegen komme ich drauf, dass Du einfach als Bedingung anlegen kannst, dass der Schalter, bei dem Du jetzt schon prüfst ob er nicht verfügbar ist, verfügbar ist, seit mind. X Sekunden. Damit kannst Du den Gap übergehen.

alias: Treppenaufgang Licht an Schalter unten
description: ""
triggers:
  - entity_id:
      - switch.schalter_flur_2er_l2
    trigger: state
conditions:
  - condition: not
    conditions:
      - condition: state
        entity_id: switch.schalter_flur_2er_l2
        state: unavailable
  - condition: state
    entity_id: switch.schalter_flur_2er_l2
    state: available
    for:
      hours: 0
      minutes: 0
      seconds: 5
actions:
  - action: switch.toggle
    data: {}
    target:
      entity_id: switch.schalter_treppenaufgang_licht_oben
mode: single

Jetzt muss er seit fünf Sekunden verfügbar gewesen sein, was nicht mehr in die Wiederherstellung fallen dürfte. Evtl. kannst die Zeit auch noch weiter verkürzen und 1 oder 2 Sekunden wären schon ausreichend.

Vielen Dank @tarag, das hört sich gut an, wird direkt getestet.
Ich hatte auch überlegt wie ich es mit einem Helfer umgehen könnte, aber die Verzögerung um x Sekunden nach Unerreichbarkeit ist natürlich weitaus eleganter.

Ich habe die Automation angepasst und werde mir eine Nachricht aufs Handy schicken lassen wenn der Schalter wieder auf unbekannt springt (sonst merk ich das ja nicht wenn das Licht nicht mehr angeht :sweat_smile:) um zu überprüfen ob es klappt.

Update:
Also, so klappt das leider nicht…
Ich hatte die yaml so übernommen wie @tarag geschrieben hat und heute Abend gemerkt dass sich das Licht vom unteren Schalter nun nicht mehr schalten lässt. Also nachgeschaut, es gibt beim Zustand des Schalters kein “available” zur Auswahl. Daher war die Bedingung nie erfüllt…

Dementsprechend fällt auch die Variante mit dem Helfer weg.
Oder übersehe ich irgendwas?

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Irgendwie hatte ich beim tippen schon dieses blöde Gefühl. :stuck_out_tongue_winking_eye:

Jetzt überlegte ich gerade auf on / off zu prüfen. Aber das werden ja auch Zustände sein, die sich beim betätigen ändern.

Damit wäre das Problem zwar behoben aber ein schalten auch nicht mehr möglich. :thinking:

Also doch der work around mit dem Helfer, falls niemand eine bessere Idee hat. Kann da gerne ein Beispiel bauen, falls gewünscht.

:pencil2:

Es lässt mir halt irgendwie keine Ruhe.

alias: Treppenaufgang Licht an Schalter unten
description: ""
triggers:
  - entity_id:
      - switch.schalter_flur_2er_l2
    trigger: state
conditions:
  - condition: template
    value_template: >-
      {{ trigger.from_state is not none and trigger.from_state.state !=
      'unavailable' }}
actions:
  - action: switch.toggle
    data: {}
    target:
      entity_id: switch.schalter_treppenaufgang_licht_oben
mode: single

Keine Ahnung ob das funktioniert. Aber es ist einen Versuch wert. :wink:

Ich bin zu müde zum Denken.

Sollte in jedem Fall bei der Lösung helfen.

Vielen Dank @tarag für Deine späten Mühen :wink: ich werde es testen.

Ich hatte auch noch eine Idee, er zeigt ja als auswählbaren Zustand “nicht verfügbar” an, könnte man nicht irgendwie andersrum sagen: wenn der Zusatnd “in den letzten 5 Sekunden nicht verfügbar war” dann nicht ausführen, anstatt ausführen nur wenn “seit 5 sekunden verfügbar”?

Aber ist es ja nicht, wenn es gerade geschaltet wird.

Stimmt natürlich… nicht richtig nachgedacht :face_with_spiral_eyes: