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.
AWS IoT Events 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ürtransitionEvents
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 imactions
EreignisnextState
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
FeldonEnter
oder verwendet.Stellen Sie den
evaluationMethod
Parameter in der Definition des Detektormodells ein, um dieses Verhalten zu ändern. Wenn der auf gesetztevaluationMethod
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ürBATCH
oder standardmäßig dieser Wert festgelegt ist.evaluationMethod
Der
"Dangerous"
Status imonInput
Feld"$variable.pressureThresholdBreached"
wird um eins dekrementiert,"Pressure Okay"
falls die 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"
EreignistransitionEvents
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, der von gegeben"$input.PressureInput.sensorData.pressure"
wird, kleiner oder gleich 70 ist."transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ]
Andernfalls, wenn die Bedingung nur auf den Wert der Variablen überprüft wird, 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 dasonInput
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üronEnter
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 denselbenonEnter
oderonExit
-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`