Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWS IoT Events restrizioni e limitazioni del modello di rilevatore
I seguenti aspetti sono importanti da considerare quando si crea un modello di rilevatore.
- Come usare il campo
actions
-
Il
actions
campo è un elenco di oggetti. È possibile avere più di un oggetto, ma è consentita una sola azione in ogni oggetto.Esempio
"actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } { "setVariable": { "variableName": "temperatureIsTooHigh", "value": "$variable.temperatureIsTooHigh - 1" } } ]
- Come usare il
condition
campo -
Il
condition
campo è obbligatorio per gli altri casitransitionEvents
ed è facoltativo.Se il
condition
campo non è presente, è equivalente a"condition": true
.Il risultato della valutazione di un'espressione condizionale deve essere un valore booleano. Se il risultato non è un valore booleano, è equivalente
false
e non avvierà la transizioneactions
o verso il valore specificato nell'nextState
evento. - Disponibilità di valori variabili
-
Per impostazione predefinita, se il valore di una variabile è impostato in un evento, il nuovo valore non è disponibile o non viene utilizzato per valutare le condizioni di altri eventi dello stesso gruppo. Il nuovo valore non è disponibile o non è utilizzato in una condizione di evento nello stesso
onInput
onExit
campoonEnter
o.Imposta il
evaluationMethod
parametro nella definizione del modello del rilevatore per modificare questo comportamento. QuandoevaluationMethod
è impostato suSERIAL
, le variabili vengono aggiornate e le condizioni degli eventi vengono valutate nell'ordine in cui gli eventi sono definiti. Altrimenti, quando è impostatoBATCH
oevaluationMethod
è impostato come predefinito, le variabili all'interno di uno stato vengono aggiornate e gli eventi all'interno di uno stato vengono eseguiti solo dopo aver valutato tutte le condizioni dell'evento.Nello
"Dangerous"
stato, nelonInput
campo,"$variable.pressureThresholdBreached"
viene diminuito di uno nel"Pressure Okay"
caso in cui la condizione sia soddisfatta (quando la pressione in ingresso corrente è inferiore o uguale a 70).{ "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] }
Il rilevatore dovrebbe tornare allo
"Normal"
stato quando"$variable.pressureThresholdBreached"
raggiunge lo 0 (ovvero quando il rilevatore ha ricevuto tre letture di pressione contigue inferiori o uguali a 70). L'"BackToNormal"
evento intransitionEvents
deve verificare che"$variable.pressureThresholdBreached"
sia minore o uguale a 1 (non a 0) e inoltre verificare nuovamente che il valore corrente fornito da"$input.PressureInput.sensorData.pressure"
sia inferiore o uguale a 70."transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ]
Altrimenti, se la condizione verifica solo il valore della variabile, due letture normali seguite da una lettura di sovrapressione soddisferebbero la condizione e tornerebbero allo stato.
"Normal"
La condizione sta esaminando il valore che"$variable.pressureThresholdBreached"
è stato dato durante la precedente elaborazione di un input. Il valore della variabile viene ripristinato a 3 nell'"Overpressurized"
evento, ma ricordate che questo nuovo valore non è ancora disponibile per nessunocondition
.Per impostazione predefinita, ogni volta che un controllo entra nel
onInput
campo, acondition
può vedere il valore di una variabile solo com'era all'inizio dell'elaborazione dell'input, prima che venga modificato dalle azioni specificate inonInput
. Lo stesso vale peronEnter
eonExit
. Qualsiasi modifica apportata a una variabile quando entriamo o usciamo dallo stato non è disponibile per altre condizioni specificate nella stessaonEnter
oonExit
nei campi. - Latenza durante l'aggiornamento di un modello di rilevatore
-
Se si aggiorna, si elimina e si ricrea un modello di rilevatore (vedi UpdateDetectorModel), c'è un certo ritardo prima che tutti i rilevatori (istanze) generati vengano eliminati e il nuovo modello venga utilizzato per ricreare i rilevatori. Vengono ricreati dopo l'entrata in vigore del nuovo modello di rilevatore e l'arrivo di nuovi input. Durante questo periodo gli input potrebbero continuare a essere elaborati dai rilevatori generati dalla versione precedente del modello di rilevatore. Durante questo periodo, potreste continuare a ricevere gli avvisi definiti dal modello di rilevatore precedente.
- Spazi nei tasti di input
-
Gli spazi sono consentiti nelle chiavi di input, ma i riferimenti alla chiave devono essere racchiusi tra parentesi inverse, sia nella definizione dell'attributo di input che quando il valore della chiave è referenziato in un'espressione. Ad esempio, dato un payload di messaggi come il seguente:
{ "motor id": "A32", "sensorData" { "motor pressure": 56, "motor temperature": 39 } }
Utilizzate quanto segue per definire l'input.
{ "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.`motor pressure`" }, { "jsonPath": "`motor id`" } ] } }
In un'espressione condizionale, è necessario fare riferimento al valore di qualsiasi chiave di questo tipo utilizzando anche i backtick.
$input.PressureInput.sensorData.`motor pressure`