使用 AWS IoT Events 監控您的 IoT 裝置 - 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 監控您的 IoT 裝置

您可以使用 AWS IoT Events 來監控裝置或程序,並根據重大事件採取行動。若要這麼做,請依照下列基本步驟進行:

建立輸入

您必須有一種方式,您的裝置和程序才能取得遙測資料 AWS IoT Events。您可以透過將訊息做為輸入傳送到 來執行此操作 AWS IoT Events。您可以透過多種方式將訊息做為輸入來傳送:

  • 使用 BatchPutMessage 操作。

  • 定義iotEvents規則引擎的規則動作AWS IoT Core規則動作會將您輸入的訊息資料轉送至 AWS IoT Events。

  • 在 中 AWS IoT Analytics,使用 CreateDataset 操作建立具有 的資料集contentDeliveryRules。這些規則會指定自動傳送資料集內容的 AWS IoT Events 輸入。

  • 在 AWS IoT Events 偵測器模型的 onInputonExittransitionEvents事件中定義 iotEvents 動作。偵測器模型執行個體和啟動動作之事件的相關資訊,會以您指定的名稱做為輸入傳回系統。

在您的裝置以這種方式開始傳送資料之前,您必須定義一或多個輸入。若要這樣做,請為每個輸入命名,並指定輸入監視器在傳入訊息資料中的哪些欄位。 會從許多來源 AWS IoT Events 以 JSON 承載的形式接收其輸入。每個輸入都可以單獨使用,也可以與其他輸入結合,以偵測更複雜的事件。

建立偵測器模型

使用 狀態定義偵測器模型 (設備或程序的模型)。針對每個狀態,您可以定義評估傳入輸入的條件 (布林值) 邏輯,以偵測重大事件。偵測到事件時,可以變更狀態,或使用其他 AWS 服務啟動自訂建置或預先定義的動作。您可以定義其他事件,在進入或退出狀態時啟動動作,也可以選擇在符合條件時啟動動作。

在本教學課程中,您會在模型進入或退出特定狀態時傳送 Amazon SNS 訊息做為動作。

監控裝置或程序

如果您正在監控多個裝置或程序,請在每個輸入中指定欄位,以識別輸入來源的特定裝置或程序。(請參閱 中的 key 欄位CreateDetectorModel。) 識別新裝置時 (在由 識別的輸入欄位中看到新值key),會建立偵測器。(每個偵測器都是偵測器模型的執行個體。) 然後,新的偵測器會繼續回應來自該裝置的輸入,直到其偵測器模型更新或刪除為止。

如果您正在監控單一程序 (即使有多個裝置或子程序正在傳送輸入),則不會指定唯一的識別key欄位。在此情況下,會在第一個輸入到達時建立單一偵測器 (執行個體)。

將訊息做為輸入傳送到偵測器模型

有幾種方式可以從裝置或程序傳送訊息,做為 AWS IoT Events 偵測器的輸入,而不需要您對訊息執行其他格式設定。在本教學課程中,您會使用 AWS IoT 主控台為轉送訊息資料的 AWS IoT Core 規則引擎撰寫AWS IoT Events 動作規則 AWS IoT Events。若要這樣做,您可以依名稱識別輸入。然後,您繼續使用 AWS IoT 主控台來產生一些做為輸入轉送的訊息 AWS IoT Events。

如何知道偵測器模型中需要哪些狀態?

若要判斷偵測器模型應有的狀態,請先決定您可以採取的動作。例如,如果您的汽車在油品上執行,您會在開始行程時查看油量計,以查看是否需要重新注油。您在這裡有一個動作:告知驅動程式「取得瓦斯」。您的偵測器模型需要兩種狀態:「汽車不需要燃料」和「汽車需要燃料」。一般而言,您想要為每個可能的動作定義一個狀態,以及在不需要動作時再定義一個狀態。即使動作本身更複雜,這也有效。例如,您可能想要查詢並包含尋找最接近的瓦斯站或最便宜價格的資訊,但當您傳送訊息到「取得瓦斯」時,就會這樣做。

