在 中將訊息做為輸入傳送到偵測器 AWS IoT Events - AWS IoT Events

支援終止通知:2026 年 5 月 20 日, AWS 將終止對 的支援 AWS IoT Events。2026 年 5 月 20 日之後,您將無法再存取 AWS IoT Events 主控台或 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 系統會刪除重複訊息。如果訊息與過去五分鐘內傳送messageID的其他訊息相同,則 AWS IoT Events 忽略訊息。

此時,會建立偵測器 (執行個體) 來監控馬達 的事件"Fulton-A32"。此偵測器會在建立時進入 "Normal" 狀態。但是,因為我們傳送了超過閾值的壓力值,它會立即轉換為 "Dangerous" 狀態。這樣做時,偵測器會傳送訊息至 ARN 為 的 Amazon SNS 端點arn: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} }" } ] }

每次在五分鐘內叫用 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操作來取得偵測器狀態的類似資訊。