基于 Spring Boot + Netty MQTT + LiteFlow 的智慧农业物联网监控平台,从零搭建到交付
面向蔬菜/花卉/菌菇种植基地,覆盖 12 个大棚、73 台 IoT 设备、4 类产品、8 条自动化规则的全链路监控平台。基于 RuoYi-Vue 二开的 OneIoT 平台,支持实时大屏、远程控制、LiteFlow 规则引擎、MQTT 数据管线。
项目背景
中国有大大小小数百万个大棚种植基地——蔬菜、花卉、菌菇、水果。它们每天供应着全国人民的餐桌,但大部分基地的生产管理方式依然停留在"靠人看、靠天收、靠经验浇"的阶段。
想象一下这个场景:凌晨 2 点突然降温,大棚温度骤降至 2℃,等到工人早上 6 点上班才发现—— 3 个大棚的草莓已经遭受冻害,直接损失超过 10 万元。又或者夏天午后 38℃ 高温,工人不在现场,当天傍晚大棚里像桑拿房一样,一季的番茄全部减产。
再比如浇水——全靠老师傅凭感觉,拧开水泵浇到差不多就关。浇少了苗蔫,浇多了烂根。一个占地 100 亩的基地,一年光水费就是十几万,但是利用率不到 40%。
智慧农业物联网监控平台正是为这些场景而设计的,目标是让每个大棚都有一位 24 小时在线的"数字管家"——实时采集数据、自动控制设备、异常即时告警。
适用场景包括:蔬菜大棚基地、花卉种植园、菌菇培育基地、水果种植园区、现代农业示范园等。
技术选型
| 层级 | 技术栈 |
|---|---|
| 后端框架 | Spring Boot 2.5 + MyBatis-Plus + JDK 17 |
| 安全认证 | Spring Security + JWT |
| MQTT Broker | 自研 Netty MQTT Broker(TCP 1883 + WebSocket 8083) |
| 规则引擎 | LiteFlow 2.12 + Groovy 脚本热加载 |
| 前端框架 | Vue 2 + Vuex + Vue Router |
| UI 组件 | Element UI + DataV + ECharts |
| 数据库 | MySQL 8.0 + Redis |
| 构建工具 | Maven + Webpack |
功能全景
1. 登录页
支持账号密码登录(admin / admin123),支持验证码开关,支持记住密码。登录后进入后台管理首页。

2. 管理后台首页
后台首页展示 OneIoT 平台介绍、设备统计概览、通知公告、快速入口等。左侧为系统菜单,包含 IoT 设备管理、产品管理、场景联动、设备日志等模块。

3. 智慧农业监控大屏(核心)
大屏是整个系统的核心展示窗口,采用深色科技风设计,一屏展示 12 个大棚的完整状态。
顶部分区—— 4 个统计卡片:大棚总数(12 个)、在线设备(73/73 台)、今日告警数量、今日灌溉次数。卡片分别用绿/蓝/红/青四色区分,数据一目了然。
左栏—— 12 个大棚的状态网格。每个大棚卡片实时显示棚号、当前温度(橙色)、当前湿度(蓝色),右上角小圆点用绿/黄/红三色标识状态:
- 🟢 绿色:温度湿度正常
- 🟡 黄色:温度偏高或湿度偏低
- 🔴 红色:温度超标或 CO2 超标(红色卡片会闪烁)

中栏—— 实时数据面板。点击左侧任意大棚,中栏切换为该棚的 6 项核心指标:
- 空气温度(橙色高亮,℃)
- 空气湿度(蓝色高亮,%)
- CO2 浓度(ppm)
- 光照强度(lux)
- 土壤湿度(%)
- 土壤 pH
面板下方是两个 ECharts 图表:
24h 温湿度趋势图:双 Y 轴折线图,温度(橙线) + 湿度(蓝线),支持 24h / 7天 / 30天 时间粒度切换按钮。
土壤墒情监测图:三线图,土壤湿度(绿线) + 土壤 pH(黄线) + 土壤 EC(紫线)。
右栏—— 告警事件列表(红色高危告警、黄色预警分级显示)+ 告警历史记录区 + 设备控制面板(风机/卷帘/水泵/补光灯四个开关按钮,绿色已开启/灰色已关闭)+ 气象站信息栏(风速/降雨量/室外温度/大气压)。
当检测到红色告警时,右上角自动弹出告警窗——展示告警标题和详情,5 秒后自动消失。告警记录同步保存到历史列表。
4. 大棚对比模式
点击左栏标题旁的"对比模式"按钮,勾选任意两个大棚卡片,中栏立刻切换为对比视图——并排展示两个大棚的温度、湿度、CO2、光照、土壤湿度、土壤 pH 的实时对比数据。哪个棚管得好,一目了然。

