감지기 모델 규제 및 제한 - 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 파라미터를 설정하여 이 동작을 변경하십시오. evaluationMethodSERIAL로 설정하면 변수가 업데이트되고 이벤트가 정의된 순서대로 이벤트 조건이 평가됩니다. 그렇지 않고 evaluationMethodBATCH로 설정하거나 기본값으로 설정하면, 상태 내의 변수가 업데이트되고 모든 이벤트 조건이 평가된 후에만 상태 내의 이벤트가 수행됩니다.

"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에서 지정한 작업에 의해 변수가 변경되기 전의 입력 처리 시작 시점의 변수 값만 볼 수 있습니다. onEnteronExit도 마찬가지입니다. 상태를 입력하거나 종료할 때 변수에 적용된 변경 사항은 동일한 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`