共计 2174 个字符,预计需要花费 6 分钟才能阅读完成。
数据解析脚本(云网关)实际
物联网场景中,面对低配置且资源受限或者对网络流量有要求的设施,往往不适宜在设施端结构 JSON 数据与 IoT 物联网平台通信,这时设施可通过自定义 Topic 将原始数据间接上报到物联网平台。物联网平台提供数据解析性能,能够依据您提交的脚本,将设施原始数据在云端转换成结构化的 JSON 格局,不便云上业务零碎存储和展现。
1. 自定义 Topic 数据解析
设施通过自定义 Topic 公布数据,且 Topic 携带解析标记(?_sn=default)时,物联网平台接收数据后,先调用您在控制台提交的业务数据解析脚本,将设施上报的原始数据解析为 JSON 构造体,再进行数据流转解决。
云上数据解析能力:
数据解析流程图:
阐明
- 目前仅华东 2(上海)地区反对自定义 Topic 数据解析。
- 设施上报数据是,在公布音讯的自定义 Topic 后增加数据解析标记(?_sn=default)。
例如,设施发送到 Topic /${productKey}/${deviceName}/user/update 的原数据须要解析为 JSON 格局。在设施上报时,该 Topic 为:/${productKey}/${deviceName}/user/update?_sn=default。
- 在物联网平台创立自定义 Topic 时按失常 Topic 定义,不增加解析标记。
- 仅解析设施上报云端的原数据,不解析云端上行数据。
- 解析前后,音讯所在 Topic 不变。
例如,设施发送到 /${productKey}/${deviceName}/user/update?_sn=default 的数据,解析后仍在 /${productKey}/${deviceName}/user/update 的 Topic 中。
2. 脚本解析实际案例
本次实际,咱们以水泵运行数据采集为例,在设施端产生的原始数据是一个字符串:DATA,23,5000,通过数据脚本解析引擎在 IoT 物联网平台云端转换成结构化的 JSON 格局:{“temperature”:23,”speed”:5000}。
Topic 和 Payload 变动:
3. 云端开发
**
3.1 创立产品
登录控制台,创立产品: 水泵
**
3.2 增加自定义 Topic
进入产品详情,抉择 Topic 类列表的 Tab,增加自定义通信 Topic : /${productKey}/${deviceName}/user/data
3.3 编写数据解析脚本
依据业务状况编写数据转换的脚本,通过模仿输出验证脚本正确性,而后提交到物联网平台,如下图:
本案例残缺脚本如下:
/**
* 将设施自定义 topic 数据转换为 json 格局数据, 设施上报数据到物联网平台时调用
* 入参:topic 字符串,设施上报音讯的 topic
* 入参:rawData byte[]数组 不能为空
*
* 出参:jsonObj JSON 对象 不能为空
*/
function transformPayload(topic, rawData) {var jsonObj = {}
var dataSrc = String.fromCharCode.apply(String, rawData);
var data = dataSrc.split(',');
jsonObj.temperature = parseInt(data[1]);
jsonObj.speed = parseInt(data[2]);
return jsonObj;
}
**
3.4 注册设施
实现水泵产品的定义和数据解析脚本提交后,咱们来注册一个设施,获取到身份认证的三元组信息,如下图:
4. 设施端开发
咱们通过 Node.js 脚本模仿水泵上报运行数据到 IoT 物联网平台,残缺代码如下:
const mqtt = require('aliyun-iot-mqtt');
// 设施身份
const options = {
productKey: "替换 productKey",
deviceName: "替换 deviceName",
deviceSecret: "替换 deviceSecret",
regionId: "cn-shanghai"
};
// 上报的 Topic 追加?_sn=default
const topic = `/${options.productKey}/${options.deviceName}/user/data?_sn=default`;
// 设施端数据
var data = 'DATA,23,5000';
//1. 建设连贯
const client = mqtt.getAliyunIotMqttClient(options);
console.log('topic='+topic)
console.log('payload='+data)
//2. 公布数据到 topic
client.publish(topic, data);
5. 联机运行
在电脑端启动水泵模仿的 Node.js 脚本后,咱们在 IoT 物联网平台的控制台 日志服务 里能够观测到 上行音讯剖析 日志,音讯内容曾经在云端转换为了结构化 JSON 数据,如下图:
在 物模型数据分析 的 Tab 下,能够看到解析过程的日志,如下图:
【往期回顾】
1. 自建 MQTT 集群迁徙阿里云 IoT 平台
2.IoT 时代:WiFi 配网技术分析
3. 微信小程序和 IoT 智能家居实际
物联网平台产品介绍详情:https://www.aliyun.com/produc…
阿里云物联网平台客户交换群