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

本地环境调试脚本

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

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

//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. 选择对应产品,输入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定义有问题,需修改脚本。