【御控物联】JSON结构数据转换在物联业务中应用(场景案例二)

news2024/11/28 18:56:30

文章目录

  • 一、物联网业务场景现状
  • 二、物联网业务场景数据交互格式
  • 三、JSON格式数据转换案例
  • 四、JSON数据格式转换DEMO
  • 五、在线转换工具
  • 六、技术资料

一、物联网业务场景现状

目前,市场上多数物联网关与物联平台捆绑售卖,网关采集到设备数据只能按照指定的协议和规定的数据格式传输到绑定的物联平台。

一旦用户想把不同厂家网关采集的设备数据上传至现在已经建设的物联平台,或者是想把现在已经使用网关的数据传输到不同厂家平台,都需要定制化开发。

定制化体现在两个方面,第一,协议定制化,市面上大部分网关都支持标准的MQTT协议,可实现快速的开发复制,甚至很多网关都集成了对外转发的各种协议,比如HTTP、WebSocket,只需简单配置即可实现协议的连接通讯。第二,数据格式定制化,这一方面是用户比较困扰的地方,大部分网关或平台与不同厂家的系统进行数据交互需要定制开发,当然现在市面上也有一分部网关或平台内置JS、Lua脚本编辑器,支持通过编写逻辑代码实现各种数据结构的转换,此方案更多面向技术人员,业务人员无法入手,而且执行效率比较低。

二、物联网业务场景数据交互格式

目前物联业务场景常采用二进制、XML、JSON方式进行数据传输。
二进制是一种轻量化的数据格式,结构简洁,占用网络带宽小,传输效率高,也是现在主要推广的数据传输方式,特别对采用SIM卡传输数据的场景,可以大大减少流量消耗,但是结构不够直观,可读性比较差。

XML(Extensible Markup Language,扩展标记语言)是一种“重量级”的数据交换格式,XML格式统一、语法要求严格,标准化程度和可读性都非常高,但占用存储空间大,网络传输慢,不太适合大数据量传输的场景。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,结构简洁,层次分明,解析起来更快,占用的存储空间少,网络传输也较快,是目前物联业务常用的数据交互格式。

本文针对物联业务JSON格式数据转换转化设计了一种面向业务人员的标准JS库,可实现不同厂家网关、不同平台之间任意JSON数据格式无缝转换。网关或物联平台集成JS库可实现JSON格式数据转换:数据源键(Key)->目标键(Key)、数据源键(Key)->目标值(Value)、数据源值(Value)->目标键(Key)、数据源值(Value)->目标值(Value)。
在这里插入图片描述

三、JSON格式数据转换案例

本文结合实际案例对JSON格式数据转换进行如下讲解。
案例概述:
某知名水泥公司现场有PLC、仪表类设备(水表、电表、气表)以及一套成熟的物联网平台,由于部分设备改造升级,采购了一批新的物联网关(御控),要求将改造设备数据通过新网关以原有物联平台要求的JSON数据格式上传,前提是不改动原有物联网平台的任何逻辑功能。

御控网关与PLC采用OPC UA方式进行通信,与仪表采用MODBUS协议进行通信,采集数据通过MQTT协议上传至物联网平台,由物联网平台进行数据存储和展示,逻辑图如下所示:
在这里插入图片描述
御控网关创建PLC和仪表设备监控点表(属性)->配置JSON格式转化->配置MQTT转发信息->物联网平台。

御控网关根据PLC、仪表设备检测点维护点表信息,包含名称、数据类型、点位标识、采集方式、采集周期等。
在这里插入图片描述
御控网关通过界面维护与水泥厂原有物联网云平台进行MQTT连接的信息,包括IP、端口、用户名、密码等信息。

