Restrizioni e limitazioni del modello di rilevatore - AWS IoT Events

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à.

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 casi transitionEvents 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 transizione actions o verso il valore specificato nell'nextStateevento.

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 campo onEnter o.

Imposta il evaluationMethod parametro nella definizione del modello del rilevatore per modificare questo comportamento. Quando evaluationMethod è impostato suSERIAL, le variabili vengono aggiornate e le condizioni degli eventi vengono valutate nell'ordine in cui gli eventi sono definiti. Altrimenti, quando è impostato BATCH o evaluationMethod è 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, nel onInput 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 in transitionEvents 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, a condition 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 per onEnter eonExit. Qualsiasi modifica apportata a una variabile quando entriamo o usciamo dallo stato non è disponibile per altre condizioni specificate nella stessa onEnter o onExit 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`