全部產品
Search
文件中心

IoT Platform:物模型相關問題

更新時間:Oct 25, 2024

本文介紹裝置使用物模型通訊常見相關問題及解決方案。

如何添加物模型功能?

裝置的物模型屬性、事件和服務需要在該裝置所屬產品下進行添加和配置。您可通過以下方式定義物模型:

大量匯入物模型,TSL檢驗失敗怎麼辦?

問題現象

如下圖所示,在物聯網平台為產品匯入物模型過程,可能出現如下兩種校正失敗現象。問題現象

解決方案

對應上圖①、②兩種校正失敗現象,解決方案如下:

  • ①:對物模型檔案進行JSON格式化校正,完成修正。

  • ②:單擊下載查看,擷取errors.txt檔案,定位問題及原因,完成修正。

    errors.txt檔案的詳細說明,請參見如下樣本。

    物模型檔案樣本:

    {
        "schema":"https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json",
        "profile":{
            "productKey":"a1Jk***"
        },
        "services":[],
        "properties": 1,
        "events": [],
        "functionBlockId": "模組mtest",
        "functionBlockName": "自訂模組1"
    }

    下載的errors.txt檔案:

    [
      {
        "path": [
          "properties"
        ],
        "property": "instance.properties",
        "message": "is not of a type(s) array",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/propertyDefinition"
          }
        },
        "instance": 1,
        "name": "type",
        "argument": [
          "array"
        ],
        "stack": "instance.properties is not of a type(s) array"
      },
      {
        "path": [
          "functionBlockId"
        ],
        "property": "instance.functionBlockId",
        "message": "does not match pattern \"^[_a-zA-Z0-9]{1,30}$\"",
        "schema": {
          "type": "string",
          "pattern": "^[_a-zA-Z0-9]{1,30}$"
        },
        "instance": "模組mtest",
        "name": "pattern",
        "argument": "^[_a-zA-Z0-9]{1,30}$",
        "stack": "instance.functionBlockId does not match pattern \"^[_a-zA-Z0-9]{1,30}$\""
      }
    ]

    參數

    說明

    path

    校正後,出錯的路徑。本文樣本校正出2處錯誤:

    // properties配置錯誤,不是數組
    "path": [
          "properties"
        ]
    // functionBlockId含有中文
    "path": [
          "functionBlockId"
        ]

    property

    path下不合規則的具體對象。

    例如"path": ["functionBlockId" ]中的instance.functionBlockId

    message

    具體的錯誤提示資訊。

    例如"path": ["functionBlockId" ]中,提示property的錯誤為does not match pattern \"^[_a-zA-Z0-9]{1,30}$\"

    schema

    校正的規則名稱及對應內容。

    例如"path": ["functionBlockId" ]中的規則typepattern

    有關規則定義的詳細內容,請參見schama

    instance

    校正的具體對象。

    例如"path": ["functionBlockId" ]中,校正物模型檔案中"functionBlockId": "模組mtest"的內容。

    name

    校正未通過規則的名稱。

    例如"path": ["functionBlockId" ]中,校正對象模組mtest不符合規則pattern

    argument

    校正未通過規則的內容。

    例如"path": ["functionBlockId" ]中,不符合規則pattern的定義為^[_a-zA-Z0-9]{1,30}$

    stack

    堆棧資訊。由property和message內容組合的完整錯誤提示資訊。

更多資訊,請參見校正工具jsonschema的說明

物模型的屬性上報、歷史資料上報、批量屬性上報有什麼區別?

功能區別

功能

區別

物模型屬性上報

上報裝置屬性快照資料。時間戳記可選:

  • 若攜帶時間戳記,物聯網平台的雲端儲存該時間作為屬性上報時間。

    單次資料上報中,只能上報一個時間點的資料。

  • 若不攜帶時間戳記,物聯網平台的雲端自動產生屬性上報時間(上報屬性的目前時間)並儲存。

物模型歷史資料上報

以時間為維度,上報同一時間點下不同屬性的值。需攜帶時間戳記。

單次資料上報中,支援上報多個時間點下不同屬性的資料。

物模型批量屬性上報

以屬性為維度,上報同一屬性下不同時間點的值。需攜帶時間戳記。

單次資料上報中,支援上報多個屬性下不同時間點的資料。

物模型的屬性上報、歷史資料上報、批量屬性上報到物聯網平台後,均會根據時間戳記形成歷史資料。

通訊Topic和資料格式的區別

Topic和資料格式不同,詳細說明,請參見裝置上報屬性物模型歷史資料上報裝置批量上報屬性

樣本

以裝置的溫度資料為例:

  • 物模型屬性上報:

    1. 裝置按照下表所示,從左至右,攜帶時間戳記依次上報快照資料。

      13:00

      14:00

      15:00

      15:10

      60

      70

      80

      90

    2. 裝置再上報一個快照值100,不同上報方式更新資料如下:

      • 不攜帶時間戳記時,預設為目前時間(假設15:30)。此時,物聯網平台控制台顯示的快照值是15:30的100;歷史資料列表中最新資料是15:30的100。

      • 攜帶時間戳記時,例如15:00,更新15:00的資料為100。此時,物聯網平台控制台顯示的快照值是15:00的100;歷史資料列表中最新資料還是15:10的90。

  • 物模型歷史資料上報:

    1. 裝置同時上報以下歷史資料。

      13:00

      14:00

      15:00

      15:10

      60

      70

      80

      90

    2. 裝置再同時上報以下歷史資料。

      13:10

      14:10

      100

      200

      此時,物聯網平台控制台顯示的快照值為13:10的100或14:10的200(以最後寫入資料庫的值為準);歷史資料列表中最新資料還是15:10的90。

