文档

设备透传数据云端解析

更新时间:
一键部署

设备原始数据无需适配物模型,在物联网平台云端通过脚本实现二进制数据转换为物模型JSON格式。

背景信息

在大量物联网业务场景中,由于资源受限,或配置较低,设备端不适合直接构造物模型的JSON数据结构体与物联网平台进行直接通信。此时,可以将原数据直接透传到物联网平台,然后在物联网平台控制台,编写数据解析脚本,将设备上行数据解析为物联网平台定义的标准格式(Alink JSON)。

物联网平台接收到来自设备的数据时,先运行解析脚本,将透传的数据转换成Alink JSON格式的数据,再进行业务处理。数据解析流程图如下所示。

图 1. 数据解析架构图数据解析架构图

配置云端控制台

  1. 创建产品并定义物模型。

    1. 根据设备实际情况,创建产品。

      示例中,选择WiFi入网,数据采用透传/自定义方式。产品信息

    2. 功能定义栏,自定义如下图所示功能。

      包括温度、湿度、二氧化碳、甲醛、PM2.5、光照强度。自定义功能

  2. 创建设备。

    1. 设备页,为该产品创建设备。

      示例中,使用设备序列号作为DeviceName。设备信息

    2. 记录完整的设备证书信息(ProductKey、DeviceName、DeviceSecret),以备后续设备开发使用。

数据解析

  1. 查看设备上行消息。

    已开发完成的设备通电后,配置本地网络的WiFi账号、密码、设备身份信息后,即可在物联网平台看到设备状态为在线

    1. 在物联网平台控制台左侧导航栏选择监控运维>日志服务,选中上面已创建的产品。

    2. 选择上行消息分析页签,单击MessageID,即可查看设备上报消息详情。

      查看设备上报消息详情我们用Hex方式查看设备上报的原始数据。

      0xaa1fc800003710ff0005d76b15001c013400ad0ff0400ffff18003000ff2e

      此时并不能读懂设备数据的业务意义,需要使用阿里云物联网平台云端数据解析能力。

  2. 编写数据解析脚本。

    找到设备开发文档,获取数据协议内容。参考协议,编写解析脚本,处理设备上报的原始数据。下图为某设备数据协议示例。某设备数据协议示例您可以在物联网平台提供的数据解析页面,编辑、提交脚本并模拟数据解析。

    数据解析脚本中需定义支持以下两个方法:

    • Alink JSON格式数据转为设备自定义数据格式:protocolToRawData。

    • 设备自定义数据格式转Alink JSON格式数据:rawDataToProtocol。

    示例中的环境采集设备只有数据上报功能,因此只需要编写上行数据解析函数rawDataToProtocol,无需实现protocolToRawData。

    var PROPERTY_REPORT_METHOD = 'thing.event.property.post';
    
    //上行数据,自定义二进制转物模型JSON
    function rawDataToProtocol(bytes) {
    
     var uint8Array = new Uint8Array(bytes.length);
     for (var i = 0; i < bytes.length; i++) {
            uint8Array[i] = bytes[i] & 0xff;
     }
    
     var dataView = new DataView(uint8Array.buffer, 0);
    
     var jsonMap = new Object();
    
            //属性上报method
    jsonMap['method'] =PROPERTY_REPORT_METHOD;
    //协议版本号固定字段
    jsonMap['version'] = '1.0';
      //标示该次请求id值
    jsonMap['id'] = new Date().getTime();
    var params = {};
    //12,13对应产品属性中PM2.5
    params['pm25'] =
    (dataView.getUint8(13)*256+dataView.getUint8(12));
    //14,15对应产品属性中 temperature
    params['temperature'] =
    (dataView.getUint8(15)*256+dataView.getUint8(14))/10;
    //16,17对应产品属性中 humidity
    params['humidity'] = 
    (dataView.getUint8(17)*256+dataView.getUint8(16));
    //18,19对应产品属性中co2
    params['co2'] = (dataView.getUint8(19)*256+dataView.getUint8(18));
    //22,23对应产品属性中甲醛hcho
    params['hcho'] =
    (dataView.getUint8(23)*256+dataView.getUint8(22))/100;
    //28,29对应产品属性中光照lightLux
    params['lightLux'] = 
    (dataView.getUint8(29)*256+dataView.getUint8(28));
    
    jsonMap['params'] = params;
    
     return jsonMap;
    }
    
    //下行指令,物模型JSON转二进制格式
    function protocolToRawData(json) {
     var payloadArray = [1];//此设备只有上报数据功能,无法接收云端指令
     return payloadArray;
    }
  3. 模拟数据解析。

    脚本编写完成后,将前面监控日志看到的设备Hex数据拷贝出来,粘贴到模拟输入框,单击运行,可以在右侧看到运行结果。确认数据正确后,提交脚本。模拟数据解析

    数据解析脚本提交后,进入设备详情页。选择运行状态页,显示经脚本解析后设备采集到的环境数据。

    查看设备运行状态

名词解释

  • 物模型

    是对设备在云端的功能描述,包括设备的属性、服务和事件。物联网平台通过定义一种物的描述语言来描述物模型,称之为 TSL(即 Thing Specification Language),采用JSON格式,您可以根据TSL组装上报设备的数据。

  • Alink协议

    阿里云定义的设备与云端之间的通信协议。

  • 设备证书

    设备证书指ProductKey、DeviceName、DeviceSecret。

    • ProductKey:是物联网平台为产品颁发的全局唯一标识。

    • DeviceName:在注册设备时,自定义的或自动生成的设备名称,具备产品维度内的唯一性。

    • DeviceSecret:物联网平台为设备颁发的设备密钥,和DeviceName成对出现。

  • 数据解析脚本

    针对采用透传格式/自定义数据格式的设备,需要在云端编写数据解析脚本,将设备上报的二进制数据或自定义的JSON数据,转换为平台上的Alink JSON数据格式。

  • 本页导读
文档反馈