本文以解析上、下行屬性消息數據的腳本為例,介紹在數據格式為透傳或自定義的產品下,如何編寫并提交物模型消息解析腳本。
前提條件
創建產品時已定義數據格式為透傳/自定義。具體操作,請參見創建產品。背景信息
數據格式為ICA標準數據格式,設備按照物聯網平臺定義的標準數據格式生成消息上報,標準Alink JSON數據格式說明,請參見設備屬性、事件、服務。
數據格式為透傳/自定義,設備通信時,需要物聯網平臺調用您提交的消息解析腳本,將上行物模型消息解析為物聯網平臺定義的標準格式(Alink JSON),將下行物模型消息據解析為設備的自定義數據格式。
${模塊標識符}:${屬性標識符}
。例如,model1:prop_int16
。步驟一:編輯腳本
- 創建產品:在物聯網平臺控制臺,創建產品,數據格式選擇為透傳/自定義。
- 單個添加物模型:為該產品定義物模型屬性。
本示例中定義了以下三個屬性:
標識符(identifier) 數據類型 取值范圍 讀寫類型 prop_float 浮點單精度(float) -100~100 讀寫 prop_int16 整數型(int32) -100~100 讀寫 prop_bool 布爾型(bool) 0:開;1:關 讀寫 消息解析腳本會根據這里定義的物模型來編寫,用于解析上、下行物模型消息的數據。
本示例通信中參數值長度定義:
- 設備上報數據請求
字段 字節數 幀類型 1字節 請求ID 4字節 屬性prop_int16 2字節 屬性prop_bool 1字節 屬性prop_float 4字節 - 設備上報數據響應
字段 字節數 幀類型 1字節 請求ID 4字節 結果code 1字節 - 設置屬性請求
字段 字節數 幀類型 1字節 請求ID 4字節 屬性prop_int16 2字節 屬性prop_bool 1字節 屬性prop_float 4字節 - 屬性設置響應
字段 字節數 幀類型 1字節 請求ID 4字節 結果code 1字節
- 設備上報數據請求
- 編寫腳本。
步驟二:在線測試腳本
腳本編輯完成后,在模擬輸入下,選擇模擬類型,輸入模擬數據在線測試腳本。
- 模擬解析設備上報的屬性數據。
選擇模擬類型為設備上報數據,輸入以下模擬的設備上報數據,然后單擊執行。
說明 以下傳入參數模擬數據僅適用于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。
- 測試上報屬性數據。
- 使用設備端上報設備屬性數據,例如
0x00002233441232013fa00000
。 - 在物聯網平臺控制臺,選擇 。
- 單擊設備對應的查看,然后在設備詳情頁 頁簽下,查看是否有相應的屬性數據。
- 使用設備端上報設備屬性數據,例如
- 測試下發屬性數據。
- 在物聯網平臺控制臺,選擇 。
- 選擇要調試的產品和設備,并選擇默認模塊,功能選擇為要調試的屬性identifier,如屬性(prop_int16),方法選擇為設置,輸入以下數據,單擊發送指令。
{ "method": "thing.service.property.set", "id": "12345", "version": "1.0", "params": { "prop_float": 123.452, "prop_int16": 333, "prop_bool": 1 } }
- 查看設備端是否收到該屬性設置指令。
- 在該設備的設備詳情頁面的 頁簽下,查看設備是否上報當前屬性數據。
可選:更新消息解析腳本
提交消息解析腳本成功后,您可在消息解析頁簽,修改或刪除腳本代碼后,重新提交。