Alarm auslösen, wenn alle Öffnungs- und/oder Bewegungsmelder in Ordnung sind

auslöser: alarmierung läuft

bedingung: wenn alle öffnungsmelder „geschlossen“ sind (und/oder) bewegungsmelder inaktiv sind.

unmöglichkeit, den status eines melders in der funktion „wenn“ zu sehen?

Das kannst du mit einem Block « Letzten Status abrufen » + « Bedingung für Variablen » machen :slight_smile:

Um ein « UND » zu machen, kannst du einfach mehrere Bedingungen einfügen, das wird funktionieren!

noch einmal entschuldige, es funktioniert nicht. Ich erkläre: Ich mache eine Szene, die durch Folgendes ausgelöst wird: Alarm im Armierungsprozess. Ich führe eine Aktion aus: Abrufen des letzten Zustands des Öffnungsmelders. Anschließend erstelle ich eine Bedingung auf der Variablen, wähle den betreffenden Öffnungsmelder aus. Wenn dieser nicht „Geschlossen“ ist, deaktiviere ich den Alarm, sende eine SMS, um das offene Fenster zu melden. Andernfalls sende ich eine SMS „Alarm aktiviert“. Ergebnis: Egal, ob der Melder auf „Offen“ oder „Geschlossen“ steht, der Countdown bleibt bei 0 und es passiert nichts. Das ist doch ein großes Problem. Wie kann man eine Alarmanlage mit einem offenen Fenster oder einer offenen Tür aktivieren, zumal wenn man die Alarmanlage im Teilmodus nutzen möchte.

Wenn ich als Auslöser „Alarm bewaffnet am Ende des Countdowns“ einstelle, schaltet die Alarmanlage in den entwaffneten Modus, egal ob der Detektor offen oder geschlossen ist, und ich erhalte keine Nachricht. Ich glaube, ich werde eine andere Lösung finden, um meine Alarmanlage zu ersetzen, die mir jetzt nicht mehr nützlich sein wird, da die Anbieter 2G aufgeben. Ich bin ein bisschen enttäuscht, diese Lösung hat mir gut gefallen.

Was für ein Abenteuer! Ich habe gerade versucht, die Werte 1 oder 0 anstelle von „Geöffnet“ und „Geschlossen“ zu verwenden, und es funktioniert mit dem Auslöser „Alarmanlage scharf“. Wenn ich als Auslöser „Alarmanlage im Armierungsvorgang“ nehme, funktioniert es, aber wenn das Fenster offen ist, blockiert es den Countdown auf null, ohne die Alarmanlage zu scharf zu schalten. Man kann sagen, dass das Problem größtenteils gelöst ist.

Gut gemacht, dass du es mit 0 und 1 gefunden hast! Ich erkläre dir warum, und wie du dein Szenario fertigstellen kannst :slight_smile:

1. Warum « Geöffnet » / « Geschlossen » nicht funktioniert hat

Der Block « Bedingung für Variablen » vergleicht den Rohwert, der von Gladys gespeichert wird, nicht die im Interface angezeigte Beschriftung. Für eine binäre Funktion ist der Wert immer 0 oder 1, und « Geöffnet »/« Geschlossen » ist nur die auf dem Bildschirm angezeigte Übersetzung. Da der Vergleich streng ist, ist "Geschlossen" (Text) nie gleich 1 (Zahl): Die Bedingung wurde daher nie erfüllt und die Szene stoppte leise, daher dein « Es passiert nichts ».

Die zu verwendenden Werte:

Sensor-Typ 0 1
Öffnungsmelder Geöffnet Geschlossen
Bewegungsmelder Keine Bewegung Bewegung erkannt

2. UND oder ODER?

Kleine Präzisierung im Vergleich zu meiner vorherigen Antwort: Innerhalb eines einzigen Blocks « Bedingung für Variablen » sind die Bedingungen durch ein ODER verbunden (der Block geht weiter, sobald eine einzige Bedingung wahr ist). Um ein UND zu machen, muss man mehrere Blöcke « Bedingung für Variablen » hinzufügen: Sie müssen dann alle erfüllt sein, damit das Szenario weitergeht. Das wird direkt im Interface ab der Version 4.84.3 erinnert.

