返回作品

物联网设备管理系统

创建于 2025 年 1 月 17 日

标签
  • Java 8
  • Spring Boot 2.5.15
  • RuoYi-Vue 3.8.9
  • MyBatis
  • MySQL
  • Redis
  • Vue 2
  • Element UI
  • ECharts
  • 阿里云 IoT SDK

项目介绍

物联网项目的常见形态是”平台管理设备、业务读数据”,而这个项目选择了更轻的一条路:管理后台继续由成熟的若依框架支撑,设备侧的数据则直接通过阿里云物联网平台 OpenAPI 拉取,不在本地自建协议网关。项目基于 RuoYi-Vue 3.8.9(Spring Boot 2.5.15 + Vue 2 + Element UI)搭建,在 com.ruoyi.lot 包下预留了 controller、domain、mapper、utils 的完整分层骨架,当前核心实现集中在 ALiYunUtil——一个封装阿里云 IoT 平台 OpenAPI 调用的工具类。

代码注释里记录了规划方向:设备属性数据最终要接入数据可视化大屏(参考了 BigDataView 酷炫大屏模板),也就是说项目的目标是”若依后台 + 阿里云 IoT 数据 + 可视化大屏”三段式架构,当前处于平台就位、云 API 联调跑通的阶段。

项目架构

项目是典型的前后端分离单体:后端 ruoyi-adminruoyi-systemruoyi-commonruoyi-quartzruoyi-generator 多模块 Maven 工程,前端 ruoyi-ui 为 Vue 2 工程。安全与权限沿用若依标准实现——Spring Security + JWT + Redis,数据库用 MySQL + Druid 连接池,MyBatis 负责 SQL,Quartz 提供定时任务能力,代码生成器可基于表结构一键生成前后端 CRUD 代码。

与普通若依项目不同的是,ruoyi-admin/pom.xml 引入了阿里云 IoT 官方 SDK:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>iot20180120</artifactId>
    <version>6.0.0</version>
</dependency>

同时代码里使用 Hutool 的 JSONUtilDateUtil 处理 JSON 序列化与时间计算。ALiYunUtil.createClient() 以 AccessKey/Secret 初始化 com.aliyun.iot20180120.Client,指定华东上海地域 endpoint iot.cn-shanghai.aliyuncs.com,后续所有平台 API 都经由该 Client 调用。SQL 初始化脚本 20250119-ry-vue-lot.sql 在若依基础库之上,于 sys_menu 中新增了顶级菜单 2000「可视化大屏」(路由 dataVenterprise),为独立大屏页面预留入口。

核心功能

  • 若依管理后台底座:用户、角色、菜单、部门、岗位、字典、参数、公告等完整 RBAC 权限体系,登录认证、操作日志、登录日志、在线用户、服务/缓存/数据源监控开箱即用,为物联网管理提供统一的安全入口。
  • 阿里云 IoT Client 封装ALiYunUtil.createClient() 封装 AK/SK 认证与 endpoint 配置,生成平台 OpenAPI 客户端,所有设备数据访问都从这一个入口出发。
  • 物模型功能定义查询QueryThingModel() 调用 client.queryThingModelWithOptions,查看指定产品物模型中的功能定义详情(属性、事件、服务),返回结果通过 JSONUtil.toJsonStr 打印——这是理解”设备能上报什么数据”的基础,也是后续动态渲染设备页面的数据来源。
  • 设备属性历史数据查询queryDevicePropertyData() 调用 QueryDevicePropertyData 接口,按产品 ProductKey(如 k21363STPMf)、设备名称(如 new2)、属性标识(如 Pressure)检索设备近 7 天的属性记录,支持 asc 排序与分页大小设置,main 方法可直接运行验证整条链路。
  • 分层骨架与扩展规划com.ruoyi.lot 下已建立 controller、domain、mapper 包结构(package-info 占位),配合 Quartz 定时任务可平滑扩展”定时轮询设备数据入库”;菜单中预留「可视化大屏」路由,指向设备数据大屏展示。

功能截图

暂无运行截图。

快速上手

项目为标准的若依 Maven 多模块工程,要求 JDK 1.8。部署时先执行 20250119-ry-vue-lot.sql 初始化数据库(含若依基础表、Quartz 定时任务表与可视化大屏菜单),并按需调整 application.ymlapplication-druid.yml 中的 MySQL、Redis 连接配置。

前端进入 ruoyi-ui 目录执行 npm install && npm run dev,后端在 ruoyi-admin 模块运行 RuoYiApplication 启动,默认使用 admin/admin123 登录。物联网联调部分,在 ALiYunUtil 中配置具备物联网平台权限的 AccessKey/Secret,确认 IoT 实例 ID、ProductKey、DeviceName 与属性标识后,直接运行 ALiYunUtilmain 方法即可在控制台看到 QueryDevicePropertyData 返回的属性数据 JSON。

总结

这个项目的价值在于把”云上设备数据”与”成熟管理后台”高效地接在了一起:设备接入、通信、存储交给阿里云物联网平台,业务系统只通过官方 SDK 按需拉取物模型与属性数据,省去了自建协议解析和消息队列的复杂度;若依框架则一次性提供了权限、日志、定时任务与代码生成能力,让物联网管理功能的开发可以专注于业务本身。

当前代码处于骨架与联调阶段:ALiYunUtil 已跑通物模型查询与设备属性查询两条核心 API 链路,分层包结构与可视化大屏菜单已预留。后续自然的演进路径是:用 Quartz 定时任务周期拉取设备属性并写入本地业务表、基于 com.ruoyi.lot 分层补齐设备/产品管理 CRUD 页面,最后把数据接到预留的 dataVenterprise 大屏路由上,形成”平台管理 + 云数据 + 大屏展示”的完整物联网管理系统。