1. 项目背景与核心价值
最近两年在工业自动化领域做了几个物联网项目,发现很多企业都在面临设备上云的转型需求。传统SCADA系统虽然稳定,但扩展性和数据分析能力已经跟不上数字化工厂的要求。基于这个痛点,我选择用若依(Ruoyi)这个成熟框架作为基础,开发了一套轻量级物联网平台。
选择若依框架主要看中它三个特点:一是自带完善的权限管理和工作流引擎,省去了重复造轮子的时间;二是前后端分离架构方便定制化开发;三是社区活跃度高,遇到问题容易找到解决方案。这套物联网平台目前已经稳定运行在三个工厂的产线监控场景,日均处理设备数据超过200万条。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体架构设计
平台采用经典的四层架构:
- 设备接入层:支持MQTT/Modbus TCP/HTTP三种协议
- 数据处理层:包含规则引擎和流处理模块
- 业务逻辑层:基于Spring Cloud微服务架构
- 展示层:Vue3+Element Plus实现的可视化界面
特别说明下协议选择策略:MQTT用于高频传感器数据(采样间隔<5s),Modbus TCP对接传统PLC设备,HTTP协议则留给边缘计算节点上报聚合数据。这种混合协议设计在实际项目中非常实用,能覆盖90%以上的工业场景。
2.2 核心组件选型
数据库方面采用时序数据库+关系型数据库双写模式:
- InfluxDB 2.0:存储原始设备数据,利用其出色的时间序列数据处理能力
- MySQL 8.0:存储业务数据,与若依框架原生集成
- Redis 7.0:缓存热点数据和设备状态信息
消息中间件对比了RabbitMQ和EMQX后,最终选择EMQX 5.0作为MQTT broker。实测数据显示,在500个设备并发连接时,EMQX的资源占用比RabbitMQ低40%左右,而且自带规则引擎可以做一些简单的数据预处理。
3. 关键功能实现
3.1 设备动态注册机制
传统物联网平台通常需要手动录入设备信息,我们开发了一套动态注册机制:
java复制// 设备首次连接时的处理逻辑
public Device registerDevice(String deviceKey, String protocol) {
Device device = deviceMapper.select
