用.net core手撸的IoT 智能监控平台

0 阅读8分钟

第一章 系统概述

IoT 智能监控平台面向工业物联网,支持设备接入、实时遥测、历史查询、规则告警、ISA-95 工厂建模、可视化组态、趋势预测、看板设计及开放 API。

第二章 系统架构

2.1 系统架构图

数据流简述:

  1. 设备 → MQTT/OPC → 接入网关(协议解析、鉴权、标准化)
  2. 标准化消息 → Kafka(削峰、解耦、回放)
  3. 消费端并行:写时序库 + 规则引擎 + 实时聚合 + SignalR 推送
  4. 元数据(设备、点位、规则、图表)→ PostgreSQL
  5. 前端通过 REST + SignalR 做实时监控,通过时序 API 做历史查询

2.2 技术架构图

下图展示前端技术栈、YARP 网关、ASP.NET Core 8 微服务、Iot.Infrastructure 共享层及开源中间件的完整技术组成与依赖关系。

后端 (.NET 8)

| 模块 | 推荐技术 | 说明 | | --- | --- | --- | | Web API | ASP.NET Core 8 Minimal API / Controller | 统一网关 + 各微服务 | | 实时通信 | SignalR + Redis Backplane | 多实例推送、订阅点位变化 | | 消息队列 | Apache Kafka(首选)或 RabbitMQ | 海量吞吐、可回放 | | MQTT Broker | EMQX 集群 | 百万连接、规则桥接 Kafka | | 时序数据库 | TDengine 或 TimescaleDB | 海量写入 + 高效聚合查询 | | 关系库 | PostgreSQL 16 | 设备/点位/用户/规则/图表元数据 | | 缓存 | Redis Cluster | 设备在线状态、最新值、规则上下文 | | 对象存储 | MinIO | 报表导出、固件、图表快照 | | 日志检索 | Elasticsearch + Serilog | 告警日志、操作审计 | | 任务调度 | Hangfire 或 Quartz.NET | 定时报表、数据归档 | | 规则引擎 | NRules + 自研 DSL,或 Microsoft RulesEngine | 阈值、组合条件、联动 | | ORM | EF Core 8 + Dapper(时序热点查询) | 元数据用 EF,时序用原生 SQL | | 认证 | IdentityServer / Keycloak + JWT | RBAC、多租户 | | API 文档 | Swagger / OpenAPI | 前后端协作 | | 容器编排 | Kubernetes + Docker | 水平扩展 |

前端 (Vue 2)

| 模块 | 推荐技术 | 说明 | | --- | --- | --- | | 框架 | Vue 2.7 + Vue Router + Vuex | 与你要求一致 | | UI | Element UI 2.x | 管理后台成熟方案 | | 实时 | @microsoft/signalr | 订阅点位实时值 | | 图表 | ECharts 5 + vue-echarts | 实时曲线、历史趋势、大屏 | | 看板设计器 | Grid Layout + JSON Schema | 拖拽式图表/组件定义 | | HTTP | Axios + 请求拦截 | Token、租户头 | | 表格 | vxe-table | 海量点位列表虚拟滚动 | | 构建 | Vue CLI / Webpack 5 | 生产打包 |

海量场景关键选型

| 场景 | 选型 | 原因 | | --- | --- | --- | | 设备接入 | EMQX + 边缘网关 | 单集群百万连接,规则直接转发 Kafka | | 时序写入 | TDengine 超级表 | 按设备/点位自动分表,压缩比高,聚合快 | | 实时推送 | SignalR + Redis | 避免每个 API 实例维护全量 WebSocket | | 规则计算 | Kafka Consumer 独立服务 | 与写入解耦,可单独扩容 | | 历史查询 | 时序库 + 预聚合表 | 原始 1s 数据 + 1min/1h 降采样 |

2.3 微服务端口

| 服务 | 端口 | 职责 | | --- | --- | --- | | Gateway | 5000 | API 网关 | | Device.Api | 5001 | 设备/点位/规则 | | Telemetry.Api | 5002 | 遥测 | | Analytics.Api | 5003 | 分析 | | Alert.Api | 5004 | 告警/预测 | | Dashboard.Api | 5005 | 看板 | | Visual.Api | 5006 | 组态 | | Admin.Api | 5008 | 系统管理 | | Realtime.Hub | 5010 | SignalR | | 前端 | 8080 | Web UI |

第三章 部署说明

3.1 环境要求

  • .NET 8 SDK
  • Node.js 18+
  • PostgreSQL/TimescaleDB
  • Redis/Valkey
  • Kafka
  • Docker(可选)

3.2 一键启动

1. 安装依赖后双击 start-all.bat

2. 自动启动 Docker 基础设施(或本地 PG/Redis/Kafka)

3. 编译并启动全部微服务与前端、遥测模拟器

4. 访问 http://localhost:8080,网关 http://localhost:5000

3.3 一键停止

运行 stop-all.bat 关闭全部服务。

3.4 Docker 全量部署

1. docker compose -f deploy/docker-compose/docker-compose.yml up -d

2. 包含 TimescaleDB、Valkey、Kafka、全部 API 与前端容器

3.5 验证

运行 deploy/scripts/test-all-apis.ps1 进行 API 自动化验证。

第四章 系统登录

4.1 功能说明

