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 del dispositivo 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 key
“motorid
”.
Si la instancia del detector recibe una lectura de presión de 70 o más, entra en el estado Dangerous
«» y envía un SNS mensaje de Amazon como advertencia. Si las lecturas de presión vuelven a la normalidad (menos de 70) durante tres entradas consecutivas, el detector vuelve al estado «Normal
» y envía otro SNS mensaje de Amazon confirmando que todo está bien.
En este ejemplo de modelo de detector se supone que ha creado dos SNS temas de Amazon 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 APIreferencia de Amazon Simple Notification Service.
En este ejemplo también se supone que ha creado un rol AWS Identity and Access Management (IAM) con los permisos adecuados. El rol 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 Configurar permisos para AWS IoT Events para crear esta función y copie ARN la función en el lugar correspondiente 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" }