Utilizzo AWS IoT Events per monitorare i dispositivi IoT - 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à.

Utilizzo AWS IoT Events per monitorare i dispositivi IoT

È possibile AWS IoT Events utilizzarlo per monitorare i dispositivi o i processi e intervenire in base a eventi significativi. Per farlo, segui questi passaggi di base:

Crea input

È necessario disporre di un modo per i dispositivi e i processi di inserire i dati di telemetria. AWS IoT EventsPuoi farlo inviando messaggi come input a. AWS IoT EventsÈ possibile inviare messaggi come input in diversi modi:

  • Usa l' BatchPutMessageoperazione.

  • Definite un'iotEventsazione per il motore delle AWS IoT Core regole. La regola-azione inoltra i dati del messaggio dall'utente a. AWS IoT Events

  • In AWS IoT Analytics, usa l'CreateDatasetoperazione per creare un set di dati con. contentDeliveryRules Queste regole specificano l' AWS IoT Events input a cui i contenuti del set di dati vengono inviati automaticamente.

  • Definite un'iotEventsazione in un modello onExit o transitionEvents evento di onInput un AWS IoT Events rilevatore. Le informazioni sull'istanza del modello di rilevatore e sull'evento che ha avviato l'azione vengono restituite al sistema come input con il nome specificato.

Prima che i dispositivi inizino a inviare dati in questo modo, è necessario definire uno o più input. A tale scopo, assegnate un nome a ogni input e specificate quali campi dei dati dei messaggi in arrivo vengono monitorati dall'input. AWS IoT Events riceve il proprio input, sotto forma di JSON payload, da molte fonti. Ogni input può essere utilizzato da solo o combinato con altri input per rilevare eventi più complessi.

Crea un modello di rilevatore

Definite un modello di rilevatore (un modello dell'apparecchiatura o del processo) utilizzando gli stati. Per ogni stato, definisci la logica condizionale (booleana) che valuta gli input in entrata per rilevare eventi significativi. Quando viene rilevato un evento, può modificare lo stato o avviare azioni personalizzate o predefinite utilizzando altri servizi. AWS È possibile definire eventi aggiuntivi che avviano azioni quando si entra o si esce da uno stato e, facoltativamente, quando viene soddisfatta una condizione.

In questo tutorial, invii un SNS messaggio Amazon come azione quando il modello entra o esce da un determinato stato.

Monitora un dispositivo o un processo

Se stai monitorando diversi dispositivi o processi, specifichi un campo in ogni input che identifica il particolare dispositivo o processo da cui proviene l'input. (Vedi il key campo inCreateDetectorModel.) Quando viene identificato un nuovo dispositivo (viene visualizzato un nuovo valore nel campo di immissione identificato dakey), viene creato un rilevatore. (Ogni rilevatore è un'istanza del modello di rilevatore.) Quindi il nuovo rilevatore continua a rispondere agli input provenienti da quel dispositivo fino a quando il modello di rilevatore non viene aggiornato o eliminato.

Se stai monitorando un singolo processo (anche se diversi dispositivi o sottoprocessi inviano input), non specifichi un campo identificativo univoco. key In questo caso, viene creato un singolo rilevatore (istanza) all'arrivo del primo input.

Invia messaggi come input al tuo modello di rilevatore

Esistono diversi modi per inviare un messaggio da un dispositivo o un processo come input in un AWS IoT Events rilevatore che non richiedono l'esecuzione di una formattazione aggiuntiva del messaggio. In questo tutorial, usi la AWS IoT console per scrivere una regola AWS IoT Events d'azione per il motore di AWS IoT Core regole che inoltra i dati dei messaggi. AWS IoT Events Per fare ciò, identificate l'input per nome. Quindi continui a utilizzare la AWS IoT console per generare alcuni messaggi che vengono inoltrati come input a. AWS IoT Events

Come fai a sapere di quali stati hai bisogno in un modello di rilevatore?

Per determinare quali stati deve avere il modello di rilevatore, decidete innanzitutto quali azioni potete intraprendere. Ad esempio, se la vostra automobile funziona a benzina, guardate l'indicatore del livello del carburante quando iniziate un viaggio per vedere se avete bisogno di fare rifornimento. Qui hai un'unica cosa da fare: dire all'autista di «andare a fare benzina». Il modello del rilevatore necessita di due stati: «l'auto non ha bisogno di carburante» e «l'auto ha bisogno di carburante». In generale, si desidera definire uno stato per ogni azione possibile, più uno in più per quando non è richiesta alcuna azione. Funziona anche se l'azione stessa è più complicata. Ad esempio, potresti voler cercare e includere informazioni su dove trovare la stazione di rifornimento più vicina o il prezzo più basso, ma lo fai quando invii il messaggio «vai a prendere benzina».