账号密码登录,JWT 认证,按角色加载动态菜单。

4.2 操作步骤

1. 访问 http://localhost:8080

2. 输入 admin / admin123

3. 点击登录进入看板

4.3 界面截图

第五章 监控看板

5.1 功能说明

展示设备总数、在线设备、活跃告警、采集点位统计卡片,以及 SignalR 实时遥测折线图。

5.2 操作步骤

登录后默认进入本页;观察统计卡片数值;实时曲线随模拟器上报自动刷新。

5.3 界面截图

监控看板主界面

第六章 实时监控

6.1 功能说明

分页展示全部点位的设备名、点位名、编码、当前值、单位、质量码、更新时间;支持手动刷新与 SignalR 实时推送。

6.2 操作步骤

菜单「实时监控」→ 查看表格;点击「刷新」拉取最新值;开启「SignalR实时」接收推送;底部分页切换。

6.3 界面截图

实时监控列表

第七章 设备管理

7.1 功能说明

设备列表支持搜索、分页;可展开行查看下属点位;支持新增/编辑/删除设备及绑定 ISA-95 工厂节点。

7.2 操作步骤

菜单「设备管理→设备列表」;搜索框输入关键字回车;「新增设备」填写表单;展开行管理点位;「点位管理」跳转专用页。

7.3 界面截图

设备列表

新增设备对话框

第八章 点位管理

8.1 功能说明

按设备筛选点位,支持采集点位与计算点位(公式 avg/max/min 等),提供公式验证与分页。

8.2 操作步骤

菜单「点位管理」;下拉选择设备;「新增点位」配置类型与公式;计算点位点击「验证公式」。

8.3 界面截图

点位管理

第九章 历史查询

9.1 功能说明

多点位、时间范围、粒度(原始/1m/1h/1d)时序查询,ECharts 折线图与表格,支持 CSV 导出。

9.2 操作步骤

菜单「历史查询」;选择点位与时间;选粒度后点「查询」(默认自动加载近24小时);「导出CSV」下载。

9.3 界面截图

历史查询

第十章 规则引擎

10.1 功能说明

阈值/表达式规则,作用域为点位/设备/分组;支持可视化条件、告警级别、持续时间及启停。

10.2 操作步骤

菜单「规则引擎」;「新增规则」配置条件;列表开关启停;编辑或删除规则。

10.3 界面截图

规则列表

新增规则

第十一章 告警中心

11.1 功能说明

按全部/活跃/已确认/已解决 Tab 分页查看告警,支持确认与解决。

11.2 操作步骤

菜单「告警中心」;切换 Tab;对活跃告警「确认」或「解决」。

11.3 界面截图

告警中心

第十二章 物可视

12.1 功能说明

场景列表管理 2D/3D/地图组态;设计器拖拽节点绑定点位;全屏场景监控。

12.2 操作步骤

「场景列表」管理场景;「设计」进入组态;「监控」全屏运行。

12.3 界面截图

场景列表

组态设计

场景监控

第十三章 趋势分析

13.1 功能说明

多点位趋势分析,数据清洗与 Z-Score 异常点标注。

13.2 操作步骤

菜单「趋势分析」;选点位与时间;配置清洗后「分析」。

13.3 界面截图

趋势分析

第十四章 预测分析

14.1 功能说明

SSA 时序预测,可配置预测点数、训练窗口及清洗选项。

14.2 操作步骤

菜单「预测分析」;选点位与参数;「开始预测」等待完成。

14.3 界面截图

预测分析

第十五章 看板设计

15.1 功能说明

拖拽式自定义看板,绑定点位实时数据。

15.2 操作步骤

菜单「看板设计」;选择看板;拖入组件并绑定点位后保存。

15.3 界面截图

看板设计

第十六章 开放 API

16.1 功能说明

管理对外 API 客户端,生成 ApiKey/Secret,配置权限与启停。

16.2 操作步骤

菜单「开放 API」;「新增客户端」;分页管理密钥。

16.3 界面截图

开放API管理

第十七章 工厂建模

17.1 功能说明

ISA-95 树形模型,节点 CRUD 及设备绑定。

17.2 操作步骤

菜单「工厂建模」;维护树节点;「绑定设备」挂接设备。

17.3 界面截图

工厂建模

第十八章 用户管理

18.1 功能说明

用户增删改查、角色分配(admin 不可删)。

18.2 操作步骤

「用户管理」→ 新增/编辑用户;底部分页浏览。

18.3 界面截图

用户管理

第十九章 角色管理

19.1 功能说明

角色维护及菜单权限树勾选。

19.2 操作步骤

「角色管理」→ 编辑角色勾选菜单权限。

19.3 界面截图

角色管理

第二十章 菜单管理

20.1 功能说明

动态菜单配置,影响登录后侧边栏。

20.2 操作步骤

「菜单管理」→ 配置路径与排序;分页管理。

20.3 界面截图

菜单管理

第二十一章 日志查询

21.1 功能说明

服务/操作/API 日志筛选与分页查询。

21.2 操作步骤

「日志查询」→ 设筛选条件 →「查询」。

21.3 界面截图

日志查询

附录 常见问题

502 错误

检查网关与各微服务是否启动,重新运行 start-all.bat。

历史查询无数据

确认时间范围与遥测模拟器/Ingest Worker 正常运行。