. - AWS IoT Events

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

.

검출기 모델을 만들 때 고려해야 할 중요한 사항은 다음과 같습니다.

actions필드 사용 방법

actions필드는 객체 목록입니다. 개체가 두 개 이상 있을 수 있지만 각 개체에는 한 가지 작업만 허용됩니다.

"actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } { "setVariable": { "variableName": "temperatureIsTooHigh", "value": "$variable.temperatureIsTooHigh - 1" } } ]
condition필드 사용 방법

conditiontransitionEvents 필수이며 다른 경우에는 선택 사항입니다.

condition필드가 없으면 필드와 동일합니다"condition": true.

(). 결과가 Boolean 값이 아닌 경우 이 값은 해당false 값과 동일하며 이벤트에nextState 지정된 값으로의actions 또는 전환을 시작하지 않습니다.

변수 값의 사용 가능 여부

기본적으로 변수 값이 이벤트에 설정된 경우 새 값을 사용할 수 없거나 동일한 그룹의 다른 이벤트에서 조건을 평가하는 데 사용할 수 없습니다. 새 값은 동일한onInput 또는onExit 필드의 이벤트 조건에서 사용할 수onEnter 없거나 사용할 수 없습니다.

감지기 모델 정의에서evaluationMethod 매개변수를 설정하여 이 동작을 변경합니다. 를evaluationMethodSERIAL 설정하면 변수가 업데이트되고 이벤트 조건이 이벤트가 정의된 순서대로 평가됩니다. 그렇지 않으면 를 로BATCH 설정하거나 기본값으로 설정하면 상태 내의 변수가 업데이트되고 모든 이벤트 조건이 평가된 후에만 상태 내의 이벤트가 수행됩니다.evaluationMethod

onInput현장의 상태는 조건이 충족되는"Pressure Okay" 경우 (전류 입력의 압력이 70 이하일 때) 1씩 감소합니다."Dangerous""$variable.pressureThresholdBreached"

{ "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] }

검출기는"$variable.pressureThresholdBreached" 0에 도달하면 (즉, 검출기가 70보다 작거나 같은 세 개의 연속 압력 판독값을 수신했을 때)"Normal" 상태로 다시 전환되어야 합니다. 의"BackToNormal" 이벤트는"$variable.pressureThresholdBreached" 0이 아닌 1보다 작거나 같은지transitionEvents 테스트해야 하며, 에서 지정한"$input.PressureInput.sensorData.pressure" 현재 값이 70보다 작거나 같은지 다시 확인해야 합니다.

"transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ]

그렇지 않으면 조건에서 변수 값만 테스트하는 경우 두 번의 정상 측정값과 과압 측정값을 차례로 측정하면 조건이 충족되고 상태로 다시 전환됩니다."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`