物联网设备管理系统
创建于 2025 年 1 月 17 日
项目介绍
物联网项目的常见形态是”平台管理设备、业务读数据”,而这个项目选择了更轻的一条路:管理后台继续由成熟的若依框架支撑,设备侧的数据则直接通过阿里云物联网平台 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-admin、ruoyi-system、ruoyi-common、ruoyi-quartz、ruoyi-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 的 JSONUtil、DateUtil 处理 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.yml、application-druid.yml 中的 MySQL、Redis 连接配置。
前端进入 ruoyi-ui 目录执行 npm install && npm run dev,后端在 ruoyi-admin 模块运行 RuoYiApplication 启动,默认使用 admin/admin123 登录。物联网联调部分,在 ALiYunUtil 中配置具备物联网平台权限的 AccessKey/Secret,确认 IoT 实例 ID、ProductKey、DeviceName 与属性标识后,直接运行 ALiYunUtil 的 main 方法即可在控制台看到 QueryDevicePropertyData 返回的属性数据 JSON。
总结
这个项目的价值在于把”云上设备数据”与”成熟管理后台”高效地接在了一起:设备接入、通信、存储交给阿里云物联网平台,业务系统只通过官方 SDK 按需拉取物模型与属性数据,省去了自建协议解析和消息队列的复杂度;若依框架则一次性提供了权限、日志、定时任务与代码生成能力,让物联网管理功能的开发可以专注于业务本身。
当前代码处于骨架与联调阶段:ALiYunUtil 已跑通物模型查询与设备属性查询两条核心 API 链路,分层包结构与可视化大屏菜单已预留。后续自然的演进路径是:用 Quartz 定时任务周期拉取设备属性并写入本地业务表、基于 com.ruoyi.lot 分层补齐设备/产品管理 CRUD 页面,最后把数据接到预留的 dataVenterprise 大屏路由上,形成”平台管理 + 云数据 + 大屏展示”的完整物联网管理系统。