Criar um modelo de detector - 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á.

Criar um modelo de detector

Neste tópico, você define umModelo de detector(um modelo de seu equipamento ou processo) usandoestados.

Para cada estado, você define a lógica condicional (booliana) que avalia as entradas recebidas para detectar um evento significativo. Quando um evento é detectado, ele altera o estado e pode acionar ações adicionais. Esses eventos são conhecidos como eventos de transição.

Em seus estados, você também define eventos que podem executar ações sempre que o detector entra ou sai desse estado ou quando uma entrada é recebida (estes são conhecidos comoOnEnter,OnExiteOnInput). As ações são executadas somente se a lógica condicional do evento for avaliada comotrue.

Para criar um modelo de detector

  1. O primeiro estado detector foi criado para você. Para modificá-lo, selecione o círculo com o rótuloState_1No espaço de edição principal.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  2. NoEstado, insira a caixa de seleçãoNome do estadoeOnEnter, escolhaAdicionar evento.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  3. NoAdicionar evento OnEnter, insira umEvent name (Nome do evento)O e aCondição do evento. Neste exemplo, insiratruePara indicar que o evento é sempre acionado quando o estado é inserido.

  4. UnderAções do evento, escolhaAção Adicionar.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  5. UnderAções do evento, faça o seguinte:

    1. SelectDefinição de variáveis

    2. para oOperação variável, escolhaAtribuir valor.

    3. para oNome da variável, insira o nome da variável a ser definida.

    4. para oValor da variável, insira o valor0(zero).

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  6. Escolha Save (Salvar).

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .

    Uma variável, como a que você definiu, pode ser definida (dado um valor) em qualquer evento no modelo do detector. Mas seu valor só pode ser referenciado (por exemplo, na lógica condicional de um evento) após o detector ter atingido um estado e executado uma ação onde ele é definido ou definido.

  7. NoEstado, escolha a caixa de seleçãoXPróximo aEstadoPara retornar para oPaleta de modelo de detector.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  8. Para criar um segundo estado do detector, noPaleta de modelo de detector, escolhaEstadoe arraste-o para o espaço de edição principal. Isso cria um estado intituladountitled_state_1.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  9. Pause no primeiro estado (Normal). Uma seta aparece na circunferência do estado.

  10. Clique e arraste a seta do primeiro estado para o segundo estado. Uma linha direcionada do primeiro estado para o segundo estado (rotuladaSem título) é exibida.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  11. Selecione oSem títuloLinha. NoEvento de transição, insira umEvent name (Nome do evento)eLógica de gatilho.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  12. NoEvento de transição, selecioneAção Adicionar.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  13. NoAdicionar ações de evento de transição, selecioneAção Adicionar.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  14. para oEscolha uma ação, escolhaDefinição de variáveis.

    1. para oOperação variável, escolhaAtribuir valor.

    2. para oNome da variável, insira o nome da variável.

    3. para oAtribuir valor, insira o valor como:$variable.pressureThresholdBreached + 3

    4. Escolha Save (Salvar).

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  15. Selecione o segundo estadountitled_state_1.

  16. NoEstado, insira a caixa de seleçãoNome do estadoe paraOn Enter, escolhaAdicionar evento.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  17. NoAdicionar evento OnEnter, insira a caixa de seleçãoEvent name (Nome do evento),Condição do eventoe, escolhaAção Adicionar.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  18. para oEscolha uma ação, escolhaEnviar mensagem SNS.

    1. para oTópico do SNS, insira o ARN de destino do tópico do SNS.

    2. Escolha Save (Salvar).

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  19. Continue a adicionar os eventos no exemplo.

    1. para oOnInput, escolhaAdicionar eventoe insira e salve as seguintes informações de evento.

      Event name: Overpressurized Event condition: $input.PressureInput.sensorData.pressure > 70 Event actions: Set variable: Variable operation: Assign value Variable name: pressureThresholdBreached Assign value: 3
    2. para oOnInput, escolhaAdicionar eventoe insira e salve as seguintes informações de evento.

      Event name: Pressure Okay Event condition: $input.PressureInput.sensorData.pressure <= 70 Event actions: Set variable: Variable operation: Decrement Variable name: pressureThresholdBreached
    3. para oOnExit, escolhaAdicionar eventoe insira e salve as seguintes informações de eventos usando o ARN do tópico de SNS que você criou.

      Event name: Normal Pressure Restored Event condition: true Event actions: Send SNS message: Target arn: arn:aws:sns:us-east-1:123456789012:pressureClearedAction
  20. Pause no segundo estado (Perigos). Uma seta aparece na circunferência do estado

  21. Clique e arraste a seta do segundo estado para o primeiro estado. Uma linha dirigida com rótuloSem títuloé exibida.

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  22. Selecione oSem títuloe na linhaEvento de transição, insira umEvent name (Nome do evento)eLógica de gatilhoUsando as informações a seguir.

    { Event name: BackToNormal Event trigger logic: $input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 0 }
    
            Crie um modelo de detector noAWS IoT Eventsconsole do .

    Para obter mais informações sobre por que testamos para o$inpute o$variablena lógica de disparo, consulte a entrada de Disponibilidade de valores de variáveis emRestrições do modelo de detector.

  23. Selecione oiniciar asEstado. Por padrão, esse estado foi criado quando você criou um modelo de detector). Noiniciar as, escolha a caixa de seleçãoEstado de destino(por exemplo,Normal).

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .
  24. Em seguida, configure o modelo do detector para ouvir entradas. No canto superior direito, selecionePublicar.

  25. NoModelo de detector, faça o seguinte.

    1. Digite umNome do modelo de detector, umDescrição, e o nome de umRole (Função). Essa função será criada para você.

    2. SelecioneCriar um detector para cada valor de chave exclusivo. Para criar e usar seu próprioRole (Função), siga as etapas em Usando o console do IAM para gerenciar funções e permissõese insira-o como oRole (Função)Aqui.

      
                Publique um modelo de detector noAWS IoT Eventsconsole do .
  26. para oChave de criação de detector, escolha o nome de um dos atributos da entrada definida anteriormente. O atributo que você escolher como chave de criação do detector deve estar presente em cada entrada de mensagem e deve ser exclusivo para cada dispositivo que envia mensagens. Este exemplo usa omotoridAttribute.

  27. Escolha Save and publish (Salvar e publicar).

    
            Crie um modelo de detector noAWS IoT Eventsconsole do .