御控网关集成JSON数据格式转化库,实现数据编码和数据解码两种功能。其中数据编码将网关内部采集的数据按照物联网平台要求的JSON数据格式进行转换,上传至平台。数据解码可以将物联网平台下发的JSON格式指令进行反向解析,转换为网关支持的JSON数据,实现物联网平台对网关的反向控制。
在这里插入图片描述
其中御控网关采集PLC点表上传的数据格式为:
在这里插入图片描述
水泥厂物联网平台接受的数据格式为:
在这里插入图片描述
通过数据转换将御控网关上传的“设备编码”、“设备属性值”、“时间戳”分别通过数据源键(Key)->目标值(Value)、数据源值(Value)->目标值(Value)两种映射关系实现了数据转化,转化结果如下所示:
在这里插入图片描述
通过JSON数据格式转化JS库可方便业务人员快速搭建各业务场景的数据映射,特别适用于不同厂家网关和不同厂家物联网平台的解耦和数据交互,减少业务定制,降低开发成本。

四、JSON数据格式转换DEMO

为了更直观体现JSON数据格式转化的功能,特此针对以上场景做了一套转化工具,以下为DEMO展示。

在这里插入图片描述

五、在线转换工具

为了让使用者更加方便的配置出映射关系,为此开发了一套在线转换工具,可在工具中通过拖拽即可配置想要的结构转换关系,并可对转换关系所能实现的效果实时进行预览更改。

工具地址:数据转换工具

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

六、技术资料

  • Github:edq-ebara/data-transformation-javascript: 数据转化(javascript) (github.com)
  • 技术探讨QQ群:775932762
  • 工具连接:数据转换工具
  • 御控官网:https://www.yu-con.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1562423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亲测可用,解决matplotlib中文字体乱码问题(使用Windows设置)

SimHei字体下载 https://pan.baidu.com/s/14BzhntzSeEjE4FmlVENwUw?pwd1111 用我自己的,看了好几个其他博主的帖子,所用的下载链接都失效了,太TM不靠谱了 import matplotlib.pyplot as plt import random x range(60) x_ticks_label ["11点{}分".format(i) for …

HashMap 集合源码分析

系列文章目录 文章目录 系列文章目录前言谈一谈HashMap的红黑树节点类 TreeNode 设计一、字段分析二、构造方法分析三、内部类分析四、方法分析五、扩容分析六、总结 前言 HashMap 底层是使用了 哈希表(数组实现的哈希表) 链表 红黑树 实现的&#xff…

Spring框架之WebFlux

Spring WebFlux高级实战 1、WebFlux作为核心响应式服务器基础 Spring 框架的整个基础设施都是围绕Servlet API 构建的,它们之间紧密耦合。 因此在开始深入响应式Web 之前,先回顾一下Web 模块的设计,看看它做了什么。 底层Servlet 容器负责…

mysql 数据库的MHA高可用

目录 一、MHA概述: 1.认识MHA: 2.MHA 的组成: 3.MHA 的特点: 4.MHA 工作原理: 5.数据流向: 6.数据同步方式: 7. mysql 的高可用 : 二. MySQL MHA 的搭建: 1. 修改 Master、…

LeetCode刷题:无重复字符的最长子串 详解 【3/1000 第三题】

👤作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…

单片机简介(一)

