Hinzufügen der Nicht-Erkennungsdauer in Szenen

Hallo,

Ich habe ein Problem mit einer verzögerten Ausschalt-Szene, die mit einem Bewegungsmelder verbunden ist. In meiner Szene schalte ich die Lichter X Minuten nach dem Auslösen aus. Wenn während dieser Zeit eine Bewegung erkannt wird, möchte ich die Ausschalt-Szene zurücksetzen, um zu verhindern, dass die Lichter zu nah an der Erkennung ausgeschaltet werden und eine unnötige Ausschaltung erfolgt.

Ich sehe zwei mögliche Funktionen, um mein Problem zu lösen.

  • Entweder in einer Szene A die wartende Szene B zu stoppen

  • Oder die Dauer seit der letzten Erkennung abrufen (wie im Dashboard)
    Hier sehe ich zwei Möglichkeiten, dies umzusetzen:
    - Entweder als Funktion wie „Warten“ im Aktionen-Bereich oder besser im Auslöser-Bereich.
    solange ( [Erkennungsdauer] < X Minuten/Stunden…) { warten }
    - Oder den Wert abrufen und dann bedingte Logik in der Szene anwenden. (Die Ausschalt-Szene, die vor der neuen Erkennung wartet, wird nicht beendet.)

Hallo @mikael! Ich habe gerade deine Nachricht gesehen, sie ist zwischen den vielen Nach-Urlaubs-Benachrichtigungen untergegangen :slight_smile:

100% einverstanden mit dieser Anfrage, das ist eine wiederkehrende Anforderung, die wir haben und die Sinn macht!

Ich habe gesucht, ich dachte, wir hätten schon einen Feature-Request dafür, aber anscheinend nicht!

@pierre-gilles: Das ist nicht schlimm wegen der Frist, wichtig ist, dass die Anforderung in einer zukünftigen Version behandelt wird. (Das verhindert, dass mich mein Sohn anruft und mich anschreit, weil das Licht zu schnell ausgeht.)

Hallo,
Ich habe das gleiche Problem:
Ich habe einen Bewegungsmelder und ich möchte, dass die Erkennung für eine bestimmte Zeit pausiert.
Eine Lösung wäre, eine Variable « etat_precedent » zu erstellen, die auf 1 gesetzt wird, wenn eine erste Erkennung erfolgt, entweder durch Änderung des Sensorzustands oder durch Abruf des letzten Sensorzustands.
Das würde so funktionieren:

Auslöser: Änderung des Gerätezustands (=Erkennung) UND « etat_precedent » = 0
Aktionen: Nachricht senden (zum Testen) UND « etat_precedent » = 1 (Variable auf 1 setzen)
Aktion: Warten auf die gewünschte Dauer
Aktion: « etat_precedent » = 0 (Variable auf 0 setzen)

Tatsächlich wären zwei Aktionen « Variable erstellen… » und « Variable auf … setzen » gut :blush:

In einem Aktionsblock:
Letzten Zustand des Geräts Sensor abrufen UND Variable « etat_precedent » erstellen UND « etat_precedent » auf den gewünschten Wert setzen (allerdings glaube ich, dass man den Zustandswert nicht im selben Aktionsblock wie « Letzten Zustand abrufen » verwenden kann, was logisch ist, da es sequenziell abläuft)

Also eher:
Aktion:
Letzten Zustand des Geräts Sensor abrufen UND Variable « etat_precedent » erstellen
Aktion:
Variable « etat_precedent » (aus der Liste auswählen) auf « 1 » (Wert eingeben) setzen

Ich habe geschummelt, indem ich alle 15 Sekunden einen geplanten Auslöser erstellt habe, aber das gefällt mir nicht!

Hallo,

Ich unterstütze diesen Wunsch. In meinem Fall würde es mir helfen, Spam-Nachrichten zu vermeiden.

Beschreibung meines Problems heute: [SCENES] Comment limiter les messages envoyés - #5 par PhilippeMA

Hallo zusammen!

Ich denke, diese Anforderung ist wichtig (Trigger mit einer Nicht-Erkennungsdauer), sie wird oft gefordert, aber ich bin mir nicht 100% sicher, wie sie umgesetzt werden könnte.

@VonOx hat uns in einem anderen Thema gezeigt, wie das bei Home Assistant gemacht wird:

Aber wenn ich das richtig verstehe, setzt das voraus, dass der Bewegungssensor einen Rücksetzmechanismus hat (d. h. er sendet nicht nur « 1 » sondern auch « 0 » (keine Bewegung)), stimmt das @VonOx?

Ah, ich dachte mir schon, ich habe gerade bemerkt, dass wir bereits viel über dieses Thema diskutiert haben:

