# 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://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.7.18-brightgreen.svg)](https://spring.io/projects/spring-boot) [![Vue](https://img.shields.io/badge/Vue-2.7.14-brightgreen.svg)](https://vuejs.org/) [![JDK](https://img.shields.io/badge/JDK-1.8+-orange.svg)](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---快速物联网平台)