数据解析脚本(云网关)实际

物联网场景中,面对低配置且资源受限或者对网络流量有要求的设施,往往不适宜在设施端结构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=defaultconst 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.公布数据到topicclient.publish(topic, data);

5.联机运行

在电脑端启动水泵模仿的Node.js脚本后,咱们在IoT物联网平台的控制台日志服务里能够观测到上行音讯剖析日志,音讯内容曾经在云端转换为了结构化JSON数据,如下图:

物模型数据分析的Tab下,能够看到解析过程的日志,如下图:

【往期回顾】

1.自建MQTT集群迁徙阿里云IoT平台
2.IoT时代:WiFi配网技术分析
3.微信小程序和IoT智能家居实际

物联网平台产品介绍详情:https://www.aliyun.com/produc...

             阿里云物联网平台客户交换群