Ich verstehe immer noch nicht, wie man diese Funktion umsetzen soll (funktional, natürlich sprechen wir hier nicht über Code), also bin ich für jedes zusätzliche Feedback offen :slight_smile:

da ich gefragt habe, werde ich versuchen, dir die Funktion zu beschreiben

Der Detektor wechselt in den Erfassungszustand. Wenn er wieder in den Standby-Modus wechselt, sollte in diesem Moment der Timer beginnen. Jedes Mal, wenn der Detektor in den Zustand „erfasst“ wechselt, muss der Timer zurückgesetzt werden.

Zur Info: Im Dashboard ist das bereits der Fall, wir haben die Info, wenn wir das Gerät mit der Funktion „Bewegungserkennung“ anzeigen.

Hallo,

Wenn wir in Gladys Folgendes berücksichtigen:

  • In der Gerätefunktion fügen wir eine Option « Tempo vom Sensor gesteuert: Ja/Nein » hinzu. Wenn Nein, dann konfigurieren wir eine Grund-Rücksetzzeit von z.B. 2 Minuten (ein physischer und nicht domotischer Bewegungssensor ist immer vorkonfiguriert, und man dreht die Schraube, wenn man eine andere Zeit wünscht; logischerweise sollte man genauso vorgehen),
  • wir weisen den Benutzer darauf hin, dass er diese Zeit in der Funktion ändern kann (es könnte sogar ein Popup bei der automatischen Erstellung des Sensors sein),

Wenn der Sensor kein integriertes Tempo hat:

  • Der Bewegungssensor sendet 1 oder true → Bewegungserkennung → DB-Wert = 1,
  • Der Sensor sendet 2 Minuten lang nichts → DB-Wert = 0 nach diesen 2 Minuten,
  • Der Sensor hat nach 1 Minute erneut 1 gesendet → Das 2-Minuten-Tempo startet neu → DB-Wert = 0 nach diesen 2 Minuten,

Wenn der Sensor ein integriertes Tempo hat und 0 sendet:

  • Der Bewegungssensor sendet 1 oder true → Bewegungserkennung → DB-Wert = 1,
  • Der Bewegungssensor sendet 0 oder false → Bewegungserkennung → DB-Wert = 0.

Danke für das Feedback @Terdious!

@VonOx, sind wir uns einig, dass die Funktion auf der Home Assistant-Seite zwangsläufig eine Rückstellung des Bewegungssensors auf 0 erfordert?

Ja, ich nutze das, um Lampen auszuschalten, die über die Bewegungserkennung eingeschaltet wurden.

Danke für das Feedback! Okay, also funktioniert die Funktion nur, wenn man den Rücksetzcode für Bewegungsmelder programmiert, die das nicht selbstständig tun.

Hallo zusammen :slight_smile:

Ich habe heute an dieser Entwicklung gearbeitet!

So sieht es in Gladys aus:

Was unter der Haube passiert:

  • Sobald ein Wert « AUS » empfangen wird, startet Gladys einen Timer von 5 Minuten
  • Während der 5 Minuten, wenn ein Wert « AN » empfangen wird, wird der Timer gelöscht
  • Während der 5 Minuten, wenn ein Wert « AUS » empfangen wird, passiert nichts (und der aktuell laufende Timer läuft weiter)
  • Nach 5 Minuten, wenn nichts den Timer aufgehoben hat, wird die Szene ausgeführt

Dieser Auslöser funktioniert mit jedem Sensortyp, es kann z.B. ein Temperatursensor mit einer Bedingung « Temperatur > 12°C » sein.

Einziger aktueller Nachteil, der mir aber derzeit nicht sehr einschränkend erscheint: Wenn Gladys während eines Timers neu startet, geht der Timer verloren.
Allerdings ist das Verhalten aktuell dasselbe, wenn eine Szene ausgeführt wird und Gladys neu startet, geht sie verloren.

Der Pull Request:

Ich wäre für Feedback zum Pull Request dankbar, insbesondere zum Code. Ich möchte sicherstellen, dass ich keine Fälle übersehen habe!

Vielen Dank im Voraus für euer Feedback :folded_hands:

das könnte für die Präsenz nützlich sein, um Mikroausfälle zu vermeiden

Eigentlich nicht wirklich, du hast schon alle Mechanismen in Gladys, um das ohne das zu machen :slight_smile:

( siehe Dokumentation: Gérer la présence en scannant votre réseau | Gladys Assistant )

Diese Funktion ist in Gladys Assistant 4.49 verfügbar:

Ich schließe dieses Thema, um die Stimmen freizugeben :folded_hands: