CN116719876B - 一种基于规则引擎的时序数据处理方法及终端 - Google Patents

一种基于规则引擎的时序数据处理方法及终端 Download PDF

Info

Publication number
CN116719876B
CN116719876B CN202311007701.3A CN202311007701A CN116719876B CN 116719876 B CN116719876 B CN 116719876B CN 202311007701 A CN202311007701 A CN 202311007701A CN 116719876 B CN116719876 B CN 116719876B
Authority
CN
China
Prior art keywords
rule
subtopic
time sequence
data
mqtt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311007701.3A
Other languages
English (en)
Other versions
CN116719876A (zh
Inventor
林静雯
郭文静
秦伟明
陈雪瑞
李加浩
马红月
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Information and Telecommunication Co Ltd
Original Assignee
State Grid Information and Telecommunication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Information and Telecommunication Co Ltd filed Critical State Grid Information and Telecommunication Co Ltd
Priority to CN202311007701.3A priority Critical patent/CN116719876B/zh
Publication of CN116719876A publication Critical patent/CN116719876A/zh
Application granted granted Critical
Publication of CN116719876B publication Critical patent/CN116719876B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及时序数据处理领域,提供了一种基于规则引擎的时序数据处理方法及终端,方法及终端均在EMQ X的规则引擎页面上配置并发布重新发布子主题规则,在EMQ X的规则引擎页面上配置子主题解析规则,在EMQ X的规则引擎页面上为子主题解析规则添加桥接数据到MQTT Broker的动作。本发明真正实现了将面向配电物联网通信协议的时序数据实时插入到时序数据库IoTDB,且无需修改后端代码,提供了灵活的“配置式”的业务集成方案,简化了业务开发流程,提升了易用性。

Description

一种基于规则引擎的时序数据处理方法及终端
技术领域
本发明涉及时序数据处理技术领域,具体涉及一种基于规则引擎的时序数据处理方法及终端。
背景技术
时序数据,即时间序列数据,是同一指标按时间顺序记录的数据列,是随着时间的推移不断产生且带着时间戳的数据,其关键特征是时态排序,它按照事件发生和到达处理的顺序来组织事件。
时序数据库是专门用来存储时序数据的数据库。IoTDB(Internet of ThingsDatabase,物联网数据库) 是一款开源时序数据库,是一种比较常用的时序数据库。传统来说,将MQTT客户端上报的基于MQTT的配电物联网通信协议的时序数据存入时序数据库IoTDB时,无法将时序数据直接存入时序数据库IoTDB,通常需要借助第三方中间件将数据实时插入到时序数据库IoTDB。现有技术中采用第三方中间件方式将数据实时插入到时序数据库IoTDB,首先需要后端开发人员按照IoTDB识别的消息体格式以及时间戳格式来修改MQTT客户端上报数据,其次将数据放到 Kafka消息队列进行缓存,需要考虑如何将数据放到不同的主题和分区,再通过IoTDB-JDBC接口从Kafka的消费者端接收时序数据,最后存入写入节点的实时数据TsFile文件中,由此实现将MQTT客户端上报的基于MQTT的配电物联网通信协议的时序数据实时插入到时序数据库IoTDB的目的。
显然,以上借助分布式消息服务Kafka将MQTT客户端上报的时序数据写入IoTDB的方法,复杂且需要后端开发人员来修改设备上报数据格式,不利于MQTT客户端上报大量时序数据时的处理。此为现有技术的不足之处。
发明内容
针对现有技术借助分布式消息服务Kafka将MQTT客户端上报的时序数据写入IoTDB的方法不足之处,本申请提供了一种基于规则引擎的时序数据处理方法及终端,用于降低将基于MQTT的配电物联网通信协议的时序数据实时插入到时序数据库IoTDB的复杂度,避免后端开发人员修改设备上报数据格式,以利于对MQTT客户端上报的大量基于MQTT的配电物联网通信协议的时序数据的处理。
第一方面,本发明提供一种基于规则引擎的时序数据处理方法,方法基于搭建好的时序数据库IoTDB环境以及安装好的开源云原生分布式物联网消息中间件EMQ X;IoTDB的配置文件conf/iotdb-engine.properties中,enable_mqtt_service的值为“true”,mqtt_port的值为M,M为与EMQ X的端口号不相等的mqtt端口号;
方法包括:
在EMQ X的规则引擎页面上,配置并发布重新发布子主题规则;所述重新发布子主题规则用于将上报数据中的每一个时序数据拆分开来;上报数据为符合基于MQTT的配电物联网通信协议的消息体格式的时序数据序列;
在EMQ X的规则引擎页面上,配置子主题解析规则;子主题解析规则用于将以上拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据;
在EMQ X的规则引擎页面上,为所述子主题解析规则添加一个桥接数据到MQTTBroker的动作。
进一步地,在EMQ X的规则引擎页面上,配置并发布重新发布子主题规则,其实现方法包括:
预先编写子主题拆分函数,子主题拆分函数用于将上报数据中的每一个时序数据拆分开来;
基于所述子主题拆分函数创建所述重新发布子主题规则;
使用浏览器打开 EMQ X的Dashboard,在EMQ X的规则引擎页面上,配置该创建的重新发布子主题规则;
在EMQ X的规则引擎页面上,为所述重新发布子主题规则添加重新发布动作。
进一步地,所述重新发布子主题规则为一个SQL语句,该SQL语句为:
FOREACH
payload.devices as subDevice
FROM "/v1/devices/#";
其中,subDevice为预先编写的子主题拆分函数,/v1/devices/#代表上报数据的消息结构体格式。
进一步地,子主题解析规则为设置好的SQL语句。
第二方面,本发明提供一种基于规则引擎的时序数据处理终端,终端内搭建有时序数据库IoTDB环境,并安装有开源云原生分布式物联网消息中间件EMQ X;IoTDB的配置文件conf/iotdb-engine.properties中,enable_mqtt_service的值为“true”,mqtt_port的值为M,M为与EMQ X的端口号不相等的mqtt端口号;
所述基于规则引擎的时序数据处理终端包括:
EMQ X的规则引擎页面上,配置并发布有重新发布子主题规则,所述重新发布子主题规则用于将上报数据中的每一个时序数据拆分开来;上报数据为符合基于MQTT的配电物联网通信协议的消息体格式的时序数据序列;
EMQ X的规则引擎页面上,配置有子主题解析规则,子主题解析规则用于将以上拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据;
EMQ X的规则引擎页面上,创建有为所述子主题解析规则添加的一个桥接数据到MQTT Broker的动作。
进一步地,配置并发布重新发布子主题规则,其实现方法包括:
预先编写子主题拆分函数,子主题拆分函数用于将上报数据中的每一个时序数据拆分开来;
基于所述子主题拆分函数创建所述重新发布子主题规则;
使用浏览器打开 EMQ X的Dashboard,在EMQ X的规则引擎页面上,配置该创建的重新发布子主题规则;
在EMQ X的规则引擎页面上,为上述创建的重新发布子主题规则添加重新发布动作。
进一步地,所述重新发布子主题规则为一个SQL语句,该SQL语句为:
FOREACH
payload.devices as subDevice
FROM "/v1/devices/#";
其中,subDevice为预先编写的子主题拆分函数,/v1/devices/#代表上传数据的消息结构体格式;
所述子主题解析规则为设置好的SQL语句。
进一步地,所述桥接数据到MQTT Broker的动作,其创建包括为该桥接数据到MQTTBroker的动作创建一个MQTT Bridge资源;
所述MQTT Bridge资源的远程Broker地址一栏填写IoTDB的MQTT服务地址,所述MQTT Bridge资源的客户端 Id、用户名、密码均填写root。
进一步地,所述时序数据处理终端为精准用电调控终端,或为物联管理平台,或为实时量测数据中心。
进一步地,所述时序数据处理终端使用时:
EMQ X接收上报数据;
EMQ X依据其规则引擎页面上配置并发布的重新发布子主题规则,将接收到的上报数据中的每一个时序数据拆分出来;
EMQ X依据其规则引擎页面上配置的子主题解析规则,将拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据,得到若干个待存储时序数据;
EMQ X基于其规则引擎页面上创建的桥接数据到MQTT Broker的动作,实时将所得到的各待存储时序数据存入时序数据库IoTDB。
本发明提供的技术方案可以带来如下有益效果:
本发明通过重新发布子主题规则以及子主题解析规则的使用,真正实现了将基于MQTT的配电物联网通信协议的上报数据实时插入到时序数据库IoTDB。本发明中涉及的重新发布子主题规则以及子主题解析规则是配置的,避免了后端开发人员修改设备上报数据格式。本发明通过在EMQ X的规则引擎页面上配置并发布有重新发布子主题规则,在EMQ X的规则引擎页面上配置子主题解析规则,在EMQ X的规则引擎页面上创建为上述子主题解析规则添加的桥接数据到MQTT Broker的动作,以及在EMQ X的规则引擎页面上为上述动作创建一个MQTT Bridge资源,实现将基于MQTT的配电物联网通信协议的上报数据实时插入到时序数据库IoTDB的目的,降低了实现的复杂度,有助于MQTT客户端上报大量时序数据时对上报的大量时序数据的处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一个实施例的方法的方法流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
EMQ X是一个大规模扩展、可弹性伸缩的开源云原生分布式物联网消息中间件,由开源物联网数据基础设施软件供应商EMQ发布。EMQ X可以高效可靠地处理海量物联网设备的并发连接,并且内置了强大的规则引擎功能,用以对事件和消息流数据进行高性能地实时处理。规则引擎通过SQL语句提供了灵活的“配置式”的业务集成方案,简化了业务开发流程,提升了易用性,降低了用户的业务逻辑与EMQ X的耦合度。EMQ X在消息发布或事件触发时将触发规则引擎,满足触发条件的规则将执行各自的SQL语句筛选并处理消息和事件的上下文信息。
IoTDB是最早由清华大学发起的开源时序数据库项目,可以为用户提供数据收集、存储和分析等服务。鉴于其轻量级架构、高性能和高可用的特性,以及与 Hadoop 和 Spark生态的无缝集成,满足了工业IoT领域中海量数据存储、高吞吐量数据写入和复杂数据查询分析的需求。
使用EMQ X规则引擎的MQTT数据桥接功能,接收MQTT客户端上报的简单数据(即不涉及数据结构体的数据,比如参数的数值等),可以实时插入到时序数据库IoTDB。但对于上报的基于MQTT的配电物联网通信协议的时序数据,无法直接存入时序数据库IoTDB,而是需要借助第三方中间件将数据实时插入到时序数据库IoTDB。
基于MQTT的配电物联网通信协议规定了边设备上报数据的协议主题,即边设备上的端设备通过此主题上报数据。
具体地,基于MQTT的配电物联网通信协议规定的边设备上报数据的消息体结构如下:
主题 Topic:/v1/devices/{gatewayId}/datas
其中,gatewayId 的含义为设备标识(比如:ESN号、MAC地址等,由使用方注册设备时决定)。
参数说明如以下表一至表三所示。
表一 参数说明
表二 DeviceS结构体说明
表三 Services 结构体说明
而IoTDB内置MQTT服务的消息体格式固定如下:
{
"device":"root.sg.d1",
"timestamp":1586076045524,
"measurements":["s1","s2"],
"values":[0.530635,0.530635]
}
综上,由于边设备上报的数据的消息结构固定且复杂,若不对消息进行处理,使用EMQ X规则引擎的MQTT数据桥接功能,不能直接将上报数据实时插入到时序数据库 IoTDB。
为此,本发明提出一种基于规则引擎的时序数据处理方法及终端,通过重新发布子主题规则对上报的消息进行拆分,并通过子主题解析规则将每条拆分消息处理存入IoTDB,实现将上报的基于MQTT的配电物联网通信协议的时序数据实时插入到时序数据库IoTDB。
下面对本发明中涉及的相关术语进行解释。
MQTT协议:消息队列遥测传输协议。
基于MQTT的配电物联网通信协议:规定了配电物联网平台和边设备之间采用的面向对象具有互操作性的数据传输协议,包括通信体系架构、应用数据结构以及应用传输过程。
边设备:边指的是靠近数据源头或物,在网络边缘分布智能代理,其拓展云管理数据和搜集数据能力与范围。
端设备:端指的是配电物联网结构状态感知以及执行控制主体的终端单元。
MQTT发布者:发布应用消息给其它相关的客户端,对应MQTT客户端。
MQTT订阅者:订阅以请求接收相关的应用消息,取消订阅以移除接收应用消息的客户端。
主题名:附加在应用消息上的一个标签,服务端已知且与订阅匹配,服务端发送应用消息的一个副本给每一个匹配的客户端订阅。
消息体:存在于部分MQTT数据包中,表示客户端收到的具体内容。
ESN号:Electronic Serial Number,电子序列号。
MAC地址:Media Access Control地址, 介质访问控制地址。
请参考图1,其示出了本发明一个实施例的基于规则引擎的时序数据处理方法。该方法基于搭建好的时序数据库IoTDB环境以及安装好的开源云原生分布式物联网消息中间件EMQ X。方法使用时,能够利用EMQ X规则引擎的MQTT数据桥接功能,将基于MQTT的配电物联网通信协议上传的数据实时插入到时序数据库IoTDB。
具体地,本实施例的方法包括以下步骤110至步骤130:
步骤110、在EMQ X的规则引擎页面上,配置并发布重新发布子主题规则。
上述重新发布子主题规则用于将上报数据中的每一个时序数据拆分开来。上报数据为符合基于MQTT的配电物联网通信协议的消息体格式的时序数据序列。
步骤120、在EMQ X的规则引擎页面上,配置子主题解析规则。
上述子主题解析规则用于将以上拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据。
步骤130、在EMQ X的规则引擎页面上,为所述子主题解析规则添加一个桥接数据到MQTT Broker的动作。
方法使用时:
EMQ X依据其规则引擎页面上配置并发布的重新发布子主题规则,将上报数据中的每一个时序数据拆分出来;
EMQ X依据其规则引擎页面上配置的子主题解析规则,将拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据,得到若干个待存储时序数据;
EMQ X基于其规则引擎页面上创建的桥接数据到MQTT Broker的动作,实时将所得到的各待存储时序数据存入时序数据库IoTDB。
示例性地,时序数据库IoTDB环境的搭建方法包括以下步骤:
下载IoTDB Server(单机版)的压缩包;
解压上述压缩包,进入解压后的目录修改IoTDB的配置文件conf/iotdb-engine.properties,具体地,将enable_mqtt_service的默认值“false”改为“true”,将mqtt_port的默认值“1883”改为M,M为与EMQ X的端口号不相等的mqtt端口号,至此完成IoTDB服务端的安装;
启动IoTDB服务端:nohup sbin/start-server.sh>/dev/null 2>&1&;
运行Cli工具:sbin/start-cli.sh -h 本机ip -p 6667 -u root -pw root。
至此完成时序数据库IoTDB的环境搭建。
其中,上述为所述子主题解析规则添加一个桥接数据到MQTT Broker的动作,包括为所述动作添加一个MQTT Bridge资源。
具体实现时,上述MQTT Bridge资源的远程Broker地址一栏填写IoTDB的MQTT服务地址,上述MQTT Bridge资源的客户端 Id、用户名、密码均填写root。
本实施例中M=2883。具体实现时,本领域技术人员可依据实际情况设置M的取值为不等于“1883”的其他端口号值。
相对应地,本实施例中IoTDB的MQTT服务地址为:192.168.0.222:2883。
IoTDB 不关心消息主题,上述MQTT Bridge资源创建时,可以填写一个任意的主题,本实施例中填写foo。
示例性地,本申请中开源云原生分布式物联网消息中间件EMQ X的安装步骤包括:
下载EMQ X压缩包并解压;
修改EMQ X的配置文件 emqx.conf,将其node.name改为elink@127.0.0.1;
执行命令“./bin/emqx start”启动EMQ X的安装。
示例性地,在EMQ X的规则引擎页面上,配置并发布重新发布子主题规则,其实现方法包括:
预先编写子主题拆分函数,子主题拆分函数用于将上报数据中的每一个时序数据拆分开来;
基于所述子主题拆分函数创建所述重新发布子主题规则;
使用浏览器打开 EMQ X的Dashboard,在EMQ X的规则引擎页面上,配置该创建的重新发布子主题规则;
在EMQ X的规则引擎页面上,为所创建的重新发布子主题规则添加重新发布动作。
上述重新发布子主题规则为一个SQL语句。示例性地,该SQL语句为:
FOREACH
payload.devices as subDevice
FROM "/v1/devices/#";//接收到这个结构体格式的数据,便触发拆分消息体的动作
其中,subDevice为预先编写的子主题拆分函数,/v1/devices/#代表上报数据的消息结构体格式。
具体实现重新发布子主题规则的配置与发布时:
使用浏览器打开EMQ X 的Dashboard,在规则引擎的Rule页面点击新建按钮,配置重新发布子主题规则;
之后给所配置的重新发布子主题规则添加一个“重新发布”动作,之后点击确定,保存该动作配置;
之后再次点击上述新建按钮,完成重新发布子主题规则的配置与发布。
此外,上述子主题解析规则为设置好的SQL语句,该SQL语句用于解析上述重新发布子主题规则拆分出的每一个消息,可选地,该SQL语句具体为:
SELECT
substr(topic,18,strlen(topic)-24) as edgeEsn,
payload.deviceId as terminalEsn,
payload.services[1].data as terminalData,
payload.services[1].eventTime as eventTime,
substr(eventTime,0,4) as yyyy,
substr(eventTime,4,2) as MM,
substr(eventTime,6,2) as dd,
substr(eventTime,9,2) as HH,
substr(eventTime,11,2) as mm,
substr(eventTime,13,2) as ss,
int(yyyy) as yyyyNum,
int(MM) as MMNum,
int(dd) as ddNum,
int(HH) as HHNum,
int(mm) as mmNum,
int(ss) as ssNum,
MMNum - 2 as MMNumDec2,
CASE WHEN MMNumDec2<=0 THEN MMNumDec2+12
ELSE MMNumDec2
END as MRes,
CASE WHEN MMNumDec2<=0 THEN yyyyNum-1
ELSE yyyyNum
END as yRes,
yRes div 4-yRes div 100+yRes div 400+367*MRes div 12+ddNum+yRes*365-719499 as dayNum,
((dayNum*24+HHNum-8)*60+mmNum)*60+ssNum as sTime,
str(sTime*1000) as msTime,
str_utf8(terminalData) as strTerminalData,
regex_replace(strTerminalData,':',',') as strTerminalData,
regex_replace(strTerminalData,'{','') as strTerminalData,
regex_replace(strTerminalData,'}','') as strTerminalData,
regex_replace(strTerminalData,'["]','') as strTerminalData,
regex_replace(strTerminalData,'\.','') as keyList,
regex_replace(keyList,'[0-9]','') as keyList,
regex_replace(keyList,'["]','') as keyList,
regex_replace(keyList,',,',',') as keyList,
split(keyList,',') as keyList,
regex_replace(strTerminalData,'[a-zA-Z_]','') as valueList,
regex_replace(valueList,',,',',') as valueList,
split(valueList,',') as valueList
FROM "/repub/v1/devices/#"
其中,“/repub/v1/devices”代表重新发布子主题规则拆分出的每一个拆分消息。
可选地,具体实现时:
使用浏览器打开EMQ X 的Dashboard,在规则引擎的Rule界面点击新建按钮,配置上述子主题解析规则;
之后给所配置的子主题解析规则,添加一个桥接数据到MQTT Broker的动作,该动作创建有一个MQTT Bridge资源,具体地,在上述桥接数据到MQTT Broker的动作的创建页面上,点击新建 Resource按钮,弹出一个MQTT Bridge资源创建对话框,在MQTT Bridge资源创建对话框内,远程Broker地址填写IoTDB的MQTT服务地址(本实施例中是:192.168.0.222:2883),客户端Id、用户名、密码都填写 root,其他选项保持默认值不变(填写完后可以点击测试连接按钮(即Test Connection按钮)确保配置无误),之后点击创建完成上述MQTT Bridge资源创建。完成上述MQTT Bridge资源创建后,操作界面返回到上述桥接数据到MQTT Broker的动作的创建页面,关联资源的下拉框里自动填充有上述创建的MQTT Bridge资源,之后完成IoTDB消息主题(可以填写一个任意的主题,比如:foo)以及IoTDB所要求的消息内容模板的填写,之后点击确认即完成上述桥接数据到MQTT Broker的动作的创建。
至此,完成上述子主题解析规则配置。
IoTDB内置MQTT服务的消息体格式中有"device"、"timestamp"、"measurements"、"values"这四个字段。即消息体格式中,必须有"device"、"timestamp"、"measurements"、"values"这四个字段才能被IoTDB识别。可选地,IoTDB所要求的消息内容模板即IoTDB所能识别的MQTT服务的消息体格式:
{
"device":"root.sgl.${edgeEsn}.${terminalEsn}",
"timestamp":${msTime},
"measurements":${keyList},
"values":${valueList}
}
其中,"device"字段中的"root.sg1.XXX"为固定格式,edgeEsn为上报数据的边设备的Esn码,terminalEsn为上报数据的边设备的端设备的Esn码,edgeEsn为从上报数据对应的消息体的topic的字段中取出,terminalEsn为上报数据中的deviceId;
Timestamp中的msTime,对应子主题解析规则的SQL语句中的eventTime,即从上报数据中services的data中取出;
measurements中的keyList,对应子主题解析规则的SQL语句中的terminalData,即从上报数据中services的data中取出;
values中的valueList是通过创建的函数从terminalData,即从上报数据中services的data中取出。
以一个测试数据为例,对本发明进行测试:
步骤一、往/v1/devices/1201020511021065/datas这个topic上发布测试消息。测试消息对应的测试数据如下:
{
"devices": [
{
"deviceId": "111111111",
"services": [{
"serviceId": "analog",
"data": {
"A_neut_C_avr_day":"5.000000"
},
"eventTime": "20230209T102137Z"
}]
},
{
"deviceId": "222222222",
"services": [{
"serviceId": "analog",
"data": {
"A_neut_C_avr_day":"1.000000"
},
"eventTime": "20230209T112137Z"
}]
}
]
}
步骤二、订阅/repub/v1/devices/1201020511021065/datas这个topic,查看收到了两条拆分消息。
收到的两条拆分消息,其中的一条是:{"services":[{"serviceid":"analog","eventTime":"20230209T102137z" ,"data":{"A_neut_C_avr_day":"5.000000"}}],"deviceId":"111111111"}。
收到的两条拆分消息,另一条是:
{"services":[{"serviceld":"analog","eventTime":"20230209T112137Z","data": "A_neut_C_avr_day":"1.000000"}}],"deviceld":"222222222"}。
步骤三、查看以上两条拆分消息是否被存入IoTDB中。
查看命令:select * from root.sg1。
查看结果:Total line nurber =2,以上两条拆分得到的消息均被存入IoTDB中。
由此可见,本发明通过重新发布子主题规则进行拆分,并通过子主题解析规则将每条拆分消息处理存入了IoTDB,实现了将基于MQTT的配电物联网通信协议上报的时序数据实时插入到时序数据库 IoTDB,无需研发人员修改后端代码,只需配置相应的SQL 语句筛选并处理消息和事件的上下文信息,提供了灵活的“配置式”的业务集成方案,简化了业务开发流程,提升了易用性。
另外,本发明提供了一种基于规则引擎的时序数据处理终端,该终端实际是一种基于规则引擎的面向配电物联网通信协议的时序数据处理终端,其内搭建有时序数据库IoTDB环境,并安装有开源云原生分布式物联网消息中间件EMQ X。
具体地,该基于规则引擎的时序数据处理终端包括:
EMQ X的规则引擎页面上,配置并发布有重新发布子主题规则,所述重新发布子主题规则用于将上报数据中的每一个时序数据拆分开来;上报数据为符合基于MQTT的配电物联网通信协议的消息体格式的时序数据序列;
EMQ X的规则引擎页面上,配置有子主题解析规则,子主题解析规则用于将以上拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据;
EMQ X的规则引擎页面上,创建有为所述子主题解析规则添加的一个桥接数据到MQTT Broker的动作。
上述桥接数据到MQTT Broker的动作创建过程中,会为其创建一个MQTT Bridge资源。
其中,上述MQTT Bridge资源的远程Broker地址一栏填写IoTDB的MQTT服务地址,上述MQTT Bridge资源的客户端 Id、用户名、密码均填写root。
本实施例中M=2883。具体实现时,本领域技术人员可依据实际情况设置M的取值为不等于“1883”的其他端口号值。
相对应地,本实施例中IoTDB的MQTT服务地址为:192.168.0.222:2883。
示例性地,配置并发布重新发布子主题规则,其实现方法包括:
预先编写子主题拆分函数,子主题拆分函数用于将上报数据中的每一个时序数据拆分开来;
基于所述子主题拆分函数创建所述重新发布子主题规则;
使用浏览器打开 EMQ X的Dashboard,在EMQ X的规则引擎页面上,配置该创建的重新发布子主题规则;
在EMQ X的规则引擎页面上,为上述创建的重新发布子主题规则添加重新发布动作。
上述重新发布子主题规则为一个SQL语句。示例性地,该SQL语句为:
FOREACH
payload.devices as subDevice
FROM "/v1/devices/#";
其中,subDevice为预先编写的子主题拆分函数,/v1/devices/#代表上报数据的消息结构体格式。
其中,子主题解析规则为设置好的SQL语句,该SQL语句用于解析上述重新发布子主题规则拆分出的每一个拆分消息,具体为:
SELECT
substr(topic,18,strlen(topic)-24) as edgeEsn,
payload.deviceId as terminalEsn,
payload.services[1].data as terminalData,
payload.services[1].eventTime as eventTime,
substr(eventTime,0,4) as yyyy,
substr(eventTime,4,2) as MM,
substr(eventTime,6,2) as dd,
substr(eventTime,9,2) as HH,
substr(eventTime,11,2) as mm,
substr(eventTime,13,2) as ss,
int(yyyy) as yyyyNum,
int(MM) as MMNum,
int(dd) as ddNum,
int(HH) as HHNum,
int(mm) as mmNum,
int(ss) as ssNum,
MMNum - 2 as MMNumDec2,
CASE WHEN MMNumDec2<=0 THEN MMNumDec2+12
ELSE MMNumDec2
END as MRes,
CASE WHEN MMNumDec2<=0 THEN yyyyNum-1
ELSE yyyyNum
END as yRes,
yRes div 4-yRes div 100+yRes div 400+367*MRes div 12+ddNum+yRes*365-719499 as dayNum,
((dayNum*24+HHNum-8)*60+mmNum)*60+ssNum as sTime,
str(sTime*1000) as msTime,
str_utf8(terminalData) as strTerminalData,
regex_replace(strTerminalData,':',',') as strTerminalData,
regex_replace(strTerminalData,'{','') as strTerminalData,
regex_replace(strTerminalData,'}','') as strTerminalData,
regex_replace(strTerminalData,'["]','') as strTerminalData,
regex_replace(strTerminalData,'\.','') as keyList,
regex_replace(keyList,'[0-9]','') as keyList,
regex_replace(keyList,'["]','') as keyList,
regex_replace(keyList,',,',',') as keyList,
split(keyList,',') as keyList,
regex_replace(strTerminalData,'[a-zA-Z_]','') as valueList,
regex_replace(valueList,',,',',') as valueList,
split(valueList,',') as valueList
FROM "/repub/v1/devices/#"
其中,“/repub/v1/devices”代表重新发布子主题规则拆分出的每一个拆分消息。
作为对本发明的一个示意性实施例,上述基于规则引擎的时序数据处理终端可以为但不限于:精准用电调控终端、物联管理平台或实时量测数据中心。
此外,上述基于规则引擎的时序数据处理终端使用时:
EMQ X接收上报数据;
EMQ X依据其规则引擎页面上配置并发布的重新发布子主题规则,将接收到的上报数据中的每一个时序数据拆分出来;
EMQ X依据其规则引擎页面上配置的子主题解析规则,将拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据,得到若干个待存储时序数据;
EMQ X基于其规则引擎页面上创建的桥接数据到MQTT Broker的动作,实时将所得到的各待存储时序数据存入时序数据库IoTDB。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,以及对于基于规则引擎的时序数据处理终端的时序数据处理方法而言,由于其基本相似于基于规则引擎的时序数据处理方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
本发明真正实现了将面向配电物联网通信协议的时序数据实时插入到时序数据库IoTDB,该方法无需修改后端代码,只需配置相应的SQL语句筛选并处理消息和事件的上下文信息,提供了灵活的“配置式”的业务集成方案,简化了业务开发流程,提升了易用性。对于面向配电物联网通信协议(基于MQTT)的含有时序数据体量比较大(上述测试数据中含有两个时序数据)的上传数据,处理速率尤其突出。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (8)

