Hinweis zum Ende des Supports: Am 20. Mai 2026 AWS endet der Support für AWS IoT Events. Nach dem 20. Mai 2026 können Sie nicht mehr auf die AWS IoT Events Konsole oder AWS IoT Events die Ressourcen zugreifen. Weitere Informationen finden Sie unter AWS IoT Events Ende des Supports.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Ausdrücke zum Filtern, Transformieren und Verarbeiten von Ereignisdaten
Ausdrücke werden verwendet, um eingehende Daten auszuwerten, Berechnungen durchzuführen und die Bedingungen zu bestimmen, unter denen bestimmte Aktionen oder Zustandsübergänge stattfinden sollten. AWS IoT Events bietet mehrere Möglichkeiten, Werte anzugeben, wenn Sie Detektormodelle erstellen und aktualisieren. Sie können Ausdrücke verwenden, um Literalwerte anzugeben, oder Sie AWS IoT Events können die Ausdrücke auswerten, bevor Sie bestimmte Werte angeben.
Themen
Syntax zum Filtern von Gerätedaten und zum Definieren von Aktionen in AWS IoT Events
Ausdrücke bieten Syntax zum Filtern von Gerätedaten und zum Definieren von Aktionen. Sie können Literale, Operatoren, Funktionen, Verweise und Ersatzvorlagen in den AWS IoT Events Ausdrücken verwenden. Durch die Kombination dieser Komponenten können Sie leistungsstarke und flexible Ausdrücke erstellen, um IoT-Daten zu verarbeiten, Berechnungen durchzuführen, Zeichenketten zu manipulieren und logische Entscheidungen innerhalb Ihrer Detektormodelle zu treffen.
Literale
-
Ganzzahl
-
Dezimal
-
String
-
Boolesch
Operatoren
- Unär
-
-
Nicht (Boolean):
! -
Nicht (bitweise):
~ -
Minus (arithmetisch):
-
-
- String
-
-
Verkettung:
+Beide Operanden müssen Zeichenketten sein. Zeichenkettenliterale müssen in einfache Anführungszeichen (') eingeschlossen werden.
Zum Beispiel: ->
'my' + 'string''mystring'
-
- Arithmetisch
-
-
Zusatz:
+Beide Operanden müssen numerisch sein.
-
Subtraktion:
- -
Einteilung:
/Das Ergebnis der Division ist ein gerundeter Ganzzahlwert, sofern nicht mindestens einer der Operanden (Divisor oder Dividend) ein Dezimalwert ist.
-
Multiplikation:
*
-
- Bitweise (Ganzzahl)
-
-
ODER:
|Zum Beispiel:
13 | 5->13 -
UND:
&Zum Beispiel:
13 & 5->5 -
XOR:
^Zum Beispiel: ->
13 ^ 58 -
NICHT:
~Zum Beispiel:
~13->-14
-
- Boolesch
-
-
Weniger als:
< -
Weniger als oder gleich:
<= -
Gleich:
== -
Nicht gleich:
!= -
Größer als oder gleich:
>= -
Größer als:
> -
UND:
&& -
ODER:
||Anmerkung
Wenn ein Unterausdruck von undefinierte Daten
||enthält, wird dieser Unterausdruck als behandelt.false
-
- Klammern
-
Sie können Klammern verwenden, um Begriffe innerhalb eines Ausdrucks zu gruppieren.
Funktionen zur Verwendung in Ausdrücken AWS IoT Events
AWS IoT Events bietet eine Reihe integrierter Funktionen, um die Möglichkeiten Ihrer Detektormodellausdrücke zu erweitern. Diese Funktionen ermöglichen Timerverwaltung, Typkonvertierung, Nullprüfung, Triggertyp-Identifizierung, Eingabeüberprüfung, Zeichenkettenmanipulation und bitweise Operationen. Durch die Nutzung dieser Funktionen können Sie eine reaktionsschnelle AWS IoT Events Verarbeitungslogik erstellen und so die Gesamteffektivität Ihrer IoT-Anwendungen verbessern.
- Integrierte Funktionen
-
timeout("timer-name")-
Prüft,
trueob der angegebene Timer abgelaufen ist. Ersetzen Sie "timer-name" durch den Namen eines von Ihnen definierten Timers in Anführungszeichen. In einer Ereignisaktion können Sie einen Timer definieren und dann den Timer starten, zurücksetzen oder einen zuvor definierten Timer löschen. Sehen Sie sich das Feld andetectorModelDefinition.states.onInput|onEnter|onExit.events.actions.setTimer.timerName.Auf einen Timer, der in einem Status festgelegt ist, kann in einem anderen Status verwiesen werden. Sie müssen den Status besuchen, in dem Sie den Timer erstellt haben, bevor Sie den Status aufrufen, in dem auf den Timer verwiesen wird.
Ein Detektormodell hat beispielsweise zwei Zustände,
TemperatureCheckedundRecordUpdated. Sie haben imTemperatureCheckedBundesstaat einen Timer erstellt. Sie müssen denTemperatureCheckedBundesstaat zuerst besuchen, bevor Sie den Timer imRecordUpdatedBundesstaat verwenden können.Um die Genauigkeit zu gewährleisten, sollte ein Timer mindestens 60 Sekunden eingestellt werden.
Anmerkung
timeout()gibttruenur das erste Mal zurück, wenn der Timer nach Ablauf des Timers zum ersten Mal überprüft wird, und kehrtfalsedanach zurück. convert(type,expression)-
Ergibt den Wert des Ausdrucks, der in den angegebenen Typ konvertiert wurde. Der
typeWert mussStringBoolean, oderDecimalsein. Verwenden Sie eines dieser Schlüsselwörter oder einen Ausdruck, der eine Zeichenfolge ergibt, die das Schlüsselwort enthält. Nur die folgenden Konvertierungen sind erfolgreich und geben einen gültigen Wert zurück:-
Boolean -> Zeichenfolge
Gibt die Zeichenfolge
"true"oder zurück."false" -
Dezimal -> Zeichenfolge
-
Zeichenfolge -> Boolean
-
Zeichenfolge -> Dezimalzahl
Die angegebene Zeichenfolge muss eine gültige Darstellung einer Dezimalzahl sein, andernfalls schlägt sie
convert()fehl.
Wenn
convert()kein gültiger Wert zurückgegeben wird, ist der Ausdruck, zu dem er gehört, ebenfalls ungültig. Dieses Ergebnis entspricht dem Ereignis, in dem deractionsAusdruck auftritt,falseund löst den Übergang zumnextStateangegebenen Wert nicht aus. -
isNull(expression)-
Wird ausgewertet,
trueob der Ausdruck Null zurückgibt. Wenn die Eingabe beispielsweise die NachrichtMyInputempfängt{ "a": null }, wird Folgendes als ausgewertettrue, aber alsisUndefined($input.MyInput.a)ausgewertet.falseisNull($input.MyInput.a) isUndefined(expression)-
Wird als undefiniert ausgewertet,
truewenn der Ausdruck undefiniert ist. Wenn die Eingabe beispielsweise die NachrichtMyInputempfängt{ "a": null }, wird Folgendes als ausgewertetfalse, aberisNull($input.MyInput.a)als ausgewertet.trueisUndefined($input.MyInput.a) triggerType("type")-
Der
typeWert kann oder sein."Message""Timer"Prüft,trueob die Ereignisbedingung, in der sie auftritt, ausgewertet wird, weil ein Timer abgelaufen ist, wie im folgenden Beispiel.triggerType("Timer")Oder es wurde eine Eingabenachricht empfangen.
triggerType("Message") currentInput("input")-
Prüft,
trueob die Ereignisbedingung, in der sie auftritt, ausgewertet wird, weil die angegebene Eingabemeldung empfangen wurde. Wenn die Eingabe beispielsweise die NachrichtCommandempfängt{ "value": "Abort" }, wird Folgendes als ausgewertet.truecurrentInput("Command")Verwenden Sie diese Funktion, um zu überprüfen, ob die Bedingung ausgewertet wird, weil eine bestimmte Eingabe empfangen wurde und ein Timer nicht abgelaufen ist, wie im folgenden Ausdruck.
currentInput("Command") && $input.Command.value == "Abort"
- Funktionen zum Abgleich von Zeichenketten
-
startsWith(expression1,expression2)-
Prüft,
trueob der erste Zeichenkettenausdruck mit dem zweiten Zeichenkettenausdruck beginnt. Wenn die Eingabe beispielsweise die NachrichtMyInputempfängt{ "status": "offline"}, wird Folgendes als ausgewertet.truestartsWith($input.MyInput.status, "off")Beide Ausdrücke müssen einen Zeichenkettenwert ergeben. Wenn einer der Ausdrücke keinen Zeichenkettenwert ergibt, ist das Ergebnis der Funktion undefiniert. Es werden keine Konvertierungen durchgeführt.
endsWith(expression1,expression2)-
Prüft,
trueob der erste Zeichenkettenausdruck mit dem zweiten Zeichenkettenausdruck endet. Wenn die Eingabe beispielsweise die NachrichtMyInputempfängt{ "status": "offline" }, wird Folgendes als ausgewertet.trueendsWith($input.MyInput.status, "line")Beide Ausdrücke müssen einen Zeichenkettenwert ergeben. Wenn einer der Ausdrücke keinen Zeichenkettenwert ergibt, ist das Ergebnis der Funktion undefiniert. Es werden keine Konvertierungen durchgeführt.
contains(expression1,expression2)-
Prüft,
trueob der erste Zeichenkettenausdruck den zweiten Zeichenkettenausdruck enthält. Wenn die Eingabe beispielsweise die NachrichtMyInputempfängt{ "status": "offline" }, wird Folgendes als ausgewertet.truecontains($input.MyInput.value, "fli")Beide Ausdrücke müssen einen Zeichenkettenwert ergeben. Wenn einer der Ausdrücke keinen Zeichenkettenwert ergibt, ist das Ergebnis der Funktion undefiniert. Es werden keine Konvertierungen durchgeführt.
- Funktionen zur bitweisen Ganzzahlmanipulation
-
bitor(expression1,expression2)-
Wertet das bitweise ODER der Integer-Ausdrücke aus (die binäre OR-Operation wird für die entsprechenden Bits der Ganzzahlen ausgeführt). Wenn die Eingabe beispielsweise die Nachricht
MyInputempfängt{ "value1": 13, "value2": 5 }, wird Folgendes als ausgewertet.13bitor($input.MyInput.value1, $input.MyInput.value2)Beide Ausdrücke müssen einen ganzzahligen Wert ergeben. Wenn einer der Ausdrücke keinen ganzzahligen Wert ergibt, ist das Ergebnis der Funktion undefiniert. Es werden keine Konvertierungen durchgeführt.
bitand(expression1,expression2)-
Wertet das bitweise UND der Integer-Ausdrücke aus (die binäre AND-Operation wird für die entsprechenden Bits der Ganzzahlen ausgeführt). Wenn die Eingabe beispielsweise die Nachricht
MyInputempfängt{ "value1": 13, "value2": 5 }, wird Folgendes als ausgewertet.5bitand($input.MyInput.value1, $input.MyInput.value2)Beide Ausdrücke müssen einen ganzzahligen Wert ergeben. Wenn einer der Ausdrücke keinen ganzzahligen Wert ergibt, ist das Ergebnis der Funktion undefiniert. Es werden keine Konvertierungen durchgeführt.
bitxor(expression1,expression2)-
Wertet das bitweise XOR der Integer-Ausdrücke aus (die binäre XOR-Operation wird für die entsprechenden Bits der Ganzzahlen ausgeführt). Wenn die Eingabe beispielsweise die Nachricht
MyInputempfängt{ "value1": 13, "value2": 5 }, wird Folgendes als ausgewertet.8bitxor($input.MyInput.value1, $input.MyInput.value2)Beide Ausdrücke müssen einen ganzzahligen Wert ergeben. Wenn einer der Ausdrücke keinen ganzzahligen Wert ergibt, ist das Ergebnis der Funktion undefiniert. Es werden keine Konvertierungen durchgeführt.
bitnot(expression)-
Wertet das bitweise NOT des Integer-Ausdrucks aus (die binäre NOT-Operation wird für die Bits der Ganzzahl ausgeführt). Wenn die Eingabe beispielsweise die Nachricht
MyInputempfängt{ "value": 13 }, wird Folgendes als ausgewertet.-14bitnot($input.MyInput.value)Beide Ausdrücke müssen einen ganzzahligen Wert ergeben. Wenn einer der Ausdrücke keinen ganzzahligen Wert ergibt, ist das Ergebnis der Funktion undefiniert. Es werden keine Konvertierungen durchgeführt.
AWS IoT Events Referenz für Eingaben und Variablen in Ausdrücken
- Eingaben
-
$input.input-name.path-to-datainput-nameist eine Eingabe, die Sie mithilfe der CreateInputAktion erstellen.Wenn Sie beispielsweise eine Eingabe benannt haben,
TemperatureInputfür die SieinputDefinition.attributes.jsonPathEinträge definiert haben, werden die Werte möglicherweise in den folgenden verfügbaren Feldern angezeigt.{ "temperature": 78.5, "date": "2018-10-03T16:09:09Z" }Verwenden Sie den folgenden Befehl, um
temperatureauf den Wert des Felds zu verweisen.$input.TemperatureInput.temperatureBei Feldern, deren Werte Arrays sind, können Sie mit Hilfe
[von auf Elemente des Arrays verweisen. Nehmen wir zum Beispiel die folgenden Werte an:n]{ "temperatures": [ 78.4, 77.9, 78.8 ], "date": "2018-10-03T16:09:09Z" }Der Wert
78.8kann mit dem folgenden Befehl referenziert werden.$input.TemperatureInput.temperatures[2] - Variablen
-
$variable.variable-nameDas
ist eine Variable, die Sie mithilfe der CreateDetectorModelAktion definiert haben.variable-nameWenn Sie beispielsweise eine Variable benannt haben,
TechnicianIDdie Sie mithilfe definiert habendetectorDefinition.states.onInputEvents.actions.setVariable.variableName, können Sie mit dem folgenden Befehl auf den Wert (Zeichenfolge) verweisen, der der Variablen zuletzt zugewiesen wurde.$variable.TechnicianIDSie können die Werte von Variablen nur mithilfe der
setVariableAktion festlegen. Sie können Variablen in einem Ausdruck keine Werte zuweisen. Eine Variable kann nicht rückgängig gemacht werden. Sie können ihr beispielsweise den Wertnullnicht zuweisen.
Anmerkung
In Verweisen, die Bezeichner verwenden, die nicht dem Muster (regulärer Ausdruck) folgen[a-zA-Z][a-zA-Z0-9_]*, müssen Sie diese Bezeichner in Backticks () einschließen. ` Beispielsweise _value muss ein Verweis auf eine Eingabe, die MyInput mit einem Feld benannt ist, dieses Feld als angeben. $input.MyInput.`_value`
Wenn Sie Verweise in Ausdrücken verwenden, überprüfen Sie Folgendes:
-
Wenn Sie eine Referenz als Operanden mit einem oder mehreren Operatoren verwenden, stellen Sie sicher, dass alle Datentypen, auf die Sie verweisen, kompatibel sind.
Im folgenden Ausdruck
2ist Integer beispielsweise ein Operand sowohl der==Operatoren als auch.&&Um sicherzustellen, dass die Operanden kompatibel sind$variable.testVariable + 1und auf eine Ganzzahl oder Dezimalzahl verweisen$variable.testVariablemüssen.Außerdem
1ist Integer ein Operand des Operators+.$variable.testVariableMuss daher auf eine Ganzzahl oder Dezimalzahl verweisen.‘$variable.testVariable + 1 == 2 && $variable.testVariable’ -
Wenn Sie eine Referenz als Argument verwenden, das an eine Funktion übergeben wird, stellen Sie sicher, dass die Funktion die Datentypen unterstützt, auf die Sie verweisen.
Für die folgende
timeout("Funktion ist beispielsweise eine Zeichenfolge mit doppelten Anführungszeichen als Argument erforderlich. Wenn Sie einen Verweis für dentime-name")timer-nameWert verwenden, müssen Sie auf eine Zeichenfolge mit doppelten Anführungszeichen verweisen.timeout("timer-name")Anmerkung
Wenn Sie für die
convert(Funktion eine Referenz für dentype,expression)typeWert verwenden, muss das ausgewertete Ergebnis Ihrer ReferenzStringDecimal, oder seinBoolean.
AWS IoT Events Ausdrücke unterstützen die Datentypen Integer, Decimal, String und Boolean. Die folgende Tabelle enthält eine Liste inkompatibler Typpaare.
|
Inkompatible Typenpaare |
|---|
|
Ganzzahl, Zeichenfolge |
|
Ganzzahl, Boolean |
|
Dezimal, Zeichenfolge |
|
Dezimal, Boolesch |
|
Zeichenfolge, Boolean |
Ersatzvorlagen für Ausdrücke AWS IoT Events
-
'${expression}'Der
${}identifiziert die Zeichenfolge als interpolierte Zeichenfolge. Dasexpressionkann ein beliebiger Ausdruck sein. AWS IoT Events Dazu gehören Operatoren, Funktionen und Verweise.Sie haben die SetVariableActionAktion beispielsweise verwendet, um eine Variable zu definieren.
variableNameistSensorIDundvalueist10. Sie können die folgenden Substitutionsvorlagen erstellen.Substitutionsvorlage Ergebniszeichenfolge '${'Sensor ' + $variable.SensorID}'"Sensor 10"'Sensor ' + '${$variable.SensorID + 1}'"Sensor 11"'Sensor 10: ${$variable.SensorID == 10}'"Sensor 10: true"'{\"sensor\":\"${$variable.SensorID + 1}\"}'"{\"sensor"\:\"11\"}"'{\"sensor\":${$variable.SensorID + 1}}'"{\"sensor\":11}"