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

Aviso de fim do suporte: em 20 de maio de 2026, AWS encerrará o suporte para AWS IoT Events. Depois de 20 de maio de 2026, você não poderá mais acessar o AWS IoT Events console ou os AWS IoT Events recursos. Para obter mais informações, consulte AWS IoT Events Fim do suporte.

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 mensagem do Amazon SNS 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 mensagem do Amazon SNS indicando que tudo está correto.

Este exemplo de modelo de detector pressupõe que você tenha criado dois tópicos do Amazon SNS cujos nomes de recursos da Amazon ARNs () são mostrados na definição "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction" como 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 Referência da API 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. O ARN dessa função é exibido na definição do modelo do detector como "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole". Siga as etapas em Configurando permissões para AWS IoT Events para criar essa função e copiar o ARN da 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" }