本文檔介紹設備影子的JSON格式表達方法。

設備影子JSON文檔示例:

{
    "state": {
        "desired": {
            "color": "RED", 
            "sequence": [
                "RED", 
                "GREEN", 
                "BLUE"
            ]
        }, 
        "reported": {
            "color": "GREEN"
        }
    }, 
    "metadata": {
        "desired": {
            "color": {
                "timestamp": 1469564492
            }, 
            "sequence": {
                "timestamp": 1469564492
            }
        }, 
        "reported": {
            "color": {
                "timestamp": 1469564492
            }
        }
    }, 
    "timestamp": 1469564492, 
    "version": 1
}

JSON屬性描述,如下表表 1所示。

表 1. JSON屬性說明
屬性 描述
desired 設備的預期狀態。僅當設備影子文檔具有預期狀態時,才包含desired部分。

應用程序向desired部分寫入數據,更新事物的狀態,而無需直接連接到該設備。

reported 設備的報告狀態。設備可以在reported部分寫入數據,報告其最新狀態。

應用程序可以通過讀取該參數值,獲取設備的狀態。

JSON文檔中也可以不包含reported部分,沒有reported部分的文檔同樣為有效影子JSON文檔。

metadata 當用戶更新設備狀態文檔后,設備影子服務會自動更新metadata的值。

設備狀態的元數據的信息包含以 Epoch 時間表示的每個屬性的時間戳,用來獲取準確的更新時間。

timestamp 影子文檔的最新更新時間。
version 用戶主動更新版本號時,設備影子會檢查請求中的version值是否大于當前版本號。

如果大于當前版本號,則更新設備影子,并將version值更新到請求的版本中,反之則會拒絕更新設備影子。

該參數更新后,版本號會遞增,用于確保正在更新的文檔為最新版本。

version參數為long型。為防止參數溢出,您可以手動傳入-1將版本號重置為0

說明

設備影子支持數組。更新數組時必須全量更新,不能只更新數組的某一部分。

更新數組數據示例:

  • 初始狀態:
    {
        "reported" : { 
            "colors" : [
                "RED", 
                "GREEN",
                "BLUE" 
            ]
        }
    }
  • 更新:
    {
        "reported" : {
            "colors" : [
                "RED"
            ] 
        }
    }
  • 最終狀態:
    {
        "reported" : {
            "colors" : [
                "RED"
            ] 
        }
    }