在裝置離線時保留裝置狀態 - 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 的相關資訊,請參閱 裝置影子MQTT主題裝置影子 REST API