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

Create un modello di rilevatore

In questo argomento, definirete un modello di rilevatore (un modello dell'apparecchiatura o del processo) utilizzando gli stati.

Per ogni stato, si definisce una logica condizionale (booleana) che valuta gli input in ingresso per rilevare un evento significativo. Quando viene rilevato un evento, cambia lo stato e può avviare azioni aggiuntive. Questi eventi sono noti come eventi di transizione.

Nei vostri stati, definite anche eventi che possono eseguire azioni ogni volta che il rilevatore entra o esce da quello stato o quando viene ricevuto un input (questi sono noti come OnEnter OnInput eventi OnExit e). Le azioni vengono eseguite solo se la logica condizionale dell'evento restituisce un risultato positivo. true

Per creare un modello di rilevatore
  1. Il primo stato del rilevatore è stato creato per te. Per modificarlo, seleziona il cerchio con l'etichetta State_1 nello spazio di modifica principale.

  2. Nel riquadro Stato, inserisci il nome dello stato e OnEnterscegli Aggiungi evento.

  3. Nella pagina Aggiungi OnEnter evento, inserisci il nome dell'evento e la condizione dell'evento. In questo esempio, immettere true per indicare che l'evento viene sempre avviato quando viene inserito lo stato.

  4. In Azioni relative agli eventi, scegli Aggiungi azione.

  5. In Azioni relative agli eventi, procedi come segue:

    1. Seleziona Imposta variabile

    2. Per Operazione variabile, scegli Assegna valore.

    3. In Nome variabile, immettete il nome della variabile da impostare.

    4. Per Valore variabile, immettere il valore 0 (zero).

  6. Seleziona Salva.

    Una variabile, come quella che hai definito, può essere impostata (dato un valore) in qualsiasi caso nel modello del rilevatore. È possibile fare riferimento al valore della variabile (ad esempio, nella logica condizionale di un evento) solo dopo che il rilevatore ha raggiunto uno stato ed eseguito un'azione in cui è definito o impostato.

  7. Nel riquadro Stato, scegliete la X accanto a Stato per tornare alla palette del modello Detector.

  8. Per creare un secondo stato del rilevatore, nella palette del modello Detector, scegli Stato e trascinalo nello spazio di modifica principale. Questo crea uno stato intitolato. untitled_state_1

  9. Pausa sul primo stato (Normale). Viene visualizzata una freccia sulla circonferenza dello stato.

  10. Fate clic e trascinate la freccia dal primo stato al secondo stato. Viene visualizzata una linea diretta dal primo stato al secondo stato (etichettata Senza titolo).

  11. Seleziona la riga Senza titolo. Nel riquadro Evento di transizione, inserite un nome di evento e una logica di attivazione dell'evento.

  12. Nel riquadro Evento di transizione, scegli Aggiungi azione.

  13. Nel riquadro Aggiungi azioni relative agli eventi di transizione, scegli Aggiungi azione.

  14. Per Scegli un'azione, scegli Imposta variabile.

    1. Per Operazione variabile, scegli Assegna valore.

    2. Per Nome variabile, inserite il nome della variabile.

    3. In Assegna valore, inserisci un valore come: $variable.pressureThresholdBreached + 3

    4. Seleziona Salva.

  15. Selezionate il secondo stato untitled_state_1.

  16. Nel riquadro Stato, inserisci il nome dello stato e per On Enter, scegli Aggiungi evento.

  17. Nella pagina Aggiungi OnEnter evento, inserisci il nome dell'evento e la condizione dell'evento. Selezionare Add action (Aggiungi operazione).

  18. Per Scegli un'azione, scegli Invia SNS messaggio.

    1. Per SNSargomento, inserisci l'obiettivo ARN del tuo SNS argomento Amazon.

    2. Seleziona Salva.

  19. Continua ad aggiungere gli eventi dell'esempio.

    1. Per OnInput, scegliete Aggiungi evento e inserite e salvate le seguenti informazioni sull'evento.

      Event name: Overpressurized Event condition: $input.PressureInput.sensorData.pressure > 70 Event actions: Set variable: Variable operation: Assign value Variable name: pressureThresholdBreached Assign value: 3
    2. Per OnInput, scegli Aggiungi evento e inserisci e salva le seguenti informazioni sull'evento.

      Event name: Pressure Okay Event condition: $input.PressureInput.sensorData.pressure <= 70 Event actions: Set variable: Variable operation: Decrement Variable name: pressureThresholdBreached
    3. Per OnExit, scegli Aggiungi evento e inserisci e salva le seguenti informazioni sull'evento utilizzando ARN l'SNSargomento Amazon che hai creato.

      Event name: Normal Pressure Restored Event condition: true Event actions: Send SNS message: Target arn: arn:aws:sns:us-east-1:123456789012:pressureClearedAction
  20. Fai una pausa sul secondo stato (Pericoloso). Viene visualizzata una freccia sulla circonferenza dello stato

  21. Fate clic e trascinate la freccia dal secondo stato al primo stato. Viene visualizzata una linea diretta con l'etichetta Untitled.

  22. Scegliete la riga Senza titolo e nel riquadro Evento di transizione, inserite il nome dell'evento e la logica di attivazione dell'evento utilizzando le seguenti informazioni.

    { Event name: BackToNormal Event trigger logic: $input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 0 }

    Per ulteriori informazioni sul motivo per cui testiamo il $input valore e il $variable valore nella logica di attivazione, consulta la voce relativa alla disponibilità dei valori delle variabili in. Restrizioni e limitazioni del modello di rilevatore

  23. Seleziona lo stato di inizio. Per impostazione predefinita, questo stato è stato creato quando è stato creato un modello di rilevatore). Nel riquadro Start, scegliete lo stato di destinazione (ad esempio, Normale).

  24. Quindi, configura il modello del rilevatore per ascoltare gli input. Nell'angolo in alto a destra, scegli Pubblica.

  25. Nella pagina Publish Detector model, procedi come segue.

    1. Immettete il nome del modello del rilevatore, una descrizione e il nome di un ruolo. Questo ruolo è stato creato per te.

    2. Scegli Crea un rilevatore per ogni valore chiave univoco. Per creare e utilizzare il tuo ruolo, segui i passaggi indicati Configurazione delle autorizzazioni per AWS IoT Events e inseriscilo come ruolo qui.

  26. Per la chiave di creazione del rilevatore, scegli il nome di uno degli attributi dell'input che hai definito in precedenza. L'attributo scelto come chiave di creazione del rilevatore deve essere presente in ogni messaggio di input e deve essere unico per ogni dispositivo che invia messaggi. Questo esempio utilizza l'attributo motorid.

  27. Scegliere Save and publish (Salva e pubblica).

