# hs-cloud **Repository Path**: watson_bi/hs-cloud ## Basic Information - **Project Name**: hs-cloud - **Description**: 华生新能源设备分布式管理平台 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2024-03-19 - **Last Updated**: 2025-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: 新能源, 微服务, 管理平台 ## README # hs-cloud #### 介绍 华生新能源设备分布式管理平台 #### 是什么? 新能源设备管理平台,微服务版本. #### 能干嘛? 假设这么一种情况,项目中有充电桩/UPS/逆变器/储能等各种新能源设备,通信方式可能是MQTT,也可能是Socket.需要一个后台统一管理,可以兼容多种设备,多种通信方式.这就是本项目的出发点. #### 项目架构 1. 本项目前后端都参考了若依,在此对若依团队的佬们致以深深的敬意.若依官网: https://ruoyi.vip/ 2. 项目组成: ``` com.hs ├── hs-client //模拟设备 ├── hs-ui // 前端框架 [80] ├── hs-gateway // 网关模块 [8080] ├── hs-auth // 认证中心 ├── hs-api // 接口模块 │ └── ruoyi-api-system // 系统接口 ├── hs-common // 通用模块 │ └── hs-common-captcha // 验证码模块 │ └── hs-common-config // 配置模块 │ └── hs-common-core // 核心模块 │ └── hs-common-email // 邮件模块 │ └── hs-common-log // 日志模块 │ └── hs-common-mybatisplus // mybatisplus模块 │ └── hs-common-redis // 缓存服务 │ └── hs-common-seata // 分布式事务 │ └── hs-common-security // 安全模块 │ └── hs-common-swagger // 系统接口 ├── hs-modules // 业务模块 │ └── hs-system // 系统模块 │ └── hs-log // 日志记录 │ └── hs-job // 定时任务 │ └── hs-file // 文件服务 ├── hs-communication // 通信模块 │ └── hs-communication-common // 通信通用模块 │ └── hs-communication-mqtt // MQTT模块 │ └── hs-communication-netty // netty模块 ├── hs-device // 业务模块 │ └── hs-device-all // 所有设备 │ └── hs-device-charger // 充电桩 │ └── hs-device-ups // UPS │ └── hs-device-inverter // 逆变器 │ ├──pom.xml ``` 3. 技术选型 微服务: Spring Cloud Alibaba 网关: Spring Cloud Gateway 注册和配置中心: Nacos 远程调用: openfeign 服务降级: Hystrix 缓存: Redis 数据库: mysql8 数据库框架: mybatis-plus / mybatis-plus-join 消息中间件: rabbitMQ 前端: Vue + Element 模拟设备(hs-client): java + javaFx + gradle #### 关于MQTT ​ 本项目的MQTT通信采用rabbitMQ的MQTT插件实现.也就是说rabbitMQ充当MQTT消息服务器. #### 关于Redis ​ 缓存用户登录的token,验证码,保存最新的实时记录,定时检查在线状态等等. #### 关于模拟设备 ​ hs-client模块,模拟设备收发消息.特别的.微服务用maven构建,模拟设备程序用gradle.另外,hs-client模块用了java的模块化(方便于做成安装包以后体积小).如果要引入新的依赖,请特别注意module-info.java文件. ![模拟设备](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/client.png) #### 通信流程说明: ``` 设备 >>> rabbitMQ >>> 业务服务器 <<< app/前端 设备 <<< rabbitMQ <<< 业务服务器 <<< app/前端 通信协议参考云快充协议,只是简单模拟. 设备登录过程中涉及RSA和AES加密.需要对通信内容进行加密. 协议帧定义如下: 设备登录: 0x01 平台回复: 0x02 平台生成RSA密钥对,下发公钥 设备登录: 0x03 设备端生成AES密钥(key)和初始向量(iv),用RSA公钥加密(key+iv),上传 平台回复: 0x04 解密设备上传的(key+iv),保存 之后的通信设备端和平台端用AES密钥加密消息,实现加密通信. ``` #### 前端页面截图 1. 首页 ![模拟设备](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/home.png) 2. 设备概览 ![设备概览](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/overview.png) 3. 实时数据 ![实时数据](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/real.png) 4. 参数设置 ![参数设置](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/para.png) 5. 历史数据 ![历史数据](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/history.png) 6. 电量数据 ![电量数据](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/energy.png) 7. 历史告警 ![历史告警](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/warning.png) 8. 固件更新 ![固件更新](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/update.png) 9. 定时任务 ![定时任务](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/job.png) 10. 个人中心 ![个人中心](https://gitee.com/watson_bi/hs-cloud/raw/a6cabd222301d87afd405160d10b8bda6091a487/pics/user.png) #### 版本说明 ​ 此版本尚为基础功能版,MQTT双向通信的功能已实现,具体的协议需要根据自己的需要加以实现.以后会不定时持续更新. #### 特别的 1. 不喜随便喷,欢迎各种意见和建议. 2. 如果有意参与本开源项目,比如架构优化/前端设计,欢迎来私.