

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](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

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
<a name="iotevents-expressions"></a>

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.

**Topics**
+ [Syntax zum Filtern von Gerätedaten und zum Definieren von Aktionen in AWS IoT Events](#expression-syntax)
+ [Ausdrucksbeispiele und Verwendung für AWS IoT Events](expression-usage.md)

## Syntax zum Filtern von Gerätedaten und zum Definieren von Aktionen in AWS IoT Events
<a name="expression-syntax"></a>

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
<a name="expression-literal"></a>
+ Ganzzahl
+ Dezimal
+ Zeichenfolge
+ Boolesch

### Betreiber
<a name="expression-operator"></a>

Unär  
+ Nicht (Boolean): `!`
+ Nicht (bitweise): `~`
+ Minus (Arithmetik): `-`

Zeichenfolge  
+ 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 ^ 5` `8`
+ 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
<a name="expression-function"></a>

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, `true` ob 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 an`detectorModelDefinition.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, `TemperatureChecked` und`RecordUpdated`. Sie haben im `TemperatureChecked` Bundesstaat einen Timer erstellt. Sie müssen den `TemperatureChecked` Bundesstaat zuerst besuchen, bevor Sie den Timer im `RecordUpdated` Bundesstaat verwenden können.  
Um die Genauigkeit zu gewährleisten, sollte ein Timer mindestens 60 Sekunden eingestellt werden.  
`timeout()`gibt `true` nur das erste Mal zurück, wenn der Timer nach Ablauf des Timers zum ersten Mal überprüft wird, und kehrt `false` danach zurück.  
`convert(type, expression)`  
Ergibt den Wert des Ausdrucks, der in den angegebenen Typ konvertiert wurde. Der *type* Wert muss `String``Boolean`, oder `Decimal` sein. 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 der `actions` Ausdruck auftritt, `false` und löst den Übergang zum `nextState` angegebenen Wert nicht aus.  
`isNull(expression)`  
Wird ausgewertet, `true` ob der Ausdruck Null zurückgibt. Wenn die Eingabe beispielsweise die Nachricht `MyInput` empfängt`{ "a": null }`, wird Folgendes als ausgewertet`true`, aber als `isUndefined($input.MyInput.a)` ausgewertet. `false`  

```
isNull($input.MyInput.a)
```  
`isUndefined(expression)`  
Wird als undefiniert ausgewertet, `true` wenn der Ausdruck undefiniert ist. Wenn die Eingabe beispielsweise die Nachricht `MyInput` empfängt`{ "a": null }`, wird Folgendes als ausgewertet`false`, aber `isNull($input.MyInput.a)` als ausgewertet. `true`  

```
isUndefined($input.MyInput.a)
```  
`triggerType("type")`  
Der *type* Wert kann oder sein. `"Message"` `"Timer"` Prüft, `true` ob 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, `true` ob die Ereignisbedingung, in der sie auftritt, ausgewertet wird, weil die angegebene Eingabemeldung empfangen wurde. Wenn die Eingabe beispielsweise die Nachricht `Command` empfängt`{ "value": "Abort" }`, wird Folgendes als ausgewertet. `true`   

```
currentInput("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, `true` ob der erste Zeichenkettenausdruck mit dem zweiten Zeichenkettenausdruck beginnt. Wenn die Eingabe beispielsweise die Nachricht `MyInput` empfängt`{ "status": "offline"}`, wird Folgendes als ausgewertet. `true`  

```
startsWith($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, `true` ob der erste Zeichenkettenausdruck mit dem zweiten Zeichenkettenausdruck endet. Wenn die Eingabe beispielsweise die Nachricht `MyInput` empfängt`{ "status": "offline" }`, wird Folgendes als ausgewertet. `true`  

```
endsWith($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, `true` ob der erste Zeichenkettenausdruck den zweiten Zeichenkettenausdruck enthält. Wenn die Eingabe beispielsweise die Nachricht `MyInput` empfängt`{ "status": "offline" }`, wird Folgendes als ausgewertet. `true`  

```
contains($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 `MyInput` empfängt`{ "value1": 13, "value2": 5 }`, wird Folgendes als ausgewertet. `13`  

```
bitor($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 `MyInput` empfängt`{ "value1": 13, "value2": 5 }`, wird Folgendes als ausgewertet. `5`   

```
bitand($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 `MyInput` empfängt`{ "value1": 13, "value2": 5 }`, wird Folgendes als ausgewertet. `8`  

```
bitxor($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 `MyInput` empfängt`{ "value": 13 }`, wird Folgendes als ausgewertet. `-14`  

```
bitnot($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
<a name="expression-reference"></a>

Eingaben  
`$input.input-name.path-to-data`  
`input-name`ist eine Eingabe, die Sie mithilfe der [CreateInput](https://docs.aws.amazon.com/iotevents/latest/apireference/API_CreateInput.html)Aktion erstellen.  
Wenn Sie beispielsweise eine Eingabe benannt haben, `TemperatureInput` für die Sie `inputDefinition.attributes.jsonPath` Einträ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 `temperature` auf den Wert des Felds zu verweisen.  

```
$input.TemperatureInput.temperature
```
Bei Feldern, deren Werte Arrays sind, können Sie mit Hilfe `[n]` von auf Elemente des Arrays verweisen. Zum Beispiel bei den folgenden Werten:  

```
{
    "temperatures": [
      78.4,
      77.9,
      78.8
    ],
    "date": "2018-10-03T16:09:09Z"
  }
```
Auf den Wert `78.8` kann mit dem folgenden Befehl verwiesen werden.  

```
$input.TemperatureInput.temperatures[2]
```

Variablen  
`$variable.variable-name`  
Das `variable-name` ist eine Variable, die Sie mithilfe der [CreateDetectorModel](https://docs.aws.amazon.com/iotevents/latest/apireference/API_CreateDetectorModel.html)Aktion definiert haben.  
Wenn Sie beispielsweise eine Variable benannt haben, `TechnicianID` die Sie mithilfe definiert haben`detectorDefinition.states.onInputEvents.actions.setVariable.variableName`, können Sie mit dem folgenden Befehl auf den Wert (Zeichenfolge) verweisen, der der Variablen zuletzt zugewiesen wurde.  

```
$variable.TechnicianID
```
Sie können die Werte von Variablen nur mithilfe der `setVariable` Aktion 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 Wert `null` nicht 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:<a name="expression-reference-type-compatibility"></a>
+ 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 `2` ist Integer beispielsweise ein Operand sowohl der `==` Operatoren als auch. `&&` Um sicherzustellen, dass die Operanden kompatibel sind `$variable.testVariable + 1` und auf eine Ganzzahl oder Dezimalzahl verweisen `$variable.testVariable` müssen.

  Außerdem `1` ist Integer ein Operand des Operators`+`. `$variable.testVariable`Muss 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("time-name")` Funktion ist beispielsweise eine Zeichenfolge mit doppelten Anführungszeichen als Argument erforderlich. Wenn Sie einen Verweis für den *timer-name* Wert verwenden, müssen Sie auf eine Zeichenfolge mit doppelten Anführungszeichen verweisen.

  ```
  timeout("timer-name")
  ```
**Anmerkung**  
Wenn Sie für die `convert(type, expression)` Funktion eine Referenz für den *type* Wert verwenden, muss das ausgewertete Ergebnis Ihrer Referenz `String``Decimal`, oder sein`Boolean`.

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  | 

### Substitutionsvorlagen für Ausdrücke AWS IoT Events
<a name="expression-substitution-template"></a>

****  
`'${expression}'`  
Der `${}` identifiziert die Zeichenfolge als interpolierte Zeichenfolge. Das `expression` kann ein beliebiger Ausdruck sein. AWS IoT Events Dazu gehören Operatoren, Funktionen und Verweise.  
Sie haben die [SetVariableAction](https://docs.aws.amazon.com/iotevents/latest/apireference/API_SetVariableAction.html)Aktion beispielsweise verwendet, um eine Variable zu definieren. `variableName` ist `SensorID` und `value` ist `10`. Sie können die folgenden Substitutionsvorlagen erstellen.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iotevents/latest/developerguide/iotevents-expressions.html)

# Ausdrucksbeispiele und Verwendung für AWS IoT Events
<a name="expression-usage"></a>

Sie können Werte in einem Detektormodell auf folgende Weise angeben:
+ Geben Sie unterstützte Ausdrücke in der AWS IoT Events Konsole ein.
+ Übergeben Sie die Ausdrücke an die AWS IoT Events APIs AS-Parameter.

Ausdrücke unterstützen Literale, Operatoren, Funktionen, Verweise und Ersatzvorlagen.

**Wichtig**  
Ihre Ausdrücke müssen auf eine Ganzzahl, eine Dezimalzahl, eine Zeichenfolge oder einen booleschen Wert verweisen.

## Ausdrücke schreiben AWS IoT Events
<a name="write-expressions"></a>

Sehen Sie sich die folgenden Beispiele an, die Ihnen beim Schreiben Ihrer AWS IoT Events Ausdrücke helfen sollen:

**Literal**  
Bei Literalwerten müssen die Ausdrücke einfache Anführungszeichen enthalten. Ein boolescher Wert muss entweder oder `true` sein. `false`  

```
'123'        # Integer
'123.12'     # Decimal
'hello'      # String
'true'       # Boolean
```

**Referenz**  
Bei Referenzen müssen Sie entweder Variablen oder Eingabewerte angeben.  
+ Die folgende Eingabe bezieht sich auf eine Dezimalzahl,. `10.01`

  ```
  $input.GreenhouseInput.temperature
  ```
+ Die folgende Variable verweist auf eine Zeichenfolge,`Greenhouse Temperature Table`.

  ```
  $variable.TableName
  ```

**Vorlage für die Substitution**  
Für eine Substitutionsvorlage müssen Sie `${}` verwenden und die Vorlage muss von einfachen Anführungszeichen umschlossen sein. Eine Substitutionsvorlage kann auch eine Kombination aus Literalen, Operatoren, Funktionen, Referenzen und Substitutionsvorlagen enthalten.  
+ Das ausgewertete Ergebnis des folgenden Ausdrucks ist eine Zeichenfolge,`50.018 in Fahrenheit`.

  ```
  '${$input.GreenhouseInput.temperature * 9 / 5 + 32} in Fahrenheit'
  ```
+ Das ausgewertete Ergebnis des folgenden Ausdrucks ist eine Zeichenfolge,`{\"sensor_id\":\"Sensor_1\",\"temperature\":\"50.018\"}`.

  ```
  '{\"sensor_id\":\"${$input.GreenhouseInput.sensors[0].sensor1}\",\"temperature\":\"${$input.GreenhouseInput.temperature*9/5+32}\"}'
  ```

**Zeichenfolgenverkettung**  
Für eine Zeichenfolgeverkettung müssen Sie `+` verwenden. Eine Zeichenfolgeverkettung kann auch eine Kombination aus Literalen, Operatoren, Funktionen, Referenzen und Substitutionsvorlagen enthalten.  
+ Das ausgewertete Ergebnis des folgenden Ausdrucks ist eine Zeichenfolge,`Greenhouse Temperature Table 2000-01-01`.

  ```
  'Greenhouse Temperature Table ' + $input.GreenhouseInput.date
  ```