若要決定接下來要進入的狀態,您可以查看輸入。輸入包含決定您應處於何種狀態所需的資訊。若要建立輸入,請在裝置或程序傳送的訊息中選取一或多個欄位,以協助您做出決定。在此範例中,您需要一個輸入,告訴您目前的油位 (「百分比滿」)。也許您的汽車正在傳送數個不同的訊息給您,每個訊息都有數個不同的欄位。若要建立此輸入,您必須選取報告目前瓦斯表關卡的訊息和欄位。您即將進行的旅程長度 (「距離目的地」) 可以進行硬式編碼,以保持簡單;您可以使用平均旅程長度。您將根據輸入進行一些計算 (該百分比完全轉譯多少 gallons? 是大於您可以行駛之英里的平均行程長度,取決於您擁有的 gallons 和您的平均 "miles per gallon")。您會執行這些計算並在事件中傳送訊息。

到目前為止,您有兩個狀態和一個輸入。您需要處於第一個狀態的事件,該事件會根據輸入執行計算,並決定是否要進入第二個狀態。這是一個轉換事件。 (transitionEvents 位於狀態onInput的事件清單中。 收到處於此第一個狀態的輸入,如果condition符合事件的 ,事件會執行轉換為第二個狀態。) 當您達到第二個狀態時,您會在進入 狀態後立即傳送訊息。(您使用 onEnter事件。 進入第二個狀態時,此事件會傳送訊息。 不需要等待另一個輸入到達。) 還有其他類型的事件,但這只是簡單範例所需的。

其他類型的事件是 onExitonInput。一旦收到輸入並符合條件,onInput事件就會執行指定的動作。當操作結束其目前狀態且符合條件時,onExit事件會執行指定的動作。

您有任何遺漏嗎? 是,如何回到第一個「汽車不需要燃料」狀態? 填滿您的坦克之後,輸入會顯示已滿的坦克。在第二個狀態下,您需要轉換事件回到接收輸入時 (在第二個狀態onInput:的事件中) 發生的第一個狀態。如果其計算結果顯示您現在有足夠的瓦斯可以讓您前往目的地,則它應該會轉返到第一個狀態。

這就是基本概念。有些偵測器模型透過新增可反映重要輸入的狀態來變得更複雜,而不只是可能的動作。例如,您可能在偵測器模型中有三種狀態,可追蹤溫度:「正常」狀態、「過熱」狀態,以及「潛在問題」狀態。當溫度超過特定層級,但尚未變得過熱時,您會轉換為潛在問題狀態。除非警示保持在此溫度超過 15 分鐘,否則您不想傳送警示。如果在此之前溫度恢復正常,偵測器會轉換回正常狀態。如果計時器過期,偵測器會轉換為過熱狀態並傳送警示,只是要小心。您可以使用變數和一組更複雜的事件條件來執行相同的動作。但通常使用另一個狀態來儲存計算結果會比較容易。

如何得知您需要一個或數個偵測器的執行個體?

若要決定您需要多少執行個體,請自問「您有興趣知道什麼?」 假設您想要知道今天天氣如何。是否下雨 (狀態)? 您需要使用雨傘 (動作) 嗎? 您可以有一個報告溫度的感應器、另一個報告濕度的感應器,以及其他報告大氣壓力、風速和方向以及降水的感應器。但是,您必須同時監控所有這些感應器,以判斷天氣狀態 (雨水、雪水、過度投射、陽光) 和要採取的適當動作 (拿雨傘或擦太陽霜)。儘管感應器數量有限,您希望一個偵測器執行個體監控天氣狀態,並通知您要採取的動作。

但是,如果您是區域的天氣預測器,則可能會有多個此類感應器陣列的執行個體,位於整個區域的不同位置。每個位置的人員都需要知道該位置的天氣狀況。在這種情況下,您需要偵測器的多個執行個體。每個位置中每個感應器報告的資料必須包含您指定為 欄位key的欄位。此欄位可讓 AWS IoT Events 建立區域的偵測器執行個體,然後在偵測器執行個體持續到達時,繼續將此資訊路由至該偵測器執行個體。不再有受損的頭髮或太陽鼻涕!

基本上,如果您有一個情況 (一個程序或一個位置) 需要監控,則需要一個偵測器執行個體。如果您有許多需要監控的情況 (位置、程序),則需要多個偵測器執行個體。