Per decidere in quale stato entrare successivamente, si esaminano gli input. Gli input contengono le informazioni di cui hai bisogno per decidere in quale stato ti trovi. Per creare un input, selezionate uno o più campi in un messaggio inviato dal dispositivo o dal processo che vi aiuta a decidere. In questo esempio, è necessario un input che indichi il livello attuale del carburante («percentuale di pieno»). Forse la tua auto ti sta inviando diversi messaggi, ognuno con diversi campi. Per creare questo input, è necessario selezionare il messaggio e il campo che riporta il livello attuale dell'indicatore del gas. La durata del viaggio che stai per intraprendere («distanza dalla destinazione») può essere codificata per semplificare le cose; puoi utilizzare la durata media del viaggio. Farai alcuni calcoli in base all'input (in quanti galloni si traduce quella percentuale totale? è la lunghezza media del viaggio superiore alle miglia percorribili, considerando i galloni a disposizione e la media delle «miglia per gallone»). Esegui questi calcoli e invii messaggi negli eventi.

Finora hai due stati e un input. È necessario un evento nel primo stato che esegua i calcoli in base all'input e decida se passare al secondo stato. Questo è un evento di transizione. (transitionEventssono nell'elenco degli onInput eventi di uno stato. Alla ricezione di un input in questo primo stato, l'evento esegue una transizione al secondo stato, se l'evento condition viene soddisfatto.) Quando raggiungi il secondo stato, invii il messaggio non appena entri nello stato. (Si utilizza un onEnter evento. Entrando nel secondo stato, questo evento invia il messaggio. Non è necessario attendere l'arrivo di un altro input.) Esistono altri tipi di eventi, ma è tutto ciò che serve per un semplice esempio.

Gli altri tipi di eventi sono onExit eonInput. Non appena viene ricevuto un input e la condizione viene soddisfatta, un onInput evento esegue le azioni specificate. Quando un'operazione esce dallo stato corrente e la condizione viene soddisfatta, l'onExitevento esegue le azioni specificate.

Ti manca qualcosa? Sì, come si torna al primo stato «l'auto non ha bisogno di carburante»? Dopo aver riempito il serbatoio, l'input mostra che il serbatoio è pieno. Nel secondo stato è necessario un evento di transizione che ritorni al primo stato che si verifica quando viene ricevuto l'input (negli onInput: eventi del secondo stato). Dovrebbe tornare al primo stato se i calcoli mostrano che ora avete abbastanza gas per portarvi dove volete andare.

Queste sono le basi. Alcuni modelli di rilevatori diventano più complessi aggiungendo stati che riflettono input importanti, non solo azioni possibili. Ad esempio, potreste avere tre stati in un modello di rilevatore che tiene traccia della temperatura: uno stato «normale», uno stato «troppo caldo» e uno stato «potenziale problema». Si passa allo stato di potenziale problema quando la temperatura supera un certo livello, ma non è ancora diventata troppo alta. Non vuoi inviare un allarme a meno che non rimanga a questa temperatura per più di 15 minuti. Se la temperatura torna alla normalità prima di allora, il rilevatore torna allo stato normale. Se il timer scade, il rilevatore passa allo stato troppo caldo e invia un allarme, giusto per essere prudenti. Potresti fare la stessa cosa usando variabili e un insieme più complesso di condizioni di evento. Ma spesso è più semplice utilizzare un altro stato per, in effetti, memorizzare i risultati dei calcoli.

Come fai a sapere se hai bisogno di una o più istanze di un rilevatore?

Per decidere di quante istanze hai bisogno, chiediti «Cosa ti interessa sapere?» Supponiamo che tu voglia sapere che tempo fa oggi. Piove (stato)? Devi prendere un ombrello (azione)? Puoi avere un sensore che segnala la temperatura, un altro che segnala l'umidità e altri che segnalano la pressione barometrica, la velocità e la direzione del vento e le precipitazioni. Ma è necessario monitorare tutti questi sensori insieme per determinare lo stato delle condizioni meteorologiche (pioggia, neve, cielo coperto, sole) e l'azione appropriata da intraprendere (prendere un ombrello o applicare una protezione solare). Nonostante il numero di sensori, è necessario che un'unica istanza del rilevatore monitori lo stato delle condizioni meteorologiche e indichi le azioni da intraprendere.

Ma se ti occupi delle previsioni meteorologiche della tua regione, potresti avere più istanze di questo tipo di array di sensori, situate in diverse località della regione. Le persone di ogni località devono sapere che tempo fa in quella località. In questo caso, sono necessarie più istanze del rilevatore. I dati riportati da ciascun sensore in ogni posizione devono includere un campo che avete designato come campokey. Questo campo consente di AWS IoT Events creare un'istanza di rilevatore per l'area e quindi di continuare a indirizzare queste informazioni a quell'istanza del rilevatore man mano che continua ad arrivare. Niente più capelli rovinati o nasi bruciati dal sole!

In sostanza, è necessaria un'istanza del rilevatore se si dispone di una situazione (un processo o una posizione) da monitorare. Se avete molte situazioni (sedi, processi) da monitorare, avete bisogno di più istanze del rilevatore.