1.一种基于规则引擎的时序数据处理方法,方法基于搭建好的时序数据库IoTDB环境以及安装好的开源云原生分布式物联网消息中间件EMQ X;IoTDB的配置文件conf/iotdb-engine.properties中,enable_mqtt_service的值为“true”,mqtt_port的值为M,M为与EMQX的端口号不相等的mqtt端口号;其特征在于:
方法包括:
在EMQ X的规则引擎页面上,配置并发布重新发布子主题规则;所述重新发布子主题规则用于将上报数据中的每一个时序数据拆分开来;上报数据为符合基于MQTT的配电物联网通信协议的消息体格式的时序数据序列;配置并发布重新发布子主题规则,其实现方法包括:预先编写子主题拆分函数,子主题拆分函数用于将上报数据中的每一个时序数据拆分开来;基于所述子主题拆分函数创建所述重新发布子主题规则;使用浏览器打开 EMQ X的Dashboard,在EMQ X的规则引擎页面上,配置该创建的重新发布子主题规则;在EMQ X的规则引擎页面上,为所创建的重新发布子主题规则添加重新发布动作;
在EMQ X的规则引擎页面上,配置子主题解析规则;子主题解析规则用于将以上拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据;
在EMQ X的规则引擎页面上,为所述子主题解析规则添加一个桥接数据到MQTT Broker的动作。
2.根据权利要求1所述的基于规则引擎的时序数据处理方法,其特征在于:
所述重新发布子主题规则为一个SQL语句,该SQL语句为:
FOREACH
payload.devices as subDevice
FROM "/v1/devices/#";
其中,subDevice为预先编写的子主题拆分函数,/v1/devices/#代表上报数据的消息结构体格式。
3.根据权利要求1-2中任一项所述的基于规则引擎的时序数据处理方法,其特征在于:子主题解析规则为设置好的SQL语句。
4.一种基于规则引擎的时序数据处理终端,其内搭建有时序数据库IoTDB环境,并安装有开源云原生分布式物联网消息中间件EMQ X;IoTDB的配置文件conf/iotdb-engine.properties中,enable_mqtt_service的值为“true”,mqtt_port的值为M,M为与EMQX的端口号不相等的mqtt端口号;其特征在于:
所述基于规则引擎的时序数据处理终端包括:
EMQ X的规则引擎页面上,配置并发布有重新发布子主题规则,所述重新发布子主题规则用于将上报数据中的每一个时序数据拆分开来;上报数据为符合基于MQTT的配电物联网通信协议的消息体格式的时序数据序列;配置并发布重新发布子主题规则,其实现方法包括:预先编写子主题拆分函数,子主题拆分函数用于将上报数据中的每一个时序数据拆分开来;基于所述子主题拆分函数创建所述重新发布子主题规则;使用浏览器打开 EMQ X的Dashboard,在EMQ X的规则引擎页面上,配置该创建的重新发布子主题规则;在EMQ X的规则引擎页面上,为所创建的重新发布子主题规则添加重新发布动作;
EMQ X的规则引擎页面上,配置有子主题解析规则,子主题解析规则用于将以上拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据;
EMQ X的规则引擎页面上,创建有为所述子主题解析规则添加的一个桥接数据到MQTTBroker的动作。
5.根据权利要求4所述的基于规则引擎的时序数据处理终端,其特征在于:
所述重新发布子主题规则为一个SQL语句,该SQL语句为:
FOREACH
payload.devices as subDevice
FROM "/v1/devices/#";
其中,subDevice为预先编写的子主题拆分函数,/v1/devices/#代表上传数据的消息结构体格式;
所述子主题解析规则为设置好的SQL语句。
6.根据权利要求4-5中任一项所述的基于规则引擎的时序数据处理终端,其特征在于:
所述桥接数据到MQTT Broker的动作,其创建包括为该桥接数据到MQTT Broker的动作创建一个MQTT Bridge资源;
所述MQTT Bridge资源的远程Broker地址一栏填写IoTDB的MQTT服务地址,所述MQTTBridge资源的客户端 Id、用户名、密码均填写root。
7.根据权利要求4-5中任一项所述的基于规则引擎的时序数据处理终端,其特征在于:所述时序数据处理终端为精准用电调控终端,或为物联管理平台,或为实时量测数据中心。
8.根据权利要求4-5中任一项所述的基于规则引擎的时序数据处理终端,其特征在于:终端使用时:
EMQ X接收上报数据;
EMQ X依据其规则引擎页面上配置并发布的重新发布子主题规则,将接收到的上报数据中的每一个时序数据拆分出来;
EMQ X依据其规则引擎页面上配置的子主题解析规则,将拆分得到的每一个时序数据对应转换为符合IoTDB所支持的MQTT服务的消息体格式的时序数据,得到若干个待存储时序数据;
EMQ X基于其规则引擎页面上创建的桥接数据到MQTT Broker的动作,实时将所得到的各待存储时序数据存入时序数据库IoTDB。
CN202311007701.3A 2023-08-11 2023-08-11 一种基于规则引擎的时序数据处理方法及终端 Active CN116719876B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311007701.3A CN116719876B (zh) 2023-08-11 2023-08-11 一种基于规则引擎的时序数据处理方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311007701.3A CN116719876B (zh) 2023-08-11 2023-08-11 一种基于规则引擎的时序数据处理方法及终端

