# fastIot
**Repository Path**: wanglei2jq/fast-iot
## Basic Information
- **Project Name**: fastIot
- **Description**: Fast IoT 是一个高度可定制的开源物联网管理平台,专为中小型生产制造场景设计。平台提供设备管理、数据采集、消息推送、告警管理等核心功能,采用模块化设计和灵活的扩展机制,支持根据具体应用场景进行快速二次开发。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2026-07-15
- **Last Updated**: 2026-07-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Fast IoT - 快速物联网平台
[](LICENSE)
[](https://spring.io/projects/spring-boot)
[](https://vuejs.org/)
[](https://www.oracle.com/java/)
**面向中小型制造业的物联网平台 · 支持 MES 无缝集成 · 场景化定制开发**
[在线演示](#) · [快速开始](#快速开始) · [技术文档](#技术架构) · [参与贡献](#参与贡献)
---
## 📖 项目简介
Fast IoT 是一个**高度可定制**的开源物联网管理平台,专为**中小型生产制造场景**设计。平台提供设备管理、数据采集、消息推送、告警管理等核心功能,采用模块化设计和灵活的扩展机制,支持根据具体应用场景进行快速二次开发。
## 📞 联系方式(QQ): 304288387
### 🎯 定位与优势
- **🏭 面向制造业**:深度适配中小型生产制造场景,支持车间设备监控、生产数据采集、质量追溯等典型应用
- **🔌 MES 无缝对接**:提供标准 API 接口和数据北向输出能力,可与 MES、ERP、WMS 等系统无缝集成
- **⚙️ 灵活可扩展**:基于 Spring Boot 模块化架构,支持根据业务需求快速定制开发新功能
- **🚀 快速落地**:内置常用功能模块和代码生成器,大幅缩短项目开发周期
### ✨ 核心特性
#### 💼 业务场景支持
- **🏭 制造业适配**:专为中小型制造企业设计,支持注塑机、CNC、包装机等常见工业设备接入
- **🔌 MES 系统集成**:提供标准 RESTful API 和 MQTT 消息接口,支持与 MES/ERP/WMS 系统双向数据交互
- **📊 生产数据采集**:实时采集设备运行状态、工艺参数、产量数据,支持生产过程可视化
- **⚙️ 场景化定制**:模块化架构设计,可根据不同行业场景(如注塑、装配、包装)快速定制功能
#### 🛠️ 技术能力
- **🎯 设备全生命周期管理**:支持产品定义、设备注册、点位配置、状态监控
- **📡 多协议接入**:内置 MQTT、TCP 等主流物联网协议支持,可扩展 OPC UA、Modbus 等工业协议
- **⚡ 实时数据通信**:基于 WebSocket 实现设备数据实时推送,毫秒级响应
- **🔔 智能告警系统**:灵活的告警规则配置,支持阈值告警、趋势告警,多渠道通知
- **💬 消息通道管理**:支持北向输出,可将数据转发到 MES、ERP、云平台等第三方系统
- **📱 多端支持**:Web 管理后台 + 微信小程序/UniApp 移动端,随时随地监控设备
- **🔐 完善的权限体系**:基于 RBAC 的细粒度权限控制,支持多租户隔离
- **🎨 现代化 UI**:简洁美观的界面设计,良好的用户体验
---
## 🏗️ 技术架构
### 架构说明
#### 数据流向
1. **设备接入**: 设备通过 MQTT 协议接入 EMQX 集群
2. **消息桥接**: MQTT 集群通过桥接将数据转发到消息队列集群
3. **流计算处理**: eKuiper 流计算引擎消费消息队列数据,进行实时计算和规则匹配
4. **告警处理**: 告警中心根据规则引擎配置,触发告警并通知消息中心
5. **数据存储**:
- 采集数据持久化到 InfluxDB(时序数据库)
- 业务数据持久化到 MySQL
- 热点数据缓存到 Redis
6. **业务处理**: 平台管理、设备管理、消息中心协同完成业务逻辑
7. **终端展示**: 数据通过移动端、PC 端、组态大屏展示给用户
8. **消息通知**: 消息中心通过电话、短信、微信、邮件等多种方式发送通知
9. **系统集成**: 支持与其他系统(MES/ERP)的数据交互
#### 核心组件
- **EMQX MQTT 集群**: 高可用 MQTT 消息代理,支持海量设备接入
- **消息队列集群**: 消息缓冲和异步处理,保证系统稳定性
- **eKuiper 流计算引擎**: 边缘计算和实时数据分析,支持 SQL 规则配置
- **告警中心**: 智能告警规则引擎,支持多种告警策略和阈值配置
- **平台管理**: 统一的业务管理平台,包含设备管理、消息中心等功能
- **多渠道通知**: 支持电话、短信、微信、邮件等多种通知方式
- **时序数据库 InfluxDB**: 专用于存储设备采集的时序数据
- **第三方接入**: 支持与 MES、ERP 等第三方系统集成
### 技术栈
#### 后端技术
| 技术 | 版本 | 说明 |
|------|------|------|
| Spring Boot | 2.7.18 | 核心框架 |
| MyBatis Plus | 3.5.x | ORM 框架 |
| MySQL | 8.0+ | 关系型数据库 |
| Redis | 6.0+ | 缓存数据库 |
| JWT | - | Token 认证 |
| Maven | 3.6+ | 项目管理工具 |
| Lombok | 1.18.30 | 简化代码 |
| MapStruct | 1.5.5 | 对象映射 |
#### 前端技术
**Web 管理端 (fast-web)**
| 技术 | 版本 | 说明 |
|------|------|------|
| Vue | 2.7.14 | 渐进式 JavaScript 框架 |
| Element UI | 2.15.12 | UI 组件库 |
| Vue Router | 3.4.9 | 路由管理 |
| Vuex | 3.6.2 | 状态管理 |
| Axios | 0.27.2 | HTTP 客户端 |
| ECharts | 5.4.0 | 数据可视化 |
**移动端 (fast-minApp)**
| 技术 | 版本 | 说明 |
|------|------|------|
| UniApp | - | 跨平台开发框架 |
| uView UI | 1.8.8 | 移动端 UI 组件库 |
| WebSocket | - | 实时通信 |
#### 物联网协议
- **MQTT**: 轻量级消息传输协议
- **TCP**: 自定义 TCP 协议支持
- **HTTP**: RESTful API 接口
---
## 📦 项目结构
```
fast-iot/
├── fast-server/ # 后端服务
│ ├── fast-framework/ # 基础框架
│ │ ├── fast-common/ # 通用工具类
│ │ ├── fast-spring-boot-starter-web/ # Web starter
│ │ ├── fast-spring-boot-starter-mybatis/ # MyBatis starter
│ │ ├── fast-spring-boot-starter-security/ # 安全认证
│ │ ├── fast-spring-boot-starter-redis/ # Redis starter
│ │ └── ... # 其他 starter
│ ├── fast-monolith/ # 单体应用主模块
│ │ ├── src/main/java/ # Java 源码
│ │ │ └── cn/fast/iot/
│ │ │ ├── module/cps/ # 设备管理模块
│ │ │ ├── module/warning/ # 告警管理模块
│ │ │ ├── module/message/ # 消息管理模块
│ │ │ ├── module/system/ # 系统管理模块
│ │ │ └── module/infra/ # 基础设施模块
│ │ └── src/main/resources/ # 配置文件
│ └── pom.xml # Maven 配置
│
├── fast-web/ # Web 管理端
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 公共组件
│ │ ├── router/ # 路由配置
│ │ ├── store/ # 状态管理
│ │ └── utils/ # 工具函数
│ ├── package.json # 依赖配置
│ └── vue.config.js # Vue 配置
│
├── fast-minApp/ # 小程序/移动端
│ ├── pages/ # 页面文件
│ │ ├── devices/ # 设备管理
│ │ ├── warning/ # 告警管理
│ │ ├── messages/ # 消息管理
│ │ └── northbound/ # 北向输出
│ ├── api/ # API 接口
│ ├── utils/ # 工具函数
│ │ ├── auth.js # 认证工具
│ │ ├── request.js # 请求封装
│ │ └── socket.js # WebSocket
│ └── config.js # 全局配置
│
├── init-db/ # 数据库初始化
│ └── fast_iot.sql # SQL 脚本
│
└── doc/ # 项目文档
```
---
## 🚀 快速开始
### 环境要求
#### 基础环境
- JDK >= 1.8
- Maven >= 3.6
- Node.js >= 14.17.0
#### 中间件及端口配置
| 组件 | 版本 | 需开放端口 |
|------|------|-------------------|
| JDK | 1.8 | - |
| Nginx | 1.25.1 | 80 |
| MySQL | 8.0 | 3306 |
| RabbitMQ | 3.6.16 | 5672, 15672, 2883 |
| EMQX | 5.7.1 | 18083, 1883 |
| eKuiper | 1.14.1 | 9081, 9082, 10081 |
| InfluxDB | 2.x | 8086 |
| Redis | 6.2.6 | 6379 |
| MinIO | RELEASE.2024-11-07T00-52-20Z | 9000, 9001 |
#### 组件说明
- **JDK 1.8**: Java 运行环境,用于运行后端服务
- **Nginx 1.25.1**: Web 服务器和反向代理,用于部署前端应用
- **MySQL 8.0**: 关系型数据库,存储业务数据、用户信息、系统配置等
- **RabbitMQ 3.6.16**: 消息队列中间件,用于异步消息处理和系统解耦
- **EMQX 5.7.1**: MQTT 消息代理,用于物联网设备接入和消息转发
- **eKuiper 1.14.1**: 流计算引擎,用于边缘计算和实时数据处理
- **InfluxDB 2.x**: 时序数据库,专用于存储设备采集的时序数据
- **Redis 6.2.6**: 内存数据库,用于缓存、会话管理和分布式锁
- **MinIO**: 对象存储服务,用于文件、图片等静态资源存储
### 1. 克隆项目
```bash
git clone https://gitee.com/ka-la-ok/fast-iot.git
cd fast-iot
```
### 2. 初始化数据库
```bash
# 创建数据库
mysql -u root -p
CREATE DATABASE fast_iot DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 导入 SQL 文件
mysql -u root -p fast_iot < init-db/fast_iot.sql
```
### 3. 启动后端服务
```bash
cd fast-server
# 修改配置文件
# 编辑 fast-monolith/src/main/resources/application.yml
# 配置数据库连接、Redis 等信息
# 编译打包
mvn clean package -DskipTests
# 运行
java -jar fast-monolith/target/fast-monolith.jar
```
后端服务默认运行在: `http://localhost:48080`
### 4. 启动 Web 管理端
```bash
cd fast-web
# 安装依赖
npm install
# 本地开发
npm run dev
# 生产构建
npm run build:prod
```
Web 管理端默认运行在: `http://localhost:80`
### 5. 启动移动端(可选)
使用 HBuilderX 打开 `fast-minApp` 目录,编译运行到微信开发者工具或其他平台。
### 6. 访问系统
- **Web 管理端**: http://localhost:80
- **默认账号**: admin / admin123
---
## 💡 核心功能
### 1. 设备管理 (CPS)
- **产品管理**: 定义产品类型、协议类型、数据点位模板,支持产品分类管理
- **设备管理**: 设备注册、配置、状态监控,支持直连设备、网关设备、子设备
- **点位管理**: 设备数据点位的增删改查,支持属性、事件、功能三种点位类型
- **设备分组**: 按车间、产线、工序等维度对设备进行分组管理
- **二维码生成**: 自动生成设备二维码,支持扫码快速查看设备信息
- **数据采集**: 实时采集设备运行数据,支持历史数据存储和查询
### 2. 告警管理 (Warning)
- **告警配置**: 设置告警规则、阈值,支持数值范围、变化率等多种告警条件
- **告警记录**: 查看历史告警信息,支持按设备、时间、等级等多维度筛选
- **告警通知**: 多渠道告警通知(站内信、短信、邮件、企业微信等)
- **北向输出**: 告警数据自动转发到 MES、ERP 等第三方系统
### 3. 消息管理 (Message)
- **消息通道**: 配置 HTTP、MQTT、WebSocket 等多种消息推送通道
- **消息模板**: 定义消息模板,支持动态变量替换
- **消息记录**: 查看消息发送历史,支持失败重试
- **数据统计**: 消息发送统计分析,可视化展示发送趋势
### 4. 系统管理
- **用户管理**: 用户账号管理,支持批量导入导出
- **角色管理**: 角色权限分配,支持数据权限控制
- **菜单管理**: 动态菜单配置,支持多级菜单
- **部门管理**: 组织架构管理,支持树形结构
- **字典管理**: 数据字典维护,支持字典缓存
- **操作日志**: 系统操作记录,支持审计追溯
- **登录日志**: 用户登录记录,支持异常登录检测
### 5. 基础设施
- **代码生成**: 一键生成前后端 CRUD 代码,支持单表、树表、主子表
- **API 文档**: 基于 Swagger 自动生成接口文档,支持在线调试
- **定时任务**: 任务调度管理,支持 Cron 表达式配置
- **文件服务**: 支持本地存储、MinIO、阿里云 OSS 等多种存储方式
- **配置管理**: 系统参数配置,支持动态刷新
---
## 🔌 MES 系统集成
Fast IoT 平台提供完善的数据接口和北向输出能力,可与 MES、ERP、WMS 等系统无缝对接。
### 集成方式
#### 1. RESTful API 接口
平台提供标准的 HTTP API 接口,MES 系统可通过调用 API 获取实时数据:
```
// MES 系统调用示例 - 获取设备实时数据
GET /admin-api/cps/equipment/{equipmentCode}/realtime-data
// 返回示例
{
"code": 0,
"data": {
"equipmentCode": "SB_001",
"equipmentName": "注塑机A",
"status": "running",
"points": [
{ "code": "WD", "name": "温度", "value": 85.5, "unit": "℃" },
{ "code": "YL", "name": "压力", "value": 120.3, "unit": "MPa" }
],
"timestamp": "2024-01-15 10:30:00"
}
}
```
#### 2. MQTT 消息订阅
MES 系统可订阅 MQTT Topic,实时接收设备数据推送:
```
// MES 系统订阅主题
Topic: /iot/{productCode}/{equipmentCode}/attributePush
// 接收到的消息
{
"deviceCode": "SB_001",
"timestamp": 1705284600000,
"data": {
"WD": 85.5,
"YL": 120.3,
"SCSL": 1500
}
}
```
#### 3. 数据推送配置
通过平台的数据推送功能,可将数据自动推送到 MES 系统:
- **告警数据输出**: 设备告警时自动推送至 MES
- **生产数据输出**: 定时推送产量、工时等生产数据
- **状态变更输出**: 设备启停、故障等状态变化实时通知
### 典型应用场景
#### 场景 1: 注塑车间监控
```
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ 注塑机设备 │──────▶│ Fast IoT │──────▶│ MES 系统 │
│ (MQTT接入) │ │ 平台 │ │ │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
│ ▼
│ ┌─────────────────┐
│ │ - 生产工单管理 │
│ │ - 工艺参数下发 │
│ │ - 质量追溯 │
│ │ - OEE 分析 │
│ └─────────────────┘
▼
┌─────────────────┐
│ - 实时监控 │
│ - 告警通知 │
│ - 数据采集 │
└─────────────────┘
```
**实现步骤:**
1. 在 Fast IoT 中定义“注塑机”产品,配置温度、压力、周期等点位
2. 设备通过 MQTT 协议接入,实时上报运行数据
3. 配置数据推送规则,将生产数据推送到 MES 系统
4. MES 系统接收数据后,自动更新工单进度、计算 OEE
#### 场景 2: CNC 加工监控
- **刀具寿命管理**: 采集 CNC 主轴转速、进给速度,预测刀具寿命
- **加工计数**: 实时统计加工数量,与 MES 工单自动对比
- **异常停机分析**: 记录停机原因和时长,生成分析报告
#### 场景 3: 包装线追溯
- **批次管理**: 采集包装批次信息,关联原材料批次
- **质量检测**: 记录检测结果,不合格品自动告警
- **追溯查询**: 通过二维码追溯完整生产过程
---
## ⚙️ 场景化定制开发
Fast IoT 采用模块化设计,支持根据不同行业场景快速定制开发。
### 定制能力
#### 1. 自定义数据点位
根据具体设备类型,灵活定义数据点位:
```java
// 示例:为注塑机定义专属点位
@Entity
public class InjectionMoldingPoint {
private String moldTemperature; // 模具温度
private String injectionPressure; // 注射压力
private String cycleTime; // 成型周期
private String shotWeight; // 注射量
}
```
#### 2. 业务逻辑扩展
基于 Spring Boot 的模块化架构,轻松添加业务逻辑:
```java
@Service
public class ProductionStatisticsService {
/**
* 计算设备 OEE(整体设备效率)
*/
public OEE calculateOEE(String equipmentCode, LocalDate date) {
// 获取可用时间、性能效率、合格品率
// 根据具体业务逻辑计算
}
/**
* 生成生产报表
*/
public ProductionReport generateReport(String workshopCode, DateRange range) {
// 定制化报表逻辑
}
}
```
#### 3. 界面定制
前端采用 Vue + Element UI,可快速定制页面:
- 添加车间看板页面,展示设备运行状态
- 定制生产报表页面,显示产量趋势图
- 开发移动端巡检页面,支持扫码巡检
### 常见行业场景
| 行业 | 典型设备 | 关键数据 | 定制功能 |
|------|---------|---------|----------|
| 注塑 | 注塑机 | 温度、压力、周期 | 工艺参数优化、模具管理 |
| CNC | 加工中心 | 主轴转速、进给速度 | 刀具寿命预测、加工计数 |
| 包装 | 包装机 | 包装速度、计数 | 批次追溯、质量检测 |
| 装配 | 装配线 | 工位状态、节拍 | 装配追溯、防错检测 |
| 仓储 | AGV、堆垛机 | 位置、载重 | 库存管理、路径优化 |
---
## 📊 数据库设计
### 核心表说明
| 表名 | 说明 |
|------|------|
| cps_product | 产品表 |
| cps_product_sort | 产品分类表 |
| cps_product_point | 产品点位表 |
| cps_equipment | 设备表 |
| cps_equipment_point | 设备点位表 |
| cps_rule | 规则引擎表 |
| cps_event_record | 事件记录表 |
| warning_configuration | 告警配置表 |
| message_app | 消息应用表 |
| message_template | 消息模板表 |
详细数据库设计请参考 `init-db/fast_iot.sql`
---
## 🔧 配置说明
### 后端配置
主要配置文件: `fast-monolith/src/main/resources/application.yml`
```yaml
server:
port: 48080
spring:
datasource:
url: jdbc:mysql://localhost:3306/fast_iot
username: root
password: your_password
redis:
host: localhost
port: 6379
# MQTT 配置
emqx:
host: localhost
port: 1883
```
### 前端配置
Web 端环境变量: `.env.dev` / `.env.prod`
```env
VUE_APP_BASE_API = 'http://localhost:48080/admin-api'
```
移动端配置: `fast-minApp/config.js`
```javascript
module.exports = {
BASE_API: 'http://your-server-ip:48080/admin-api',
WS_URL: 'ws://your-server-ip:48080/websocket'
}
```
---
## 📝 开发指南
### 后端开发
#### 添加新模块
1. 在 `fast-monolith` 中创建模块目录
2. 定义 Entity、Mapper、Service、Controller
3. 使用 MyBatis Plus 简化 CRUD 操作
4. 添加权限注解 `@PreAuthorize`
#### 代码示例
```java
@RestController
@RequestMapping("/cps/equipment")
public class EquipmentController {
@Resource
private EquipmentService equipmentService;
@GetMapping("/page")
@PreAuthorize("@ss.hasPermission('cps:equipment:query')")
public CommonResult> getEquipmentPage(
@Valid EquipmentPageReqVO pageReqVO) {
return success(equipmentService.getEquipmentPage(pageReqVO));
}
}
```
### 前端开发
#### 添加新页面
1. 在 `src/views` 创建页面组件
2. 在 `src/api` 定义 API 接口
3. 在路由配置中添加路由
4. 在菜单管理中配置菜单
#### 代码示例
```
// API 定义
import request from '@/utils/request'
export function getEquipmentList(params) {
return request({
url: '/cps/equipment/page',
method: 'get',
params
})
}
// 页面调用
import { getEquipmentList } from '@/api/cps/equipment'
export default {
methods: {
async loadEquipment() {
const res = await getEquipmentList(this.queryParams)
this.equipmentList = res.data.list
}
}
}
```
---
## 📦 部署
### Docker 部署
```
# 后端 Dockerfile 示例
FROM openjdk:8-jre-alpine
COPY fast-monolith/target/*.jar app.jar
EXPOSE 48080
ENTRYPOINT ["java", "-jar", "/app.jar"]
```
```bash
# 构建镜像
docker build -t fast-iot-server .
# 运行容器
docker run -d -p 48080:48080 --name fast-iot fast-iot-server
```
### Nginx 配置
```
server {
listen 80;
server_name your-domain.com;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /admin-api/ {
proxy_pass http://localhost:48080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /websocket {
proxy_pass http://localhost:48080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
```
---
## 📄 开源协议
本项目基于 [MIT License](LICENSE) 开源协议,个人和企业可 100% 免费使用。
---
## 📞 联系方式
- **项目地址**: [Gitee](https://gitee.com/ka-la-ok/fast-iot)
- **问题反馈**: [Issues](https://gitee.com/ka-la-ok/fast-iot/issues)
- **联系方式(QQ)**: 304288387
---
## ⭐ Star History
如果这个项目对你有帮助,请给我们一个 Star ⭐,这是对我们最大的鼓励!
---
**Made with ❤️ by Fast IoT Team**
[⬆ 回到顶部](#fast-iot---快速物联网平台)