Você pode fazer uma cópia de backup da definição do modelo do detector (em JSON) recriar ou atualizar o modelo do detector ou usar como modelo para criar outro modelo do detector.

Isso pode ser feito no console do ou usando o seguinte comando da CLI. Se necessário, altere o nome do modelo do detector para corresponder ao que você usou quando o publicou na etapa anterior.

aws iotevents describe-detector-model --detector-model-name motorDetectorModel > motorDetectorModel.json

Isso cria um arquivo (motorDetectorModel.json) que tem conteúdo semelhante ao seguinte.

{ "detectorModel": { "detectorModelConfiguration": { "status": "ACTIVE", "lastUpdateTime": 1552072424.212, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1552072424.212, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "key": "motorid", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" }, "detectorModelDefinition": { "states": [ { "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70", "nextState": "Dangerous" } ], "events": [] }, "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ], "condition": "true" } ] }, "onExit": { "events": [] } }, { "onInput": { "transitionEvents": [ { "eventName": "Back to Normal", "actions": [], "condition": "$variable.pressureThresholdBreached <= 1 && $input.PressureInput.sensorData.pressure <= 70", "nextState": "Normal" } ], "events": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70" }, { "eventName": "Pressure Okay", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ], "condition": "$input.PressureInput.sensorData.pressure <= 70" } ] }, "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:MyIoTButtonSNSTopic" } } ], "condition": "$variable.pressureThresholdBreached > 1" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:IoTVirtualButtonTopic" } } ], "condition": "true" } ] } } ], "initialStateName": "Normal" } } }