IoT平台云端通用数据解析脚本实践

简介: 在物联网平台云端,将设备原始数据转换成结构化的JSON格式,方便云上业务系统存储和展示。

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

物联网场景中,面对低配置且资源受限或者对网络流量有要求的设备,往往不适合在设备端构造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智能家居实践

image.png

相关文章
|
5天前
|
存储 缓存 Linux
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
本文介绍了Xenomai中的XDDP(Xenomai Distributed Data Protocol)通信机制,XDDP用于实时和非实时进程之间的数据交换。XDDP在Xenomai内核中涉及的数据结构和管理方式,以及创建XDDP通道后的实时端和非实时端连接过程。
9 0
xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互
|
6天前
|
XML 存储 开发框架
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
9 0
|
8天前
|
JSON 安全 前端开发
解析FormData格式数据:Python实践指南
解析FormData格式数据:Python实践指南
14 1
|
16天前
|
数据采集 存储 大数据
Python爬虫:数据获取与解析的艺术
本文介绍了Python爬虫在大数据时代的作用,重点讲解了Python爬虫基础、常用库及实战案例。Python因其简洁语法和丰富库支持成为爬虫开发的优选语言。文中提到了requests(发送HTTP请求)、BeautifulSoup(解析HTML)、Scrapy(爬虫框架)、Selenium(处理动态网页)和pandas(数据处理分析)等关键库。实战案例展示了如何爬取电商网站的商品信息,包括确定目标、发送请求、解析内容、存储数据、遍历多页及数据处理。最后,文章强调了遵守网站规则和尊重隐私的重要性。
27 2
|
18天前
|
存储 文件存储 数据库
Flutter的持久化存储:使用SharedPreferences等进行数据存储的技术解析
【4月更文挑战第26天】 Flutter应用持久化存储主要使用SharedPreferences,适合存储简单数据类型。通过shared_preferences插件,可轻松进行数据读写。注意异步操作、数据类型限制和安全性,对于复杂需求,可选择SQLite或文件存储。
|
19天前
|
存储 编译器 C语言
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
|
20天前
|
SQL 关系型数据库 API
从API获取数据并将其插入到PostgreSQL数据库:步骤解析
使用Python处理从API获取的数据并插入到PostgreSQL数据库:安装`psycopg2`,建立数据库连接,确保DataFrame与表结构匹配,然后使用`to_sql`方法将数据插入到已存在的表中。注意数据准备、权限设置、性能优化和安全处理。
|
8月前
|
编解码 小程序 JavaScript
阿里云IoT小程序应用开发和组件实践
通过实验,了解阿里云IoT小程序的应用开发的方法,了解其内置的基础组件使用,以及基于Vue.js实现可复用的自定义组件的方法。
348 1
|
8月前
|
运维 安全 物联网
使用阿里云 IoT 安全中心保护智慧遥控器
在物联网领域中,我们的 TO B 智慧设备,在发货之后,出现了不少困扰我们的安全问题,比如会被恶意安装应用,访问非法网站等,增加厂家的运维成本。 同时设备上的一些技术机密也容易被好事之人破解,对厂商构成商业损失,直到我们发现了阿里云物联网的一款安全防护产品 -- IoT 安全中心。它主打的 ID² 和安全运营有效的解决了我们的痛点。
401 3
|
9月前
|
传感器 监控 物联网
阿里云IoT HaaS 510:快速实现物联网数据传输的利器
众所周知,物联网(IoT)是近年来日益热门的技术领域之一,它的广泛应用为人们的生活和工作带来了无限可能。在物联网应用中,数据的采集和传输是至关重要的一环。DTU是一种应用于物联网数据传输的终端设备,它可以将各类传感器、数据采集单元等通过串口RS232/485传输到DTU,再由DTU转发到4G网络上传至云端。阿里云IoT HaaS 510是一款开板式DTU产品,能够帮助企业快速搭建物联网平台,并实现数据的采集和传输,那么本文就来简单分享一下。
380 1
阿里云IoT HaaS 510:快速实现物联网数据传输的利器

推荐镜像

更多