5. 设备管理
IoT 设备管理支持按序列号前缀筛选——搜索"AGRI-"即可列出全部 73 台农业设备。列表展示设备名称、产品名称、序列号、设备状态(在线/离线)、信号强度、激活时间。点击设备可查看详情和实时运行状态。

6. 产品管理与物模型定义
4 类产品全部定义在"产品管理"页面中,每类产品包含完整的物模型——属性(读写/只读)、事件(告警)、功能(控制指令)。
产品清单:
| 产品 | 型号 | 数量 | 物模型 |
|---|---|---|---|
| 环境传感器 | A | 24台 (每棚2台) | 4属性(温度/湿度/CO2/光照)+ 2事件 |
| 土壤传感器 | B | 36台 (每棚3台) | 4属性(土壤温度/湿度/pH/EC) |
| 智能控制器 | C | 12台 (每棚1台) | 4功能(风机/卷帘/水泵/补光灯) |
| 气象站 | D | 1台 (全场共用) | 5属性 + 3事件(暴风/暴雨/霜冻) |
物模型以 JSON 格式定义并存储在 iot_product.things_models_json 字段中。点击产品可查看物模型详情——属性列表(数据范围、单位、步长)、功能列表(开关类型、操作文本)、事件列表(触发条件)。

7. 场景联动与自动化规则
使用 LiteFlow 2.12 + Groovy 脚本实现 8 条自动化规则。每条规则对应一条 iot_scene 记录和一条 iot_script Groovy 脚本。
规则清单:
| 规则编号 | 名称 | 触发条件 | 自动动作 |
|---|---|---|---|
| AGRI-R1 | 高温降温 | 温度 > 35℃ | 开风机 + 开卷帘 |
| AGRI-R2 | 干旱灌溉 | 土壤湿度 < 25% | 开水泵 |
| AGRI-R3 | CO2通风 | CO2 > 1200ppm | 开风机 |
| AGRI-R4 | 光照补光 | 光照 < 5000lux | 开补光灯 |
| AGRI-R5 | 暴雨关窗 | 降雨 > 10mm/h | 关卷帘 + 关风机 |
| AGRI-R6 | 霜冻保温 | 室外温度 < 0℃ | 关卷帘 |
| AGRI-R7 | 天气预判 | 暴雨+大风 | 预判关闭所有卷帘 |
| AGRI-R8 | 设备联动 | 控制器状态上报 | 设备状态联动监测 |
所有规则在 LiteFlow 中通过 EL 表达式 THEN(script_id) 引用,支持热加载——修改规则无需重启服务。后台启动日志验证 8 条规则全部加载成功,零错误。

8. API 接口文档
平台集成 Swagger UI,所有 REST API 自动生成在线文档。核心接口包括:
| 接口 | 方法 | 说明 |
|---|---|---|
/iot/device/listByPrefix |
GET | 按序列号前缀查询设备列表 |
/iot/device/runningStatus |
GET | 查询设备运行状态和物模型值 |
/iot/runtime/runState |
GET | 查询设备遥测数据 |
/iot/event/list |
GET | 查询事件/告警日志 |
/iot/deviceLog/list |
GET | 查询设备历史日志 |

9. 手机端(移动端 App)
平台配套移动端 App(Uniapp 开发,支持微信小程序/Android/iOS/H5),管理员和用户可通过手机随时随地管理设备和查看数据。
登录页 — 支持账号密码登录和微信一键登录,演示账号 oneiot / 123456。

首页 — 按房间/区域分组展示所有设备,在线/离线状态一目了然,支持下拉刷新。

动态页 — 设备数据趋势图表,按时间维度展示温湿度等历史数据变化。

