표현식 - AWS IoT Events

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

표현식

AWS IoT Events탐지기 모델을 생성하고 업데이트할 때 값을 지정하는 여러 가지 방법을 제공합니다. 식을 사용하여 리터럴 값을 지정하거나 특정 값을 지정하기 전에 식을 평가할AWS IoT Events 수 있습니다.

구문

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,AWS IoT Events

리터럴

  • Integer

  • 10진수

  • 문자열

  • 부울

연산자

단항
  • 아님 (부울):!

  • 아님 (비트 단위):~

  • 마이너스 (산술):-

문자열
  • 연결: +

    두 피연산자 모두 문자열이어야 합니다. .

    예를 들면 다음과 같습니다.'my' + 'string' ->'mystring'

Arithmetic
  • 추가: +

    두 피연산자 모두 숫자여야 합니다.

  • 빼기: -

  • 부서: /

    피연산자 (제수 또는 피제수) 중 하나 이상이 10진수 값인 경우를 제외하고 나누기 결과는 반올림된 정수 값입니다.

  • 곱하기: *

비트 단위 (정수)
  • 또는: |

    예를 들면 다음과 같습니다.13 | 5 ->13

  • 그리고: &

    예를 들면 다음과 같습니다.13 & 5 ->5

  • XOR: ^

    예를 들면 다음과 같습니다.13 ^ 5 ->8

  • 아님: ~

    예를 들면 다음과 같습니다.~13 ->-14

부울
  • 이하: <

  • 다음보다 작거나 같음: <=

  • 동일: ==

  • 같지 않음: !=

  • 다음보다 크거나 같음: >=

  • 보다 큰 것: >

  • 그리고: &&

  • 또는: ||

    참고

    의 하위 표현식에 정의되지 않은 데이터가|| 포함된 경우 해당 하위 표현식은 로 처리됩니다false.

괄호

괄호를 사용하여 표현식 내의 용어를 그룹화할 수 있습니다.

함수

Built-in Functions
timeout("timer-name")

지정된 타이머가 경과되었는지true 여부를 평가합니다. “timer-name “을 따옴표로 묶어 정의한 타이머 이름으로 바꾸십시오. 이벤트 액션에서 타이머를 정의한 다음 타이머를 시작하거나, 재설정하거나, 이전에 정의한 타이머를 지울 수 있습니다. 필드를 참조하십시오detectorModelDefinition.states.onInput|onEnter|onExit.events.actions.setTimer.timerName.

한 상태에 설정된 타이머는 다른 상태에서 참조될 수 있습니다. 타이머가 참조되는 상태로 들어가기 전에 타이머를 만든 상태로 이동해야 합니다.

예를 들어, 탐지기 모델에는 두 가지 상태가 TemperatureChecked 있습니다 RecordUpdated. 해당 TemperatureChecked 상태에서 타이머를 생성했습니다. 해당 TemperatureChecked 주에서 타이머를 사용하려면 먼저 해당 RecordUpdated 주를 방문해야 합니다.

.

참고

timeout()실제 타이머 만료 후 처음 확인된true 경우에만 반환되고false 그 이후에는 반환됩니다.

convert(type, expression)

지정된 유형으로 변환된 표현식의 값을 평가합니다. 형식 값은StringBoolean, 또는 이어야 합니다Decimal. 이러한 키워드 중 하나를 사용하거나 해당 키워드가 포함된 문자열로 평가되는 표현식을 사용하십시오. 다음 변환만 성공하고 유효한 값을 반환합니다.

  • BOOLEAN

    "true"또는 문자열을 반환합니다"false".

  • DECIMAL

  • .

  • .

    지정된 문자열은 유효한 십진수 표현이어야 하며 그렇지convert() 않으면 실패합니다.

유효한 값을 반환하지convert() 않는 경우 해당 값이 속한 표현식도 유효하지 않습니다. 이 결과는 표현식이 발생하는 이벤트의 일부로nextState 지정된 항목으로의actions 또는 전환을 트리거하지 않으며 트리거하지 않습니다.false

isNull(expression)