Publications (2)

Publication Number Publication Date
CN116719876A CN116719876A (zh) 2023-09-08
CN116719876B true CN116719876B (zh) 2023-10-20

Family

ID=87875628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311007701.3A Active CN116719876B (zh) 2023-08-11 2023-08-11 一种基于规则引擎的时序数据处理方法及终端

Country Status (1)

Country Link
CN (1) CN116719876B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111092901A (zh) * 2019-12-25 2020-05-01 山东浪潮人工智能研究院有限公司 一种工业互联网平台中设备接入及数据存储的方法
CN111930751A (zh) * 2020-08-31 2020-11-13 成都四方伟业软件股份有限公司 一种时序数据的存储方法及装置
CN112261101A (zh) * 2020-10-15 2021-01-22 四川长虹电器股份有限公司 Mqtt消息中心引入规则引擎的方法
US11336730B1 (en) * 2020-11-13 2022-05-17 Zhejiang Gongshang University MQTT-based distribution internet of things system and method thereof
CN115129736A (zh) * 2022-07-04 2022-09-30 东方合智数据科技(广东)有限责任公司 基于规则引擎的规则事件动态加载与更新方法及相关设备
CN115168474A (zh) * 2022-07-26 2022-10-11 成都智元汇信息技术股份有限公司 一种基于大数据模型的物联中台系统搭建方法
WO2023050229A1 (zh) * 2021-09-29 2023-04-06 西门子股份公司 工业数据处理方法、装置、电子设备和存储介质
CN116132317A (zh) * 2022-12-12 2023-05-16 南京理工大学 工业互联网数据采集分析及可视化一体系统及其部署方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115412269A (zh) * 2021-05-26 2022-11-29 腾讯云计算(北京)有限责任公司 业务处理方法、装置、服务器及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111092901A (zh) * 2019-12-25 2020-05-01 山东浪潮人工智能研究院有限公司 一种工业互联网平台中设备接入及数据存储的方法
CN111930751A (zh) * 2020-08-31 2020-11-13 成都四方伟业软件股份有限公司 一种时序数据的存储方法及装置
CN112261101A (zh) * 2020-10-15 2021-01-22 四川长虹电器股份有限公司 Mqtt消息中心引入规则引擎的方法
US11336730B1 (en) * 2020-11-13 2022-05-17 Zhejiang Gongshang University MQTT-based distribution internet of things system and method thereof
WO2023050229A1 (zh) * 2021-09-29 2023-04-06 西门子股份公司 工业数据处理方法、装置、电子设备和存储介质
CN115129736A (zh) * 2022-07-04 2022-09-30 东方合智数据科技(广东)有限责任公司 基于规则引擎的规则事件动态加载与更新方法及相关设备
CN115168474A (zh) * 2022-07-26 2022-10-11 成都智元汇信息技术股份有限公司 一种基于大数据模型的物联中台系统搭建方法
CN116132317A (zh) * 2022-12-12 2023-05-16 南京理工大学 工业互联网数据采集分析及可视化一体系统及其部署方法

