의 감지기에 입력으로 메시지 전송 AWS IoT Events - AWS IoT Events

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

의 감지기에 입력으로 메시지 전송 AWS IoT Events

이제 디바이스에서 보낸 메시지의 중요 필드를 식별하는 입력이 정의되었습니다(AWS IoT Events 입력을 생성하여 디바이스 데이터 캡처 참조). 이전 섹션에서는 모터의 과압 이벤트에 반응하는 detector model을 생성했습니다(에서 디바이스 상태를 나타내는 감지기 모델 생성 AWS IoT Events 참조).

예제를 완료하려면 디바이스(이 경우에는 AWS CLI 가 설치된 컴퓨터)의 메시지를 감지기에 입력으로 보내십시오.

참고

감지기 모델을 생성하거나 기존 감지기 모델을 업데이트하면 새 또는 업데이트된 감지기 모델이 메시지를 수신하고 감지기(인스턴스)를 생성하기 시작하기까지 몇 분 정도 걸립니다. 감지기 모델을 업데이트하면 이 기간 동안 이전 버전에 기반한 동작이 계속 나타날 수 있습니다.

다음 AWS CLI 명령을 사용하여 임계값을 위반하는 데이터가 포함된 메시지를 보냅니다.

aws iotevents-data batch-put-message --cli-input-json file://highPressureMessage.json --cli-binary-format raw-in-base64-out

파일 “highPressureMessage.json”에는 다음이 포함되어 있습니다.

{ "messages": [ { "messageId": "00001", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 80, \"temperature\": 39} }" } ] }

전송되는 각 메시지에서 messageId를 변경해야 합니다. 변경하지 않으면 AWS IoT Events 시스템에서 메시지 중복 제거를 수행합니다. 메시지는 지난 5분 이내에 전송된 다른 메시지messageID와 동일한 경우 AWS IoT Events 무시됩니다.

이때 모터 "Fulton-A32"의 이벤트를 모니터링하기 위한 감지기(인스턴스)가 생성됩니다. 이 감지기는 생성되었을 때의 "Normal" 상태로 들어갑니다. 하지만 임계값을 초과하는 압력 값을 보냈기 때문에 즉시 "Dangerous" 상태로 전환됩니다. 이렇게 하면 감지기가 인 Amazon SNS 엔드포인트에 메시지를 보냅니다ARNarn:aws:sns:us-east-1:123456789012:underPressureAction.

다음 AWS CLI 명령을 실행하여 압력 임계값 미만의 데이터가 포함된 메시지를 보냅니다.

aws iotevents-data batch-put-message --cli-input-json file://normalPressureMessage.json --cli-binary-format raw-in-base64-out

파일 normalPressureMessage.json에는 다음이 포함되어 있습니다.

{ "messages": [ { "messageId": "00002", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 60, \"temperature\": 29} }" } ] }

5분 이내에 BatchPutMessage 명령을 호출할 때마다 파일의 messageId를 변경해야 합니다. 메시지를 두 번 더 보내십시오. 메시지가 세 번 전송된 후 모터의 감지기(인스턴스) “Fulton-A32”는 Amazon SNS 엔드포인트에 메시지를 전송"arn:aws:sns:us-east-1:123456789012:pressureClearedAction"하고 "Normal" 상태를 다시 입력합니다.

참고

BatchPutMessage를 사용하여 한 번에 여러 메시지를 보낼 수 있습니다. 하지만 이러한 메시지가 처리되는 순서는 보장되지 않습니다. 메시지(입력)가 순서대로 처리되도록 하려면 메시지(입력)를 한 번에 하나씩 보내고 API가 호출될 때마다 성공적인 응답을 기다립니다.

다음은 이 섹션에 설명된 감지기 모델 예제에서 생성한 SNS 메시지 페이로드의 예입니다.

“압력 임계값 위반” 이벤트 발생 시

IoT> { "eventTime":1558129816420, "payload":{ "actionExecutionId":"5d7444df-a655-3587-a609-dbd7a0f55267", "detector":{ "detectorModelName":"motorDetectorModel", "keyValue":"Fulton-A32", "detectorModelVersion":"1" }, "eventTriggerDetails":{ "inputName":"PressureInput", "messageId":"00001", "triggerType":"Message" }, "state":{ "stateName":"Dangerous", "variables":{ "pressureThresholdBreached":3 }, "timers":{} } }, "eventName":"Pressure Threshold Breached" }

“정상 압력 복원” 이벤트 발생 시

IoT> { "eventTime":1558129925568, "payload":{ "actionExecutionId":"7e25fd38-2533-303d-899f-c979792a12cb", "detector":{ "detectorModelName":"motorDetectorModel", "keyValue":"Fulton-A32", "detectorModelVersion":"1" }, "eventTriggerDetails":{ "inputName":"PressureInput", "messageId":"00004", "triggerType":"Message" }, "state":{ "stateName":"Dangerous", "variables":{ "pressureThresholdBreached":0 }, "timers":{} } }, "eventName":"Normal Pressure Restored" }

타이머를 정의한 경우 현재 상태도 SNS 메시지 페이로드에 표시됩니다.

메시지 페이로드에는 메시지가 전송된 시점(즉, SNS 작업이 실행된 시점)의 감지기(인스턴스) 상태에 대한 정보가 포함됩니다. https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_DescribeDetector.html 작업을 사용하여 감지기 상태에 대한 유사한 정보를 얻을 수 있습니다.