Invia messaggi come input a un rilevatore in AWS IoT Events - 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à.

Invia messaggi come input a un rilevatore in AWS IoT Events

Ora hai definito un input che identifica i campi importanti nei messaggi inviati da un dispositivo (vediCrea un AWS IoT Events input per acquisire i dati del dispositivo). Nella sezione precedente, ne avete creato uno detector model che risponde a un evento di sovrapressione in un motore (vedete). Crea un modello di rilevatore per rappresentare gli stati del dispositivo in AWS IoT Events

Per completare l'esempio, inviate messaggi da un dispositivo (in questo caso un computer su cui è AWS CLI installato il dispositivo) come input al rilevatore.

Nota

Quando create un modello di rilevatore o ne aggiornate uno esistente, occorrono alcuni minuti prima che il modello di rilevatore nuovo o aggiornato inizi a ricevere messaggi e a creare rilevatori (istanze). Se aggiorni il modello del rilevatore, durante questo periodo potresti continuare a vedere il comportamento basato sulla versione precedente.

Utilizzate il AWS CLI comando seguente per inviare un messaggio con dati che superano la soglia.

aws iotevents-data batch-put-message --cli-input-json file://highPressureMessage.json --cli-binary-format raw-in-base64-out

Il file "highPressureMessage.json" contiene quanto segue.

{ "messages": [ { "messageId": "00001", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 80, \"temperature\": 39} }" } ] }

È necessario modificare il valore messageId in ogni messaggio inviato. Se non lo modifichi, il AWS IoT Events sistema deduplica i messaggi. AWS IoT Events ignora un messaggio se contiene lo messageID stesso messaggio di un altro messaggio inviato negli ultimi cinque minuti.

A questo punto, viene creato un rilevatore (istanza) per monitorare gli eventi del motore. "Fulton-A32" Questo rilevatore entra "Normal" nello stato al momento della creazione. Ma poiché abbiamo inviato un valore di pressione superiore alla soglia, passa immediatamente allo "Dangerous" stato. Così facendo, il rilevatore invia un messaggio all'SNSendpoint Amazon il cui ARN nome è. arn:aws:sns:us-east-1:123456789012:underPressureAction

Esegui il AWS CLI comando seguente per inviare un messaggio con dati inferiori alla soglia di pressione.

aws iotevents-data batch-put-message --cli-input-json file://normalPressureMessage.json --cli-binary-format raw-in-base64-out

Il file normalPressureMessage.json contiene quanto segue.

{ "messages": [ { "messageId": "00002", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 60, \"temperature\": 29} }" } ] }

È necessario modificare il messageId file ogni volta che si richiama il BatchPutMessage comando entro un periodo di cinque minuti. Inviate il messaggio altre due volte. Dopo che il messaggio è stato inviato tre volte, il rilevatore (istanza) del motore "Fulton-A32" invia un messaggio all'SNSendpoint Amazon "arn:aws:sns:us-east-1:123456789012:pressureClearedAction" e rientra nello stato. "Normal"

Nota

Puoi inviare più messaggi contemporaneamente con. BatchPutMessage Tuttavia, l'ordine in cui questi messaggi vengono elaborati non è garantito. Per garantire che i messaggi (input) vengano elaborati correttamente, inviateli uno alla volta e aspettate una risposta corretta ogni volta che li chiamate. API

Di seguito sono riportati alcuni esempi di payload di SNS messaggi creati dall'esempio del modello di rilevatore descritto in questa sezione.

sull'evento «Pressure Threshold Breached»

IoT> { "eventTime":1558129816420, "payload":{ "actionExecutionId":"5d7444df-a655-3587-a609-dbd7a0f55267", "detector":{ "detectorModelName":"motorDetectorModel", "keyValue":"Fulton-A32", "detectorModelVersion":"1" }, "eventTriggerDetails":{ "inputName":"PressureInput", "messageId":"00001", "triggerType":"Message" }, "state":{ "stateName":"Dangerous", "variables":{ "pressureThresholdBreached":3 }, "timers":{} } }, "eventName":"Pressure Threshold Breached" }

sull'evento «Normal Pressure Restored»

IoT> { "eventTime":1558129925568, "payload":{ "actionExecutionId":"7e25fd38-2533-303d-899f-c979792a12cb", "detector":{ "detectorModelName":"motorDetectorModel", "keyValue":"Fulton-A32", "detectorModelVersion":"1" }, "eventTriggerDetails":{ "inputName":"PressureInput", "messageId":"00004", "triggerType":"Message" }, "state":{ "stateName":"Dangerous", "variables":{ "pressureThresholdBreached":0 }, "timers":{} } }, "eventName":"Normal Pressure Restored" }

Se avete definito dei timer, il loro stato attuale viene mostrato anche nei payload dei SNS messaggi.

I payload dei messaggi contengono informazioni sullo stato del rilevatore (istanza) al momento dell'invio del messaggio (ovvero al momento dell'esecuzione dell'SNSazione). È possibile utilizzare l'https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_DescribeDetector.htmloperazione per ottenere informazioni simili sullo stato del rilevatore.