物聯網平臺提供設備影子功能,用于緩存設備上報的狀態數據和應用程序下發的指令信息。設備在線時,可以直接獲取物聯網平臺指令;設備離線后,再次上線可以主動拉取物聯網平臺指令。本文主要介紹設備影子的應用場景和使用方法。
什么是設備影子
設備影子是一個JSON文檔,用于存儲設備上報狀態數據和應用程序期望狀態信息。JSON數據格式的詳細說明,請參見設備影子JSON詳解。
每個設備有且只有一個設備影子,設備可以通過MQTT獲取和設置設備影子來同步狀態,該同步可以是影子同步給設備,也可以是設備同步給影子。
與設置設備期望屬性值區別
設備影子與設置設備期望屬性值功能,都是在物聯網平臺云端存儲期望數據,設備上線后獲取對應的期望數據,實現對相應業務邏輯的控制。兩功能的應用范圍不同,說明如下。
功能項 | 區別 |
設置設備期望屬性值 | 應用范圍單一,僅設置設備的物模型屬性值。使用該功能前,必須為設備定義物模型屬性。 若需設置設備物模型屬性的期望值,使用該功能即可。使用示例,請參見設置期望屬性值控制燈泡狀態。 |
設備影子 | 應用范圍更廣,且不依賴物模型屬性定義,可設置設備狀態等數據。具體應用場景,請參見下文描述。 設備影子的設置說明,請參見設備影子JSON詳解。 |
應用場景
在以下場景中,您可選擇使用設備影子功能,獲取設備上報數據和應用程序期望數據。
- 應用程序請求獲取設備狀態。
場景描述:
- 設備網絡不穩定,設備頻繁上下線,無法正常響應應用程序的請求。
- 設備網絡穩定,同時響應多個應用程序的請求,即使響應的結果一樣,設備本身處理能力有限,也會無法負載多次請求。
使用設備影子機制,設備狀態變更,只需同步狀態給設備影子一次,應用程序請求獲取設備狀態,不論應用程序請求數量,和設備是否聯網在線,都可從設備影子中獲取設備當前狀態,實現應用程序與設備解耦。
應用程序獲取設備影子中狀態的流程圖如下,其中數據流轉過程,請參見設備主動上報狀態。
- 應用程序下發指令給設備,變更設備狀態。
場景描述:設備處于下線狀態,或設備網絡不穩定,設備頻繁上下線,應用程序發送控制指令給設備,設備不在線,指令就會發送失敗。
使用設備影子機制,可以將應用程序下發的指令,攜帶時間戳存儲到設備影子中。設備再上線時,獲取設備影子中指令,并根據時間戳確定是否執行。
應用程序更新設備狀態的流程圖如下,其中數據流轉過程,請參見應用程序改變設備狀態、設備主動獲取影子內容、設備主動刪除影子屬性。
查看與更新設備影子
您需在設備端完成設備影子功能開發,具體內容,請參見設備影子。
完成設備開發和接入后,您可以在物聯網平臺控制臺,查看設備影子信息,更新設備影子狀態。
- 登錄物聯網平臺控制臺。
- 在實例概覽頁面,選擇目標環境,找到對應的實例,單擊實例ID或備注名稱。重要 目前僅開通企業版實例服務的地域下,執行此步驟。其他地域,請跳過此步驟。地域及實例的支持說明,請參見實例概述。
- 在左側導航欄,選擇 。
- 單擊對應設備的查看按鈕,進入設備詳情頁面。
- 單擊設備影子,頁面顯示設備上報的影子狀態。
- 單擊更新影子,在
“desired”
部分,填入期望設備狀態。設備影子文檔格式,請參見設備影子JSON詳解。
設備在線時,設備影子保存期望狀態,設備通過訂閱Topic直接獲得期望狀態。
設備離線時,設備影子緩存期望狀態,設備上線后,主動從物聯網平臺拉取最新期望狀態。
相關API
GetDeviceShadow:獲取設備影子。
UpdateDeviceShadow:更新設備影子。