Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Envíe mensajes como entradas a un detector en AWS IoT Events
Ahora ha definido una entrada que identifica los campos importantes en los mensajes enviados desde un dispositivo (consulte Cree una AWS IoT Events entrada para capturar los datos del dispositivo). En la sección anterior, creó un detector model
que responde a un evento de sobrepresión en un motor (consulte Cree un modelo de detector para representar los estados del dispositivo en AWS IoT Events).
Para completar el ejemplo, envíe mensajes desde un dispositivo (en este caso un ordenador con la AWS CLI instalada) como entradas al detector.
nota
Al crear un modelo de detector o actualizar uno existente, transcurren varios minutos antes de que el modelo de detector nuevo o actualizado comience a recibir mensajes y a crear detectores (instancias). Si usted actualiza el modelo de detector, es posible que durante este periodo siga observando un comportamiento basado en la versión anterior.
Utilice el siguiente AWS CLI comando para enviar un mensaje con datos que superen el umbral.
aws iotevents-data batch-put-message --cli-input-json file://highPressureMessage.json --cli-binary-format raw-in-base64-out
El archivo “highPressureMessage.json
” contiene lo siguiente.
{ "messages": [ { "messageId": "00001", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 80, \"temperature\": 39} }" } ] }
Debe cambiar el messageId
en cada mensaje enviado. Si no lo cambias, el AWS IoT Events sistema deduplicará los mensajes. AWS IoT Events ignora un mensaje si es messageID
igual a otro mensaje que se envió en los últimos cinco minutos.
A este punto, se crea un detector (instancia) para monitorear los eventos del motor "Fulton-A32"
. Este detector entra en el estado "Normal"
cuando se crea. Pero como hemos enviado un valor de presión superior al umbral, pasa de inmediato al estado "Dangerous"
. Mientras lo hace, el detector envía un mensaje al SNS punto final de Amazon en el que se ARN encuentraarn:aws:sns:us-east-1:123456789012:underPressureAction
.
Ejecute el siguiente AWS CLI comando para enviar un mensaje con datos que estén por debajo del umbral de presión.
aws iotevents-data batch-put-message --cli-input-json file://normalPressureMessage.json --cli-binary-format raw-in-base64-out
El archivo normalPressureMessage.json
contiene lo siguiente.
{ "messages": [ { "messageId": "00002", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 60, \"temperature\": 29} }" } ] }
Debe cambiar el messageId
en el archivo cada vez que invoque el comando BatchPutMessage
en un periodo de cinco minutos. Envíe el mensaje dos veces más. Después de enviar el mensaje tres veces, el detector (instancia) del motor «Fulton-A32
» envía un mensaje al SNS punto final de Amazon "arn:aws:sns:us-east-1:123456789012:pressureClearedAction"
y vuelve a entrar en el "Normal"
estado.
nota
Puede enviar varios mensajes a la vez con BatchPutMessage
. Sin embargo, no se garantiza el orden en que se procesan estos mensajes. Para garantizar que los mensajes (entradas) se procesen en orden, envíelos de uno en uno y espere una respuesta satisfactoria cada vez que los API llame.
A continuación se muestran ejemplos de cargas útiles de SNS mensajes creadas por el modelo de detector descrito en esta sección.
en caso de “Superación del umbral de presión”
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" }
en caso de “Restablecimiento de la presión normal”
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" }
Si ha definido algún temporizador, su estado actual también se muestra en las cargas útiles de los SNS mensajes.
Las cargas útiles de los mensajes contienen información sobre el estado del detector (instancia) en el momento en que se envió el mensaje (es decir, en el momento en que se ejecutó la SNS acción). Puede utilizar la operación https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_DescribeDetector.html para obtener información similar sobre el estado del detector.