기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS IoT Events 감지기 모델 제한 사항 및 제한 사항
감지기 모델을 생성할 때 고려해야 할 중요한 사항은 다음과 같습니다.
actions
필드 사용 방법-
actions
값은 객체의 목록입니다. 객체를 두 개 이상 가질 수 있지만 각 객체에는 하나의 작업만 허용됩니다.예
"actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } { "setVariable": { "variableName": "temperatureIsTooHigh", "value": "$variable.temperatureIsTooHigh - 1" } } ]
condition
필드 사용 방법-
condition
은(는)transitionEvents
에 필수 항목이며 다른 경우에는 선택 사항입니다.해당
condition
필드가 없는 경우 이는"condition": true
와 같습니다.조건 표현식의 평가 결과는 부울 값이어야 합니다. 결과가 부울 값이 아닌 경우 해당 값은
false
와 동일하며 이벤트에서 지정된nextState
로의 전환 또는actions
으로 시작되지 않습니다. - 변수 값의 사용 가능 여부
-
기본적으로 변수 값이 이벤트에 설정된 경우 새 값을 사용할 수 없거나 같은 그룹 내 다른 이벤트의 조건을 평가하는 데 사용할 수 없습니다. 새 값은 사용할 수 없거나 동일한
onInput
,onEnter
또는onExit
필드의 이벤트 조건에 사용되었습니다.감지기 모델 정의에서
evaluationMethod
파라미터를 설정하여 이 동작을 변경하십시오.evaluationMethod
를SERIAL
로 설정하면 변수가 업데이트되고 이벤트가 정의된 순서대로 이벤트 조건이 평가됩니다. 그렇지 않고evaluationMethod
를BATCH
로 설정하거나 기본값으로 설정하면, 상태 내의 변수가 업데이트되고 모든 이벤트 조건이 평가된 후에만 상태 내의 이벤트가 수행됩니다."Dangerous"
상태,onInput
필드에서 조건이 충족되는 경우(현재 입력의 압력이 70 이하인 경우),"Pressure Okay"
이벤트의"$variable.pressureThresholdBreached"
가 하나씩 감소합니다.{ "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] }
감지기는
"$variable.pressureThresholdBreached"
가 0에 도달했을 때 (즉, 감지기가 70 이하의 압력 측정값을 연속으로 세 번 수신했을 때)"Normal"
상태로 다시 전환되어야 합니다.transitionEvents
의"BackToNormal"
이벤트는"$variable.pressureThresholdBreached"
가 1보다 작거나 같은지(0이 아님) 테스트하고"$input.PressureInput.sensorData.pressure"
에서 제공한 현재 값이 70 미만인지 다시 확인해야 합니다."transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ]
그렇지 않으면 조건에서 변수 값만 테스트할 경우 정상 판독값 2개와 과압 판독값이 뒤따르는 경우 조건을 충족하고
"Normal"
상태로 다시 전환됩니다. 조건은 이전에 입력이 처리되었을 때"$variable.pressureThresholdBreached"
에 제공된 값을 확인하는 것입니다. 이 경우"Overpressurized"
이벤트에서 변수 값이 3으로 재설정되지만 이 새 값은 어떤condition
도 사용할 수 없다는 점에 유의하십시오.기본적으로 컨트롤이
onInput
필드에 들어갈 때마다condition
은(는)onInput
에서 지정한 작업에 의해 변수가 변경되기 전의 입력 처리 시작 시점의 변수 값만 볼 수 있습니다.onEnter
및onExit
도 마찬가지입니다. 상태를 입력하거나 종료할 때 변수에 적용된 변경 사항은 동일한onEnter
또는onExit
필드에 지정된 다른 조건에서는 사용할 수 없습니다. - 감지기 모델 업데이트 시 지연 시간
-
감지기 모델을 업데이트, 삭제 및 다시 생성하는 경우( 참조UpdateDetectorModel) 스패닝된 모든 감지기(인스턴스)가 삭제되고 새 모델을 사용하여 감지기를 다시 생성하는 데 약간의 지연이 발생합니다. 새 감지기 모델이 적용되고 새 입력이 도착한 후에 다시 생성됩니다. 이 기간 동안에는 이전 버전의 감지기 모델에서 생성된 감지기가 입력을 계속 처리할 수 있습니다. 이 기간 동안에는 이전 감지기 모델에서 정의한 알림을 계속 받을 수 있습니다.
- 입력 키의 공백
-
입력 키에는 공백이 허용되지만 키 참조는 입력 속성 정의와 표현식에서 키 값을 참조할 때 모두 백틱으로 묶어야 합니다. 예를 들어 다음과 같은 메시지 페이로드가 있다고 가정합니다.
{ "motor id": "A32", "sensorData" { "motor pressure": 56, "motor temperature": 39 } }
다음을 사용하여 입력을 정의합니다.
{ "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.`motor pressure`" }, { "jsonPath": "`motor id`" } ] } }
조건 표현식에서는 백틱도 사용하여 이러한 키의 값을 참조해야 합니다.
$input.PressureInput.sensorData.`motor pressure`