Cree un modelo de detector para representar los estados de los dispositivos en AWS IoT Events - AWS IoT Events

Aviso de fin de soporte: el 20 de mayo de 2026, AWS finalizará el soporte para AWS IoT Events. Después del 20 de mayo de 2026, ya no podrás acceder a la AWS IoT Events consola ni a AWS IoT Events los recursos. Para obtener más información, consulta AWS IoT Events el fin del soporte.

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.

Cree un modelo de detector para representar los estados de los dispositivos en AWS IoT Events

En Cree una AWS IoT Events entrada para capturar los datos del dispositivo creó una input basada en un mensaje que informa de los datos de presión de un motor. Para continuar con el ejemplo, aquí tiene un modelo de detector que responde a un evento de sobrepresión en un motor.

Usted crea dos estados: “Normal“ y “Dangerous”. Cada detector (instancia) entra en el estado “Normal” cuando se crea. La instancia se crea al llegar una entrada con un valor único para la keymotorid”.

Si la instancia del detector recibe una lectura de presión de 70 o superior, entra en el estado “Dangerous” y envía un mensaje Amazon SNS a modo de advertencia. Si las lecturas de presión vuelven a la normalidad (inferior a 70) durante tres entradas consecutivas, el detector vuelve al estado “Normal” y envía otro mensaje Amazon SNS indicando todo normal.

En este ejemplo de modelo de detector se supone que ha creado dos temas de Amazon SNS cuyos nombres de recursos de Amazon (ARNs) se muestran en la definición como "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction" y. "targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction"

Para obtener más información, consulte la Guía para desarrolladores de Amazon Simple Notification Service y, más específicamente, la documentación de la CreateTopicoperación en la referencia de la API de Amazon Simple Notification Service.

En este ejemplo también se supone que ha creado un rol AWS Identity and Access Management (de IAM) con los permisos adecuados. El ARN de este rol se muestra en la definición del modelo de detector como "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole". Siga los pasos que se indican en Configuración de permisos para AWS IoT Events para crear este rol y copie el ARN del rol en el lugar apropiado de la definición del modelo de detector.

Puede crear el modelo de detector mediante el siguiente AWS CLI comando.

aws iotevents create-detector-model --cli-input-json file://motorDetectorModel.json

El archivo "motorDetectorModel.json" contiene lo siguiente.

{ "detectorModelName": "motorDetectorModel", "detectorModelDefinition": { "states": [ { "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "condition": "true", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ] } ] }, "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "condition": "$input.PressureInput.sensorData.pressure > 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "nextState": "Dangerous" } ] } }, { "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "condition": "$variable.pressureThresholdBreached > 1", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction" } } ] } ] }, "onInput": { "events": [ { "eventName": "Overpressurized", "condition": "$input.PressureInput.sensorData.pressure > 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ] }, { "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] } ], "transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "condition": "true", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction" } } ] } ] } } ], "initialStateName": "Normal" }, "key" : "motorid", "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole" }