In deinem Fall ist das ODER genau das, was du brauchst: Du möchtest die Bewaffnung aufheben, wenn mindestens ein Sensor defekt ist. Also ein einzelner Bedingungsblock mit einer Zeile pro Sensor:

  • Eingangstür - Öffnung = 0
  • Wohnzimmerfenster - Öffnung = 0
  • Wohnzimmerdetektor - Bewegung = 1

3. Das vollständige Szenario

  1. Auslöser: « Alarm bewaffnet » (Ende des Countdowns)
  2. « Letzten Zustand abrufen »: Ein Block pro Sensor (sie müssen oberhalb des Bedingungsblocks sein, sonst erscheinen die Variablen nicht in der Dropdown-Liste, das beantwortet deine Frage « Unmöglichkeit, den Zustand eines Detektors in der Funktion zu sehen? »)
  3. « Bedingung für Variablen » mit den oben genannten Zeilen
  4. « Nachricht senden »
  5. « Alarmmodus ändern » → Entwaffnet

Stelle sicher, dass die Nachricht vor der Entwaffnung gesendet wird.

4. Der Bug, auf den du mit « Alarm wird bewaffnet » gestoßen bist

Hier bist du auf einen echten Gladys-Bug gestoßen, das bist nicht du: Während des Countdowns wird das Haus noch als « entwaffnet » in der Datenbank registriert (es wechselt erst nach Ablauf der Zeit zu « bewaffnet »). Daher hebt die Aktion « Entwaffnen » die Bewaffnung tatsächlich auf, aber sie gibt einen Fehler « Das Haus ist bereits entwaffnet » zurück, bevor sie das Interface benachrichtigt, daher bleibt der Countdown bei 0 stecken, obwohl der Alarm in Wirklichkeit nicht bewaffnet ist.

Bis ich das korrigiere, bleibe beim Auslöser « Alarm bewaffnet »: Der Alarm wird für einen Bruchteil einer Sekunde bewaffnet und dann ordnungsgemäß entwaffnet, und das Interface wird korrekt aktualisiert.

Korrektur für dein Problem:

Ich habe 2 Verbesserungen für dich gemacht:

  • Bugfix für das Entwaffnungsproblem
  • In den Szenen zeigt die Bedingung für Variablen die möglichen Werte an, statt dass der Nutzer 0 und 1 erraten muss

Beide sind live in der 4.84.4:

ok, ich habe alles so gefunden, wie du es mir erklärt hast.

Ich habe noch eine Frage: Ich sende eine HTTP-GET-Anfrage an ein persönliches WiFi-Modul. Das funktioniert, ich sende den Status per SMS, das ist ok. Ich würde ihn gerne auf dem Dashboard anzeigen lassen, ist das möglich?

Super, dass es funktioniert!

Zu deiner Frage: Das Dashboard kann nur Geräte anzeigen, keine Szenenvariablen. Die Antwort auf deine HTTP-Anfrage existiert nur während der Ausführung der Szene, daher muss sie zuerst irgendwo gespeichert werden. Die Lösung besteht darin, ein Gerät in Gladys zu erstellen und den Wert darin zu schreiben.

Schritt 1: Gerät erstellen

Gehe zu Integrationen, MQTT. Wenn du noch keinen Broker hast, kann Gladys dir einen mit einem Klick installieren. Anschließend, im Tab Geräte der MQTT-Integration, erstelle ein Gerät manuell, mit einer Funktion, die dem entspricht, was dein Modul zurückgibt:

  • ein numerischer Wert (Temperatur, Spannung, Zähler…): Wähle die entsprechende Kategorie, z.B. Temperatursensor, oder Zahl, wenn es ein generischer Wert ist
  • ein Status in Buchstaben: Wähle die Kategorie Text

Merke dir die externe ID des Geräts und die der Funktion, du wirst sie in Schritt 3 benötigen.

Schritt 2: Die Szene, die dein Modul abfragt

  1. Trigger: „Geplante Auslösung“, Typ „Intervall“, z.B. alle 5 Minuten
  2. Aktion „HTTP-Anfrage“: Methode GET, deine URL

Wichtiger Punkt: Klicke auf die Schaltfläche „Testen“. Wenn dein Modul JSON zurückgibt (mit dem Header Content-Type: application/json), liest Gladys die Antwort und erstellt automatisch eine Variable pro Feld. Wenn es rohen Text zurückgibt, wird keine Variable verfügbar sein und du kannst nichts wiederverwenden. Also, falls es noch nicht der Fall ist, lass es etwas wie Folgendes zurückgeben:

