Iotgateway技术手册-6. 数据流程

6. 数据流程

IoT Gateway 中的数据流程主要包括两个方面:数据采集流程和 RPC 命令流程。了解这些流程有助于理解网关的工作原理和数据处理机制。

6.1 数据采集流程

数据采集流程是网关的核心功能之一,负责从设备采集数据并上传到云端平台。

6.1.1 数据采集流程概述

  1. 设备线程启动:系统启动时,DeviceService 为每个启用的设备创建一个 DeviceThread

  2. 设备连接:DeviceThread 尝试连接设备

  3. 数据采集:按照设定的采集周期,调用驱动的采集方法获取设备数据

  4. 数据处理:对采集到的数据进行处理,包括表达式计算、数据转换等

  5. 数据上传:将处理后的数据通过 MQTT 上传到云端平台

  6. 状态更新:更新设备状态和变量值

6.1.2 数据采集详细流程

复制代码
┌─────────────────────────────────────────────────────────────────┐
│                         DeviceThread                           │
└─────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        检查设备连接状态                         │
└─────────────────────────────────────────────────────────────────┘
            │
            ├─ 未连接 ──► ┌─────────────────────────────────────┐
            │             │            尝试连接设备              │
            │             └─────────────────────────────────────┘
            │                         │
            │                         └─ 连接失败 ──► 记录错误日志
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        调用驱动采集方法                         │
└─────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        处理采集到的数据                         │
│  - 表达式计算                                                   │
│  - 数据转换                                                     │
│  - 数据验证                                                     │
└─────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        检查数据变化                             │
└─────────────────────────────────────────────────────────────────┘
            │
            ├─ 数据未变化 ──► 跳过上传
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        上传数据到 MQTT 服务器                   │
└─────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        更新设备状态和变量值                     │
└─────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        等待下一个采集周期                       │
└─────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────┐
│                        重复采集流程                             │
└─────────────────────────────────────────────────────────────────┘

6.1.3 数据采集代码实现

复制代码
// 设备线程主循环
Task.Run(() =>
{
    while (true)
    {
        if (tokenSource.IsCancellationRequested)
        {
            _logger.LogInformation($"停止线程:{_device.DeviceName}

文档版本 :1.0 更新日期 :2025-11-29 编写人员:辉为科技

相关推荐
电子科技圈4 天前
XMOS推动智能音频等媒体处理技术从嵌入式系统转向全新边缘计算
人工智能·mcu·物联网·设计模式·音视频·边缘计算·iot
小刘同学-很乖5 天前
ESP32从入门到精通(全)
mcu·物联网·esp32·c·iot
会周易的程序员7 天前
cNetgate物联网网关内存数据表和数据视图模块架构
c语言·c++·物联网·架构·lua·iot
会周易的程序员9 天前
cNetgate插件架构设计详解 动态库 脚本二开lua, python, javascript
javascript·c++·python·物联网·lua·iot
古译汉书9 天前
【IoT死磕系列】Day 1:IOT物联网各个协议的整体了解
stm32·单片机·嵌入式硬件·物联网·iot
利刃大大9 天前
【SpringCloud】Gateway Filter Factories && 过滤器执行顺序 && 自定义过滤器
java·后端·网关·spring cloud·gateway
『往事』&白驹过隙;10 天前
Linux VFS虚拟文件系统杂谈
linux·c语言·arm开发·物联网·操作系统·iot
利刃大大11 天前
【SpringCloud】网关GateWay && Spring Cloud Gateway && Route Predicate Factories
网关·spring·spring cloud·gateway
『往事』&白驹过隙;12 天前
系统编程的内存零拷贝(Zero-Copy)技术
linux·c语言·网络·c++·物联网·iot
『往事』&白驹过隙;12 天前
在ARM开发中 volatile与const关键字的关键用途
c语言·arm开发·mcu·物联网·学习·iot