Nota

Il numero di rilevatori univoci creati per un determinato modello di rilevatore si basa sui messaggi di input inviati. Quando viene creato un modello di rilevatore, viene selezionata una chiave dagli attributi di input. Questa chiave determina quale istanza del rilevatore utilizzare. Se la chiave non è mai stata vista prima (per questo modello di rilevatore), viene creata una nuova istanza del rilevatore. Se la chiave è già stata vista, utilizziamo l'istanza del rilevatore esistente corrispondente a questo valore chiave.

È possibile creare una copia di backup della definizione del modello di rilevatore (perJSON) ricreare o aggiornare il modello del rilevatore o utilizzarla come modello per creare un altro modello di rilevatore.

È possibile eseguire questa operazione dalla console o utilizzando il seguente comando. CLI Se necessario, modificate il nome del modello di rilevatore in modo che corrisponda a quello usato quando lo avete pubblicato nel passaggio precedente.

aws iotevents describe-detector-model --detector-model-name motorDetectorModel > motorDetectorModel.json

Questo crea un file (motorDetectorModel.json) con contenuti simili al seguente.

{ "detectorModel": { "detectorModelConfiguration": { "status": "ACTIVE", "lastUpdateTime": 1552072424.212, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1552072424.212, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "key": "motorid", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" }, "detectorModelDefinition": { "states": [ { "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70", "nextState": "Dangerous" } ], "events": [] }, "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ], "condition": "true" } ] }, "onExit": { "events": [] } }, { "onInput": { "transitionEvents": [ { "eventName": "Back to Normal", "actions": [], "condition": "$variable.pressureThresholdBreached <= 1 && $input.PressureInput.sensorData.pressure <= 70", "nextState": "Normal" } ], "events": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70" }, { "eventName": "Pressure Okay", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ], "condition": "$input.PressureInput.sensorData.pressure <= 70" } ] }, "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:MyIoTButtonSNSTopic" } } ], "condition": "$variable.pressureThresholdBreached > 1" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:IoTVirtualButtonTopic" } } ], "condition": "true" } ] } } ], "initialStateName": "Normal" } } }