Bedingung deaktiviertes HG trifft nicht zu, wenn das deaktivieren der Auslöser ist

Moin,

mir ist heute morgen ein seltsames Phänomenon aufgefallen, das ich bisher zumindest noch nicht beobachtet hatte.
Ich habe ein HG (HG1), das deaktiviert wird, wenn bei einem BWM die Helligkeit über einen bestimmten Schwellenwert tritt.
Das deaktivieren dieses HG1 löst ein anderes HG aus (HG2).
In HG2, das noch ein Reihe weiterer Auslöser hat ist als Bedingung enthalten, das HG1 deaktiviert sein muss.
Nun ist es heute morgen passiert, das HG1 wie gewohnt deaktiviert wurde als der BWM die entsprechende Helligkeit meldete. Das deaktivieren hat auch erfolgreich HG2 getriggert, so dass seine Bedingungen abgeprüft wurden.
Bei der Prüfung war aber das Ergebnis, das HG1 noch nicht deaktiviert sei, weshalb es nicht zur Ausführung kam.
Ich verwende diese HG Konstellation in mehreren Räumen und konnte das Verhalten heute gleich zwei mal beobachten. Hier ein Tagebuchauszug aus der Küche. Man kann schön sehen, das das Auslösen des HG2 vor dem deaktiveren des HG1 im Tagebuch steht, obwohl eben das der eigentlich Trigger für HG2 ist.

So ein ähnliches Verhalten gab es meine ich schon mal bei den Sonnenständen, da war bei Sonnenuntergang nicht sofort Nacht und bei Sonnenaufgang nicht sofort Tag.

Bisher war mir das Verhalten so nicht aufgefallen, aber ich hatte ach nicht explizit drauf geachtet.
@Andreas kannst du hier weiterhelfen?

Edit: Hab gerade nochmal im Tagebuch die Anderen HGs die so aufgebaut sind geprüft. da verhält es sich konsequent genauso.
Einen Workaround habe ich shcon im Kopf, aber @Andreas ist es so gewollt, das der hier das deaktivieren eine HGs schneller als Trigger genutzt wird, als das System den Status für die Bedingungen richtig hinterlegen kann?

Diese Logik, wann etwas schon an/aus/aktiviert/deaktiviert ist, wenn alles “gleichzeitig” abläuft (und halt doch eigentlich nacheinander), ist manchmal nicht durchschaubar.

Rein logisch verhält sich dein HG2 wohl richtig (indem es nichts macht), denn es heißt ja, “Wenn HG1 deaktiviert wird, und nur, wenn HG1 deaktiviert ist, dann …”
Daher versuche ich auf Auslöser, die gleichzeitig als Bedingung geprüft werden, zu verzichten. Bei mehreren Auslösern ist das natürlich nicht immer einfach.

Als Workaround könnte man jetzt bei dir die Aktionen aus HG2 alle mit 1 Sek Verzögerung starten und dann die Bedingungen beim Ausführen prüfen, da sollte dann das HG1 korrekt als deaktiviert geprüft werden.

Wenn das mit der 1 Sek nicht geht, dann könnte man ein Dummy HG3 bauen, bei dem das Deaktivieren von HG1 ein HG3 mit 1 Sek Verzögerung auslöst, das dann wiederum dein HG2 startet (und das schaut wie bisher, ob HG1 deaktiviert ist)

das Verhalten ist dann aber nicht konsequent so umgesetzt. Denn ich habe diverse HGs bei denen z.B. ein Gerät Auslöser und Bedingung ist. (Bsp.: Wenn BWM Bewegung meldet und nur wenn BWM Bewegung meldet.)
Mein Workaround wird sein, das ich in dem HG das HG1 deaktiviert mit 1 Sek. Verzögerung HG2 ausführen lasse.

1 „Gefällt mir“

Dem stimme ich zu

Das geht natürlich auch :slight_smile:

→ Halten wir fest: Viele komplizierte Lösungen führen zum erwarteten Ergebnis, was nicht intuitiv funktioniert. @Andreas, ich glaube auch, dass ihr euch das mit den gleichen Auslösern und Bedinungung nochmals anschauen solltet.

1 „Gefällt mir“

Wenn es möglich ist, würde ich hier mit dem Prüfzeitpunkt arbeiten:
Die Bedingung setzen “HG ist deaktiviert” beim “Ausführen der Aktion” und nicht wie im Standard beim “Auslösen der Aktion”. Hier ist der Vorteil, dass das HG grundsätzlich mal anläuft, und eine Prüfung erst kurz darauf erfolgt.

Ja stimmt das funktioniert auch. Mach ich je nach HG aber mal mehr mal weniger gerne. Gerade bei HGs die sehr häufig ausgelöst werden versuche ich das zu vermeiden, da es sicherlich rechenintensiver für den Würfel ist, wenn das HG erst nach dem starten gestoppt wird.

Problem ist halt, genau in dem Moment, wo ein HG oder eine Aktion aktiviert wird, ist es noch nicht aktiv. Der Prüfzeitpunkt beim Auslösen beschreibt aber doch gerade diese Situation.
Ein HG oder eine Aktion ist erst unmittelbar nach dem Auslösen aktiv, auch wenn es sich nur um Millisekunden handelt.