Also Published As

Publication number Publication date
CN116719876A (zh) 2023-09-08

Similar Documents

Publication Publication Date Title
US9961037B2 (en) Bi-directional multi-channel social media brokering
US7565443B2 (en) Common persistence layer
CN109756559B (zh) 面向嵌入式机载系统分布式数据分发服务的构建及使用方法
CN111381983B (zh) 虚拟试验靶场验证系统的轻量级消息中间件系统及方法
CN110716744A (zh) 一种数据流处理方法、系统和计算机可读存储介质
CN111737329A (zh) 一种轨道交通统一数据采集平台
CN112511218B (zh) 一种基于微服务的卫星地面站监控系统
WO2013039798A2 (en) Distributing multi-source push notifications to multiple targets
US11381463B2 (en) System and method for a generic key performance indicator platform
CN112788125A (zh) 一种基于数据接入、流转及联动的物联网平台以及方法
CN109906597A (zh) 向和从云网络中存储和取回受限制的数据集和非受限制的数据集
CN115412602A (zh) 一种数字孪生的数据解析流转方法、装置、设备及介质
CN113630310B (zh) 一种分布式高可用网关系统
CN114710571B (zh) 数据包处理系统
CN113542390B (zh) 一种采用内存数据模型的物联网设备管理方法及系统
CN116719876B (zh) 一种基于规则引擎的时序数据处理方法及终端
CN101924815A (zh) 3g moa 手机中间件嵌入式系统
Hanna et al. Supporting the requirements-based selection of suitable communication protocols in smart grids
KR20190069960A (ko) 산업용 통신 시스템 및 방법
CN114296698A (zh) 基于bpm的业务需求流程系统的设计方法
CN114185695A (zh) 基于工业app微服务的松耦合数据处理方法和系统
CN109698808A (zh) 一种加载模板消息的方法、设备和装置
CN114390033A (zh) 基于可扩展通信协议的回路状态巡检仪采集系统及方法
Ai et al. AGV scheduling system based on MQTT protocol
Matabuena et al. Educational platform for communications using the MQTT protocol

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant