

Avviso di fine del supporto: il 20 maggio 2026, AWS terminerà il supporto per AWS IoT Events. Dopo il 20 maggio 2026, non potrai più accedere alla AWS IoT Events console o AWS IoT Events alle risorse. Per ulteriori informazioni, consulta [AWS IoT Events Fine del supporto](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

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
<a name="iotevents-restrictions-detector-model"></a>

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.  

**Example**  

```
              "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'`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` campo `onEnter` o.  
Imposta il `evaluationMethod` parametro nella definizione del modello del rilevatore per modificare questo comportamento. Quando `evaluationMethod` è impostato su`SERIAL`, 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 nessuno`condition`.  
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 in`onInput`. Lo stesso vale per `onEnter` e`onExit`. 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 aggiorni, elimini e ricrea un modello di rilevatore (vedi [UpdateDetectorModel](https://docs.aws.amazon.com/iotevents/latest/apireference/API_UpdateDetectorModel.html)), 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 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`
```