Expressões para filtrar, transformar e processar dados de eventos - AWS IoT Events

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

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

Expressões para filtrar, transformar e processar dados de eventos

As expressões são usadas para avaliar dados recebidos, realizar cálculos e determinar as condições sob as quais ações específicas ou transições de estado devem ocorrer. AWS IoT Events fornece várias maneiras de especificar valores ao criar e atualizar modelos de detectores. Você pode usar expressões para especificar valores literais ou AWS IoT Events avaliar as expressões antes de especificar valores específicos.

Sintaxe para filtrar dados do dispositivo e definir ações no AWS IoT Events

As expressões oferecem sintaxe para filtrar dados do dispositivo e definir ações. É possível usar literais, operadores, funções, referências e modelos de substituição nas expressões do AWS IoT Events . Ao combinar esses componentes, você pode criar expressões poderosas e flexíveis para processar dados de IoT, realizar cálculos, manipular cadeias de caracteres e tomar decisões lógicas em seus modelos de detectores.

Literais

  • Inteiro

  • Decimal

  • String

  • Booleano

Operadores

Unário
  • Não (booliano): !

  • Não (bitwise): ~

  • Menos (aritmética): -

String
  • Concatenação: +

    Ambos os operandos devem ser strings. Literais de string devem estar entre aspas simples (').

    Por exemplo: 'my' + 'string' -> 'mystring'

Aritmética
  • Adição: +

    Ambos os operandos devem ser numéricos.

  • Subtração: -

  • Divisão: /

    O resultado da divisão é um valor inteiro arredondado, a menos que pelo menos um dos operandos (divisor ou dividendo) seja um valor decimal.

  • Multiplicação: *

Bit a bit (inteiro)
  • OU: |

    Por exemplo: 13 | 5 -> 13

  • E: &

    Por exemplo: 13 & 5 -> 5

  • XOR: ^

    Por exemplo: 13 ^ 5 -> 8

  • NÃO: ~

    Por exemplo: ~13 -> -14

Booleano
  • Menor que: <

  • Menor ou igual a: <=

  • Igual a: ==

  • Não igual a: !=

  • Maior ou igual a: >=

  • Maior que: >

  • E: &&

  • OU: ||

    nota

    Quando uma subexpressão de || contém dados indefinidos, essa subexpressão é tratada como false.

Parênteses

É possível usar parênteses para agrupar termos em uma expressão.

Funções para usar em AWS IoT Events expressões

AWS IoT Events fornece um conjunto de funções integradas para aprimorar os recursos das expressões do seu modelo de detector. Essas funções permitem gerenciamento de cronômetro, conversão de tipo, verificação de nulos, identificação do tipo de gatilho, verificação de entrada, manipulação de seqüências de caracteres e operações bit a bit. Ao aproveitar essas funções, você pode criar uma lógica de AWS IoT Events processamento responsiva, melhorando a eficácia geral de seus aplicativos de IoT.

Funções incorporadas
timeout("timer-name")

Será avaliado como true se o temporizador especificado expirou. Substitua timer-name "" pelo nome de um cronômetro que você definiu, entre aspas. Em uma ação de evento, é possível definir um temporizador e, em seguida, iniciá-lo, reiniciá-lo ou limpar um que você definiu anteriormente. Consulte o campodetectorModelDefinition.states.onInput|onEnter|onExit.events.actions.setTimer.timerName.

Um temporizador definido em um estado pode ser referenciado em um estado diferente. Você deve visitar o estado em que criou o temporizador antes de entrar no estado em que o temporizador é referenciado.

Por exemplo, um modelo de detector tem dois estados, TemperatureChecked RecordUpdated e. Você criou um cronômetro no TemperatureChecked estado. Você deve visitar o TemperatureChecked estado primeiro antes de poder usar o cronômetro no RecordUpdated estado.

Para garantir a precisão, o tempo mínimo que um temporizador deve ser configurado é de 60 segundos.

nota

timeout() retorna true somente na primeira vez em que é verificado após a expiração real do temporizador e retorna false depois disso.

convert(type, expression)

Será avaliado como o valor da expressão convertida para o tipo especificado. O type valor deve ser StringBoolean, ouDecimal. Use uma dessas palavras-chave ou uma expressão que seja avaliada como uma string contendo a palavra-chave. Somente as seguintes conversões são bem-sucedidas e retornam um valor válido:

  • Booliano -> string

    Retorna uma string "true" ou "false".

  • Decimal -> string

  • String -> booliano

  • String -> decimal

    A string especificada deve ser uma representação válida de um número decimal ou convert() falhará.

Se convert() não retornar um valor válido, a expressão da qual ele faz parte também é inválida. Esse resultado é equivalente a false e não acionará actions ou a transição para o nextState especificado como parte do evento no qual a expressão ocorre.

isNull(expression)

Será avaliado como true se a expressão retornar para NULL. Por exemplo, se a entrada MyInput receber a mensagem { "a": null }, o seguinte será avaliado como true, mas isUndefined($input.MyInput.a) será avaliado como false.

isNull($input.MyInput.a)
isUndefined(expression)

Será avaliado como true se a expressão for indefinida. Por exemplo, se a entrada MyInput receber a mensagem { "a": null }, o seguinte será avaliado como true, mas isNull($input.MyInput.a) será avaliado como false.

isUndefined($input.MyInput.a)
triggerType("type")

O valor de type pode ser "Message" ou "Timer". Será avaliado como true se a condição do evento em que ele aparece está sendo avaliada porque um temporizador expirou, como no exemplo a seguir.

triggerType("Timer")

Ou uma mensagem de entrada foi recebida.

triggerType("Message")
currentInput("input")

Será avaliado como true se a condição do evento em que ele aparece está sendo avaliada porque a mensagem de entrada especificada foi recebida. Por exemplo, se a entrada Command receber a mensagem { "value": "Abort" }, o seguinte será avaliado como true.

currentInput("Command")

Use essa função para verificar se a condição está sendo avaliada porque uma entrada específica foi recebida e um temporizador não expirou, como na expressão a seguir.

currentInput("Command") && $input.Command.value == "Abort"
Funções de correspondência de strings
startsWith(expression1, expression2)

Será avaliado como true se a primeira expressão de string começa com a segunda expressão de string. Por exemplo, se a entrada MyInput receber a mensagem { "status": "offline"}, a seguinte será avaliada como true.

startsWith($input.MyInput.status, "off")

Ambas as expressões devem ser avaliadas para um valor de string. Se uma das expressões não for avaliada como um valor de string, o resultado da função será indefinido. Nenhuma conversão é realizada.

endsWith(expression1, expression2)

Será avaliado como true se a primeira expressão de string termina com a segunda expressão de string. Por exemplo, se a entrada MyInput receber a mensagem { "status": "offline" }, a seguinte será avaliada como true.

endsWith($input.MyInput.status, "line")

Ambas as expressões devem ser avaliadas para um valor de string. Se uma das expressões não for avaliada como um valor de string, o resultado da função será indefinido. Nenhuma conversão é realizada.

contains(expression1, expression2)

Será avaliado como true se a primeira expressão de string contém a segunda expressão de string. Por exemplo, se a entrada MyInput receber a mensagem { "status": "offline" }, a seguinte será avaliada como true.

contains($input.MyInput.value, "fli")

Ambas as expressões devem ser avaliadas para um valor de string. Se uma das expressões não for avaliada como um valor de string, o resultado da função será indefinido. Nenhuma conversão é realizada.

Funções de manipulação de números inteiros bit a bit
bitor(expression1, expression2)

Avalia o OR bit a bit das expressões inteiras (a operação binária OR é executada nos bits correspondentes dos números inteiros). Por exemplo, se a entrada MyInput receber a mensagem { "value1": 13, "value2": 5 }, a seguinte será avaliada como 13.

bitor($input.MyInput.value1, $input.MyInput.value2)

Ambas as expressões devem ser avaliadas como um valor inteiro. Se uma das expressões não for avaliada como um valor inteiro, o resultado da função será indefinido. Nenhuma conversão é realizada.

bitand(expression1, expression2)

Avalia o AND bit a bit das expressões inteiras (a operação binária AND é executada nos bits correspondentes dos números inteiros). Por exemplo, se a entrada MyInput receber a mensagem { "value1": 13, "value2": 5 }, a seguinte será avaliada como 5.

bitand($input.MyInput.value1, $input.MyInput.value2)

Ambas as expressões devem ser avaliadas como um valor inteiro. Se uma das expressões não for avaliada como um valor inteiro, o resultado da função será indefinido. Nenhuma conversão é realizada.

bitxor(expression1, expression2)

Avalia o XOR bit a bit das expressões inteiras (a operação binária XOR é executada nos bits correspondentes dos números inteiros). Por exemplo, se a entrada MyInput receber a mensagem { "value1": 13, "value2": 5 }, a seguinte será avaliada como 8.

bitxor($input.MyInput.value1, $input.MyInput.value2)

Ambas as expressões devem ser avaliadas como um valor inteiro. Se uma das expressões não for avaliada como um valor inteiro, o resultado da função será indefinido. Nenhuma conversão é realizada.

bitnot(expression)

Avalia o NOT bit a bit da expressão inteira (a operação binária NOT é executada nos bits do inteiro). Por exemplo, se a entrada MyInput receber a mensagem { "value": 13 }, a seguinte será avaliada como -14.

bitnot($input.MyInput.value)

Ambas as expressões devem ser avaliadas como um valor inteiro. Se uma das expressões não for avaliada como um valor inteiro, o resultado da função será indefinido. Nenhuma conversão é realizada.

AWS IoT Events referência para entradas e variáveis em expressões

Entradas

$input.input-name.path-to-data

input-nameé uma entrada que você cria usando a CreateInputação.

Por exemplo, se você tiver uma entrada nomeada TemperatureInput para a qual definiu entradas inputDefinition.attributes.jsonPath, os valores podem aparecer nos seguintes campos disponíveis.

{ "temperature": 78.5, "date": "2018-10-03T16:09:09Z" }

Para referenciar o valor do campo temperature, use o comando a seguir.

$input.TemperatureInput.temperature

Para campos cujos valores são matrizes, é possível referenciar membros da matriz usando [n]. Por exemplo, considerando os seguintes dados:

{ "temperatures": [ 78.4, 77.9, 78.8 ], "date": "2018-10-03T16:09:09Z" }

O valor 78.8 pode ser referenciado com o comando a seguir.

$input.TemperatureInput.temperatures[2]
Variáveis

$variable.variable-name

A variable-name é uma variável que você definiu usando a CreateDetectorModelação.

Por exemplo, caso tenha uma variável chamada TechnicianID definida usando detectorDefinition.states.onInputEvents.actions.setVariable.variableName, é possível referenciar o valor (string) dado mais recentemente à variável com o comando a seguir.

$variable.TechnicianID

Você pode definir os valores das variáveis somente usando a ação setVariable. Não é possível atribuir valores para variáveis em uma expressão. Uma variável não pode ser desativada. Por exemplo, não é possível atribuir o valor null a ela.

nota

Nas referências que usam identificadores que não seguem o padrão (expressão regular) [a-zA-Z][a-zA-Z0-9_]*, você deve colocar esses identificadores em acentos graves (`). Por exemplo, uma referência a uma entrada nomeada MyInput com um campo chamado _value deve especificar esse campo como $input.MyInput.`_value`.

Ao usar referências em expressões, verifique o seguinte:

  • Ao usar uma referência como operando com um ou mais operadores, verifique se todos os tipos de dados referenciados são compatíveis.

    Por exemplo, na expressão a seguir, o inteiro 2 é um operando dos operadores == e &&. Para garantir que os operandos sejam compatíveis, $variable.testVariable + 1 e $variable.testVariable devem referenciar um número inteiro ou decimal.

    Além disso, o inteiro 1 é um operando do operador +. Portanto, $variable.testVariable deve fazer referência a um número inteiro ou decimal.

    ‘$variable.testVariable + 1 == 2 && $variable.testVariable’
  • Ao usar uma referência como argumento passado para uma função, verifique se a função é compatível com os tipos de dados aos quais você faz referência.

    Por exemplo, a função a seguir timeout("time-name") requer uma string com aspas duplas como argumento. Se você usar uma referência para o timer-name valor, deverá referenciar uma string com aspas duplas.

    timeout("timer-name")
    nota

    Para a convert(type, expression) função, se você usar uma referência para o type valor, o resultado avaliado da sua referência deverá serString,Decimal, ouBoolean.

AWS IoT Events as expressões oferecem suporte aos tipos de dados inteiros, decimais, strings e booleanos. A tabela a seguir fornece uma lista de pares de tipos incompatíveis.

Pares de tipos incompatíveis

Inteiro, string

Inteiro, booliano

Decimal, sequência

Decimal, booliano

String, booliano

Modelos de substituição para expressões AWS IoT Events

'${expression}'

O ${} identifica a string como uma string interpolada. expressionPode ser qualquer AWS IoT Events expressão. Isso inclui Operadores, Funções e Referências.

Por exemplo, você usou a SetVariableActionação para definir uma variável. O variableName é SensorID, e o value é 10. É possível criar os seguintes modelos de substituição.

Modelo de substituição String de resultados
'${'Sensor ' + $variable.SensorID}'

"Sensor 10"

'Sensor ' + '${$variable.SensorID + 1}'

"Sensor 11"

'Sensor 10: ${$variable.SensorID == 10}'

"Sensor 10: true"

'{\"sensor\":\"${$variable.SensorID + 1}\"}'

"{\"sensor"\:\"11\"}"

'{\"sensor\":${$variable.SensorID + 1}}'

"{\"sensor\":11}"