214 lines
6.6 KiB
Markdown
214 lines
6.6 KiB
Markdown
# FastBee 物联网平台
|
||
|
||
基于 **若依(RuoYi)v3.8.5** 框架构建的开源物联网平台,提供设备接入、数据采集、协议解析、规则引擎、告警监控、视频接入等一站式 IoT 解决方案。
|
||
|
||
## 平台简介
|
||
|
||
FastBee 是一个功能完备的企业级物联网基础平台,支持多协议设备接入、海量时序数据处理、可视化场景编排与数据展示。
|
||
|
||
- 后端采用 Spring Boot 2.5.14 + Spring Security + Redis + JWT,多模块化架构
|
||
- 前端包含三个独立应用:Vue 2 管理后台(yack-web)、Vue 3 低代码可视化(yack-view)、UniApp 移动端(yack-app)
|
||
- 设备接入支持 MQTT、TCP、CoAP、HTTP、WebSocket、SIP(GB28181)等多种协议
|
||
- 内置 MQTT Broker(Netty 实现),可选择内嵌模式或连接外部 EMQX
|
||
- 时序数据存储支持 MySQL 及 TDengine
|
||
- 通知系统支持多渠道推送(邮件、短信等)
|
||
- 内嵌 LiteFlow 规则引擎,支持 IoT 场景自动化编排
|
||
|
||
## 技术栈
|
||
|
||
### 后端
|
||
|
||
| 组件 | 技术 |
|
||
|:---|:---|
|
||
| 核心框架 | Spring Boot 2.5.14 |
|
||
| 安全框架 | Spring Security + JWT |
|
||
| ORM | MyBatis(若依框架集成) |
|
||
| 数据库连接池 | Druid |
|
||
| 缓存 | Redis(Redisson) |
|
||
| MQTT Broker | Netty 自研 / EMQX |
|
||
| 消息队列 | RocketMQ |
|
||
| 规则引擎 | LiteFlow |
|
||
| 时序数据库 | MySQL / TDengine |
|
||
| 协议服务器 | Netty |
|
||
| 代码生成器 | Velocity 模板 |
|
||
| 项目管理 | Maven(多模块) |
|
||
|
||
### 前端
|
||
|
||
| 应用 | 技术 | 用途 |
|
||
|:---|:---|:---|
|
||
| yack-web | Vue 2 + Element UI + Vuex | 管理后台 |
|
||
| yack-view | Vue 3 + TypeScript + Vite + Naive UI + Pinia | 低代码可视化设计器 |
|
||
| yack-app | UniApp + uView 2.0 | 移动端(iOS/Android/微信小程序) |
|
||
|
||
## 架构
|
||
|
||
### 数据流
|
||
|
||
```
|
||
设备 → 协议服务器(Netty,端口因协议而异)
|
||
→ iot-server-core 消息分发器
|
||
→ RocketMQ
|
||
→ fastbee-record 持久化
|
||
→ MySQL / TDengine
|
||
→ WebSocket 推送至前端
|
||
```
|
||
|
||
### 模块结构
|
||
|
||
```
|
||
fastbee-admin/ # Spring Boot 入口,Web 层
|
||
fastbee-framework/ # 安全配置、拦截器、核心框架
|
||
fastbee-common/ # 公共工具类、领域模型、注解、常量
|
||
fastbee-open-api/ # 对外 REST API
|
||
fastbee-service/
|
||
fastbee-iot-service/ # IoT 业务逻辑
|
||
fastbee-system-service/ # 系统管理(用户、角色、菜单)
|
||
fastbee-server/
|
||
base-server/ # 服务器抽象基类
|
||
iot-server-core/ # 消息分发核心
|
||
mqtt-broker/ # 内嵌 MQTT Broker
|
||
http-server/ # HTTP 设备接入(端口 8081)
|
||
tcp-server/ # TCP 服务器(端口 8888)
|
||
coap-server/ # CoAP 服务器(端口 5683)
|
||
sip-server/ # SIP/GB28181 视频监控
|
||
boot-strap/ # 服务器启动引导
|
||
fastbee-protocol/ # 协议编解码
|
||
base/ # 协议抽象层
|
||
collect/ # 数据采集协议实现
|
||
fastbee-iot-data/ # 时序数据存储(TDengine)
|
||
fastbee-mq/ # RocketMQ 集成
|
||
fastbee-notify/ # 多渠道通知
|
||
fastbee-record/ # 设备数据记录/持久化
|
||
fastbee-plugs/
|
||
generator/ # 代码生成器
|
||
quartz/ # 定时任务
|
||
ruleEngine/ # LiteFlow 规则引擎
|
||
oss/ # 对象存储(S3/阿里云 OSS)
|
||
mqtt-client/ # MQTT 客户端
|
||
oauth/ # OAuth 2.0(JustAuth)
|
||
pay/ # 支付集成
|
||
http/ # HTTP 客户端(Forest)
|
||
```
|
||
|
||
## 核心功能
|
||
|
||
- **多协议接入**:MQTT、TCP、CoAP、HTTP、WebSocket、SIP(GB28181)
|
||
- **设备管理**:注册、分组、共享、固件升级
|
||
- **产品管理**:产品定义、物模型、分类管理、授权码
|
||
- **数据采集**:Modbus 轮询、自定义协议解析
|
||
- **告警监控**:告警规则、告警历史、通知推送
|
||
- **场景编排**:LiteFlow 规则引擎、数据桥接(HTTP/MQTT/数据库)
|
||
- **时序数据**:支持 TDengine 高性能时序存储
|
||
- **视频监控**:GB28181 国标协议接入、PTZ 控制、录像回放
|
||
- **可视化**:低代码拖拽式大屏设计
|
||
- **规则引擎**:图形化场景编排,支持脚本
|
||
- **通知系统**:多渠道消息推送
|
||
- **多租户**:内置多租户数据隔离
|
||
- **代码生成**:一键生成前后端 CRUD 代码
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- JDK 1.8+
|
||
- Maven 3.6+
|
||
- MySQL 5.7+
|
||
- Redis
|
||
- RocketMQ(可选)
|
||
- TDengine(可选)
|
||
- EMQX(可选,使用外部 MQTT Broker 时)
|
||
|
||
### 本地开发
|
||
|
||
```bash
|
||
# 1. 初始化数据库
|
||
执行 sql/yack-init.sql
|
||
|
||
# 2. 修改配置
|
||
编辑 application-dev.yml,配置 MySQL、Redis 连接信息
|
||
|
||
# 3. 启动后端
|
||
mvn clean package -DskipTests
|
||
cd fastbee-admin/target
|
||
java -jar fastbee-admin.jar --spring.profiles.active=dev
|
||
|
||
# 4. 启动管理后台(yack-web)
|
||
cd yack-web
|
||
npm install
|
||
npm run dev
|
||
|
||
# 5. 启动可视化设计器(yack-view)
|
||
cd yack-view
|
||
pnpm install
|
||
pnpm dev
|
||
|
||
# 6. 启动移动端(yack-app)
|
||
cd yack-app
|
||
npm install
|
||
# 使用 HBuilderX 打开并运行
|
||
```
|
||
|
||
### API 文档
|
||
|
||
启动服务后访问:`http://localhost:8080/swagger-ui/index.html`
|
||
|
||
### 协议端口
|
||
|
||
| 协议 | 端口 | 说明 |
|
||
|:---|:---:|:---|
|
||
| MQTT | 1883 | 未加密 TCP |
|
||
| MQTTS | 8883 | 加密 TCP |
|
||
| WS | 8083 | WebSocket |
|
||
| WSS | 8084 | 加密 WebSocket |
|
||
| HTTP 设备接入 | 8081 | HTTP 协议 |
|
||
| TCP | 8888 | TCP 协议 |
|
||
| CoAP | 5683 | CoAP 协议 |
|
||
|
||
## 部署
|
||
|
||
### Docker 部署
|
||
|
||
```bash
|
||
cd docker
|
||
docker-compose up -d
|
||
```
|
||
|
||
### 前端部署
|
||
|
||
- **yack-web**:`npm run build:prod`,产物部署至 Nginx
|
||
- **yack-view**:`pnpm build`,产物部署至 Nginx `/var/data/nginx/view/`
|
||
|
||
## 数据库
|
||
|
||
FastBee 共使用 117 张表,涵盖以下业务领域:
|
||
|
||
- 设备管理、产品管理、物模型
|
||
- 告警监控、场景编排、规则引擎
|
||
- 网关与子设备、Modbus 配置
|
||
- 固件升级、SCADA 可视化
|
||
- SIP 视频监控、OAuth 认证
|
||
- 系统管理(若依 RBAC)、通知系统
|
||
- 对象存储、代码生成、Quartz 定时任务
|
||
|
||
完整的数据库初始化脚本位于 `sql/yack-init.sql`。
|
||
|
||
## 相关项目
|
||
|
||
| 项目 | 技术栈 | 说明 |
|
||
|:---|:---|:---|
|
||
| yack-web | Vue 2 + Element UI | 管理后台 |
|
||
| yack-view | Vue 3 + Vite + Naive UI | 低代码可视化 |
|
||
| yack-app | UniApp + uView | 移动端 |
|
||
|
||
## 开源协议
|
||
|
||
本项目基于 [MIT 许可证](LICENSE) 开源。
|
||
|
||
## 致谢
|
||
|
||
- [若依(RuoYi)](https://gitee.com/y_project/RuoYi) — 提供优秀的后台开发框架
|
||
- [Element UI](https://github.com/ElemeFE/element)
|
||
- [Naive UI](https://github.com/tusen-ai/naive-ui)
|
||
- [GoView](https://github.com/dromara/GoView)
|