표현식이 null을true 반환하는지 여부를 평가합니다. 예를 들어, 입력이 메시지를MyInput{ "a": null } 수신하면 다음은 로 평가되지만 로trueisUndefined($input.MyInput.a) 평가됩니다false.

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

표현식이 정의되지true 않았는지 평가합니다. 예를 들어, 입력이 메시지를MyInput{ "a": null } 수신하면 다음은 로 평가되지만 로falseisNull($input.MyInput.a) 평가됩니다true.

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

유형 값은"Message" 또는 일 수"Timer" 있습니다. 다음 예와 같이 타이머가 만료되어 해당 이벤트가 나타나는 이벤트 조건이 평가true 중인지 여부를 평가합니다.

triggerType("Timer")

또는 입력 메시지가 수신되었습니다.

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

지정된 입력 메시지를 수신했기 때문에true 해당 메시지가 나타나는 이벤트 조건이 평가 중인지 평가합니다. 예를 들어, 입력이 메시지를Command{ "value": "Abort" } 수신하면 다음과 같이 평가됩니다true.

currentInput("Command")

이 함수를 사용하면 다음 표현식과 같이 특정 입력이 수신되고 타이머가 만료되지 않았기 때문에 조건이 평가되고 있는지 확인할 수 있습니다.

currentInput("Command") && $input.Command.value == "Abort"
문자열 매칭 함수
startsWith(expression1, expression2)

첫 번째 문자열 표현식이 두 번째 문자열 표현식으로true 시작하는지 여부를 평가합니다. 예를 들어, input 값이 메시지를MyInput{ "status": "offline"} 수신하면 다음과 같은 결과가 반환됩니다true.

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

. 두 표현식 중 하나가 문자열 값으로 계산되지 않는 경우 함수 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.

endsWith(expression1, expression2)

첫 번째 문자열 표현식이 두 번째 문자열 표현식으로 끝나는 지true 여부를 평가합니다. 예를 들어, input 값이 메시지를MyInput{ "status": "offline" } 수신하면 다음과 같은 결과가 반환됩니다true.

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

. 두 표현식 중 하나가 문자열 값으로 계산되지 않는 경우 함수 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.

contains(expression1, expression2)

첫 번째 문자열 표현식에 두 번째 문자열 표현식이 포함되어true 있는지 여부를 평가합니다. 예를 들어, input 값이 메시지를MyInput{ "status": "offline" } 수신하면 다음과 같은 결과가 반환됩니다true.

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

. 두 표현식 중 하나가 문자열 값으로 계산되지 않는 경우 함수 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.

비트별 정수 조작 함수
bitor(expression1, expression2)

정수 표현식의 비트별 OR을 평가합니다 (이항 OR 연산은 정수의 해당 비트에 대해 수행됨). 예를 들어, input 값이 메시지를MyInput{ "value1": 13, "value2": 5 } 수신하면 다음과 같은 결과가 반환됩니다13.

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

두 식 모두 정수 값으로 계산되어야 합니다. 두 식 중 하나라도 정수 값으로 계산되지 않으면 함수 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.

bitand(expression1, expression2)

정수 표현식의 비트별 AND를 평가합니다 (이항 AND 연산은 정수의 해당 비트에 대해 수행됨). 예를 들어, input 값이 메시지를MyInput{ "value1": 13, "value2": 5 } 수신하면 다음과 같은 결과가 반환됩니다5.

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

두 식 모두 정수 값으로 계산되어야 합니다. 두 식 중 하나라도 정수 값으로 계산되지 않으면 함수 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.

bitxor(expression1, expression2)

정수 표현식의 비트별 XOR을 평가합니다 (이진 XOR 연산은 정수의 해당 비트에 대해 수행됩니다). 예를 들어, input 값이 메시지를MyInput{ "value1": 13, "value2": 5 } 수신하면 다음과 같은 결과가 반환됩니다8.

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

두 식 모두 정수 값으로 계산되어야 합니다. 두 식 중 하나라도 정수 값으로 계산되지 않으면 함수 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.

bitnot(expression)

