# fastboot-iot **Repository Path**: bobsongforever/fastboot-iot ## Basic Information - **Project Name**: fastboot-iot - **Description**: FastIot 是一个基于 Spring Boot 构建的企业级物联网平台,提供设备管理、协议解析、数据采集、告警处理等核心功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-17 - **Last Updated**: 2026-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastIot 物联网平台 FastIot 是一个基于 Spring Boot 构建的企业级物联网平台,提供设备管理、协议解析、数据采集、告警处理等核心功能。 ## 核心特性 - **多协议支持**:支持自定义二进制协议解析,MQTT 数据采集 - **设备状态管理**:基于状态机的设备生命周期管理(注册/在线/离线/故障/禁用) - **多数据源存储**:同时支持 MySQL 和 MongoDB 存储 - **消息队列**:支持 Redis Stream 和 RocketMQ 两种消息队列实现 - **两级缓存架构**:本地缓存 + 实体缓存,提升系统性能 - **告警规则引擎**:基于 SpEL 表达式的灵活告警规则配置 ## 模块架构 ``` fastboot-iot/ ├── fastboot-iot-api # API 服务接口层(Feign 客户端) ├── fastboot-iot-biz # 业务逻辑层 ├── fastboot-iot-common # 公共组件(常量、实体、DTO、枚举) ├── fastboot-iot-data-mongodb # MongoDB 数据存储实现 ├── fastboot-iot-data-mysql # MySQL 数据存储实现 ├── fastboot-iot-datcol-mqtt # MQTT 数据采集模块 ├── fastboot-iot-deploy # 生产环境部署入口 ├── fastboot-iot-deploy-local # 本地开发部署入口 ├── fastboot-iot-mq-redis # Redis 消息队列实现 ├── fastboot-iot-mq-rocketmq # RocketMQ 消息队列实现 ├── fastboot-iot-parse # 协议解析核心模块 └── fastboot-iot-task-scheduling # 任务调度模块 ``` ## 技术栈 - **后端框架**:Spring Boot 3.2.x - **数据库**:MySQL 8.0+、MongoDB 4.0+ - **缓存**:Redis 6.0+ - **消息队列**:Redis Stream、RocketMQ - **通信协议**:MQTT - **ORM 框架**:MyBatis-Plus - **对象映射**:MapStruct - **日志**:Lombok + SLF4J - **构建工具**:Gradle ## 快速开始 ### 环境要求 - JDK 17+ - MySQL 8.0+ - MongoDB 4.0+ - Redis 6.0+ - Gradle 8.5.0 ### 配置说明 修改 `fastboot-iot-deploy/src/main/resources/application.yml` 配置文件: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/fastboot_iot username: root password: your_password data: mongodb: uri: mongodb://localhost:27017/fastboot_iot redis: host: localhost port: 6379 # MQTT 配置 mqtt: brokerUrl: tcp://localhost:1883 clientId: fastboot-iot username: password: topic: iot/# ``` ### 构建部署 ```bash # 编译所有模块 ./gradlew clean build -x test # 运行本地环境(端口 7029) ./gradlew :fastboot-iot-deploy-local:bootRun # 运行生产环境 java -jar fastboot-iot-deploy/build/libs/fastboot-iot-deploy.jar ``` ## 功能模块 ### 设备管理 提供设备的增删改查、设备状态管理、心跳检测等功能。 | 接口 | 说明 | |------|------| | `POST /iotDevice` | 创建设备 | | `PUT /iotDevice` | 更新设备 | | `GET /iotDevice/{id}` | 获取设备详情 | | `GET /iotDevice/page` | 分页查询设备 | ### 协议管理 支持自定义通信协议配置,包括协议解析规则、数据项定义等。 | 接口 | 说明 | |------|------| | `POST /iotProtocol` | 创建协议 | | `PUT /iotProtocol` | 更新协议 | | `GET /iotProtocol/{id}` | 获取协议详情 | | `GET /iotProtocol/page` | 分页查询协议 | ### 数据采集 支持实时数据、历史数据、折线图数据查询。 | 接口 | 说明 | |------|------| | `GET /iotDeviceData/page` | 分页查询设备数据 | | `GET /iotDeviceData/realData` | 获取实时数据 | | `GET /iotDeviceData/historyData` | 获取历史数据 | | `GET /iotDeviceData/lineData` | 获取折线图数据 | ### 告警管理 支持告警规则配置、告警数据查询、告警触发等功能。 | 接口 | 说明 | |------|------| | `POST /iotAlarmRule` | 创建告警规则 | | `PUT /iotAlarmRule` | 更新告警规则 | | `DELETE /iotAlarmRule/{id}` | 删除告警规则 | | `GET /iotAlarmRule/page` | 分页查询告警规则 | | `GET /iotAlarmData/page` | 分页查询告警数据 | ### 消息队列 平台内置多种消息主题: | 主题 | 说明 | |------|------| | `IOT_ALARM_INFO_TOPIC` | 告警信息消息 | | `IOT_DEVICE_TOPIC` | 设备状态消息 | | `IOT_PROTOCOL_DATA_TOPIC` | 协议数据消息 | ## 告警规则配置 支持通过 SpEL 表达式配置触发条件: ```java // 示例规则 value > 100 // 数值大于 100 value >= 50 and value <= 100 // 数值在 50-100 之间 value < 0 or value > 1.6 // 数值小于 0 或大于 1.6 value > Math.random() * 100 // 随机阈值 ``` ## 设备状态机 设备状态流转: ``` UNREGISTERED → REGISTERED → ONLINE ↔ OFFLINE ↘ FAULT → REPAIR → ONLINE ↘ DISABLED ←→ ENABLED ``` | 状态 | 说明 | |------|------| | UNREGISTERED | 未注册 | | REGISTERED | 已注册 | | ONLINE | 在线 | | OFFLINE | 离线 | | FAULT | 故障 | | DISABLED | 禁用 | ## 缓存策略 平台采用两级缓存架构: 1. **本地缓存**:用于存储热点数据,提升查询性能 2. **实体缓存**:使用 Redis 存储设备状态等实体数据 相关缓存常量: - `IOT_PROTOCOL_ITEM_CACHE`:协议项缓存 - `IOT_LIVE_DATA_KEY_PREFIX`:实时数据缓存前缀 - `IOT_ALARM_RULE_KEY_PREFIX`:告警规则缓存前缀 ## 扩展开发 ### 添加新的协议解析器 1. 继承 `AbstractProtocolParser` 类 2. 实现 `parse` 方法 3. 注册为 Spring Bean ### 添加新的消息队列实现 1. 实现对应的 `MessageProducer` 和 `MessageConsumer` 接口 2. 在对应模块中提供实现类 ## 数据库表结构 核心数据表: - `iot_device`:设备信息表 - `iot_protocol`:协议配置表 - `iot_protocol_item`:协议解析项表 - `iot_alarm_rule`:告警规则表 - `iot_alarm_data`:告警数据表 - `iot_basic_data`:设备基础数据表 - `iot_status_data`:设备状态数据表 初始化脚本位于 `sql/basic.sql`。 ## License 本项目遵循 [FastBoot License](LICENSE)。