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.
Tópicos
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 comofalse
.
-
- 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. Substituatimer-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 noTemperatureChecked
estado. Você deve visitar oTemperatureChecked
estado primeiro antes de poder usar o cronômetro noRecordUpdated
estado.Para garantir a precisão, o tempo mínimo que um temporizador deve ser configurado é de 60 segundos.
nota
timeout()
retornatrue
somente na primeira vez em que é verificado após a expiração real do temporizador e retornafalse
depois disso. convert(
type
,expression
)-
Será avaliado como o valor da expressão convertida para o tipo especificado. O
type
valor deve serString
Boolean
, 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 afalse
e não acionaráactions
ou a transição para onextState
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 entradaMyInput
receber a mensagem{ "a": null }
, o seguinte será avaliado comotrue
, masisUndefined($input.MyInput.a)
será avaliado comofalse
.isNull($input.MyInput.a)
isUndefined(
expression
)-
Será avaliado como
true
se a expressão for indefinida. Por exemplo, se a entradaMyInput
receber a mensagem{ "a": null }
, o seguinte será avaliado comotrue
, masisNull($input.MyInput.a)
será avaliado comofalse
.isUndefined($input.MyInput.a)
triggerType("
type
")-
O valor de
type
pode ser"Message"
ou"Timer"
. Será avaliado comotrue
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 entradaCommand
receber a mensagem{ "value": "Abort" }
, o seguinte será avaliado comotrue
.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 entradaMyInput
receber a mensagem{ "status": "offline"}
, a seguinte será avaliada comotrue
.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 entradaMyInput
receber a mensagem{ "status": "offline" }
, a seguinte será avaliada comotrue
.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 entradaMyInput
receber a mensagem{ "status": "offline" }
, a seguinte será avaliada comotrue
.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 como13
.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 como5
.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 como8
.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 entradasinputDefinition.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
[
. Por exemplo, considerando os seguintes dados:n
]{ "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
é uma variável que você definiu usando a CreateDetectorModelação.variable-name
Por exemplo, caso tenha uma variável chamada
TechnicianID
definida usandodetectorDefinition.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 valornull
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("
requer uma string com aspas duplas como argumento. Se você usar uma referência para otime-name
")timer-name
valor, deverá referenciar uma string com aspas duplas.timeout("
timer-name
")nota
Para a
convert(
função, se você usar uma referência para otype
,expression
)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.expression
Pode 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 ovalue
é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}"