-
Notifications
You must be signed in to change notification settings - Fork 9
[DE] Bedingte Trigger
Mithilfe von bedingten Triggern kann für alle Arten von Triggern (Zeit, Astro) eine zusätzliche Abfrage eingebaut werden, die beim Auslösen des Triggers durchgeführt wird. Ist diese Abfrage (Bedingung) war, löst der Trigger mit dem eingestellten Wert aus. Trifft die Bedingung nicht zu, geschieht nichts.
Um bedingte Trigger anzulegen, muss folgendermaßen vorgegangen werden:
-
Im Vis Edit Modus müssen für jedes Widget eine Reihe von States angegeben werden, die für das Anlegen von Bedingungen zur Verfügung stehen sollen. Dies geschieht mit den Optionen Anzahl State für Bedingungen, Bedingung State Id[1-10], Bedingung State Alias[1-10].
-
Im Vis View Modus:
2.1. Editieren Sie den Trigger, der eine Bedingung erhalten soll.
2.2. Klicken Sie anschließend auf das Plus Symbol neben Bedingung.
2.3. Wählen Sie einen State aus, der überprüft werden soll.
2.4. Mit Gleich oder Ungleich wählen Sie aus, ob der Trigger auslöst, wenn der erste Wert gleich bzw. ungleich dem nächsten Wert ist.
2.5 Mit Mit Konstante wählen Sie aus, ob der Wert, den der in 2.3 ausgewählte State zum Zeitpunkt, an dem der Trigger auslöst, gegen einen festen, also konstanten, Wert oder gegen den Wert eines anderen States verglichen werden soll.
2.5.1. Mit Konstante: Geben Sie im letzten Eingabefeld einen Wert an, den der in 2.3 ausgewählte State haben, bzw. nicht haben soll (abhängig von 2.4). Dabei wird beim Auslösen des Triggers der Wert des States abgefragt, in eine Zeichenkette umgewandelt und anschließend mit dem Konstanten Wert verglichen. Dabei wird ein boolscher State zu
true
oderfalse
. Dies sollte auch mit Zahlen funktionieren, nur bei Gleitkommazahlen aufpassen.2.5.2 Ohne Konstante: Wählen Sie einen zweiten State aus. Beim Auslösen des Triggers werden die aktuellen Werte beider States abgefragt, in Zeichenketten umgewandelt und miteinander verglichen.
Über das Widget können nur einfache Gleichheitsbedinugungen angelegt werden. Werden komplexere Bedingungen benötigt, müssen diese über JavaScript-Code oder über ein Blockly-Script im JavaScript Adapter implementiert werden und über einen State abfragbar gemacht werden.
- Legen Sie einen neuen State, der die Bedingung abbildet an, z.B. unter
0_userdata.0
. Der State sollte vom TypDatenpunkt
und vom DatenpunkttypLogikwert
sein. - Erstellen Sie ein neues Script. Es können meherere komplexe Bedingungen in einem Script implementiert werden.
- Hier ist ein Beispiel für ein solches Script, die eigene Implementierung kann natürlich hiervon abweichen:
on({
id: [ // Aufführen aller States, die an der Bedingung beteiligt sind
'0_userdata.0.bool1',
'0_userdata.0.number1',
'0_userdata.0.string1'
],
change: 'any'`
},
() => {
// Abfragen der aktuellen Werte der States
const bool1 = getState('0_userdata.0.bool1').val;
const number1 = getState('0_userdata.0.number1').val;
const string1 = getState('0_userdata.0.string1').val;
// Überprüfen der Bedingung
const result = bool1 && number1 > 10 && string1.startsWith('abc');
// Schreiben des Ergebnisses in den State, der die Bedingung abbildet
setState('0_userdata.0.KomplexeBedingung', result);
}
);
- Einstellen, dass der neu angelegte State im View für Bedingungen zur Verfügung steht.
- Hinzufügen einer Bedingung zu einem Trigger im Vis View mit den Einstellungen
Gleich
Mit Konstante
true
.