Einschränkungen und Einschränkungen des Detektormodells - AWS IoT Events

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.

Einschränkungen und Einschränkungen des Detektormodells

Bei der Erstellung eines Detektormodells sind die folgenden Punkte zu beachten.

Wie benutzt man das actions Feld

Das actions Feld ist eine Liste von Objekten. Sie können mehr als ein Objekt haben, aber in jedem Objekt ist nur eine Aktion zulässig.

Beispiel
"actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } { "setVariable": { "variableName": "temperatureIsTooHigh", "value": "$variable.temperatureIsTooHigh - 1" } } ]
Wie benutzt man das condition Feld

Das condition ist erforderlich für transitionEvents und in anderen Fällen optional.

Wenn das condition Feld nicht vorhanden ist, entspricht es"condition": true.

Das Ergebnis der Auswertung eines Bedingungsausdrucks sollte ein boolescher Wert sein. Wenn das Ergebnis kein boolescher Wert ist, entspricht es dem im Ereignis angegebenen Wert false und leitet den Übergang zu dem im actions Ereignis nextState angegebenen Wert nicht ein.

Verfügbarkeit von Variablenwerten

Wenn der Wert einer Variablen in einem Ereignis festgelegt wird, ist ihr neuer Wert standardmäßig nicht verfügbar oder wird nicht verwendet, um Bedingungen in anderen Ereignissen in derselben Gruppe auszuwerten. Der neue Wert ist nicht verfügbar oder wird in einer Ereignisbedingung im gleichen onInput onExit Feld onEnter oder verwendet.

Stellen Sie den evaluationMethod Parameter in der Definition des Detektormodells ein, um dieses Verhalten zu ändern. Wenn der auf gesetzt evaluationMethod istSERIAL, werden Variablen aktualisiert und die Ereignisbedingungen werden in der Reihenfolge ausgewertet, in der die Ereignisse definiert sind. Andernfalls werden Variablen innerhalb eines Zustands aktualisiert, und Ereignisse innerhalb eines Zustands werden erst ausgeführt, wenn alle Ereignisbedingungen ausgewertet wurden, wenn für BATCH oder standardmäßig dieser Wert festgelegt ist. evaluationMethod

Der "Dangerous" Status im onInput Feld "$variable.pressureThresholdBreached" wird um eins verringert, wenn die "Pressure Okay" Bedingung erfüllt ist (wenn der aktuelle Eingangsdruck kleiner oder gleich 70 ist).

{ "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] }

Der Detektor sollte wieder in den "Normal" Zustand zurückkehren, wenn 0 "$variable.pressureThresholdBreached" erreicht ist (d. h. wenn der Detektor drei aufeinanderfolgende Druckwerte erhalten hat, die kleiner oder gleich 70 sind). Das "BackToNormal" Ereignis transitionEvents muss testen, ob der Wert kleiner oder gleich 1 (nicht 0) "$variable.pressureThresholdBreached" ist. Außerdem muss erneut überprüft werden, ob der aktuelle Wert von kleiner oder gleich 70 "$input.PressureInput.sensorData.pressure" ist.

"transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ]

Andernfalls, wenn die Bedingung nur den Wert der Variablen prüft, würden zwei normale Messwerte, gefolgt von einer Überdruckmessung, die Bedingung erfüllen und in den "Normal" Zustand zurückkehren. Bei der Bedingung wird der Wert berücksichtigt, der bei der vorherigen Verarbeitung einer Eingabe angegeben "$variable.pressureThresholdBreached" wurde. Der Wert der Variablen wird in diesem "Overpressurized" Fall auf 3 zurückgesetzt, aber denken Sie daran, dass dieser neue Wert noch für niemanden verfügbar istcondition.

Standardmäßig condition kann jedes Mal, wenn ein Steuerelement das onInput Feld betritt, der Wert einer Variablen nur so sehen, wie er zu Beginn der Verarbeitung der Eingabe war, bevor er durch die unter angegebenen Aktionen geändert wirdonInput. Das Gleiche gilt für onEnter undonExit. Jede Änderung, die an einer Variablen vorgenommen wird, wenn wir den Status betreten oder verlassen, ist nicht für andere Bedingungen verfügbar, die in denselben onEnter oder onExit -Feldern angegeben sind.

Latenz bei der Aktualisierung eines Detektormodells

Wenn Sie ein Detektormodell aktualisieren, löschen und neu erstellen (siehe UpdateDetectorModel), kommt es zu einer gewissen Verzögerung, bis alle generierten Detektoren (Instanzen) gelöscht werden und das neue Modell zur Neuerstellung der Detektoren verwendet wird. Sie werden neu erstellt, nachdem das neue Detektormodell wirksam wird und neue Eingaben eintreffen. Während dieser Zeit werden Eingaben möglicherweise weiterhin von den Detektoren verarbeitet, die von der vorherigen Version des Detektormodells erzeugt wurden. Während dieses Zeitraums erhalten Sie möglicherweise weiterhin Warnmeldungen, die durch das vorherige Meldermodell definiert wurden.

Leerzeichen in den Eingabetasten

Leerzeichen sind in Eingabeschlüsseln zulässig, aber Verweise auf den Schlüssel müssen in Backticks eingeschlossen werden, und zwar sowohl in der Definition des Eingabeattributs als auch dann, wenn der Wert des Schlüssels in einem Ausdruck referenziert wird. Zum Beispiel bei einer Nachrichtennutzlast wie der folgenden:

{ "motor id": "A32", "sensorData" { "motor pressure": 56, "motor temperature": 39 } }

Verwenden Sie Folgendes, um die Eingabe zu definieren.

{ "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.`motor pressure`" }, { "jsonPath": "`motor id`" } ] } }

In einem bedingten Ausdruck müssen Sie auch mithilfe von Backticks auf den Wert eines solchen Schlüssels verweisen.

$input.PressureInput.sensorData.`motor pressure`