本文介紹在本地環(huán)境調(diào)試數(shù)據(jù)解析腳本的代碼示例,和物聯(lián)網(wǎng)平臺不能正常使用腳本解析數(shù)據(jù)時的排錯方法。

本地環(huán)境調(diào)試腳本

目前,物聯(lián)網(wǎng)平臺數(shù)據(jù)解析支持在線測試腳本是否能解析數(shù)據(jù),但不支持調(diào)試。建議先在本地編寫腳本、調(diào)試完成后,再將腳本拷貝到物聯(lián)網(wǎng)控制臺的腳本編輯器中。

以下本地調(diào)試代碼基于物模型數(shù)據(jù)解析使用示例中的示例腳本。您在實際使用時,請按照您的腳本需求進行具體參數(shù)設置。

//Test Demo
function Test()
{
    //0x001232013fa00000
    var rawdata_report_prop = new Buffer([
        0x00, //固定command頭,0代表是上報屬性。
        0x00, 0x22, 0x33, 0x44, //對應id字段,標記請求的序號。
        0x12, 0x32, //兩字節(jié)int16,對應屬性prop_int16。
        0x01, //一字節(jié)bool,對應屬性prop_bool。
        0x3f, 0xa0, 0x00, 0x00 //四字節(jié)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();

線上問題排查

設備端連接物聯(lián)網(wǎng)平臺,上報屬性數(shù)據(jù)后,若數(shù)據(jù)解析運行正常,在設備列表單擊該設備對應的查看,進入設備詳情頁,在物模型數(shù)據(jù) > 運行狀態(tài)頁簽下,可以看到設備上報的數(shù)據(jù)。

若設備已經(jīng)上報了數(shù)據(jù),但是卻沒有顯示對應的數(shù)據(jù),可選擇監(jiān)控運維 > 日志服務 > 云端運行日志,通過日志排查問題。

問題排查過程如下:

  1. 選擇對應產(chǎn)品,輸入DeviceName,單擊搜索,業(yè)務類型選擇物模型上報,查詢該設備的相關(guān)日志。
  2. 查看日志記錄,日志中會顯示腳本轉(zhuǎn)化后的數(shù)據(jù)和原數(shù)據(jù)。
  3. 結(jié)合日志說明文檔,查看錯誤碼的信息。
  4. 按照錯誤碼提示,結(jié)合腳本和設備上報的數(shù)據(jù)排查問題。

下面列舉一些錯誤:

  • 腳本不存在。

    日志中顯示錯誤碼為6200。訪問日志說明文檔,查看錯誤的具體含義。錯誤碼6200表示腳本不存在。請在控制臺檢查腳本是否已提交。

  • Alink method不存在。

    日志中顯示錯誤碼為6450。日志說明文檔中有該錯誤碼解釋:錯誤碼6450表示Alink協(xié)議格式的數(shù)據(jù)中method不存在。 原因是設備上報的自定義/透傳格式數(shù)據(jù),經(jīng)過腳本解析為Alink標準格式數(shù)據(jù)后無method。

    日志內(nèi)容如:
    17:54:19.064, A7B02C60646B4D2E8744F7AA7C3D9567, upstream-error - bizType=OTHER_MESSAGE,params={"params":{}},result=code:6450,message:alink method not exist,...
    可以從日志內(nèi)容中看到,錯誤消息為alink method not exist,即Alink協(xié)議格式的數(shù)據(jù)中method不存在。這是解析腳本中method定義有問題,需修改腳本。