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

本地環(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í)際使用時(shí),請按照您的腳本需求進(jìn)行具體參數(shù)設(shè)置。

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

線上問題排查

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

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

問題排查過程如下:

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

下面列舉一些錯(cuò)誤:

  • 腳本不存在。

    日志中顯示錯(cuò)誤碼為6200。訪問日志說明文檔,查看錯(cuò)誤的具體含義。錯(cuò)誤碼6200表示腳本不存在。請?jiān)诳刂婆_檢查腳本是否已提交。

  • Alink method不存在。

    日志中顯示錯(cuò)誤碼為6450。日志說明文檔中有該錯(cuò)誤碼解釋:錯(cuò)誤碼6450表示Alink協(xié)議格式的數(shù)據(jù)中method不存在。 原因是設(shè)備上報(bào)的自定義/透傳格式數(shù)據(jù),經(jīng)過腳本解析為Alink標(biāo)準(zhǔn)格式數(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)容中看到,錯(cuò)誤消息為alink method not exist,即Alink協(xié)議格式的數(shù)據(jù)中method不存在。這是解析腳本中method定義有問題,需修改腳本。