乐趣区

关于存储:IoT平台云端通用数据解析脚本实践实践类

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

物联网场景中,面对低配置且资源受限或者对网络流量有要求的设施,往往不适宜在设施端结构 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…

             阿里云物联网平台客户交换群
退出移动版