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.