基于 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 台农业设备。列表展示设备名称、产品名称、序列号、设备状态(在线/离线)、信号强度、激活时间。点击设备可查看详情和实时运行状态。

设备管理列表(搜索AGRI-前缀)

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 查询设备历史日志

Swagger API文档

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 接口说明、请求参数、返回格式、示例
《项目验收报告》 验收标准、测试用例、签署页模板
隐藏内容
本内容需权限查看
  • 普通用户: 139金币
  • VIP会员: 139金币
  • 永久会员: 139金币
已有8人解锁查看

💬 联系方式:微信 t_shopnet(备注:智慧农业)
🌐 演示地址http://1.15.244.92:80(admin / admin123)
🛠️ 技术栈:Spring Boot + Vue + Netty MQTT + LiteFlow + ECharts

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。