# WaterLevel **Repository Path**: 1096431559/water-level ## Basic Information - **Project Name**: WaterLevel - **Description**: 水位监控平台是一个基于Java Spring Boot的综合性解决方案,旨在实时监控和管理水位数据。该平台通过MQTT协议与物联网设备进行通信,接收水位数据,并通过WebSocket技术将实时数据推送给前端用户界面。系统支持数据可视化、报警管理、用户权限控制和设备管理等功能,为水资源监测提供了全面的技术支持。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-08 - **Last Updated**: 2025-12-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 水位监控平台 (Water Level Monitoring Platform) ## 项目概述 水位监控平台是一个基于Java Spring Boot的综合性解决方案,旨在实时监控和管理水位数据。该平台通过MQTT协议与物联网设备进行通信,接收水位数据,并通过WebSocket技术将实时数据推送给前端用户界面。系统支持数据可视化、报警管理、用户权限控制和设备管理等功能,为水资源监测提供了全面的技术支持。 ## 技术栈 ### 后端技术 - **核心框架**:Spring Boot 2.6.13 - **开发语言**:Java 17 - **持久层**:MyBatis Plus 3.5.3.1 - **数据库**:MySQL 8.0 - **缓存**:Redis - **安全框架**:Spring Security + JWT - **物联网通信**:MQTT (Eclipse Paho) - **实时通信**:WebSocket - **API文档**:Swagger - **工具库**: - Lombok - 简化Java代码 - FastJSON2 - JSON处理 - Druid - 数据库连接池 - PageHelper - 分页插件 ### 前端技术 前端界面使用现代Web技术栈开发,支持响应式设计,适配各种设备屏幕。 ## 系统功能 ### 1. 实时数据监控 - 通过MQTT协议接收物联网设备发送的水位数据 - 使用WebSocket技术实现实时数据推送 - 数据即时可视化,支持图表、仪表盘展示 - 支持历史数据查询和趋势分析 ### 2. 设备管理 - 设备注册与管理 - 设备状态监控 - 设备维护记录 - 设备位置信息管理 - 支持多种设备类型和协议 ### 3. 报警系统 - 基于阈值的自动报警机制 - 多级警报(信息、警告、严重、紧急) - 报警推送和通知 - 报警记录查询和管理 - 自定义报警规则 ### 4. 用户管理与权限控制 - 用户注册和身份验证 - 基于角色的访问控制 - 支持多种用户角色(管理员、操作员、观察员等) - 用户操作日志记录 - 安全的密码管理 ### 5. 统计分析与报表 - 数据统计和分析功能 - 自定义报表生成 - 导出数据支持多种格式 - 数据可视化图表 - 区域水位情况分析 ### 6. 系统消息与通知 - 系统公告管理 - 用户消息通知 - 实时事件广播 - 邮件和短信通知集成 ## 系统架构 系统采用分层架构设计,主要包括以下几个层次: 1. **数据采集层**:负责通过MQTT协议从各个水位监测设备收集数据 2. **数据处理层**:对原始数据进行处理、验证和分析 3. **业务逻辑层**:实现系统核心业务功能 4. **数据存储层**:使用MySQL数据库存储结构化数据 5. **API接口层**:提供RESTful API接口供前端访问 6. **前端展示层**:基于Web技术的用户界面 ### 数据流程 ``` 物联网设备 → MQTT协议 → 后端服务器 → 数据处理 → 数据存储 ↓ 前端用户界面 ← WebSocket实时推送 ← 数据分析 ← 报警处理 ``` ## 安装与部署 ### 系统要求 - JDK 17 或更高版本 - MySQL 8.0 或更高版本 - Redis 6.0 或更高版本 - Maven 3.6 或更高版本 ### 数据库配置 1. 创建MySQL数据库: ```sql CREATE DATABASE waterlevelmonitoring CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 配置数据库连接信息(修改application.yml): ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/waterlevelmonitoring?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false username: 你的用户名 password: 你的密码 ``` ### MQTT配置 配置MQTT连接参数(修改application.yml): ```yaml mqtt: broker: url: ssl://你的MQTT服务器地址:端口号 client: id: 你的客户端ID username: 你的MQTT用户名 password: 你的MQTT密码 topic: 你的MQTT主题 ``` ### 项目构建与启动 1. 克隆项目: ```bash git clone https://github.com/your-username/waterlevelmonitoringplatform.git cd waterlevelmonitoringplatform ``` 2. 构建项目: ```bash mvn clean package -DskipTests ``` 3. 运行项目: ```bash java -jar target/Waterlevelmonitoringplatform-0.0.1-SNAPSHOT.jar ``` 4. 访问系统: 浏览器打开 http://localhost:8080 ## 开发指南 ### 项目结构 ``` ├── src/main/java/com/waterlevelmonitoringplatform/ │ ├── common/ // 通用工具和常量 │ ├── config/ // 配置类 │ ├── controller/ // 控制器层 │ ├── dto/ // 数据传输对象 │ ├── entity/ // 实体类 │ ├── enums/ // 枚举类型 │ ├── exception/ // 异常处理 │ ├── interceptor/ // 拦截器 │ ├── mapper/ // MyBatis映射接口 │ ├── mqtt/ // MQTT相关实现 │ ├── security/ // 安全认证相关 │ ├── service/ // 业务逻辑层 │ ├── util/ // 工具类 │ ├── utils/ // 辅助工具 │ ├── websocket/ // WebSocket实现 │ └── WaterLevelMonitoringPlatformApplication.java // 应用入口 ├── src/main/resources/ │ ├── mapper/ // MyBatis XML映射文件 │ ├── application.yml // 主配置文件 │ └── application.properties // 额外配置属性 └── pom.xml // Maven依赖配置 ``` ### API文档 系统集成了Swagger文档,启动应用后可以通过以下地址访问API文档: http://localhost:8080/swagger-ui/index.html ## 数据模型 系统的主要数据实体包括: - **User**: 用户信息 - **Admin**: 管理员信息 - **Drive**: 驱动设备信息 - **DriveData**: 设备数据记录 - **Address**: 地址信息 - **Warning**: 报警记录 - **SystemMessage**: 系统消息 - **Announcement**: 公告信息 ## 扩展与集成 ### 添加新的设备类型 1. 在entity包中创建新的设备实体类 2. 在mapper包中创建对应的Mapper接口 3. 在service包中实现业务逻辑 4. 在controller包中创建对应的API接口 ## 常见问题解答 1. **Q: 如何修改系统默认端口?** A: 在application.yml中修改server.port属性。 ## 许可证 该项目采用MIT许可证 - 查看[LICENSE](LICENSE)文件了解更多细节。 [前端](https://gitee.com/shaoyu1007/waterlevel-front.git) [ESP32硬件]https://gitee.com/shaoyu1007/waterlevel_-esp32-s3.git)