219
AWS IoT Events Guia do desenvolvedor

AWS IoT Events...AWS IoT Events Guia do desenvolvedor Configurar permissões para o AWS IoT Events Configurar o AWS IoT Events Se você ainda não tiver uma conta da AWS, use o procedimento

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

  • AWS IoT EventsGuia do desenvolvedor

  • AWS IoT Events Guia do desenvolvedor

    AWS IoT Events: Guia do desenvolvedorCopyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

    As marcas comerciais e imagens de marcas da Amazon não podem ser usadas no contexto de nenhum produtoou serviço que não seja da Amazon, nem de qualquer maneira que possa gerar confusão entre os clientes ou quedeprecie ou desprestigie a Amazon. Todas as outras marcas comerciais que não pertencem à Amazon pertencem aseus respectivos proprietários, que podem ou não ser afiliados, conectados ou patrocinados pela Amazon.

  • AWS IoT Events Guia do desenvolvedor

    Table of ContentsO que é o AWS IoT Events? ............................................................................................................... 1

    Benefícios e recursos .................................................................................................................. 1Casos de uso ............................................................................................................................ 2

    Configuração ...................................................................................................................................... 3Configurar permissões para o AWS IoT Events ............................................................................... 3

    Permissões de ação ........................................................................................................... 3Proteger dados de entrada .................................................................................................. 4Usando o console do IAM para gerenciar funções e permissões ............................................... 5Política de função de registro do Amazon CloudWatch ........................................................... 16Política de função de mensagens do Amazon SNS ................................................................ 17

    Conceitos básicos ............................................................................................................................. 19Prerequisites ............................................................................................................................ 20Criar uma entrada ..................................................................................................................... 21Criar um modelo de detector ...................................................................................................... 25Enviar entradas para testar o modelo do detector .......................................................................... 41

    Práticas recomendadas ...................................................................................................................... 48Ativar o log do Amazon CloudWatch ao desenvolverAWS IoT EventsModelos de detector .................... 48Publique regularmente para salvar seu modelo de detector ao trabalhar noAWS IoT Eventsconsole ........ 51Armazene o seuAWS IoT Eventsdados para evitar possíveis perdas de dados devido a um longoperíodo de inatividade ............................................................................................................... 52

    Tutoriais .......................................................................................................................................... 53O uso doAWS IoT Eventspara monitorar seus dispositivos IoT ......................................................... 53

    Como você sabe quais estados você precisa em um modelo de detector? ................................. 54Como você sabe se você precisa de uma instância de um detector ou vários? ............................ 55

    Exemplo passo a passo ............................................................................................................. 56Criar uma entrada para capturar dados do dispositivo ............................................................ 57Criar um modelo de detector para representar estados de dispositivo ........................................ 58Enviar mensagens como entradas para um detector .............................................................. 60

    Restrições e limitações do modelo de detector .............................................................................. 62Um exemplo comentado: Controle de temperatura do AVAC ........................................................... 65

    Background ...................................................................................................................... 65Ações compatíveis ............................................................................................................................ 90

    Usar ações integradas ............................................................................................................... 90Definir ação do temporizador .............................................................................................. 90Redefinir temporizador ....................................................................................................... 91Ações de temporizador ...................................................................................................... 91Definir ação de variável ..................................................................................................... 91

    Trabalhar com outrosAWSServiços do ......................................................................................... 92AWS IoT Core .................................................................................................................. 92AWS IoT Events ............................................................................................................... 93AWS IoT SiteWise ............................................................................................................ 94Amazon DynamoDB .......................................................................................................... 95Amazon DynamoDB (v2) .................................................................................................... 97Amazon Kinesis Data Firehose ........................................................................................... 97AWS Lambda ................................................................................................................... 98Amazon Simple Notification Service ..................................................................................... 99Amazon Simple Queue Service ........................................................................................... 99

    Expressões .................................................................................................................................... 101Syntax ................................................................................................................................... 101

    Literals ........................................................................................................................... 101Operators ....................................................................................................................... 101Functions ....................................................................................................................... 102References ..................................................................................................................... 105Modelos de substituição ................................................................................................... 107

    iii

  • AWS IoT Events Guia do desenvolvedor

    Uso ....................................................................................................................................... 107WritingAWS IoT EventsExpressão ..................................................................................... 108

    Exemplos de modelo de detector ...................................................................................................... 110Controle de temperatura de AVAC ............................................................................................. 110

    História de fundo ............................................................................................................. 110Definições de entrada ...................................................................................................... 111Definição de modelo de detector ....................................................................................... 112Exemplo de BatchUpdateDetector ..................................................................................... 124Exemplos de BatchPutMessage ........................................................................................ 125AWS IoT Coreexemplos de mecanismo de regras ................................................................ 129

    Cranes ................................................................................................................................... 131História de fundo ............................................................................................................. 131Commands ..................................................................................................................... 132Modelos de detector ........................................................................................................ 132Inputs ............................................................................................................................ 137Messages ...................................................................................................................... 137

    Detecção de eventos com sensores e aplicações ........................................................................ 138Dispositivo de HeartBeat .......................................................................................................... 140Alarme ................................................................................................................................... 141Alarme simples ....................................................................................................................... 148

    Monitoramento com alarmes ............................................................................................................. 151Trabalho com AWS IoT SiteWise .............................................................................................. 151Confirmação de fluxo ............................................................................................................... 151Criar um modelo de alarme ...................................................................................................... 152

    Requirements ................................................................................................................. 152Criar um modelo de alarme (console) ................................................................................ 153

    Resposta a alarmes ................................................................................................................ 154Resposta a alarmes do (console) ...................................................................................... 155Respondendo a alarmes (API) .......................................................................................... 155

    Gerenciar notificações do alarme ............................................................................................... 155Criação de uma função do Lambda ................................................................................... 155Usar a função do Lambda fornecida peloAWS IoT Events ..................................................... 161Gerenciar destinatários .................................................................................................... 162

    Segurança ...................................................................................................................................... 163Identity and Access Management .............................................................................................. 163

    Audience ........................................................................................................................ 164Autenticar com identidades ............................................................................................... 164Gerenciamento do acesso usando políticas ......................................................................... 166Saiba mais ..................................................................................................................... 167Como o AWS IoT Events funciona com o IAM ..................................................................... 167Exemplos de políticas baseadas em identidade ................................................................... 170Solução de problemas ..................................................................................................... 174

    Monitoramento ........................................................................................................................ 176Ferramentas de monitoramento ......................................................................................... 176Monitoramento com Amazon CloudWatch ........................................................................... 177Registrar em log chamadas da API do AWS IoT Events com o AWS CloudTrail ........................ 178

    Validação de conformidade ....................................................................................................... 190Resiliência .............................................................................................................................. 191Segurança da infraestrutura ...................................................................................................... 191

    Cotas ............................................................................................................................................ 192Tagging ......................................................................................................................................... 193

    Conceitos básicos de tags ........................................................................................................ 193Restrições e limitações de tags ......................................................................................... 193

    Utilização de tags com políticas do IAM ..................................................................................... 194Solução de problemas ..................................................................................................................... 196

    Solução de problemas de detector ............................................................................................. 196Analisando um modelo de detector .................................................................................... 202

    iv

  • AWS IoT Events Guia do desenvolvedor

    AWS IoT EventsMensagens de erro .......................................................................................... 206Recebo erros ao tentar criar um modelo de detector. ............................................................ 206Recebo atualizações de estado do antigo modelo de detector por meio de mensagens MQTT oualertas SNS depois que excluí ou atualizei um modelo de detector há alguns minutos. ................ 207O detector falha ao acionar uma ação ou transição para um novo estado quando a condição éatendida. ........................................................................................................................ 207Os detectores não acionam uma ação ou um evento de transição quando a variável atinge ovalor especificado. ........................................................................................................... 207O detector entra nos estados errados quando eu tento enviar mensagens para entradasusandoBatchPutMessage. .............................................................................................. 207Recebo um ('Connection aborted.', error(54, 'Connection reset bypeer'))erro quando tento chamar ou invocar uma API. ....................................................... 208Recebo InvalidRequestException quando tentochamarCreateDetectorModeleUpdateDetectorModelAPIs. ........................................... 208O Amazon CloudWatch Logs contém mensagens de erro quando eu usoaction.setTimer. ..... 208O Amazon CloudWatch Logs contém mensagens de erro e aviso, quando uso payload. .............. 209ERROR Tipos de dados incompatíveis [] encontrados para naexpressão a seguir: ...................................................................................... 210

    Comandos ...................................................................................................................................... 211Ações do AWS IoT Events ....................................................................................................... 211Dados do AWS IoT Events ....................................................................................................... 211

    Histórico do documento .................................................................................................................... 212Atualizações anteriores ............................................................................................................ 212

    ................................................................................................................................................... ccxiv

    v

  • AWS IoT Events Guia do desenvolvedorBenefícios e recursos

    O que é o AWS IoT Events?AWS IoT EventsO permite monitorar os equipamento ou as frotas de dispositivos em busca defalhas ou alterações na operação, além de desencadear ações caso esses eventos ocorram.AWSIoT Eventsobserva continuamente os dados do sensor IoT de dispositivos, processos, aplicativos eoutrosAWSpara identificar eventos significativos para que você possa tomar medidas.

    Você pode usarAWS IoT Eventspara criar aplicativos complexos de monitoramento de eventosnoAWSNuvem que você pode acessar o pelaAWS IoT Eventsou APIs.

    Benefícios e recursosAceitar entradas de várias origens

    AWS IoT Eventsaceita entradas de muitas fontes de dados de telemetria IoT. Estes incluemdispositivos de sensor, aplicativos de gerenciamento e outrosAWS IoTserviços, comoAWS IoTCoreeAWS IoT Analytics. Você pode enviar qualquer entrada de dados de telemetria paraAWS IoTEventsusando uma interface API padrão (BatchPutMessageAPI).

    Usar expressões lógicas simples para reconhecer padrões complexos de eventos

    AWS IoT Eventspode reconhecer padrões de eventos que envolvem várias entradas de um únicodispositivo ou aplicativo IoT, ou de diversos equipamentos e muitos sensores independentes. Isso éespecialmente útil porque cada sensor e aplicativo fornece informações importantes. Mas somentecombinando diversos dados de sensores e aplicativos, você pode obter uma visão completa dodesempenho e da qualidade das operações. Você pode configurarAWS IoT Eventsdetectores parareconhecer esses eventos usando expressões lógicas simples em vez de código complexo.

    Ativar ações com base nos eventos do

    AWS IoT EventsPermite que você acione ações diretamente no Amazon Simple Notification Service(Amazon SNS),AWS IoT Core, Lambda, Amazon SQS e Amazon Kinesis Firehose. Você tambémpode desencadear umAWS LambdaFunção, usando oAWS IoTque torna possível realizar açõesusando outros serviços, como o Amazon Connect, ou seus próprios aplicativos de planejamento derecursos empresariais (ERP).

    AWS IoT Eventsinclui uma biblioteca pré-criada de ações que você pode executar e também permiteque você defina suas próprias.

    1

  • AWS IoT Events Guia do desenvolvedorCasos de uso

    Dimensione automaticamente para atender às demandas de sua frota

    AWS IoT Eventsé dimensionado automaticamente quando você está conectando dispositivoshomogêneos. Você pode definir um detector uma vez para um tipo específico de dispositivo, e oserviço escalará e gerenciará automaticamente todas as instâncias desse dispositivo que se conectamaoAWS IoT Events.

    Casos de usoMonitorar e manter dispositivos remotos

    Você precisa monitorar uma frota de máquinas implantadas remotamente. Se um parar de funcionare você não tiver contexto adicional para o que está causando a falha, talvez seja necessário substituirimediatamente toda a unidade de processamento ou a máquina. Mas isso não é sustentável. comAWSIoT Eventsvocê pode receber mensagens de vários sensores em cada máquina e diagnosticar oproblema exato usando os códigos de erro que são enviados ao longo do tempo. Em vez de substituirtudo, agora você tem as informações necessárias para enviar um técnico com apenas a peça queprecisa ser substituída. Com milhões de máquinas, a economia pode somar milhões de dólares,reduzindo o custo total de propriedade ou manutenção de cada máquina.

    Gerenciar robôs industriais

    Você implanta robôs dentro de suas instalações para automatizar o movimento de pacotes. Paramanter o custo dos robôs ao mínimo, os robôs têm sensores simples e de baixo custo que relataminformações para a nuvem. Mas seus robôs têm dezenas de sensores e centenas de modos deoperação, dificultando a detecção de problemas à medida que ocorrem. O uso doAWS IoT Events,você pode criar um sistema especializado que processa dados de sensores na nuvem e cria alertaspara avisar automaticamente a equipe técnica se uma falha for iminente.

    Sistemas de automação de edifícios de rastreamento

    Você opera um grande número de data centers que devem ser monitorados quanto a alta temperaturae baixa umidade para evitar falhas de equipamentos que ocorrem quando esses limites ambientaissão violados. Os sensores que você usa são comprados de muitos fabricantes, e cada tipo vemcom seu próprio software de gerenciamento. No entanto, o software de gerenciamento de diferentesfornecedores não é compatível, dificultando a detecção de problemas. O uso doAWS IoT Events,você pode configurar alertas para notificar seus analistas de operações sobre problemas com seussistemas de aquecimento e resfriamento bem antes de falhas. Dessa forma, você pode evitar umdesligamento não programado do data center que custaria milhares de dólares em substituição deequipamentos e em potencial perda de receita.

    2

  • AWS IoT Events Guia do desenvolvedorConfigurar permissões para o AWS IoT Events

    Configurar o AWS IoT EventsSe você não tiver umaAWS, conclua as seguintes etapas para criar uma.

    Para se cadastrar em uma conta da AWS

    1. Abra https://portal.aws.amazon.com/billing/signup.2. Siga as instruções online.

    Parte do procedimento de cadastro envolve uma chamada telefônica e a digitação de um código deverificação usando o teclado do telefone.

    Configurar permissões para o AWS IoT EventsEsta seção descreve as funções e permissões obrigatórias para usar alguns recursos doAWS IoT Events.Você pode usarAWS CLIComandos do ou aAWS Identity and Access Management(IAM) para criar funçõese políticas de permissão associadas para acessar recursos ou executar determinadas funções noAWS IoTEvents.

    OGuia do usuário do IAMtem informações mais detalhadas sobre como controlar com segurança aspermissões para acessarAWSrecursos da AWS. Para obter informações específicas aoAWS IoT Events,consulteAções, recursos e chaves de condição para oAWS IoT Events.

    Permissões de açãoAWS IoT Eventspermite acionar ações que usam outrosAWSServiços da . Para fazer isso, você deveconcederAWS IoT EventsPara executar essas ações em seu nome. Esta seção contém uma lista dasações e uma política de exemplo que concede permissão para executar todas essas ações em seusrecursos. Altere aregiãoeaccount-idreferências conforme necessário. Quando possível, você tambémdeve alterar os caracteres curinga (*) para se referir a recursos específicos que serão acessados. Vocêpode usar o console do IAM para conceder permissão paraAWS IoT Eventspara enviar um alerta doAmazon SNS que você definiu. Para mais informações, consulte Usando o console do IAM para gerenciarfunções e permissões (p. 5).

    AWS IoT Eventssuporta as seguintes ações que permitem usar um temporizador ou definir uma variável:

    • setTimer (p. 90)para criar um temporizador.• resetTimer (p. 91)para redefinir o temporizador.• clearTimer (p. 91)para excluir o temporizador.• setVariable (p. 91)Para criar uma variável.

    AWS IoT EventsO oferece suporte às seguintes ações que permitem que você trabalhe comoAWSServiços da:

    • iotTopicPublish (p. 92)Para publicar uma mensagem em um tópico MQTT.• iotEvents (p. 93)para enviar dados aoAWS IoT Eventscomo um valor de entrada.• iotSiteWise (p. 94) para enviar dados para uma propriedade de ativo no AWS IoT SiteWise.• dynamoDB (p. 95)Para enviar dados para uma tabela do Amazon DynamoDB.• dynamoDBv2 (p. 97)Para enviar dados para uma tabela do Amazon DynamoDB.• firehose (p. 97)Para enviar dados para um fluxo do Amazon Kinesis Data Firehose.• lambda (p. 98)para invocar umaAWS Lambdafunção.

    3

    http://portal.aws.amazon.com/billing/signuphttps://docs.aws.amazon.com/IAM/latest/UserGuide/https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsiotevents.html

  • AWS IoT Events Guia do desenvolvedorProteger dados de entrada

    • sns (p. 99)Para enviar dados como uma notificação por push.• sqs (p. 99)Para enviar dados para uma fila do Amazon SQS.

    Example Policy

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Publish", "Resource": "arn:aws:iot:::topic/*" }, { "Effect": "Allow", "Action": "iotevents:BatchPutMessage", "Resource": "arn:aws:iotevents:::input/*" }, { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*" }, { "Effect": "Allow", "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:::table/*" }, { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:::deliverystream/*" }, { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:::function:*" }, { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:::*" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:::*" } ]}

    Proteger dados de entradaÉ importante considerar quem pode conceder acesso aos dados de entrada para uso em um modelo dedetector. Se você tiver um usuário ou entidade cujas permissões gerais você deseja restringir, mas quetenha permissão para criar ou atualizar um modelo de detector, você também deve conceder permissãopara que esse usuário ou entidade atualize o roteamento de entrada. Isso significa que, além de conceder

    4

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    permissão paraiotevents:CreateDetectorModeleiotevents:UpdateDetectorModel, concedatambém a permissão paraiotevents:UpdateInputRouting.

    Example

    A política a seguir adiciona permissão paraiotevents:UpdateInputRouting.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "updateRoutingPolicy", "Effect": "Allow", "Action": [ "iotevents:UpdateInputRouting" ], "Resource": "*" } ]}

    Você pode especificar uma lista de nomes de recursos da Amazon (ARNs) de entrada em vez do caracterecuringa”*“para o”Resource“para limitar esta permissão a entradas específicas. Isso permite que vocêrestrinja o acesso aos dados de entrada que são consumidos pelos modelos de detectores criados ouatualizados pelo usuário ou entidade.

    Usando o console do IAM para gerenciar funções epermissõesO exemplo a seguir mostra como usar o console do IAM para conceder a permissão aoAWS IoTEventsPara gerar alertas do Amazon SNS em seu nome. Você também pode anexar a função a qualquerentidade (usuário ou proprietário da conta) que você usará para definir e publicar umAWS IoT Eventsquecontém ações de evento que enviam alertas do Amazon SNS.

    Para concluir este exemplo, é necessário ter o ARN de umTópico do Amazon SNSPara usar o noAWS IoTEvents.

    Para usar o console do IAM para gerenciar funções e permissões

    1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

    2. No painel de navegação, selecionePainel,Funções do.

    5

    https://docs.aws.amazon.com/sns/latest/dg/welcome.htmlhttps://console.aws.amazon.com/iam/https://console.aws.amazon.com/iam/

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    3. Selecione Create role (Criar função).

    4. NoCriar função, faça o seguinte.

    a. Em Select type of trusted entity (Selecionar tipo de entidade confiável), escolha AWS service(Serviço da AWS).

    b. para oEscolha o serviço que usará essa função, escolhaIoT.c. para oSelecione o caso de uso, escolhaIoTe escolhaPróximo: Permissions

    6

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    5. NoCriar função, paraPermissões anexadas, deixe essas permissões como estão por enquanto eescolhaPróximo: Tags.

    Você adiciona uma nova política concedendo as permissões obrigatórias em uma etapa posterior.

    7

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    6. NoCriar função, paraAdicionar tags (opcional), não adicione tags agora e escolhaPróximo: análise.

    7. NoReview (Revisar), insira umNome da função, um opcionalDescrição de funçãoe escolhaCriarfunção.

    8

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    8. NoFunções do, localize e e selecione o nome da função do que você criou.

    9. NoSummary (Resumo)para sua função, na páginaPermissões, selecioneAnexar políticas.

    9

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    10. NoAnexar permissões, selecioneCriar política.

    11. NoCriar política, selecione aJSON. Se um aviso de falha de validação de política for exibido, escolha aopçãoXpara descartá-la.

    10

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    12. NoJSON, faça o seguinte.

    a. Substitua o JSON no editor pelo exemplo a seguir.b. Altere aResourcePara o ARN doTópico do Amazon SNSque usar emAWS IoT Events.c. Escolha Review policy (Revisar política). Você também pode usar caracteres curinga no ARN do

    tópico do Amazon SNS para conceder permissões mais amplas, mas esteja ciente dos problemasde segurança que isso gera.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:*" ], "Effect": "Allow", "Resource": "arn:aws:sns:us-east-1:123456789012:testAction" } ]}

    Sua política deve ser semelhante a:

    11

    https://docs.aws.amazon.com/sns/latest/dg/welcome.html

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    13. NoReview policy, insira umName (Nome)para a política, um opcionalDescriçãoe escolhaCriar política.

    14. NoPolíticas, no painel de navegação, selecioneFunções do.

    12

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    15. NoFunções do, localize e e selecione o nome da função do que você criou.

    16. NoSummary (Resumo)para sua função, na páginaPermissões, selecioneAnexar políticas.

    13

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    17. NoAnexar permissõesPara sua função, marque a caixa de seleção ao lado da política do que vocêcriou e escolhaAnexar política.

    18. NoFunções do, localize e e selecione o nome da função do que você criou.

    14

  • AWS IoT Events Guia do desenvolvedorUsando o console do IAM paragerenciar funções e permissões

    19. NoSummary (Resumo)para essa função, na páginaRelações de confiança, selecioneEditar relação deconfiança.

    20. NoEditar relação de confiança, paraDocumento da política, substitua o JSON existente pelo seguinte eescolha oAtualizar política de confiança.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iotevents.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

    Sua política deve ser semelhante a:

    15

  • AWS IoT Events Guia do desenvolvedorPolítica de função de registro do Amazon CloudWatch

    Você já concedeuAWS IoT Eventspermissão para enviar alertas para seu tópico do Amazon SNS emseu nome. Para obter segurança aprimorada, remova as políticas não utilizadas que foram anexadas porpadrão à função do que você criou.

    Política de função de registro do Amazon CloudWatchOs documentos de políticas a seguir fornecem as políticas de função e de confiança que permitem queaAWS IoT Eventspara enviar logs para o CloudWatch em seu nome.

    Política de função:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutMetricFilter", "logs:PutRetentionPolicy", "logs:GetLogEvents", "logs:DeleteLogStream" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ]}

    16

  • AWS IoT Events Guia do desenvolvedorPolítica de função de mensagens do Amazon SNS

    Política de confiança:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "iotevents.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ]}

    Você também precisa de uma política de permissões anexada ao usuário do IAM que permita ao usuáriotransmitir funções da seguinte maneira. Para obter mais informações, consulteConceder permissões a umusuário para passar uma função para umAWSserviçonoGuia do usuário do IAM.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam:::role/Role_To_Pass" } ]}

    Você pode usar o seguinte comando para colocar a política de recursos do para logs do CloudWatch. IssopermiteAWS IoT Eventspara colocar eventos de log em streams do CloudWatch.

    aws logs put-resource-policy --policy-name ioteventsLoggingPolicy --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Sid\": \"IoTEventsToCloudWatchLogs\", \"Effect\": \"Allow\", \"Principal\": { \"Service\": [ \"iotevents.amazonaws.com\" ] }, \"Action\":\"logs:PutLogEvents\", \"Resource\": \"*\" } ] }"

    Use o seguinte comando para colocar as opções de log. Substituir aroleArnCom a função de log do quevocê criou.

    aws iotevents put-logging-options --cli-input-json "{ \"loggingOptions\": {\"roleArn\": \"arn:aws:iam::123456789012:role/testLoggingRole\", \"level\": \"INFO\", \"enabled\": true } }"

    Política de função de mensagens do Amazon SNSOs documentos de políticas a seguir fornecem as políticas de função e de confiança que permitem queaAWS IoT Eventspara enviar mensagens SNS.

    17

    https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.htmlhttps://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html

  • AWS IoT Events Guia do desenvolvedorPolítica de função de mensagens do Amazon SNS

    Política de função:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:*" ], "Effect": "Allow", "Resource": "arn:aws:sns:us-east-1:123456789012:testAction" } ]}

    Política de confiança:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iotevents.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ]}

    18

  • AWS IoT Events Guia do desenvolvedor

    Conceitos básicos doAWS IoTEventsconsole

    Esta seção mostra como criar uma entrada e um modelo de detector usando o modelo de detector usandooAWS IoT Eventsconsole. Você modela dois estados de um motor: um estado normal e uma condiçãode sobrepressão. Quando a pressão medida no motor excede um determinado limiar, o modelo faz atransição do estado normal para o estado de sobrepressão. Em seguida, ele envia uma mensagem doAmazon SNS para alertar um técnico sobre a condição. Quando a pressão cair novamente abaixo do limitepara três leituras de pressão consecutivas, o modelo retorna ao estado normal e envia outra mensagem doAmazon SNS como uma confirmação.

    Verificamos três leituras consecutivas abaixo do limiar de pressão para eliminar possíveis gagueiras demensagens de sobrepressão/normais, em caso de uma fase de recuperação não linear ou leitura depressão anômala.

    No console, você também pode encontrar vários modelos de modelo de detector pré-fabricados que vocêpode personalizar. Você também pode usar o console para importar modelos de detectores que outrosescreveram ou exportar seus modelos de detector e usá-los em diferentesAWSRegiões. Se você importarum modelo de detector, certifique-se de criar as entradas necessárias ou recriá-las para a nova Região eatualizar os ARNs de função usados.

    Usar aAWS IoT Eventspara saber mais sobre o seguinte.

    Definir entradas

    Para monitorar seus dispositivos e processos, eles devem ter uma maneira de inserir dados detelemetria noAWS IoT Events. Isso é feito enviando mensagens comoinputsparaAWS IoT Events.Você pode fazer isso de várias maneiras:• Usar aBatchPutMessageoperação.• DentroAWS IoT Coreescrever umAWS IoT EventsAção doRegra doAWS IoTmecanismo de regras

    que encaminha seus dados de mensagem paraAWS IoT Events. Você deve identificar a entradapelo nome.

    • DentroAWS IoT Analytics, use oCreateDatasetPara criar um conjunto de dados comocontentDeliveryRules. Essas regras especificam a propriedadeAWS IoT Eventsonde oconteúdo do conjunto de dados é enviado automaticamente.

    Para que seus dispositivos possam enviar dados dessa maneira, você deve definir uma ou maisentradas. Para fazer isso, dê um nome a cada entrada e especifique quais campos nos dados demensagem de entrada que a entrada monitorará.

    Criar um modelo de detector

    Defina umModelo de detector(um modelo de seu equipamento ou processo) usandoestados. Paracada estado, defina a lógica condicional (booliana) que avalia as entradas recebidas para detectareventos significativos. Quando um evento é detectado, ele pode alterar o estado ou acionar açõespredefinidas ou predefinidas ou personalizadas usando outrasAWSServiços da . Você pode definireventos adicionais que acionam ações ao entrar ou sair de um estado e, opcionalmente, quando umacondição é atendida.

    Neste tutorial, você envia uma mensagem do Amazon SNS como a ação quando o modelo entra ousai de um determinado estado.

    Monitorar um dispositivo ou processo

    Se você monitorar vários dispositivos ou processos, especifique um campo em cada entradaque identifique o dispositivo específico ou processe de onde a entrada vem. Consulte okeyfield

    19

    https://console.aws.amazon.com/iotevents/https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.htmlhttps://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotevents-rulehttps://docs.aws.amazon.com/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-create-dataset

  • AWS IoT Events Guia do desenvolvedorPrerequisites

    emCreateDetectorModel. Quando um novo dispositivo é identificado (um novo valor é vistono campo de entrada identificado pelokey), um detector é criado. Cada detector é uma instânciado modelo de detector. O novo detector continua respondendo às entradas provenientes dessedispositivo até que seu modelo de detector seja atualizado ou excluído.

    Se você monitorar um único processo (mesmo que vários dispositivos ou subprocessos estejamenviando entradas), você não especifica uma identificação exclusivakeyfield (campo) Nesse caso, umúnico detector (instância) é criado quando a primeira entrada chega.

    Enviar mensagens como entradas para o modelo do detector

    Há várias maneiras de enviar uma mensagem de um dispositivo ou processo como uma entradaem umAWS IoT Eventsque não exigem que você execute formatação adicional na mensagem.Neste tutorial, use oAWS IoTConsole do para escrever um AWS IoT EventsAção doRegra doAWSIoTmecanismo de regras que encaminha seus dados de mensagem paraAWS IoT Events.

    Para fazer isso, identifique a entrada pelo nome e continue a usar oAWS IoTpara gerar mensagensque são encaminhadas como entradas paraAWS IoT Events.

    Note

    Este tutorial usa o console para criar o mesmoinputedetector modelMostrado no exemploemTutorials (p. 53). Você pode usar o exemplo deste JSON para ajudá-lo a seguir o tutorial.

    Tópicos• Prerequisites (p. 20)• Criar uma entrada (p. 21)• Criar um modelo de detector (p. 25)• Enviar entradas para testar o modelo do detector (p. 41)

    PrerequisitesSe você não tiver umaAWS, crie uma.

    1. Abra https://portal.aws.amazon.com/billing/signup.2. Siga as instruções online.

    Parte do procedimento de cadastro envolve uma chamada telefônica e a digitação de um código deverificação usando o teclado do telefone.

    3. Crie dois tópicos do Amazon Simple Notification Service (Amazon SNS).

    Este tutorial (e o exemplo correspondente) pressupõe que você criou dois tópicos doAmazon SNS. Os ARNs desses tópicos são mostrados como:arn:aws:sns:us-east-1:123456789012:underPressureActionearn:aws:sns:us-east-1:123456789012:pressureClearedAction. Substitua esses valores pelos ARNsdos tópicos do Amazon SNS criados por você. Para obter mais informações, consulte o Guia dodesenvolvedor do Amazon Simple Notification Service.

    Como alternativa à publicação de alertas para tópicos do Amazon SNS, você pode fazer com que osdetectores enviem mensagens MQTT com um tópico que você especificar. Com essa opção, vocêpode verificar se o modelo do detector está criando instâncias e se essas instâncias estão enviandoalertas usando oAWS IoTConsole principal para assinar e monitorar mensagens enviadas para essestópicos MQTT. Você também pode definir o nome do tópico MQTT dinamicamente em tempo deexecução usando uma entrada ou variável criada no modelo do detector.

    20

    https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotevents-rulehttp://portal.aws.amazon.com/billing/signuphttps://docs.aws.amazon.com/sns/latest/dg/https://docs.aws.amazon.com/sns/latest/dg/

  • AWS IoT Events Guia do desenvolvedorCriar uma entrada

    4. Selecione umAWSRegião que oferece suporteAWS IoT Events. Para obter mais informações,consulteAWS IoT EventsnoAWSReferência geral. Para obter ajuda, consulteTrabalhar com oAWSManagement ConsolenoConceitos básicos doAWS Management Console.

    Criar uma entradaNeste tópico, você define umentradapara receber dados de telemetria (mensagens).

    1. Abra o console do AWS IoT Events.2. NoAWS IoT EventsConsole do, selecioneCriar modelo de detector.

    3. Selecione Criar novo.

    21

    https://docs.aws.amazon.com/general/latest/gr/rande.html#iotevents_regionhttps://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.htmlhttps://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.htmlhttps://console.aws.amazon.com/iotevents/

  • AWS IoT Events Guia do desenvolvedorCriar uma entrada

    4. Quando você constrói os modelos e entradas do detector, convém reunir arquivos que contenhamexemplos de cargas de mensagens que seus dispositivos ou processos enviam para relatar seustatus. Isso facilita a definição das entradas de que precisa.

    Example

    Para este exemplo, no seu sistema de arquivos local, crie um arquivo chamadoinput.jsonCom oseguinte conteúdo.

    { "motorid": "Fulton-A32", "sensorData": { "pressure": 23, "temperature": 47 }}

    5. Escolha Create input (Criar entrada).

    22

  • AWS IoT Events Guia do desenvolvedorCriar uma entrada

    6. Para a entrada, insira umInputName, umDescriçãoe escolhaCarregar arquivo. Na caixa de diálogo,escolha o arquivo JSON que contém a mensagem de exemplo (“input.json”).

    23

  • AWS IoT Events Guia do desenvolvedorCriar uma entrada

    7. para oEscolher atributos de entrada, selecione os atributos a serem usados e escolhaCriar. Esteexemplo selecionamotorideSensorData.PressãoMas não usaSensordata.Temperatura.

    24

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    Criar um modelo de detectorNeste 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 paradetectar um evento significativo. Quando um evento é detectado, ele altera o estado e pode acionar açõesadicionais. 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 odetector entra ou sai desse estado ou quando uma entrada é recebida (estes são conhecidoscomoOnEnter,OnExiteOnInput). As ações são executadas somente se a lógica condicional do eventofor 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 orótuloState_1No espaço de edição principal.

    25

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    2. NoEstado, insira a caixa de seleçãoNome do estadoeOnEnter, escolhaAdicionar evento.

    3. NoAdicionar evento OnEnter, insira umEvent name (Nome do evento)O e aCondição do evento. Nesteexemplo, insiratruePara indicar que o evento é sempre acionado quando o estado é inserido.

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

    26

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    5. UnderAções do evento, faça o seguinte:

    a. SelectDefinição de variáveisb. para oOperação variável, escolhaAtribuir valor.c. para oNome da variável, insira o nome da variável a ser definida.d. para oValor da variável, insira o valor0(zero).

    27

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    6. Escolha Save (Salvar).

    28

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

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

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

    29

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

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

    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.

    30

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    11. Selecione oSem títuloLinha. NoEvento de transição, insira umEvent name (Nome do evento)eLógicade gatilho.

    12. NoEvento de transição, selecioneAção Adicionar.

    31

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    13. NoAdicionar ações de evento de transição, selecioneAção Adicionar.

    14. para oEscolha uma ação, escolhaDefinição de variáveis.

    a. para oOperação variável, escolhaAtribuir valor.b. para oNome da variável, insira o nome da variável.c. para oAtribuir valor, insira o valor como:$variable.pressureThresholdBreached + 3d. Escolha Save (Salvar).

    32

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    15. Selecione o segundo estadountitled_state_1.16. NoEstado, insira a caixa de seleçãoNome do estadoe paraOn Enter, escolhaAdicionar evento.

    33

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    17. NoAdicionar evento OnEnter, insira a caixa de seleçãoEvent name (Nome do evento),Condição doeventoe, escolhaAção Adicionar.

    18. para oEscolha uma ação, escolhaEnviar mensagem SNS.

    a. para oTópico do SNS, insira o ARN de destino do tópico do SNS.b. Escolha Save (Salvar).

    34

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    19. Continue a adicionar os eventos no exemplo.

    a. 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

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

    Event name: Pressure Okay Event condition: $input.PressureInput.sensorData.pressure

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    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 estado21. Clique e arraste a seta do segundo estado para o primeiro estado. Uma linha dirigida com rótuloSem

    títuloé exibida.

    22. Selecione oSem títuloe na linhaEvento de transição, insira umEvent name (Nome do evento)eLógicade gatilhoUsando as informações a seguir.

    { Event name: BackToNormal Event trigger logic: $input.PressureInput.sensorData.pressure

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    Para obter mais informações sobre por que testamos para o$inpute o$variablena lógica dedisparo, consulte a entrada de Disponibilidade de valores de variáveis emRestrições e limitações domodelo de detector (p. 62).

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

    24. Em seguida, configure o modelo do detector para ouvir entradas. No canto superior direito,selecionePublicar.

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

    37

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

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

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

    26. para oChave de criação de detector, escolha o nome de um dos atributos da entrada definidaanteriormente. O atributo que você escolher como chave de criação do detector deve estar presenteem 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).

    38

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

    Você pode fazer uma cópia de backup da definição do modelo do detector (em JSON) recriar ou atualizar omodelo 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 domodelo 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": [

    39

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector

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

  • AWS IoT Events Guia do desenvolvedorEnviar entradas para testar o modelo do detector

    }, { "eventName": "Pressure Okay", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ], "condition": "$input.PressureInput.sensorData.pressure 1" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:IoTVirtualButtonTopic" } } ], "condition": "true" } ] } } ], "initialStateName": "Normal" } }}

    Enviar entradas para testar o modelo do detectorHá várias maneiras de receber dados de telemetria noAWS IoT Events(consulteAçõescompatíveis (p. 90)). Este tópico mostra como criar umAWS IoTRegra doAWS IoTque encaminhamensagens como entradas para o seuAWS IoT Eventsdetector. Você pode usar oAWS IoTcliente MQTT

    41

  • AWS IoT Events Guia do desenvolvedorEnviar entradas para testar o modelo do detector

    do console para enviar mensagens de teste. Você pode usar esse método para obter dados de telemetrianoAWS IoT Eventsquando seus dispositivos são capazes de enviar mensagens MQTT usando oAWSIoTOperador de mensagens.

    Para enviar entradas para testar o modelo do detector

    1. Abrir oAWSConsole de núcleo de IoT. No painel de navegação, selecioneAto.

    2. Na página Regras, selecione Criar.

    3. NoCriar uma regra, insira umName (Nome)eDescrição.

    42

    https://console.aws.amazon.com/iot/

  • AWS IoT Events Guia do desenvolvedorEnviar entradas para testar o modelo do detector

    4. NoInstrução de consulta regra, insira o seguinte.

    SELECT *, topic(2) as motorid FROM 'motors/+/status'

    5. Em Configurar uma ou mais ações, selecione Adicionar ação.

    6. NoSelecionar uma ação, selecioneEnvie uma mensagem para umAWS IoT EventsEntradaeescolhaConfigure action.

    43

  • AWS IoT Events Guia do desenvolvedorEnviar entradas para testar o modelo do detector

    7. Na página Configure action (Configurar ação), faça o seguinte:

    a. para oNome da entrada, insira o nome que você criou na seção anterior.b. para oRole (Função), escolhaCriar funçãoe noCriar uma nova função, insira umName (Nome)e

    escolhaCriar função. Isso cria uma função com permissão para encaminhar mensagens paraAWSIoT Events.

    c. Voltar aoConfigure action, selecioneAção Adicionar.

    8. NoCriar uma regra, selecioneCriar regra.

    44

  • AWS IoT Events Guia do desenvolvedorEnviar entradas para testar o modelo do detector

    9. NoRegrasNo painel de navegação, selecioneTeste.

    10. NoCliente MQTT, selecionePublicar em um tópico.

    45

  • AWS IoT Events Guia do desenvolvedorEnviar entradas para testar o modelo do detector

    11. NoPublicar, insira o tópico, insira a seguinte carga útil no editor e escolhaPublicar.

    { "sensorData": { "pressure": 23, "temperature": 47 }}

    46

  • AWS IoT Events Guia do desenvolvedorEnviar entradas para testar o modelo do detector

    12. para oPublicar, mantenha o tópico igual, mas altere a propriedade"pressure"na carga útil para umvalor maior que o valor limite especificado no modelo do detector (por exemplo,85).

    13. Escolha Publish.

    A instância do detector que você criou gera e envia uma mensagem do SNS. Continue a enviarmensagens com leituras de pressão acima ou abaixo do limiar de pressão (70, neste exemplo) para ver odetector em funcionamento.

    Neste exemplo, você deve enviar três mensagens com leituras de pressão abaixo do limite parafazer a transição de volta para oNormale receber uma mensagem SNS que indica que a condição desobrepressão foi apagada. Uma vez de volta noNormal, uma mensagem com uma leitura de pressãoacima do limite faz com que o detector entre noPerigose envie uma mensagem SNS indicando essacondição.

    Agora que você criou um modelo de entrada e detector simples, tente o seguinte.

    • Veja mais exemplos de modelos de detectores (modelos) no console.• Siga as etapas emExemplo passo a passo (p. 56)para criar um modelo de entrada e detector usando

    oAWS CLI• Saiba mais sobre os detalhes doExpressions (p. 101)usado em eventos.• Saiba mais sobre o Ações compatíveis (p. 90).• Se algo não estiver funcionando, consulteSolução de problemas do AWS IoT Events (p. 196).

    47

  • AWS IoT Events Guia do desenvolvedorAtivar o log do Amazon CloudWatch ao

    desenvolverAWS IoT EventsModelos de detector

    Melhores práticas do AWS IoTEvents

    Siga estas melhores práticas para obter o benefício máximo comAWS IoT Events.

    Tópicos• Ativar o log do Amazon CloudWatch ao desenvolverAWS IoT EventsModelos de detector (p. 48)• Publique regularmente para salvar seu modelo de detector ao trabalhar noAWS IoT

    Eventsconsole (p. 51)• Armazene o seuAWS IoT Eventsdados para evitar possíveis perdas de dados devido a um longo

    período de inatividade (p. 52)

    Ativar o log do Amazon CloudWatch aodesenvolverAWS IoT EventsModelos de detector

    O Amazon CloudWatch monitora osAWSRecursos da e os aplicativos executados naAWSEm tempo real.Com o CloudWatch, você obtém visibilidade no âmbito do sistema do uso de recursos, do desempenhodos aplicativos e da saúde operacional. Quando você desenvolver ou depurar umAWS IoT Events, oCloudWatch ajuda você a saber o queAWS IoT Eventsestá fazendo, e quaisquer erros que encontrar.

    Para ativar o CloudWatch

    1. Se você ainda não tiver feito isso, siga as etapas emConfigurar permissões para o AWS IoTEvents (p. 3)para criar uma função com uma política anexada que concede permissão para criar egerenciar logs do CloudWatch paraAWS IoT Events.

    2. NoAWS IoT Events, escolha o ícone de menu no canto superior esquerdo para abrir o painel denavegação.

    48

  • AWS IoT Events Guia do desenvolvedorAtivar o log do Amazon CloudWatch ao

    desenvolverAWS IoT EventsModelos de detector

    Se você estiver naConceitos básicosNa página, escolha oXno canto superior direito para fechar essapágina e ir para oPaleta de modelo de detector. Escolha o ícone de menu no canto superior esquerdo.

    3. No painel de navegação, selecione Settings.

    4. NoConfiguraçõespágina, escolhaEdite.

    49

  • AWS IoT Events Guia do desenvolvedorAtivar o log do Amazon CloudWatch ao

    desenvolverAWS IoT EventsModelos de detector

    5. NoEditar opções de logNa página, faça o seguinte:

    a. Selecione oNível de verbosidade.b. para oSelecionar função, selecione uma função com permissões suficientes para executar as

    ações de log escolhidas.c. Se você escolheuDepurepara aNível de verbosidadeTambém é possível escolherOpção Adicionar

    ModeloE adicione umNome do modelo do detectore (opcional)KeyValuepara especificar o (s)modelo (s) do detector e detectores (instâncias) específicos a registar.

    d. Escolha Update.

    50

  • AWS IoT Events Guia do desenvolvedorPublique regularmente para salvar seu modelo dedetector ao trabalhar noAWS IoT Eventsconsole

    Suas opções de registro foram atualizadas com êxito.

    Publique regularmente para salvar seu modelo dedetector ao trabalhar noAWS IoT Eventsconsole

    Quando você usa oAWS IoT Events, seu trabalho em andamento é salvo localmente em seu navegador(cookies). Mas você deve escolherPublicarpara salvar seu modelo de detector emAWS IoT Events. Depoisde publicar um modelo de detector, seu trabalho publicado estará disponível em qualquer navegadorusado para acessar sua conta. Antes de publicar, seu trabalho não é salvo.

    Note

    Depois de publicar um modelo de detector, você não pode alterar seu nome, mas pode continuarmodificando sua definição.

    51

  • AWS IoT Events Guia do desenvolvedorArmazene o seuAWS IoT Eventsdados para evitar possíveisperdas de dados devido a um longo período de inatividade

    Armazene o seuAWS IoT Eventsdados para evitarpossíveis perdas de dados devido a um longoperíodo de inatividade

    Se você não usaAWS IoT Eventspor um período significativo de tempo (ou seja, não incorrer em cargas enão criar modelos de detectores), seus dados, incluindo seus modelos de detector, podem ser excluídosautomaticamente. No entanto, não excluiremos dados ou modelos de detectores sem lhe fornecer umaviso prévio com pelo menos 30 dias. Se você precisar armazenar dados por um período estendido,considere usarAWSServiços de armazenamento.

    52

    https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-storage-optimization/aws-storage-services.html

  • AWS IoT Events Guia do desenvolvedorO uso doAWS IoT Eventsparamonitorar seus dispositivos IoT

    TutorialsNeste capítulo, você pode fazer o seguinte.

    • Obtenha ajuda para decidir quais estados incluir em seu modelo de detector e se você precisa de umainstância de detector ou várias.

    • Siga um exemplo que usa oAWS CLI. Crie uma entrada para receber dados de telemetria de umdispositivo e um modelo de detector para monitorar e relatar o estado do dispositivo que envia essesdados.

    • Revise restrições e limitações em entradas, modelos de detectores e noAWS IoT EventsserviçoServiço.• Veja um exemplo mais complexo de um modelo de detector, com comentários incluídos.

    Tópicos• O uso doAWS IoT Eventspara monitorar seus dispositivos IoT (p. 53)• Exemplo passo a passo (p. 56)• Restrições e limitações do modelo de detector (p. 62)• Um exemplo comentado: Controle de temperatura do AVAC (p. 65)

    O uso doAWS IoT Eventspara monitorar seusdispositivos IoT

    Você pode usarAWS IoT Eventspara monitorar seus dispositivos ou processos e tomar medidas com baseem eventos significativos. Para fazer isso, siga estas etapas básicas:

    Criar entradas

    Seus dispositivos e processos devem ter uma maneira de inserir dados de telemetria noAWS IoTEvents. Você faz isso enviando mensagens comoinputsparaAWS IoT Events. Você pode enviarmensagens como entradas de várias maneiras:• Usar aBatchPutMessageoperação.• Escreva umAWS IoT CoreAção da regra dopara aAWS IoT Coremecanismo de regras que

    encaminha seus dados de mensagem paraAWS IoT Events. Isso identifica a entrada pelo nome.• DentroAWS IoT Analytics, use oCreateDatasetoperação para criar um conjunto de dados

    comcontentDeliveryRules. Essas regras especificam oAWS IoT Eventsonde o conteúdo doconjunto de dados é enviado automaticamente.

    • Defina umAção do IotEventsem umAWS IoT EventsModelo dedetectoronInput,onExitoutransitionEventsEvento . As informações sobre a instância domodelo de detector e o evento que acionou a ação são alimentadas de volta no sistema como umaentrada com o nome especificado.

    Para que seus dispositivos comecem a enviar dados dessa maneira, você deve definir uma ou maisentradas. Para fazer isso, dê um nome a cada entrada e especifique quais campos nos dados demensagem recebida a entrada monitora.AWS IoT Eventsrecebe sua entrada, na forma de carga

    53

    https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.htmlhttps://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotevents-rulehttps://docs.aws.amazon.com/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-create-datasethttps://docs.aws.amazon.com/iotevents/latest/apireference/API_IotEventsAction.html

  • AWS IoT Events Guia do desenvolvedorComo você sabe quais estados vocêprecisa em um modelo de detector?

    JSON, de muitas fontes. Cada entrada pode ser agida sozinha ou combinada com outras entradaspara detectar eventos mais complexos.

    Criar um modelo de detector

    Defina umModelo de detector(um modelo de seu equipamento ou processo) usandoestados. Paracada estado, você define a lógica condicional (booliana) que avalia as entradas recebidas paradetectar eventos significativos. Quando um evento é detectado, ele pode alterar o estado ou acionarações predefinidas ou personalizadas usando outrosAWSServiços da . Você pode definir eventosadicionais que acionam ações ao entrar ou sair de um estado e, opcionalmente, quando uma condiçãoé atendida.

    Neste tutorial, você envia uma mensagem do Amazon SNS como a ação quando o modelo entra ousai de um determinado estado.

    Monitorar um dispositivo ou processo

    Se você estiver monitorando vários dispositivos ou processos, especifique um campo em cada entradaque identifique o dispositivo específico ou o processo de origem da entrada. (Consulte okeyfieldnoCreateDetectorModel.) Quando um novo dispositivo é identificado (um novo valor é visto nocampo de entrada identificado pelokey), um detector é criado. (Cada detector é uma instância domodelo de detector.) Em seguida, o novo detector continua respondendo às entradas provenientesdesse dispositivo até que seu modelo de detector seja atualizado ou excluído.

    Se você estiver monitorando um único processo (mesmo que vários dispositivos ou subprocessosestejam enviando entradas), não especifique uma identificação exclusivakeyfield. Nesse caso, umúnico detector (instância) é criado quando a primeira entrada chega.

    Enviar mensagens como entradas para o modelo do detector

    Há várias maneiras de enviar uma mensagem de um dispositivo ou processo como uma entrada emumAWS IoT Eventsdetector que não exigem que você execute formatação adicional na mensagem.Neste tutorial, use aAWS IoTConsole do para gravar umAWS IoT EventsAção doRegra doAWS IoTCoremecanismo de regras que encaminha seus dados de mensagem paraAWS IoT Events. Parafazer isso, você identifica a entrada pelo nome. Em seguida, você continua a usar oAWS IoTparagerar algumas mensagens que são encaminhadas como entradas paraAWS IoT Events.

    Como você sabe quais estados você precisa em ummodelo de detector?Para determinar quais estados seu modelo de detector deve ter, primeiro decida quais ações você podetomar. Por exemplo, se o seu automóvel funciona com gasolina, você olha para o medidor de combustívelquando você começa uma viagem para ver se você precisa reabastecer. Aqui você tem uma ação: digaao motorista para “ir buscar gasolina”. Seu modelo detector precisa de dois estados: “carro não precisa decombustível” e “carro precisa de combustível”. Em geral, você deseja definir um estado para cada açãopossível, mais um para quando nenhuma ação é necessária. Isso funciona mesmo que a ação em si sejamais complicada. Por exemplo, você pode querer procurar e incluir informações sobre onde encontrar oposto de gasolina mais próximo ou o preço mais barato, mas você faz isso ao enviar a mensagem para “irbuscar gasolina”.

    Para decidir qual estado inserir a seguir, observe as entradas. As entradas contêm as informações quevocê precisa para decidir em que estado você deve estar. Para criar uma entrada, selecione um ou maiscampos em uma mensagem enviada pelo dispositivo ou processo que o ajude a decidir. Neste exemplo,você precisa de uma entrada que indique o nível de combustível atual (“percentual cheio”). Talvez o seucarro esteja a enviar-lhe várias mensagens diferentes, cada uma com vários campos diferentes. Paracriar essa entrada, você deve selecionar a mensagem e o campo que informa o nível atual do medidor degás. A duração da viagem que você está prestes a fazer (“distância até o destino”) pode ser codificadapara manter as coisas simples; você pode usar a duração média da viagem. Você fará alguns cálculos

    54

    https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotevents-rule

  • AWS IoT Events Guia do desenvolvedorComo você sabe se você precisa de

    uma instância de um detector ou vários?

    com base na entrada (quantos galões essa porcentagem completa se traduz para? é a duração média daviagem maior do que as milhas que você pode viajar, dados os galões que você tem e sua média “milhaspor galão”). Você executa esses cálculos e envia mensagens noEventos do.

    Até agora você tem dois estados e uma entrada. Você precisa de um evento no primeiro estado querealize os cálculos com base na entrada e decida se deve ir para o segundo estado. Isso é um eventode transição. (transitionEventsestão em um estadoonInputlista de eventos.NoRecebimentodeentradaneste primeiro estado, oEventoexecuta umtransiçãopara o segundo estado, se oeventoconditioné atendida.) Quando você chegar ao segundo estado, você envia a mensagem assimque você inserir o estado. (Você pode usar umonEnterEvento . Ao entrar no segundo estado, este eventoenvia a mensagem. Não há necessidade de esperar que outra entrada chegue.) Existem outros tipos deeventos, mas isso é tudo que você precisa para um exemplo simples.

    Os outros tipos de eventos sãoonExiteonInput. Assim que uma entrada é recebida e a condição éatendida, umonInputexecuta as ações especificadas. Quando uma operação sai de seu estado atual e acondição é atendida, oonExitexecuta as ações especificadas.

    Está perdendo alguma coisa? Sim, como você volta para o primeiro estado “carro não precisa decombustível”? Depois de encher o tanque de gasolina, a entrada mostra um tanque cheio. Em seusegundo estado você precisa de um evento de transição de volta para o primeiro estado que acontecequando a entrada é recebida (no segundo estadoonInput:Events). Ele deve fazer a transição de volta aoprimeiro estado se seus cálculos mostrarem que você tem gás suficiente para chegar onde você quer ir.

    Esse é o básico. Alguns modelos de detectores ficam mais complexos adicionando estados que refletementradas importantes, não apenas ações possíveis. Por exemplo, você pode ter três estados em ummodelo de detector que mantém o controle da temperatura: um estado “normal”, um estado “muito quente”e um estado de “problema potencial”. Você faz a transição para o estado potencial do problema quandoa temperatura sobe acima de um certo nível, mas ainda não está muito quente. Você não quer enviar umalarme a menos que ele permaneça a esta temperatura por mais de 15 minutos. Se a temperatura voltarao normal antes disso, o detector faz a transição de volta para o estado normal. Se o temporizador expirar,o detector transita para o estado muito quente e envia um alarme, apenas para ser cauteloso. Vocêpoderia fazer a mesma coisa usando variáveis e um conjunto mais complexo de condições de evento. Masmuitas vezes é mais fácil usar outro estado para, de fato, armazenar os resultados de seus cálculos.

    Como você sabe se você precisa de uma instância deum detector ou vários?Para decidir quantas instâncias você precisa, pergunte a si mesmo “O que você está interessado emsaber?” Vamos supor que você queira saber como está o tempo de hoje. Está chovendo (estado)?Você precisa tomar um guarda-chuva (ação)? Você pode ter um sensor que relata a temperatura, outroque relata a umidade, e outros que relatam a pressão barométrica, velocidade e direção do vento, eprecipitação. Mas você deve monitorar todos esses sensores juntos para determinar o estado do clima(chuva, neve, nublado, ensolarado) e a ação apropriada a tomar (pegue um guarda-chuva ou apliqueprotetor solar). Apesar do número de sensores, você deseja que uma instância de detector monitore oestado do clima e informe qual ação tomar.

    Mas se você é o meteorologista da sua região, você pode ter várias instâncias de tais matrizes desensores, situadas em diferentes locais em toda a região. As pessoas em cada local precisam sabercomo é o tempo nesse local. Neste caso, você precisa de várias instâncias do seu detector. Os dadosrelatados por cada sensor em cada local devem incluir um campo que você designou comokeyfield. Estecampo habilitaAWS IoT Eventspara criar uma instância de detector para a área e, em seguida, continuar aencaminhar esta informação para essa instância do detector à medida que ela continua a chegar. Chegade cabelo arruinado ou narizes queimados pelo sol!

    Essencialmente, você precisa de uma instância de detector se tiver uma situação (um processo ou umlocal) para monitorar. Se você tiver muitas situações (locais, processos) para monitorar, precisará de váriasinstâncias de detector.

    55

  • AWS IoT Events Guia do desenvolvedorExemplo passo a passo

    Exemplo passo a passoNeste exemplo, o métodoAWS IoT EventsAPIs usandoAWS CLIpara criar um detector que modela doisestados de um motor: um estado normal e uma condição de sobrepressão.

    Quando a pressão medida no mecanismo excede um determinado limite, o modelo passa para o estadode sobrepressão e envia uma mensagem do Amazon Simple Notification Service (Amazon SNS) paraalertar um técnico sobre a condição. Quando a pressão cai abaixo do limite para três leituras de pressãoconsecutivas, o modelo retorna ao estado normal e envia outra mensagem do Amazon SNS como umaconfirmação de que a condição foi limpa. Exigimos três leituras consecutivas abaixo do limite de pressãopara eliminar a possível gagueira de mensagens de sobrepressão/normais em caso de uma fase derecuperação não linear ou uma leitura de recuperação anômala única.

    Veja a seguir uma visão geral das etapas para criar o detector.

    Criarinputs.

    Para monitorar seus dispositivos e processos, eles devem ter uma maneira de inserir dados detelemetria noAWS IoT Events. Isso é feito enviando mensagens comoinputsparaAWS IoT Events.Você pode fazer isso de várias maneiras:• Usar aBatchPutMessageoperação. Esse método é fácil, mas requer que seus dispositivos ou

    processos sejam capazes de acessar oAWS IoT EventsAPI por meio de um SDK ou doAWS CLI.• DentroAWS IoT Core, escreva umAWS IoT EventsAção doRegra doAWS IoT Coremecanismo de

    regras que encaminha seus dados de mensagem paraAWS IoT Events. Isso identifica a entradapelo nome. Use esse método se seus dispositivos ou processos puderem, ou já estiverem, enviandomensagens através doAWS IoT Core. Esse método geralmente requer menos poder de computaçãode um dispositivo.

    • DentroAWS IoT Analytics, use oCreateDatasetoperação para criar um conjunto de dadoscomcontentDeliveryRulesque especificam aAWS IoT Events, onde o conteúdo do conjuntode dados é enviado automaticamente. Use esse método se quiser controlar seus dispositivos ouprocessos com base em dados agregados ou analisados noAWS IoT Analytics.

    Para que seus dispositivos possam enviar dados dessa maneira, você deve definir uma ou maisentradas. Para fazer isso, dê um nome a cada entrada e especifique quais campos nos dados demensagem recebida que a entrada monitora.

    Criar um modelo de detector

    Criar umModelo de detector(um modelo de seu equipamento ou processo) usandoestados. Para cadaestado, defina a lógica condicional (booliana) que avalia as entradas recebidas para detectar eventossignificativos. Quando um evento é detectado, ele pode alterar o estado ou acionar ações predefinidasou personalizadas usando outrosAWSServiços da . Você pode definir eventos adicionais que acionamações ao entrar ou sair de um estado e, opcionalmente, quando uma condição é atendida.

    Monitorar vários dispositivos ou processos

    Se você estiver monitorando vários dispositivos ou processos e quiser acompanhar cada um delesseparadamente, especifique um campo em cada entrada que identifique o dispositivo específicoou o processo de origem da entrada. Consulte okeyfield noCreateDetectorModel. Quando umnovo dispositivo é identificado (um novo valor é visto no campo de entrada identificado pelokey),uma instância de detector é criada. A nova instância do detector continua a responder às entradasprovenientes desse dispositivo específico até que seu modelo de detector seja atualizado ouexcluído. Você tem tantos detectores exclusivos (instâncias) quanto existem valores únicos naentradakeyCampos de.

    Monitorar um único dispositivo ou processo

    Se você estiver monitorando um único processo (mesmo que vários dispositivos ou subprocessosestejam enviando entradas), não especifique uma identificação exclusivakeyfield. Nesse caso, um

    56

    https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.htmlhttps://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotevents-rulehttps://docs.aws.amazon.com/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-create-dataset

  • AWS IoT Events Guia do desenvolvedorCriar uma entrada para capturar dados do dispositivo

    único detector (instância) é criado quando a primeira entrada chega. Por exemplo, você pode tersensores de temperatura em cada sala de uma casa, mas apenas uma unidade AVAC para aquecerou resfriar a casa inteira. Assim, você só pode controlar isso como um único processo, mesmo quecada ocupante da sala queira que seu voto (entrada) prevaleça.

    Envie mensagens de seus dispositivos ou processos como entradas para seu modelo de detector

    Descrevemos as várias maneiras de enviar uma mensagem de um dispositivo ou processo como umaentrada em umAWS IoT Eventsdetector eminputs. Depois de criar as entradas e criar o modelo dedetector, você estará pronto para começar a enviar dados.

    Note

    Quando você cria um modelo de detector ou atualiza um existente, leva vários minutosantes que o modelo de detector novo ou atualizado comece a receber mensagens e a criardetectores (instâncias). Se o modelo do detector for atualizado, durante esse período vocêpoderá continuar a ver o comportamento com base na versão anterior.

    Tópicos• Criar uma entrada para capturar dados do dispositivo (p. 57)• Criar um modelo de detector para representar estados de dispositivo (p. 58)• Enviar mensagens como entradas para um detector (p. 60)

    Criar uma entrada para capturar dados do dispositivoPor exemplo, suponha que seus dispositivos enviem mensagens com o seguinte formato.

    { "motorid": "Fulton-A32", "sensorData": { "pressure": 23, "temperature": 47 }}

    Você pode criar uma entrada para capturar opressureDados do e domotorid(que identifica o dispositivoespecífico que enviou a mensagem) usando o seguinteAWS CLIComando da.

    aws iotevents create-input --cli-input-json file://pressureInput.json

    O arquivopressureInput.jsoncontém o seguinte.

    { "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.pressure" }, { "jsonPath": "motorid" } ] }}

    Ao criar suas próprias entradas, lembre-se de primeiro coletar mensagens de exemplo como arquivosJSON de seus dispositivos ou processos. Você pode usá-los para criar uma entrada do console da ou daCLI da.

    57

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector pararepresentar estados de dispositivo

    Criar um modelo de detector para representar estadosde dispositivoDentroCriar uma entrada para capturar dados do dispositivo (p. 57), você criou uminputbaseado emuma mensagem que relata dados de pressão de um motor. Para continuar com o exemplo, aqui está ummodelo 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 naseção”Normal“estado quando ele é criado. A instância é criada quando uma entrada com um valorexclusivo para a propriedadekey "motorid“chega.

    Se a instância do detector receber uma leitura de pressão igual ou superior a 70, ela entrano”Dangerous“e envia uma mensagem do Amazon SNS como um aviso. Se as leituras de pressãovoltarem ao normal (menos de 70) para três entradas consecutivas, o detector retorna ao”Normal“e enviaoutra mensagem do Amazon SNS como tudo claro.

    Este modelo de detector de exemplo pressupõe que você tenha criado dois tópicos do AmazonSNS cujos Amazon Resource Names (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 .Amazon Simple Notification Servicee, mais especificamente, adocumentação doCreateTopicoperação emAmazon Simple Notification Service.

    Este exemplo também pressupõe que você tenha criado umAWS Identity and Access Management(IAM)com permissões apropriadas. O ARN dessa função é mostrado na definição do modelo do detectorcomo"roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole". Siga as etapasemConfigurar permissões para o AWS IoT Events (p. 3)para criar essa função e copiar o ARN da funçãono local apropriado na definição do modelo do detector.

    Você pode criar o modelo do detector usando o seguinteAWS CLIComando da.

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

    O arquivo"motorDetectorModel.json"contém o seguinte.

    { "detectorModelName": "motorDetectorModel", "detectorModelDefinition": { "states": [ { "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "condition": "true", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ] } ]

    58

    https://docs.aws.amazon.com/sns/latest/dg/https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html

  • AWS IoT Events Guia do desenvolvedorCriar um modelo de detector pararepresentar estados de dispositivo

    }, "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": [ {