设备原始数据无需适配物模型,在物联网平台云端通过脚本实现二进制数据转换为物模型JSON格式。
背景信息
在大量物联网业务场景中,由于资源受限,或配置较低,设备端不适合直接构造物模型的JSON数据结构体与物联网平台进行直接通信。此时,可以将原数据直接透传到物联网平台,然后在物联网平台控制台,编写数据解析脚本,将设备上行数据解析为物联网平台定义的标准格式(Alink
JSON)。
物联网平台接收到来自设备的数据时,先运行解析脚本,将透传的数据转换成Alink JSON格式的数据,再进行业务处理。数据解析流程图如下所示。
图 1. 数据解析架构图
配置云端控制台
- 创建产品并定义物模型。
- 根据设备实际情况,创建产品。
示例中,选择
WiFi入网,数据采用
透传/自定义方式。

- 在功能定义栏,自定义如下图所示功能。
包括温度、湿度、二氧化碳、甲醛、PM2.5、光照强度。

- 创建设备。
- 在设备页,为该产品创建设备。
示例中,使用设备序列号作为DeviceName。

- 记录完整的设备证书信息(ProductKey、DeviceName、DeviceSecret),以备后续设备开发使用。
数据解析
- 查看设备上行消息。
已开发完成的设备通电后,配置本地网络的WiFi账号、密码、设备身份信息后,即可在物联网平台看到设备状态为在线。
- 在物联网平台控制台左侧导航栏选择监控运维>日志服务,选中上面已创建的产品。
- 选择上行消息分析页签,单击MessageID,即可查看设备上报消息详情。

我们用Hex方式查看设备上报的原始数据。
0xaa1fc800003710ff0005d76b15001c013400ad0ff0400ffff18003000ff2e
此时并不能读懂设备数据的业务意义,需要使用阿里云物联网平台云端数据解析能力。
- 编写数据解析脚本。
找到设备开发文档,获取数据协议内容。参考协议,编写解析脚本,处理设备上报的原始数据。下图为某设备数据协议示例。

您可以在物联网平台提供的数据解析页面,编辑、提交脚本并模拟数据解析。
数据解析脚本中需定义支持以下两个方法:
- Alink JSON格式数据转为设备自定义数据格式:protocolToRawData。
- 设备自定义数据格式转Alink JSON格式数据:rawDataToProtocol。
示例中的环境采集设备只有数据上报功能,因此只需要编写上行数据解析函数protocolToRawData,无需实现rawDataToProtocol。
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;
}
- 模拟数据解析。
脚本编写完成后,将前面监控日志看到的设备Hex数据拷贝出来,粘贴到模拟输入框,单击
运行,可以在右侧看到运行结果。确认数据正确后,提交脚本。

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

在文档使用中是否遇到以下问题
更多建议
匿名提交