本文介绍在本地环境调试数据解析脚本的代码示例,和物联网平台不能正常使用脚本解析数据的排错方法。

本地环境调试脚本

目前,物联网平台数据解析支持在线测试脚本是否能解析数据,但不支持调试。建议先在本地编写脚本、调试完成后,再将脚本拷贝到物联网控制台的脚本编辑器中。可参见如下方式进行本地调试。

以下本地调试代码基于编辑数据解析脚本中的示例脚本。您在实际使用时,请按照您的脚本需求进行具体参数设置。

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

线上问题排查

设备端连接物联网平台,上报属性数据后,若数据解析运行正常,在该设备的设备详情运行状态页签下,将会显示设备上报的数据。

若设备已经上报了数据,但是运行状态下却没有显示对应的数据。如下图所示。



若出现这种情况,可在监控运维 > 日志服务中,选择物模型数据分析,查看属性相关的通信日志。

问题排查过程如下:

  1. 日志服务中,查看日志记录。日志中会显示脚本转化后的数据和原数据。
  2. 结合日志说明文档,查看错误码的信息。
  3. 按照错误码提示,结合脚本和设备上报的数据排查问题。

下面列举一些错误。

  • 脚本不存在。

    如下图,物模型数据分析日志中,显示错误码为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定义有问题,需修改脚本。