本文介紹在本地環(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ù)。
若設備已經(jīng)上報了數(shù)據(jù),但是卻沒有顯示對應的數(shù)據(jù),可選擇
,通過日志排查問題。問題排查過程如下:
- 選擇對應產(chǎn)品,輸入DeviceName,單擊搜索,業(yè)務類型選擇物模型上報,查詢該設備的相關(guān)日志。
- 查看日志記錄,日志中會顯示腳本轉(zhuǎn)化后的數(shù)據(jù)和原數(shù)據(jù)。
- 結(jié)合日志說明文檔,查看錯誤碼的信息。
- 按照錯誤碼提示,結(jié)合腳本和設備上報的數(shù)據(jù)排查問題。
下面列舉一些錯誤:
- 腳本不存在。
日志中顯示錯誤碼為6200。訪問日志說明文檔,查看錯誤的具體含義。錯誤碼6200表示腳本不存在。請在控制臺檢查腳本是否已提交。
- Alink method不存在。
日志中顯示錯誤碼為6450。日志說明文檔中有該錯誤碼解釋:錯誤碼6450表示Alink協(xié)議格式的數(shù)據(jù)中method不存在。 原因是設備上報的自定義/透傳格式數(shù)據(jù),經(jīng)過腳本解析為Alink標準格式數(shù)據(jù)后無method。
日志內(nèi)容如:
可以從日志內(nèi)容中看到,錯誤消息為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協(xié)議格式的數(shù)據(jù)中method不存在。這是解析腳本中method定義有問題,需修改腳本。