정수 표현식의 비트별 NOT를 평가합니다 (이진 NOT 연산은 정수 비트에 대해 수행됨). 예를 들어, input 값이 메시지를MyInput{ "value": 13 } 수신하면 다음과 같은 결과가 반환됩니다-14.

bitnot($input.MyInput.value)

두 식 모두 정수 값으로 계산되어야 합니다. 두 식 중 하나라도 정수 값으로 계산되지 않으면 함수 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.

참조

입력

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

input-nameCreateInput액션을 사용하여 만든 입력입니다.

예를 들어,inputDefinition.attributes.jsonPath 항목을 정의한 이름의TemperatureInput 입력이 있는 경우 해당 값이 다음과 같은 사용 가능한 필드에 나타날 수 있습니다.

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

temperature필드 값을 참조하려면 다음 명령을 사용하십시오.

$input.TemperatureInput.temperature

값이 배열인 필드의 경우 를 사용하여 배열의 구성원을 참조할 수[n] 있습니다. 예를 들어, 다음과 같은 값이 주어집니다.

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

다음 명령을78.8 사용하여 값을 참조할 수 있습니다.

$input.TemperatureInput.temperatures[2]
Variables

$variable.variable-name

variable-nameCreateDetectorModel작업을 사용하여 정의한 변수입니다.

예를 들어, 를 사용하여 정의한 이름의 변수가TechnicianID 있는 경우 다음 명령을 사용하여detectorDefinition.states.onInputEvents.actions.setVariable.variableName 변수에 가장 최근에 제공된 (문자열) 값을 참조할 수 있습니다.

$variable.TechnicianID

setVariable액션을 사용해서만 변수 값을 설정할 수 있습니다. 표현식의 변수에는 값을 할당할 수 없습니다. 변수는 설정 해제할 수 없습니다. null.

참고

(정규 표현식) 패턴을[a-zA-Z][a-zA-Z0-9_]* 따르지 않는 식별자를 사용하는 참조에서는 해당 식별자를 백틱 (`) 으로 묶어야 합니다. 예를 들어, 이름이 지정된 입력값에 대한 참조는 이 필드를MyInput_value 지정해야 합니다$input.MyInput.`_value`.

표현식에 참조를 사용하는 경우 다음 사항을 확인하십시오.

  • 참조를 하나 이상의 연산자와 함께 피연산자로 사용하는 경우 참조하는 모든 데이터 유형이 호환되는지 확인하십시오.

    예를 들어, 다음 표현식에서2 정수는 및 연산자 모두의&& 피연산자입니다.== 피연산자가 호환되는지 확인하려면 정수 또는 십진수를$variable.testVariable 참조해야 합니다.$variable.testVariable + 1

    또한1 정수는 연산자의+ 피연산자입니다. 따라서 정수 또는 십진수를$variable.testVariable 참조해야 합니다.

    ‘$variable.testVariable + 1 == 2 && $variable.testVariable’
  • 참조를 함수에 전달되는 인수로 사용하는 경우 해당 함수가 참조하는 데이터형을 지원하는지 확인하십시오.

    예를 들어, 다음timeout("time-name") 함수에는 인수로 큰따옴표가 있는 문자열이 필요합니다. 타이머 이름 값에 대한 참조를 사용하는 경우 큰따옴표가 있는 문자열을 참조해야 합니다.

    timeout("timer-name")
    참고

    convert(type, expression)함수의 경우 형식 값에 대한 참조를 사용하는 경우 참조의 평가 결과는StringDecimal, 또는 이어야 합니다Boolean.

AWS IoT Events표현식은 정수, 십진수, 문자열 및 부울 데이터 유형을 지원합니다. .

호환되지 않는 유형 쌍

,

,

십진수, 문자열

십진수, 부울

문자열, 부울

대체 템플릿

'${expression}'

는 문자열을 보간된 문자열로${} 식별합니다. 는 임의의AWS IoT Events 표현식일expression 수 있습니다. ,,,,,,,,,,,,,

예를 들어, SetVariableAction액션을 사용하여 변수를 정의했습니다. variableNameSensorID이고 value10입니다. 다음과 같은 대체 템플릿을 생성할 수 있습니다.

대체 템플릿 결과 문자열
'${'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}"