在裝置離線時保留裝置狀態 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在裝置離線時保留裝置狀態

這些教學課程向您展示如何使用 AWS IoT Device Shadow 服務來儲存及更新裝置的狀態資訊。Shadow 文件是一個 JSON 文件,其根據裝置、本機應用程式或服務發佈的訊息,顯示裝置狀態的變化。於本教學課程中,Shadow 文件會顯示燈泡顏色的變化。這些教學課程還會顯示影子如何在裝置與網際網路中斷連線時,儲存此資訊,並在裝置回復連線並請求此資訊時,將最新狀態資訊傳回裝置。

建議您依此處顯示的順序試試這些教學課程,從您需要建立的 AWS IoT 資源和必要的硬體設定開始,這亦可協助您逐步學習概念。這些教學課程顯示如何配置及連接 Raspberry Pi 裝置,以與 AWS IoT 使用。若您並無所需的硬體,您可依照這些教學課程進行調整,以適應您選擇的裝置或使用 Amazon EC2 建立虛擬裝置

教學課程案例概觀

這些教學課程的案例為本機應用程式或服務,可變更燈泡的顏色,及將其資料發佈置預留的影子主題。這些教學課程類似於互動式入門教學課程中說明的 Device Shadow 功能,並在 Raspberry Pi 裝置實作。本節中的教學課程側重於單一經典影子裝置,同時展現如何容納已命名影子或多個裝置的方法。

下列教學課程將會協助您了解如何使用 AWS IoT Device Shadow 服務。

AWS IoT Device Shadow 概觀

Device Shadow 是個裝置的持續虛擬表示法,由您在 AWS IoT 登錄檔中建立的物件資源所管理。Shadow 文件是個 JSON 或 JavaScript 標記法文件,用來存儲和檢索裝置的目前狀態資訊。您可透過 MQTT 或 HTTP REST API,使用影子來取得及設定裝置的狀態 (無論該裝置是否連線至網際網路)。

Shadow 的文件包含 state 屬性,說明裝置狀態的下列層面:

  • desired:應用程式會透過更新 desired 物件來指定裝置屬性的所需狀態。

  • reported:裝置會報告其在 reported 物件中的目前狀態。

  • delta:AWS IoT會報告 delta 物件中所需狀態與報告狀態之間的差異。

以下為 Shadow 狀態文件的範例:

{ "state": { "desired": { "color": "green" }, "reported": { "color": "blue" }, "delta": { "color": "green" } } }

如要更新裝置的 Shadow 文件,您可使用預留的 MQTT 主題、以 HTTP 支援 GETUPDATEDELETE 操作的 Device Shadow REST API,以及 AWS IoT CLI

在上一個範例中,假設您想將 desired 顏色變更為 yellow。如要執行此動作,請傳送請求至 UpdateThingShadow API 或將訊息發佈至更新主題 $aws/things/THING_NAME/shadow/update

{ "state": { "desired": { "color": yellow } } }

更新只會影響請求中所指定的欄位。成功更新 Device Shadow 後,AWS IoT 會發佈新 desired 狀態到 delta 主題 $aws/things/THING_NAME/shadow/delta。於此狀況下,Shadow 文件看起來像這樣:

{ "state": { "desired": { "color": yellow }, "reported": { "color": green }, "delta": { "color": yellow } } }

然後,使用 Update 主題 $aws/things/THING_NAME/shadow/update 及下列 JSON 訊息,對 AWS IoT Device Shadow 報告新的狀態:

{ "state": { "reported": { "color": yellow } } }

若您想要取得目前的狀態資訊,請將請求傳送至 GetThingShadow API 或將 MQTT 訊息發佈至取得主題 $aws/things/THING_NAME/shadow/get

如需使用 Device Shadow 服務的相關資訊,請參閱 AWS IoT Device Shadow 服務

如需在裝置、應用程式和服務中使用 Device Shadows 的詳細資訊,請參閱 在裝置中使用影子在應用程式和服務中使用影子

如需有關與 AWS IoT 影子交互影響的資訊,請參閱 與影子互動

如需 MQTT 預留主題和 HTTP REST API 的相關資訊,請參閱 Device Shadow MQTT 主題Device Shadow REST API