全部產品
Search
文件中心

IoT Platform:問題排查

更新時間:Jun 30, 2024

本文介紹在本地環境調試資料解析指令碼的程式碼範例,和物聯網平台不能正常使用指令碼解析資料時的排錯方法。

本地環境調試指令碼

目前,物聯網平台資料解析支援線上測試指令碼是否能解析資料,但不支援調試。建議先在本地編寫指令碼、調試完成後,再將指令碼拷貝到物聯網控制台的指令碼編輯器中。

以下本地調試代碼基於提交物模型訊息解析指令碼中的樣本指令碼。您在實際使用時,請按照您的指令碼需求進行具體參數設定。

//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();

線上問題排查

裝置端串連物聯網平台,上報屬性資料後,若資料解析運行正常,在裝置列表單擊該裝置對應的查看,進入裝置詳情頁,在物模型資料 > 運行狀態頁簽下,可以看到裝置上報的資料。

若裝置已經上報了資料,但是卻沒有顯示對應的資料,可選擇監控營運 > Log Service > 雲端作業記錄,通過日誌排查問題。

問題排查過程如下:

  1. 選擇對應產品,輸入DeviceName,單擊搜尋,業務類型選擇物模型上報,查詢該裝置的相關日誌。
  2. 查看日誌記錄,日誌中會顯示指令碼轉化後的資料和原資料。
  3. 結合日誌說明文檔,查看錯誤碼的資訊。
  4. 按照錯誤碼提示,結合指令碼和裝置上報的資料排查問題。

下面列舉一些錯誤:

  • 指令碼不存在。

    日誌中顯示錯誤碼為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定義有問題,需修改指令碼。