51单片机 一台能够运行的计算机需要CPU做运算和控制,RAM做数据存储,ROM做程序存储,还有输入/输出设备(串行口、并行输出口等),这些被分为若干块芯片,安装在主板(印刷线路板&#xf…

文本直接生成2分钟视频,即将开源模型StreamingT2V

Picsart人工智能研究所、德克萨斯大学和SHI实验室的研究人员联合推出了StreamingT2V视频模型。通过文本就能直接生成2分钟、1分钟等不同时间,动作一致、连贯、没有卡顿的高质量视频。 虽然StreamingT2V在视频质量、多元化等还无法与Sora媲美,但在高速运…

记一次 pdfplumber 内存泄漏导致的服务器宕机

有一个项目需求,要在每天凌晨5点的时候执行一个任务,获取一系列的PDF文件并解析。 后端是Django框架,定时任务用Celery来实现的。 本地跑没什么问题,但是一放到服务器上跑就会宕机,而且是毫无征兆的宕机,…

css- 4

1.浮动 1. 浮动最初用于实现文字环绕效果 2. 现在,浮动是主流的布局方式之一 1.1元素浮动之后的特点 元素浮动之后,称为浮动元素,具有如下特点: 1. 浮动元素脱离文档流 2. 多个浮动的元素会水平排列,一行放不下自动换…

【STM32嵌入式系统设计与开发】——14PWM(pwm脉宽输入应用)

这里写目录标题 一、任务描述二、任务实施1、WWDG工程文件夹创建2、函数编辑(1)主函数编辑(2)USART1初始化函数(usart1_init())(3)USART数据发送函数( USART1_Send_Data(&#xff09…

浅聊什么是Redis?

需求:MySQL面临大量的查询,即读写操作,因此类比CPU,给数据加缓存,Redis诞生。应用程序从MySQL查询的数据,在Redis设置缓存(记录在内存中,无需IO操作),后再需要…

记录Xshell使用ed25519公钥免密链接SSH

试了半天,Xshell好像没办法导入linux生成的ssh公钥,因此需要以下步骤实现免密登录 结论,在linux公钥文件中,将客户端生成的ed25519公钥加上去即可(一个公钥单独一行) 1.使用Linux生成秘钥文件(不需要输入私钥密码passphrase)或者直接创建一…

FFmpeg 详解

FFmpeg 详解 FFmpeg 详解整体结构不同下载版本的区别常用库常用函数初始化封装格式解码器 版本对比组件注册方式对比FFmpeg 3.x 组件注册方式FFmpeg 4.x 组件注册方式 结构体比对函数对比avcodec_decode_video2()vcodec_encode_video2() 数据结构结构体分析AVFormatContextAVIn…

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在图像处理中,解决了分割的问题之后,下面就是属性信息的提取。在这其中,有一种属性是非常重要的 ,那…

蓝桥杯-单片机基础12——基于2023年IIC代码实现开机次数记录(串行EEPROM存储器AT24C02)

蓝桥杯单片机组备赛指南请查看这篇文章:戳此跳转蓝桥杯备赛指南文章 本文章针对蓝桥杯-单片机组比赛开发板所写,代码可直接在比赛开发板上使用。 型号:国信天长4T开发板(绿板),芯片:IAP15F2K6…

libusb Qt使用记录

1.libusb 下载 ,选择编译好的二进制文件,libusb-1.0.26-binaries.7z libusb Activity 2. 解压 3. 在 Qt Widgets Application 或者 Qt Console Application 工程中导入库,Qt 使用的是 minggw 64编译器,所以选择libusb-MinGW-x64。…

在岸上是永远学不会游泳的

为了让各位技术宅的师傅们了解如何追女孩,花无缺表哥来投稿啦!!! 在岸上是永远也学不会游泳的,就算是最好的教练来教你也没用,因为你没有去实践。实践是快速学习的最佳手段,将这些方法运用到工…

深度学习理论基础(三)封装数据集及手写数字识别

目录 前期准备一、制作数据集1. excel表格数据2. 代码 二、手写数字识别1. 下载数据集2. 搭建模型3. 训练网络4. 测试网络5. 保存训练模型6. 导入已经训练好的模型文件7. 完整代码 前期准备 必须使用 3 个 PyTorch 内置的实用工具(utils): ⚫…

java数据结构与算法刷题-----LeetCode695. 岛屿的最大面积

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 深度优先遍历2. 广度优先 1. 深度优先遍历 这不是找最短路径&…

量化交易入门(三十八)CCI指标Python实现和回测

今天我们先单纯用CCI指标来完成策略的编写,后续我们会改进这个策略,将CCI指标和前面讲到的MACD和RSI相结合来优化,看看我们优化后的效果会不会更好。 一、量化策略 CCI指标在量化交易中的策略: 在以下情况下生成买入信号&#…