# 基于物联网技术智能电表系统的设计与开发
**Repository Path**: poorhua/powermeter
## Basic Information
- **Project Name**: 基于物联网技术智能电表系统的设计与开发
- **Description**: https://gitee.com/mingjin-zhu/powermeter.git
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2023-09-07
- **Last Updated**: 2023-09-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 物联网智能电表项目
### 项目主体结构
本物联网智能电表项目是一个使用云边端物联网经典架构设计的、云端采用前后端分离开发的单体应用项目。前端由 ReactJS 库实现,后端由 Springboot 实现前端控制器和后台业务逻辑。

项目工程由父模块powermeter及其旗下的四个子模块reactweb(云端前端网页)、cloud(云端后台服务:包含控制器、数据库、业务逻辑等)、edge(边缘网关)和common(云端和边缘网关的公共实体)构成。父模块及其四个子模块的具体信息如下:
| 模块名称 | 包名 | 路径 |
|-------------------------|------------------------------------------------|--------------------------------|
| powermeter | cn.zhumingjin.powermeter | \ |
| reactweb | cn.zhumingjin.powermeter.reactweb | \modules\reactweb |
| cloud | cn.zhumingjin.powermeter.cloud | \modules\cloud |
| edge | cn.zhumingjin.powermeter.edge | \modules\edge |
| common | cn.zhumingjin.powermeter.common | \modules\common |
以上模块仅有cloud和edge是能在生产环境中直接运行的,前者部署到云端服务器,后者部署在可联网的边缘设备上(这里使用树莓派),两个模块通过 MQTT 服务器(这里使用 Mosquitto 服务器)进行通信。
### React 静态资源部署
本项目的云端静态网页资源(前端部分)由 ReactJS 库开发,使用npm start命令进行前端测试,npm run build命令进行开发环境资源生成。
在 React 子模块中,如果需要进行前端的 React Web App 进行进一步开发,首先确保你的电脑安装了 npm 及其相关组件且 npm 命令可用:
- 在IDEA中打开终端,默认情况下终端打开的目录为父项目powermeter所在的根目录,故先输入cd modules\reactweb命令设终端目录为reactweb所在目录(若终端目录正确请直接跳过);
- 继续输入npm install命令下载 React 项目的一系列依赖包,依赖包会自动置于\node_modules内;
- 待全部依赖包安装完成,即可对前端项目进行后续开发。
为了提高本项目的执行效率,我们把 React 前端资源的打包命令npm run build对应的 build 路径设置为与后端 Springboot 后台的静态 Web 资源路径\modules\cloud\src\resources保持一致,使得项目经过前端打包后可以直接运行后端的CloudApplication配置,从而将分离的前后端合并上传。
在项目调试中,如果你对前端的资源进行了修改,同时想要更新相关资源并在云端运行整个 Web 项目,完整且正确的操作如下(若仅修改了后端实现一般没有必要进行前两个步骤的操作):
- 在IDEA终端中输入cd modules\reactweb命令,要求终端打开 React 所在目录;
- 继续输入npm run build命令打包 React Web App 静态资源,相关资源会在 Springboot 后端静态资源路径里自动生成;
- 最后待终端提示静态资源打包完成后在 IDEA 上运行后端的CloudApplication配置即可。
### MQTT 服务器配置
在本项目中,我们通过 MQTT 服务器实现云和边之间的通信,所以在请在系统运行时打开 MQTT 服务器。我们要求 MQTT 消息队列服务在本机(localhost)的 1883 端口配置并运行。
MQTT 服务器运行前请先注册root用户名,密码设为powermeter。若你想使用其他用户名和密码登录 MQTT 服务器,请修改cloud模块和edge模块中application.yml文件里com.mqtt的相关配置。