本文以解析上、下行屬性消息數據的腳本為例,介紹在數據格式為透傳或自定義的產品下,如何編寫并提交物模型消息解析腳本。

前提條件

創建產品時已定義數據格式為透傳/自定義。具體操作,請參見創建產品

背景信息

數據格式為ICA標準數據格式,設備按照物聯網平臺定義的標準數據格式生成消息上報,標準Alink JSON數據格式說明,請參見設備屬性、事件、服務

數據格式為透傳/自定義,設備通信時,需要物聯網平臺調用您提交的消息解析腳本,將上行物模型消息解析為物聯網平臺定義的標準格式(Alink JSON),將下行物模型消息據解析為設備的自定義數據格式。

說明 本示例中的屬性為默認模塊屬性,若使用自定義模塊,標識符(identifier)的格式為${模塊標識符}:${屬性標識符}。例如,model1:prop_int16

步驟一:編輯腳本

  1. 創建產品:在物聯網平臺控制臺,創建產品,數據格式選擇為透傳/自定義
  2. 單個添加物模型:為該產品定義物模型屬性。

    本示例中定義了以下三個屬性:

    標識符(identifier)數據類型取值范圍讀寫類型
    prop_float浮點單精度(float)-100~100讀寫
    prop_int16整數型(int32)-100~100讀寫
    prop_bool布爾型(bool)0:開;1:關讀寫

    消息解析腳本會根據這里定義的物模型來編寫,用于解析上、下行物模型消息的數據。

    本示例通信中參數值長度定義:

    • 設備上報數據請求
      字段字節數
      幀類型1字節
      請求ID4字節
      屬性prop_int162字節
      屬性prop_bool1字節
      屬性prop_float 4字節
    • 設備上報數據響應
      字段字節數
      幀類型1字節
      請求ID4字節
      結果code 1字節
    • 設置屬性請求
      字段字節數
      幀類型1字節
      請求ID4字節
      屬性prop_int162字節
      屬性prop_bool1字節
      屬性prop_float 4字節
    • 屬性設置響應
      字段字節數
      幀類型1字節
      請求ID4字節
      結果code 1字節
  3. 編寫腳本。
    1. 產品頁面,單擊產品對應的查看
    2. 產品詳情頁面,單擊消息解析頁簽。
    3. 選擇腳本語言,然后在編輯腳本下的輸入框中輸入腳本。
      支持的腳本語言設備自定義數據格式轉Alink JSON格式數據的函數(上行通信)Alink JSON格式數據轉為設備自定義數據格式的函數(下行通信)示例代碼
      JavaScript(ECMAScript 5)rawDataToProtocolprotocolToRawDataJavaScript腳本示例
      Python 2.7raw_data_to_protocolprotocol_to_raw_dataPython腳本示例
      PHP 7.2rawDataToProtocolprotocolToRawDataPHP腳本示例
      說明 您還需編寫自定義Topic的上行消息解析腳本,相關腳本編寫說明,請參見提交消息解析腳本

      有關自定義Topic消息解析和物模型消息解析的完整示例腳本,請參見透傳/自定義產品完整示例腳本(JavaScript)透傳/自定義產品完整示例腳本(Python)透傳/自定義產品完整示例腳本(PHP)

步驟二:在線測試腳本

重要 下文中傳入和返回的十六進制字符串和JSON格式數據僅為示例,實際場景中,不可直接用于調試。

腳本編輯完成后,在模擬輸入下,選擇模擬類型,輸入模擬數據在線測試腳本。

  • 模擬解析設備上報的屬性數據。

    選擇模擬類型為設備上報數據,輸入以下模擬的設備上報數據,然后單擊執行

    說明 以下傳入參數模擬數據僅適用于JavaScript腳本,更多示例內容,請參見JavaScript腳本示例

    Python、PHP腳本的傳入參數模擬數據,請參見Python腳本示例PHP腳本示例

    您可使用字符串轉十六進制工具,將待傳入參數JSON格式數據轉為十六進制格式數據。例如轉化后為00002233441232013fa00000,則輸入如下數據。

    0x00002233441232013fa00000

    數據解析引擎會按照腳本規則,將透傳數據轉換為JSON格式數據。

    單擊運行結果,查看解析結果。

    {
        "method": "thing.event.property.post", 
        "id": "2241348", 
        "params": {
            "prop_float": 1.25, 
            "prop_int16": 4658, 
            "prop_bool": 1
        }, 
        "version": "1.0"
    }
  • 模擬解析物聯網平臺下發的返回結果數據。

    選擇模擬類型為設備接收數據,輸入以下JSON格式數據,然后單擊執行

    {
      "id": "12345",
      "version": "1.0",
      "code": 200,
      "method": "thing.event.property.post",
      "data": {}
    }

    數據解析引擎會將JSON格式數據轉換為以下數據:

    0x0200003039c8
  • 模擬解析物聯網平臺下發的屬性設置數據。

    選擇模擬類型為設備接收數據,輸入以下JSON格式數據,然后單擊執行

    {
        "method": "thing.service.property.set", 
        "id": "12345", 
        "version": "1.0", 
        "params": {
            "prop_float": 123.452, 
            "prop_int16": 333, 
            "prop_bool": 1
        }
    }

    數據解析引擎會將JSON格式數據轉換為以下數據:

    0x0100003039014d0142f6e76d
  • 模擬解析設備返回的屬性設置結果數據。

    選擇模擬類型為設備上報數據,輸入以下數據,然后單擊執行

    0x0300223344c8

    數據解析引擎會將透傳數據轉換為以下JSON格式數據:

    {
      "code": "200",
      "data": {},
      "id": "2241348",
      "version": "1.0"
    }

步驟三:提交腳本

重要 僅提交后的腳本才能被物聯網平臺調用;草稿狀態的腳本不能被調用。

確認腳本可以正確解析數據后,單擊提交,將該腳本提交到物聯網平臺系統,以供設備數據上下行時,物聯網平臺調用該腳本解析數據。

步驟四:使用真實設備調試

正式使用腳本之前,請使用真實設備與物聯網平臺進行上下行消息通信,以驗證物聯網平臺能順利調用腳本,解析上下行數據。

您可使用物聯網平臺提供的Link SDK開發設備接入物聯網平臺。詳細內容,請參見Link SDK

  • 測試上報屬性數據。
    1. 使用設備端上報設備屬性數據,例如0x00002233441232013fa00000
    2. 在物聯網平臺控制臺,選擇設備管理 > 設備
    3. 單擊設備對應的查看,然后在設備詳情物模型數據 > 運行狀態頁簽下,查看是否有相應的屬性數據。
  • 測試下發屬性數據。
    1. 在物聯網平臺控制臺,選擇監控運維 > 在線調試
    2. 選擇要調試的產品和設備,并選擇默認模塊,功能選擇為要調試的屬性identifier,如屬性(prop_int16),方法選擇為設置,輸入以下數據,單擊發送指令
      {
          "method": "thing.service.property.set", 
          "id": "12345", 
          "version": "1.0", 
          "params": {
              "prop_float": 123.452, 
              "prop_int16": 333, 
              "prop_bool": 1
          }
      }
    3. 查看設備端是否收到該屬性設置指令。
    4. 在該設備的設備詳情頁面的物模型數據 > 運行狀態頁簽下,查看設備是否上報當前屬性數據。

可選:更新消息解析腳本

提交消息解析腳本成功后,您可在消息解析頁簽,修改或刪除腳本代碼后,重新提交。

警告 修改或刪除腳本代碼重新提交后,該產品下設備消息解析服務不可用、用戶業務中斷。請謹慎操作。

相關文檔