通過自訂Topic上報資料後,物模型資料為什麼沒有更新?

裝置物模型資料需通過物模型通訊Topic上報,詳細說明,請參見Topic分類和通訊說明

如何擷取裝置上報的物模型資料?

您可通過以下方式擷取裝置物模型資料:

  • 服務端訂閱:使用物聯網平台的服務端訂閱功能,訂閱裝置上報訊息類型。物聯網平台根據您設定的訂閱,將產品下所有裝置的該類型訊息流程轉至您的伺服器。支援以下兩種方式的服務端訂閱:

  • 雲產品流轉:使用規則引擎的雲產品流轉功能,通過資料流轉規則將指定裝置資料流轉到Simple Message Queue (formerly MNS)、雲資料庫RDS、Table Store、Function Compute、時間序列資料庫TSDB、雲原生多模資料庫Lindorm、DataHub、訊息佇列RocketMQ等雲產品中。詳細內容,請參見雲產品流轉(舊版)雲產品流轉(新版)

  • 雲端API:

    API

    說明

    QueryDevicePropertyStatus

    查詢指定裝置的所有屬性快照。

    QueryDeviceOriginalPropertyStatus

    查詢指定裝置本身上報的原始屬性(通過和未通過物模型校正的所有屬性)快照。

    QueryDeviceOriginalPropertyData

    查詢指定裝置本身上報的原始屬性(通過和未通過物模型校正的所有屬性)記錄。

    QueryDeviceOriginalEventData

    查詢指定裝置本身上報的原始事件(通過和未通過物模型校正的所有事件)記錄。

    QueryDeviceOriginalServiceData

    查詢指定裝置本身調用的原始服務(通過和未通過物模型校正的所有服務)記錄。

    QueryDeviceDesiredProperty

    查詢指定裝置的期望屬性值。

    QueryDevicePropertyData

    查詢指定裝置在指定時間段內,單個屬性的資料。

    QueryDevicePropertiesData

    查詢指定裝置在指定時間段內,多個屬性的資料。

    QueryDeviceEventData

    查詢指定裝置的事件記錄。

    QueryDeviceServiceData

    查詢指定裝置的服務調用記錄。

物聯網平台控制台為什麼不展示裝置上報的物模型資料?

裝置上報物模型資料時,物聯網平台按設定的資料校正方式,根據物模型定義進行資料校正。校正不通過或免校正物模型資料,不會在物聯網平台控制台對應裝置的裝置詳情頁面中物模型資料頁簽下展示。詳細說明,請參見校正物模型資料

您需在建立產品時,設定資料校正方式。具體操作,請參見建立產品

物聯網平台下發物模型屬性設定、期望值設定指令成功後,物模型資料運行狀態沒有更新,怎麼辦?

您可以從以下幾個方面進行排查解決:

  • 裝置端:確保裝置端已經正常串連到阿里雲物聯網平台。裝置接入,請參見下載裝置端SDK

    重要

    如果下發設定裝置屬性指令成功,只表示物聯網平台雲端下發屬性佈建要求成功,不保證裝置端執行了該請求。所以裝置端SDK成功響應雲端設定裝置屬性值的請求後,需上報對應屬性值,裝置屬性值才能真正設定成功。

    您可通過物聯網平台的裝置模擬器或MQTT.fx工具類比裝置線上後,使用線上調試功能調試線上裝置的通訊功能。具體內容,請參見:

  • 物聯網平台雲端

    • 確保設定設定期望值的屬性必須具有讀寫許可權。

    • 確保物模型訊息的訊息解析正常。

      物模型訊息必須正常解析,資料才能在物模型的運行狀態中顯示。具體內容,請參見物模型物模型訊息解析

    您可以登入物聯網平台控制台,在對應執行個體下的監控營運 > Log Service > 雲端作業記錄頁面,查看對應的日誌,檢查裝置是否接收訊息成功。具體操作,請參見雲端作業記錄

控制台無法顯示物模型溫度資料,如何讓資料在物模型中顯示?

物模型屬性沒有定義或上報的資料格式不符合要求,物模型資料都會無法正常顯示。

實現物模型顯示的流程如下:

  1. 在裝置所屬產品下定義物模型屬性:溫度。具體操作,請參見添加物模型

  2. 裝置端通過物模型通訊Topic,按照對應資料格式上報屬性資料。裝置端功能開發,請參見裝置接入

    • 如果建立產品時,資料格式選擇ICA標準資料格式(Alink JSON),裝置端需要通過Topic:/sys/${productKey}/${deviceName}/thing/event/property/post,按照如下格式上報:

      {
          "id": "123",
          "version": "1.0",
          "sys":{
              "ack":0
          },
          "params": {
              "temperature": {
                  "value": 35,
                  "time": 1524448722000
              }
          },
          "method": "thing.event.property.post"
      }

      欄位說明,請參見裝置上報屬性

    • 如果建立產品時,資料格式選擇透傳/自訂,需要配置物模型訊息解析。

      裝置端需要通過Topic:/sys/${productKey}/${deviceName}/thing/model/up_raw,透傳16進位格式的資料。詳細說明,請參見裝置上報屬性物模型訊息解析

產品自訂物模型功能,有快速匯入方法嗎?

有。物聯網平台提供大量新增物模型功能的方法: