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

相关文章
|
17天前
|
XML 网络协议 物联网
基于surging的木舟IOT平台如何添加网络组件
【8月更文挑战第30天】在基于 Surging 的木舟 IOT 平台中添加网络组件需经历八个步骤:首先理解 Surging 及平台架构;其次明确组件需求,选择合适技术库;接着创建项目并配置;然后设计实现网络功能;再将组件集成至平台;接着进行详尽测试;最后根据反馈持续优化与维护。具体实施时应参照最新文档调整。
39 10
|
10天前
|
API 云计算 开发者
使用宜搭平台带来的便利:技术解析与实践
【9月更文第8天】随着企业信息化建设的不断深入,业务流程自动化的需求日益增长。宜搭平台作为一种高效的应用构建工具,为企业提供了快速搭建各类业务系统的可能。本文将探讨使用宜搭平台给企业和开发者带来的便利,并通过具体的代码示例展示其优势。
42 11
|
4天前
|
PHP
PHP 7新特性深度解析与实践
【9月更文挑战第13天】本文将深入探讨PHP 7的新特性,包括性能提升、语法改进、错误处理等方面。我们将通过实例代码来展示这些新特性的使用方法和优势,帮助您更好地理解和应用PHP 7。
|
9天前
|
编译器 PHP 开发者
PHP 8新特性解析与应用实践
PHP 8作为PHP语言的最新版本,带来了许多令人兴奋的新特性和性能改进。本文将深入探讨PHP 8中的JIT编译器、联合类型、匹配表达式等关键更新,并通过实例演示如何在项目中有效利用这些新工具,帮助开发者提升代码质量和执行效率。
|
11天前
|
C# Android开发 开发者
Uno Platform 高级定制秘籍:深度解析与实践样式和模板应用,助你打造统一且高效的跨平台UI设计
【9月更文挑战第7天】Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 创建跨平台 UI 应用,覆盖 Windows、iOS、Android、macOS 和 WebAssembly。本文介绍 Uno Platform 中样式和模板的应用,助力开发者提升界面一致性与开发效率。样式定义控件外观,如颜色和字体;模板则详细定制控件布局。通过 XAML 定义样式和模板,并可在资源字典中全局应用或嵌套扩展。合理利用样式和模板能简化代码、保持设计一致性和提高维护性,帮助开发者构建美观高效的跨平台应用。
25 1
|
18天前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
49 0
|
18天前
|
前端开发 Java UED
瞬间变身高手!JSF 与 Ajax 强强联手,打造极致用户体验的富客户端应用,让你的应用焕然一新!
【8月更文挑战第31天】JavaServer Faces (JSF) 是 Java EE 标准的一部分,常用于构建企业级 Web 应用。传统 JSF 应用采用全页面刷新方式,可能影响用户体验。通过集成 Ajax 技术,可以显著提升应用的响应速度和交互性。本文详细介绍如何在 JSF 应用中使用 Ajax 构建富客户端应用,并通过具体示例展示 Ajax 在 JSF 中的应用。首先,确保安装 JDK 和支持 Java EE 的应用服务器(如 Apache Tomcat 或 WildFly)。
27 0
|
27天前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
42 1
|
12天前
|
存储 物联网 关系型数据库
PolarDB在物联网(IoT)数据存储中的应用探索
【9月更文挑战第6天】随着物联网技术的发展,海量设备数据对实时存储和处理提出了更高要求。传统数据库在扩展性、性能及实时性方面面临挑战。阿里云推出的PolarDB具备高性能、高可靠及高扩展性特点,能有效应对这些挑战。它采用分布式存储架构,支持多副本写入优化、并行查询等技术,确保数据实时写入与查询;多副本存储架构和数据持久化存储机制保证了数据安全;支持动态调整数据库规模,适应设备和数据增长。通过API或SDK接入IoT设备,实现数据实时写入、分布式存储与高效查询,展现出在IoT数据存储领域的巨大潜力。
27 1
|
21天前
|
消息中间件 存储 传感器
RabbitMQ 在物联网 (IoT) 项目中的应用案例
【8月更文第28天】随着物联网技术的发展,越来越多的设备被连接到互联网上以收集和传输数据。这些设备可以是传感器、执行器或其他类型的硬件。为了有效地管理这些设备并处理它们产生的大量数据,需要一个可靠的消息传递系统。RabbitMQ 是一个流行的开源消息中间件,它提供了一种灵活的方式来处理和转发消息,非常适合用于物联网环境。
43 1

推荐镜像

更多