新闻中心

PRESS CENTER 纵横智控
你的位置: 首页 新闻 技术应用
纵横智控

采用时序数据库实现断网续传-EG网关

2025-09-10 11:00:59 阅读: 发布人:纵横智控

需求概述

在工业自动化和物联网应用场景中,设备需要持续不断地将采集数据上传到云端服务器。但在实际应用中,可能会遇到服务器连接中断或者断网的情况,导致数据丢失。为了确保数据的完整性,本案例设计了一个相较缓存队列更稳定的断网续传方案,采用时序数据库作为数据暂存区,确保在网络中断时数据不会因为断电而丢失,并能够在网络恢复后自动将这些数据补发到服务器。

注:使用时序数据库需插入TF卡

采用时序数据库实现断网续传-EG网关

需求分析

整个流程如下图所示:

a.网络正常时,采集数据直接上传至云端

b.网络异常时,采集数据存入本地时序数据库

c.网络恢复后,自动从时序数据库中补发数据至云端

采用时序数据库实现断网续传-EG网关

需求实现

1. 网络状态监测

状态变化节点监测服务器连接状态的变化,确保能够及时感知连接的建立或断开。

条件判断节点根据接收到的状态信号进行逻辑判断,决定后续的操作。

函数计算节点根据网络连接状态设置全局变量(connectFlag)与消息对象属性(delay和reset),用于控制后续流程的执行逻辑:

连接成功:

设置全局变量connectFlag为 true,表示网络连接正常。

设置消息对象的 delay 属性为 3000 毫秒(时间可根据自己需求修改),这样触发节点会每隔 3 秒输出一次,触发读取数据库数据。

连接失败:

设置全局变量connectFlag为 false,表示网络连接异常。

设置消息对象的 reset 属性为任意非空值,控制触发节点,停止触发读取数据库数据。

此处为语雀视频卡片,点击链接查看:见文末

2. 创建数据库

初次使用前,请先通过配置流程创建数据库。此处不对数据库的使用做过多赘述,详情可参考:https://iotrouter.yuque.com/org-wiki-iotrouter-rlzwv5/eg8000/latkczb4gvgg154y

3. 数据上报/存储

以采集Modbus数据作为数据源为例,数据采集部分的具体实现可参考其他示例。这里主要说明函数计算节点在流程中的作用:

a.将采集的数据封装需要的数据格式,这里为Json格式。

b.根据全局变量connectFlag的值决定数据的流向:

输出口1:connectFlag 为 true(表示网络连接正常),则将数据正常上传至服务器。

输出口2:connectFlag 为 false(表示网络连接失败),则将数据存入数据库。

此处为语雀视频卡片,点击链接查看:见文末

4. 数据续传

数据续传从数据库中的第一条记录开始,获取完成后立即将该条数据删除,确保后续读取下一条数据时不会重复。如此循环,直至补传完成。

触发节点:根据前面网络监听流程输出的 delay 和 reset 属性值,判断是否执行数据库查询操作。

函数节点1(构造读数据):构造 SQL 语句,查询按时间顺序最早插入的一条数据。

函数节点2(解析、封装、删除已补发数据):

将补传数据封装为所需格式(此处为 Json 字符串),并通过输出口1上传至服务器。

构造用于删除当前补传数据的SQL语句,并通过输出口2发送至数据库节点以触发删除操作。

捕获异常节点:当检测到数据库中的数据已补发完成时,停止对数据库的查询操作。

此处为语雀视频卡片,点击链接查看:见文末

5. 效果演示

此处为语雀视频卡片,点击链接查看:见文末

流程源码/原文:https://iotrouter.yuque.com/zn3vdn/eg8000/bn79seflg0ndcdee

其他:内置缓存队列节点实现断网续传-EG网关-成都纵横智控

热门产品