物聯網平台提供裝置影子功能,用於緩衝裝置上報的狀態資料和應用程式下發的指令資訊。裝置線上時,可以直接擷取物聯網平台指令;裝置離線後,再次上線可以主動拉取物聯網平台指令。本文主要介紹裝置影子的應用情境和使用方法。
什麼是裝置影子
裝置影子是一個JSON文檔,用於存放裝置上報狀態資料和應用程式期望狀態資訊。JSON資料格式的詳細說明,請參見裝置影子JSON詳解。
每個裝置有且只有一個裝置影子,裝置可以通過MQTT擷取和設定裝置影子來同步狀態,該同步可以是影子同步給裝置,也可以是裝置同步給影子。
與設定裝置期望屬性值區別
裝置影子與設定裝置期望屬性值功能,都是在物聯網平台雲端儲存期望資料,裝置上線後擷取對應的期望資料,實現對相應商務邏輯的控制。兩功能的應用範圍不同,說明如下。
| 功能項 | 區別 |
| 設定裝置期望屬性值 | 應用範圍單一,僅設定裝置的物模型屬性值。使用該功能前,必須為裝置定義物模型屬性。 若需設定裝置物模型屬性的期望值,使用該功能即可。使用樣本,請參見設定期望屬性值控制燈泡狀態。 |
| 裝置影子 | 應用範圍更廣,且不依賴物模型屬性定義,可設定裝置狀態等資料。具體應用情境,請參見下文描述。 裝置影子的設定說明,請參見裝置影子JSON詳解。 |
應用情境
在以下情境中,您可選擇使用裝置影子功能,擷取裝置上報資料和應用程式期望資料。
- 應用程式請求擷取裝置狀態。
情境描述:
- 裝置網路不穩定,裝置頻繁上下線,無法正常響應應用程式的請求。
- 裝置網路穩定,同時響應多個應用程式的請求,即使響應的結果一樣,裝置本身處理能力有限,也會無法負載多次請求。
使用裝置影子機制,裝置狀態變更,只需同步狀態給裝置影子一次,應用程式請求擷取裝置狀態,不論應用程式請求數量,和裝置是否連網線上,都可從裝置影子中擷取裝置目前狀態,實現應用程式與裝置解耦。
應用程式擷取裝置影子中狀態的流程圖如下,其中資料流轉過程,請參見裝置主動上報狀態。

- 應用程式下髮指令給裝置,變更裝置狀態。
情境描述:裝置處於下線狀態,或裝置網路不穩定,裝置頻繁上下線,應用程式發送控制指令給裝置,裝置不線上,指令就會發送失敗。
使用裝置影子機制,可以將應用程式下發的指令,攜帶時間戳記儲存到裝置影子中。裝置再上線時,擷取裝置影子中指令,並根據時間戳記確定是否執行。
應用程式更新裝置狀態的流程圖如下,其中資料流轉過程,請參見應用程式改變裝置狀態、裝置主動擷取影子內容、裝置主動刪除影子屬性。
查看與更新裝置影子
您需在裝置端完成裝置影子功能開發,具體內容,請參見裝置影子。
完成裝置開發和接入後,您可以在物聯網平台控制台,查看裝置影子資訊,更新裝置影子狀態。
- 登入物聯網平台控制台。
在執行個體概覽頁簽的全部環境下,找到對應的執行個體,單擊執行個體卡片。
- 在左側導覽列,選擇。
- 單擊對應裝置的查看按鈕,進入裝置詳情頁面。
- 單擊裝置影子,頁面顯示裝置上報的影子狀態。

- 單擊更新影子,在
“desired”部分,填入期望裝置狀態。裝置影子文檔格式,請參見裝置影子JSON詳解。
裝置線上時,裝置影子儲存期望狀態,裝置通過訂閱Topic直接獲得期望狀態。
裝置離線時,裝置影子緩衝期望狀態,裝置上線後,主動從物聯網平台拉取最新期望狀態。
相關API
GetDeviceShadow:擷取裝置影子。
UpdateDeviceShadow:更新裝置影子。