Szenen: Auslösebedingungen UND

Ich erlaube mir, die Funktionsanfrage von @lmilcent (fast) wortwörtlich zu kopieren: Scènes : condition de déclenchement multiple (ET/OU)

Auch wenn es theoretisch möglich ist, dies mit „Nur fortsetzen, wenn“ und „fiktiven Sensoren“ zu tun, könnte die Integration der Funktion „UND“ als logischer Operator (1+1=1) im Auslöser wirklich interessant sein.

Wofür wäre das gut?

Gib mir ein konkretes Beispiel :slight_smile:

Zum Beispiel im Sommer:

  • es ist hell
    -und
  • es sind mehr als 23°

Dann Aktion: Gladys schließt die Rollläden, um den Raum abzudunkeln

Tatsächlich, sobald eine Aktion mit zwei gleichzeitigen Bedingungen ausgelöst werden soll.

Okay, also im Großen und Ganzen, um diese Szene zu erstellen, haben wir uns darauf geeinigt, dass wir bereits „Es sind mehr als 23°C“ haben, aber uns fehlt „Es ist Tag“ in einer Bedingung in den Szenen?

Du kannst eine Funktionsanfrage erstellen, wenn du das in Gladys sehen möchtest :slight_smile:

Denn wir haben bereits einen Mechanismus für Bedingungen, vielleicht ist dieser Teil nicht klar?

Für mich ja, heute im Auslöser haben wir [« Bedingung1 » oder « Bedingung2 »], aber nicht [« Bedingung1 » und « Bedingung2 »]

Es erscheint mir nicht logisch, aus meiner Sicht, den Bedingungsmechanismus in der „Aktion“ der Szene zu haben. Daher dieser Funktionswunsch, der den Ablauf vereinfachen würde.

@lmilcent, du warst der Initiator des ersten Funktionswunsches, was denkst du?

Vielleicht ist es nur ein Problem der Benennung? Wir könnten den Namen « Aktion » ersetzen, wenn es anders genannt würde, « Aktionen/Bedingungen », « Körper » einer Szene?

Tatsächlich habe ich das Gefühl, dass es oft diese Vermischung zwischen Bedingung und Auslöser gibt.

Nach Definition ist ein Auslöser ein « Ereignis » zu einem bestimmten Zeitpunkt, das zu einem einzigen Zeitpunkt ausgelöst wird. Es ist nicht möglich, mehrere Auslöser gleichzeitig auszulösen.

Andererseits bin ich damit einverstanden, dass es möglich ist, einen Auslöser ZUERST und dann eine Bedingung zu haben, und das ist, was wir derzeit tun:

Man kann in einer Szene derzeit sagen:

WENN ein Sensorwert > 23°C empfangen wird (Ereignis)

UND es ist zwischen 10:00 und 18:00 Uhr (Bedingung)

Die Bedingung ist tatsächlich eine nachträgliche Überprüfung, wenn der Auslöser ausgelöst wurde, denn ein Auslöser ist kein Zustand, der kontinuierlich überprüft wird, sondern ein Ereignis.

Die Bedingung hingegen wird einen Zustand abrufen (hier die Uhrzeit) und dann diesen Zustand in Abhängigkeit von der vom Benutzer eingegebenen Bedingung überprüfen.

Ist das klarer? :slight_smile:

In „Auslöser“ verstehe ich „Welche Bedingungen müssen erfüllt sein, um meine Szene auszulösen?“. In deinem Beispiel sind es „Bedingung 1: >23°“ und „Bedingung 2: zwischen 10 und 18 Uhr“.

Es erscheint mir viel einfacher, sie in den gleichen Block „Auslöser“ zu setzen, anstatt in „Aktionen/Bedingungen“, besonders da das ODER bereits in den Auslösebedingungen vorhanden ist.

Genau das ist es nicht :smiley: Vielleicht ist der Auslöser-Teil in diesem Fall nicht gut erklärt.

Ein Auslöser ist ein Ereignis, keine Bedingung.

Hast du schon einmal Dienste wie IFTTT oder Zapier verwendet?

Ich habe mich stark von diesen Diensten (vor allem Zapier) inspirieren lassen, als ich diesen Teil von Gladys entworfen habe.

Zapier-Seite:

