本文介紹在本地環境調試資料解析指令碼的程式碼範例,和物聯網平台不能正常使用指令碼解析資料時的排錯方法。
本地環境調試指令碼
目前,物聯網平台資料解析支援線上測試指令碼是否能解析資料,但不支援調試。建議先在本地編寫指令碼、調試完成後,再將指令碼拷貝到物聯網控制台的指令碼編輯器中。
以下本地調試代碼基於提交物模型訊息解析指令碼中的樣本指令碼。您在實際使用時,請按照您的指令碼需求進行具體參數設定。
//Test Demo
function Test()
{
//0x001232013fa00000
var rawdata_report_prop = new Buffer([
0x00, //固定command頭,0代表是上報屬性。
0x00, 0x22, 0x33, 0x44, //對應id欄位,標記請求的序號。
0x12, 0x32, //兩位元組int16,對應屬性prop_int16。
0x01, //一位元組bool,對應屬性prop_bool。
0x3f, 0xa0, 0x00, 0x00 //四位元組float,對應屬性prop_float。
]);
rawDataToProtocol(rawdata_report_prop);
var setString = new String('{"method":"thing.service.property.set","id":"12345","version":"1.0","params":{"prop_float":123.452, "prop_int16":333, "prop_bool":1}}');
protocolToRawData(JSON.parse(setString));
}
Test();
線上問題排查
裝置端串連物聯網平台,上報屬性資料後,若資料解析運行正常,在裝置列表單擊該裝置對應的查看,進入裝置詳情頁,在頁簽下,可以看到裝置上報的資料。
若裝置已經上報了資料,但是卻沒有顯示對應的資料,可選擇,通過日誌排查問題。
問題排查過程如下:
- 選擇對應產品,輸入DeviceName,單擊搜尋,業務類型選擇物模型上報,查詢該裝置的相關日誌。
- 查看日誌記錄,日誌中會顯示指令碼轉化後的資料和原資料。
- 結合日誌說明文檔,查看錯誤碼的資訊。
- 按照錯誤碼提示,結合指令碼和裝置上報的資料排查問題。
下面列舉一些錯誤:
- 指令碼不存在。
日誌中顯示錯誤碼為6200。訪問日誌說明文檔,查看錯誤的具體含義。錯誤碼6200表示指令碼不存在。請在控制台檢查指令碼是否已提交。
- Alink method不存在。
日誌中顯示錯誤碼為6450。日誌說明文檔中有該錯誤碼解釋:錯誤碼6450表示Alink協議格式的資料中method不存在。 原因是裝置上報的自訂/透傳格式資料,經過指令碼解析為Alink標準格式資料後無method。
日誌內容如:
可以從日誌內容中看到,錯誤訊息為17:54:19.064, A7B02C60646B4D2E8744F7AA7C3D9567, upstream-error - bizType=OTHER_MESSAGE,params={"params":{}},result=code:6450,message:alink method not exist,...alink method not exist,即Alink協議格式的資料中method不存在。這是解析指令碼中method定義有問題,需修改指令碼。