# 基于物联网技术智能电表系统的设计与开发 **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 实现前端控制器和后台业务逻辑。 ![](./structure.png) 项目工程由父模块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 | 以上模块仅有cloudedge是能在生产环境中直接运行的,前者部署到云端服务器,后者部署在可联网的边缘设备上(这里使用树莓派),两个模块通过 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的相关配置。