IFTTT-Seite:

Verstehst du die Funktionsweise besser mit der UI von Zapier? Sie machen deutlich, dass ein Auslöser ein Ereignis ist.

Der Unterschied zwischen einem Ereignis und einer Bedingung ist, dass ein Ereignis von außen kommt und wir es einfach in der Szene verwenden:

Neuer Sensorwert über MQTT empfangen => Szene starten
Sonne geht unter => Szene starten
Kalenderereignis beginnt => Szene starten

Vielleicht habe ich aber den Eindruck, dass das Beunruhigende daran ist, dass es möglich ist, mehrere Auslöser zu haben?

Tatsächlich, wenn du 3 Auslöser erstellst, ist das kein « ODER », sondern einfach 3 völlig unabhängige Szenarien.

Es wäre gut, Demo-Themen im Bereich „Szenen“ zu erstellen, den wir gerade erstellt haben, damit es anschaulicher wird.
Die Szenarien-Profis, @Terdious, @lmilcent, @GBoulvin …

Ich verstehe, dass es für mehr Einfachheit einfacher wäre, dies in einem einzigen Feld zu tun: « Auslöser = 23°C UND Zeit > 12h ».

  • Das ist bereits möglich, aber indem man über eine zweite Aktion « Bedingung » geht, wie von @pierre-gilles sehr gut erklärt, und das entspricht einer gewissen Logik und Einfachheit. Der Beweis ist, dass die « Großen » es so machen, sicherlich nach mehreren Überlegungen sind sie zu diesem Ergebnis gekommen.

  • Aber es erscheint natürlicher, es so zu machen, wie von @Fabic beschrieben, aus menschlicher Sicht. Es stimmt, dass ich als neuer Gladys-Nutzer das im Kopf hatte, bevor ich verstand, wie man es mit den 2 Schritten macht. Das heißt, Gladys in einem einzigen Block sagen zu können: Aktiviere die Szene, wenn mein Sensor 23°C erkennt und ich abwesend bin.

Vielleicht gibt es hier ein etwas anderes Thema über die mögliche (oder nicht) Entwicklung der Art und Weise, wie Szenen geschrieben werden.

Entweder indem man die Endung in « Auslöseereignis » ändert und explizit macht, dass die Bedingungen in einem zweiten Aktionsblock sind, oder indem man der grafischen Oberfläche erlaubt, all das zu vereinfachen.
Beispiel:

  • Der Auslöserteil ermöglicht die Verwendung des Inhalts von « Nur fortsetzen, wenn ».
  • Wenn ein Sensor in diesem Block aufgerufen wird, wird er direkt zur Liste (versteckt oder implizit) der Auslöseereignisse hinzugefügt, ebenso wie der « Bedingungs »-Block, der ebenfalls implizit ist.
  • Die Web-UI zeigt dem Benutzer einen einzigen Block an, der die Bedingungen und die Ereignisquellen zur Verwendung enthält, und erledigt die Arbeit, alles so zu formatieren, dass das Backend die Informationen wie bisher erhält.

Ich denke, es handelt sich tatsächlich um ein Problem der allgemeinen Darstellung.

Man sollte die Titel/Beschreibungen verbessern, damit es klarer wird.

Auslöser => Erklären, dass es sich um ein Ereignis handelt
Aktion => Genauere Beschreibung der Aktion oder Bedingung

Allerdings bin ich damit nicht einverstanden, denn es handelt sich um etwas anderes.

Eine Szene in Gladys wird nicht durch ihre Auslöser definiert, ein Auslöser ist optional in einer Szene.

Eine Szene ist eine Abfolge von Aufgaben, einige sind Aktionen, und andere sind Bedingungen, die die Ausführung der Szene stoppen können. Wenn du manuell auf „Start“ klickst, werden auch die Bedingungen ausgeführt, und genau das wollen wir.

Wenn wir anfangen, Auslöser und Aktionen zu vermischen, riskieren wir im Gegenteil, ein falsches „mentales Modell“ davon zu schaffen, was eine Gladys-Szene ist, und im Gegenteil werden die Benutzer noch mehr verunsichert.

Ich denke, es gibt Arbeit an der Terminologie zu leisten: besser erklären, wie man vorgehen soll, die UI etwas anpassen, damit es klarer wird.

