Crie um modelo de detector para representar os estados do dispositivo no AWS IoT Events - AWS IoT Events

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie um modelo de detector para representar os estados do dispositivo no AWS IoT Events

Em Crie uma AWS IoT Events entrada para capturar dados do dispositivo, você criou um input com base em uma mensagem que relata dados de pressão de um motor. Para continuar com o exemplo, confira aqui um modelo de detector que responde a um evento de sobrepressão em um motor.

Você cria dois estados: “Normal” e “Dangerous”. Cada detector (instância) entra no estado “Normal” quando é criado. A instância é criada quando uma entrada chega com um valor exclusivo para o “motorid” do key.

Se a instância do detector receber uma leitura de pressão de 70 ou mais, ela entrará no estado Dangerous "" e enviará uma SNS mensagem da Amazon como aviso. Se as leituras de pressão voltarem ao normal (menos de 70) por três entradas consecutivas, o detector retornará ao estado "Normal" e enviará outra SNS mensagem da Amazon como se tudo estivesse limpo.

Este exemplo de modelo de detector pressupõe que você tenha criado dois SNS tópicos da Amazon cujos nomes de recursos da Amazon (ARNs) são mostrados na definição como "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction" e. "targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction"

Para obter mais informações, consulte o Guia do desenvolvedor do Amazon Simple Notification Service e, mais especificamente, a documentação da CreateTopicoperação na APIReferência do Amazon Simple Notification Service.

Este exemplo também pressupõe que você tenha criado uma função AWS Identity and Access Management (IAM) com as permissões apropriadas. A função ARN desse papel é mostrada na definição do modelo do detector como"roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole". Siga as etapas Configurando permissões para AWS IoT Events para criar essa função e copie ARN a função no local apropriado na definição do modelo do detector.

Você pode criar o modelo do detector usando o AWS CLI comando a seguir.

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

Veja a seguir o conteúdo do arquivo "motorDetectorModel.json".

{ "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" }