# deviceControl **Repository Path**: huanlis/device-control ## Basic Information - **Project Name**: deviceControl - **Description**: 设备控制 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-02 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设备控制指令监控系统 一个基于Spring Boot和Vue.js的实时设备控制指令监控系统,支持WebSocket实时数据推送和可视化展示。 ## 项目概述 本项目是一个设备控制指令监控系统,主要功能包括: - 实时监控设备控制指令状态 - 通过WebSocket实现数据实时推送 - 可视化展示设备指令数据 - 支持指令依赖关系管理 - 提供RESTful API接口 ## 技术栈 ### 后端技术 - **Spring Boot 3.5.8** - 应用框架 - **Spring WebSocket** - WebSocket支持 - **Caffeine** - 高性能缓存 - **Lombok** - 简化Java代码 - **Java 21** - 运行环境 ### 前端技术 - **Vue 3** - 前端框架 - **Element Plus** - UI组件库 - **SockJS & STOMP** - WebSocket客户端 - **Axios** - HTTP客户端 ## 系统架构 ``` ┌─────────────────┐ WebSocket ┌─────────────────┐ │ │ ◄──────────────► │ │ │ 前端(Vue.js) │ │ 后端(Spring) │ │ │ HTTP API │ │ └─────────────────┘ ◄──────────────► └─────────────────┘ │ ▼ ┌─────────────────┐ │ Caffeine缓存 │ └─────────────────┘ ``` ## 功能特性 - ✅ 实时数据监控与展示 - ✅ WebSocket双向通信 - ✅ 设备指令管理 - ✅ 指令依赖关系配置 - ✅ 数据缓存与性能优化 - ✅ 响应式UI设计 - ✅ 分页与排序功能 ## 快速开始 ### 环境要求 - JDK 21 或更高版本 - Maven 3.6 或更高版本 - 现代浏览器(支持WebSocket) ### 安装步骤 1. 克隆项目到本地 ```bash git clone [项目地址] cd deviceControlTest ``` 2. 编译项目 ```bash mvn clean install ``` 3. 启动应用 ```bash mvn spring-boot:run ``` 4. 访问应用 打开浏览器访问:`http://localhost:8080` ## 使用说明 ### 📋 点位分组规则 详细的分组规则和逻辑说明请参考:[点位分组规则文档](README_POSITIONS.md) ### 基本功能 1. **查看设备指令** - 启动应用后,系统会自动加载60条模拟设备指令 - 表格显示指令标签(TAG)、值(VALUE)等信息 - 点位分为控制点位和显示点位两大组 2. **实时数据更新** - 系统每5秒随机更新后20个点位的值 - 每10秒推送所有指令的最新状态 - 前端页面会实时显示更新后的数据 3. **WebSocket连接状态** - 页面顶部显示WebSocket连接状态 - 连接断开时可点击"重新连接"按钮恢复连接 ### API接口 #### 获取所有指令 ```http GET /api/commands/all ``` #### 获取所有标签值 ```http GET /api/commands/tagValues ``` #### 根据CID获取指令 ```http GET /api/commands/{cid} ``` #### 更新标签值 ```http PUT /api/commands/tag/{tag} Content-Type: application/json {value} ``` ### WebSocket端点 - **连接端点**: `/ws` (支持SockJS) - **订阅主题**: `/topic/tagValues` ## 项目结构 ``` src/main/java/com/huanlis/nodes/device/control/ ├── config/ # 配置类 │ ├── CaffeineConfig.java # 缓存配置 │ └── WebSocketConfig.java # WebSocket配置 ├── controller/ # 控制器 │ └── CommandController.java ├── entity/ # 实体类 │ ├── CommandGroup.java # 指令组(包含60个点位分组逻辑) │ └── DeviceCommand.java # 设备指令 ├── service/ # 服务层 │ ├── CommandService.java # 指令服务 │ ├── ScheduledService.java # 定时任务 │ └── WebSocketService.java # WebSocket服务 └── DeviceControlTestApplication.java # 主应用类 src/main/resources/ ├── static/ # 静态资源 │ ├── index.html # 前端页面 │ └── test.html # 测试页面 └── application.properties # 应用配置 文档文件: ├── README.md # 项目说明文档 └── README_POSITIONS.md # 点位分组规则详细说明 ``` ## 配置说明 ### 缓存配置 - 最大缓存条目:1000条 - 过期时间:30分钟(写入后) ### 定时任务 - 数据更新频率:每5秒 - 全量推送频率:每10秒 ## 开发指南 ### 添加新的指令类型 1. 在`DeviceCommand`类中添加新属性 2. 更新`CommandGroup`中的初始化逻辑,参考[点位分组规则](README_POSITIONS.md) 3. 修改前端表格列定义 ### 修改点位分组规则 1. 更新[点位分组规则文档](README_POSITIONS.md) 2. 修改`CommandGroup`类中的点位初始化逻辑 3. 更新控制模式同步逻辑 ### 扩展WebSocket功能 1. 在`WebSocketConfig`中添加新的端点 2. 在`WebSocketService`中实现推送逻辑 3. 在前端订阅新的主题 ## 常见问题 ### Q: WebSocket连接失败怎么办? A: 检查以下几点: - 确认后端服务已正常启动 - 检查浏览器控制台是否有错误信息 - 确认网络环境支持WebSocket连接 ### Q: 表格数据不显示? A: 可能的原因: - 检查浏览器控制台是否有JavaScript错误 - 确认API接口返回数据格式正确 - 检查Element Plus样式是否正确加载 ### Q: 如何修改数据更新频率? A: 修改`ScheduledService`类中的`@Scheduled`注解参数 ## 贡献指南 1. Fork 本仓库 2. 新建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交 Issue - 发送邮件至 [您的邮箱] ## 更新日志 ### v1.0.0 (2023-XX-XX) - 初始版本发布 - 实现基本设备指令监控功能 - 添加WebSocket实时通信 - 实现前端可视化界面