Allerdings denke ich nicht, dass es eine gute Idee ist, die Frontend-Oberfläche zu manipulieren, um dem Benutzer vorzugaukeln, dass Gladys auf eine Weise funktioniert, wie sie es nicht tut :slight_smile:

Wäre es möglich, bei der Erstellung der ersten Szenen ein Stück Dokumentation anzuzeigen?
Zum Beispiel bei der Erstellung der ersten 5 Szenen (außer wenn der Benutzer auf „Nicht mehr anzeigen“ klickt), wird oben auf dem Bildschirm eine Zusammenfassung angezeigt:

  • Was eine Szene ist (eine Abfolge von Aktionen, die von Gladys ausgeführt werden)
  • Wie sie ausgelöst wird (manuell / durch ein Ereignis)
  • Was ein Ereignis ist
  • Wie man Bedingungen verwaltet
  • Beispiel oder Link zu einer Seite, die erklärt, wie man zwei Auslöser kombiniert

Ich denke, @pierre-gilles hat damit recht. Ich gebe zu, dass ich es tatsächlich erst heute durch dieses Thema verstanden habe, wie man einen Auslöser von einer bedingten Aktion unterscheidet…!!
Ich bin kein Einstein, aber sicherlich nicht dümmer als andere, und das verdient etwas mehr Klarheit.

Entweder durch kontextuelle Informationen oder Kommentare unter den Blöcken, Modals / Popovers / oder andere, die sich öffnen, um die Erstellung der Szene zu führen.

Meiner Meinung nach verstehe ich die Anfrage von @Fabic so, dass es heute in eine Richtung funktioniert, aber nicht in die andere.

Wenn der Auslöser „Es ist hell“ ist und die Bedingung „Es sind mehr als 23°“ ist, dann wenn es hell ist:

  • entweder ist es < 23°, die Szene wird nicht ausgelöst.
  • oder es ist > 23°, die Szene wird ausgelöst.

Aber wenn eine Stunde später die Temperatur >23° wird, wird die Szene nicht erneut ausgelöst.

Umgekehrt, wenn der Auslöser „Es sind mehr als 23°“ ist und die Bedingung „Es ist hell“ ist, dann wenn es 23° wird:

  • entweder ist es dunkel, die Szene wird nicht ausgelöst.
  • oder es ist hell, die Szene wird ausgelöst.

Aber wenn eine Stunde später es dunkel wird, es wieder hell wird und die Temperatur über 23° bleibt, wird die Szene auch nicht ausgeführt.

Die Lösung, um die Szene auszuführen, bestünde also (vermute ich) darin, die beiden Auslöser auf „ODER“ zu setzen und dann die beiden Bedingungen für die Fortsetzung zu setzen. Sagen wir mal, das sollte funktionieren, oder irre ich mich? Und ist das diese Anzeige, die dich stört @Fabic?

Ja, genau. Dann müssen wir aufhören, von « ODER » bei den Auslösern zu sprechen, ich denke, das hat @Fabic verwirrt. Die Auslöser sind einfach unabhängige Ereignisse, es gibt keinen Vergleich zwischen ihnen.

Das ist möglich, aber ich denke, es ist ergänzend, aber nicht ausreichend. Ein Teil der Benutzer (ich als Erster) schließt diese Art von Tooltips, ohne sie zu lesen.

Die Benutzeroberfläche muss klar sein und für sich selbst sprechen :slight_smile:

Genau, die Events sind auch Bedingungen.

Es bleibt ein ODER, da sie unabhängig sind

Ja, aber das verwirrt die Leute, weil man uns dann ein « UND » verlangt, obwohl es keine Verbindung zwischen zwei Auslösern gibt, es sind Ereignisse.

Ich finde tatsächlich, dass diese Denkweise kompliziert ist.
Tatsächlich könnte man am Ende, um den Geist des Auslösers zu bewahren, auch kombinierte Variablen erstellen.
Beispiel:
Wenn (Variable 1) Temperatur >23°C = wahr UND (Variable 2) Tag = wahr, dann (neue Variable 3) TempJoursup23 = wahr, andernfalls TempJour23 = falsch

Dann wird in der Szene der Auslöser durch die Variable TempJour23 ausgelöst und das war’s.