设备详情 — 点击设备进入详情页,查看实时物模型数据,支持远程控制(开关、调节等)。

设备定时 — 支持定时任务配置,定时开关设备、定时上报数据。

个人中心 — 用户头像、昵称、设备数量、场景数量等信息概览。

系统设置 — 服务端地址配置、MQTT 服务器配置、解码器地址等。

关于页面 — 版本信息、官网链接、源码地址、版权信息。

MQTT 数据管线
平台自研了基于 Netty 的轻量级 MQTT Broker,支持 TCP 1883 和 WebSocket 8083 双通道。
数据主题格式:/{productId}/{serialNumber}/property/post
设备上报数据示例:
[
{"id":"temperature","value":"26.5"},
{"id":"humidity","value":"72.3"},
{"id":"co2","value":"680"},
{"id":"illuminance","value":"32000"}
]
数据处理链路:
MQTT 模拟器 → Broker(:1883) → MqttPublish.handler()
↓
parseReportMsg()
↓
iot_device.things_model_value ← 大屏 API 读取
iot_device_log (3.3万+条) ← 遥测记录存储
↓
LiteFlow 规则引擎 → 阈值检测
项目价值
量化收益
| 指标 | 改造前 | 改造后 | 提升 |
|---|---|---|---|
| 人工巡检 | 每天3次(2小时) | 实时自动 | 减少 80% |
| 灾害响应 | 发现时已损失 | 提前5分钟预警 | 减少损失 60% |
| 水资源利用 | 约 35% | 约 65% | 提高 50% |
| 品质一致性 | 波动大 | 数据可控 | 优品率 +30% |
| 极端天气损失 | 年均 5~10% | 年均 <2% | 减少 80% |
场景模块化
平台支持按前缀隔离多场景——农业 AGRI-、养老 ELDER-、工厂 FACT-、社区 COMM-,互不冲突。同一个平台可以同时运行多个行业场景,按需交付。
在线演示
演示地址:http://1.15.244.92:80
大屏入口:登录后访问/bigScreen/agriculture
演示账号:admin/admin123
全源码交付 — 您将获得以下全部资料
本项目采用全源码开放的方式进行交付。以下是完整资料清单:
一、源代码
| 模块 | 技术栈 | 说明 |
|---|---|---|
| 后端源码 | Spring Boot 2.5 + MyBatis-Plus + Netty + LiteFlow | OneIoT 平台完整 Java 源码,含 MQTT Broker |
| 前端源码 | Vue 2 + Element UI + ECharts + DataV | 管理后台 + 智慧农业大屏(545行全部源码) |
| 数据库脚本 | MySQL | 平台基础建表 + 农业场景种子数据(含73台设备) |
| MQTT 模拟器 | Python + paho-mqtt | 设备数据模拟推送脚本,可独立运行演示 |
二、部署运行包
| 文件 | 用途 |
|---|---|
oneiot-admin.jar |
后端可执行 JAR 包,改配置即可运行 |
dist/ |
前端编译产物,直接部署 Nginx |
docker-compose.yml |
Docker 一键部署(MySQL + Redis + 平台) |
scenario-agriculture.sql |
农业场景独立 SQL,可单独导入 |
三、项目文档(7份)
| 文档 | 内容 |
|---|---|
| 《部署手册》 | 环境要求 + 安装步骤 + 配置修改 + 启动验证 |
| 《管理员操作手册》 | 设备管理、大屏操作、告警处理、用户管理、常见问题 |
| 《技术架构文档》 | 四层架构、技术栈选型、数据库设计、MQTT 协议规范 |
| 《物模型定义说明书》 | 4类产品的属性/事件/功能完整定义(含 JSON Schema) |
| 《方案建议书》 | 可直接提交给终端客户的正式方案文档 |
| 《API 接口文档》 | 所有 REST 接口说明、请求参数、返回格式、示例 |
| 《项目验收报告》 | 验收标准、测试用例、签署页模板 |
💬 联系方式:微信 t_shopnet(备注:智慧农业)
🌐 演示地址:http://1.15.244.92:80(admin / admin123)
🛠️ 技术栈:Spring Boot + Vue + Netty MQTT + LiteFlow + ECharts