{"status": "ok", "temperature": 21.5}

Schritt 3: Wert in das Gerät schreiben

Immer noch in derselben Szene, nach der HTTP-Anfrage:

  • Numerischer Wert: Aktion „Wert an ein Gerät senden“, wähle die Funktion deines MQTT-Geräts, schalte den Schalter von „Einfach“ auf „Berechnet“ und tippe dann {{ und wähle die Variable data.temperature
  • Textwert: Die obige Aktion akzeptiert nur Zahlen. Verwende stattdessen die Aktion „MQTT-Nachricht senden“, auf dem Topic gladys/master/device/TON_ID_APPAREIL/feature/TON_ID_FONCTIONNALITE/text, mit der Nachricht {{ dann data.status. Gladys hört auf dieses Topic und speichert den Wert in der Funktion

Schritt 4: Anzeigen

Auf deinem Dashboard füge eine Box „Geräte“ (oder „Geräte in einem Raum“) hinzu und wähle die Funktion. Wenn es sich um einen numerischen Wert mit Historie handelt, kannst du ihn auch in eine Box „Diagramm“ oder „Anzeige“ setzen.

Eine einfachere Alternative, wenn du den Code deines Moduls ändern kannst

Statt dass Gladys dein Modul alle X Minuten abfragt, lass dein Modul direkt über MQTT auf dem Topic gladys/master/device/TON_ID_APPAREIL/feature/TON_ID_FONCTIONNALITE/state veröffentlichen (mit nur dem Wert als Payload, oder /text für Text). Du erstellst das Gerät wie in Schritt 1, und das war’s: Keine Szene mehr nötig, der Wert wird automatisch hochgeladen, sobald das Modul ihn sendet, mit Historie und Diagrammen. Auf einem ESP erledigt die Bibliothek PubSubClient das in wenigen Zeilen.

Hallo, vielen Dank für diese Informationen, die mir geholfen haben, das zu erreichen, was ich wollte.

noch ein Problem, das aufgetreten ist: Die Sensoren zeigen im Dashboard „Bewegung erkannt“ an, wenn sie ausgelöst wurden, was normal ist, aber dann zeigen sie die Zeit an, die seit der Auslösung vergangen ist, während sie früher nach einigen Minuten „nicht aktiv“ angezeigt haben. Wie kann ich zur vorherigen Funktionsweise zurückkehren? Was hat die ursprüngliche Funktionsweise geändert?

Hallo @bob,

Ich stimme zu, ich habe das gleiche Problem bei mir :smiley:

Ich habe einen PR erstellt, um das Problem zu beheben:

https://github.com/GladysAssistant/Gladys/pull/2871

Das wird in der nächsten Version von Gladys behoben! Danke für den Hinweis!

Hallo, ich habe noch eine Beobachtung. In zwei Szenen stelle ich fest, dass die Bedingung wenn-dann-sonst nicht funktioniert. Beispiel: Ich löse eine Szene durch den Empfang einer HTTP-GET-Anfrage aus. Diese Szene soll prüfen, ob alle Öffnungen geschlossen sind, bevor der Alarmmodus aktiviert wird. Ich hole den letzten Zustand aller Öffnungen ab. Ich mache eine wenn-dann-sonst-Bedingung in der Partition. Wenn ich Bedingungen auf Variablen stelle und eine davon auf „offen“ ist, schalte ich den Alarmmodus auf deaktiviert. Andernfalls aktiviere ich den Alarm. Die Szene berücksichtigt nicht die offene Position einer der Öffnungen, sie geht direkt zum sonst und aktiviert den Alarm, obwohl ein Fenster offen ist. Ich hatte auch das gleiche Problem mit einer anderen Szene mit nur einer Bedingung. Was kann ich gegen dieses Problem tun? Ich möchte hinzufügen, dass ich in dem wenn-Teil ODER-Bedingungen verwende.

entschuldige, nachdem ich recherchiert hatte, was passieren könnte, habe ich verstanden, dass ich die Startseite von Gladys neu starten musste, damit die Bedingungen berücksichtigt werden. Das habe ich gemacht und alles hat funktioniert. Gut zu wissen: Wenn eine Szene widerspenstig ist, kann das Neu starten von Gladys die Situation entspannen.