Skip to content

物联网系统 ​

FastBee 物联网系统概述图

FastBee物联网平台是一个功能丰富的物联网解决方案,专为中小企业和个人用户设计。该平台通过提供一系列易于使用的工具和功能,使用户能够有效地管理和控制各种智能设备。以下是对FastBee物联网平台的详细介绍:

页面导读 ​

页面内容FastBee 物联网平台的整体介绍:项目背景、系统功能、技术栈、应用场景与系统架构。
适用场景适合初次了解商业版平台能力与架构的读者,建立对产品的整体认知。
前置条件无;后续可按建议路径继续阅读架构设计与安装部署章节。

版本对比 ​

FastBee 提供开源版、商业版、集群版三个版本,核心差异如下;完整授权政策与逐项功能清单见商用授权。

维度开源版商业版集群版
许可协议AGPL v3,免费、限非商业用途永久商业授权(安装证书)永久商业授权(安装证书)
源码与更新源码公开,Gitee/GitHub 更新授权后经 Git 私服更新,赠送一年源码更新同商业版
部署形态Docker Compose 单机一键部署单机部署(支持 Docker Compose 快速安装)FMQ 服务集群 + Web 集群,配合 Kafka 与负载均衡实现高可用
接入协议MQTT、GB/T 28181(仅直播)增加 TCP、UDP、CoAP、HTTP、Modbus、JT808 等协议与商业版相同
功能范围产品/设备/物模型、规则脚本、权限管理等核心能力增加可视化大屏、告警中心、多租户、OTA 固件升级、数据桥接、工单管理、物联卡管理等(Web 组态、智能音响为可选配模块)与商业版功能相同,支持设备量不同
适用场景个人学习与非商业使用中小企业商业项目设备接入规模大、要求高可用的商业项目

一、平台简介 ​

  • 项目背景:原名为物美智能(wumei-smart),后更名为蜂信物联(FastBee)。这一变更不仅反映了品牌的更新,也标志着其在物联网领域的发展和服务范围的扩展。
  • 主要支持:平台后端采用Spring Boot框架,前端使用Vue技术等,这些技术的选择确保了平台的易用性和良好的用户体验。

二、系统功能 ​

  • 产品管理:支持产品详情、物模型、分类及设备授权等功能,有助于企业更好地组织和管理其智能产品。
  • 设备管理:提供设备详情、分组、日志记录、实时状态监控等管理功能,确保设备运行的高效与安全。
  • 物模型管理:允许定义设备的属性、功能和事件,实现设备与云端的有效交互。
  • 规则引擎:支持基于groovy(语法同java)的规则编写,使得系统能够自动处理复杂的业务逻辑。
  • 场景联动:支持直接或可视化配置自动化场景,实现智能设备之间的无缝协作。
  • 告警中心:能够对接多种通讯方式如语音、短信和企业微信,及时通知设备异常或故障,保证快速响应。
  • 多租户系统:支持数据隔离和独立配置,适合多租户环境,增强系统的灵活性和安全性。
  • 视频监控接入:支持GB/T28181协议的监控设备,提供直播、录制回放及云台控制功能,适用于安防监控需求。
  • 场景管理:支持聚合多个设备展示,同时可扩展录入、运算型变量,支持复杂的数据运算。
  • 数据桥接:作为与外部数据系统的桥梁,支持数据的输入输出等功能。
  • 数据中心:支持生成数据报表,查看历史数据,对设备进行数据分析。
  • 通讯协议:支持丰富的设备通讯协议,包括:Mqtt、Modbus、Tcp、GB28182、Http、Coap等。
  • 物联网卡:管理设备连接的SIM卡,支持对接不同经销商平台,可查看卡状态、流量,支持流量告警。
  • 工单管理:支持对设备或资产的维护、维修、检查等任务进行自动化、智能化和全流程化管理。

三、技术栈 ​

  • 后端技术:包括Spring Boot, MyBatis, Spring Security, Jwt, Redis, TDengine等,确保了后端服务的稳定性和高效性。
  • 前端技术:使用ES6, ES7, Vue, Vuex, uView, H5等现代前端技术,提升了用户界面的交互性和视觉体验。
  • 移动端支持:支持微信小程序、安卓和苹果等多种移动平台,通过Uniapp实现跨平台应用开发,方便用户在不同设备上进行操作和管理。

四、应用场景 ​

FastBee适用于智能家居、智慧办公、智慧社区、农业监测、水利监测以及工业控制等多种场景。这些应用场景覆盖了从家庭到工业级别的广泛需求,展示了FastBee在物联网领域的广泛应用潜力。

FastBee 应用场景示意图

五、系统架构 ​

┌──────────────────────────────────────────────────────────────────┐
│                        浏览器/移动端                              │
│         Vue2 Web(PC)    +    Vant(H5 / 小程序)               │
└───────────────────────────────┬──────────────────────────────────┘
                                │ HTTP REST / WebSocket(MQTT)
                                ▼
┌──────────────────────────────────────────────────────────────────┐
│                       Nginx(反向代理)                           │
│           /  → 静态前端资源          /prod-api/ → 后端           │
└───────────────────────────────┬──────────────────────────────────┘
                                │
                                ▼
┌──────────────────────────────────────────────────────────────────┐
│                  Spring Boot 服务(8080)                         │
│  ┌────────────────────────────────────────────────────────────┐  │
│  │                fastbee-open-api(Controller 层)           │  │
│  │  device / product / ruleEngine / media / system / ...     │  │
│  └────────────────────────┬───────────────────────────────────┘  │
│  ┌─────────────────────────▼──────────────────────────────────┐  │
│  │               fastbee-service(Service 层)                │  │
│  │     IotService / SceneService / NotifyService / ...        │  │
│  └────────────────────────┬───────────────────────────────────┘  │
│  ┌─────────────────────────▼──────────────────────────────────┐  │
│  │                  fastbee-server(协议接入)                 │  │
│  │   MQTT Broker(1883) / HTTP(8081) / CoAP(5683) / TCP(8888) │  │
│  └────────────────────────────────────────────────────────────┘  │
└───────────┬──────────────────┬────────────────────┬──────────────┘
            │                  │                    │
         MySQL              Redis              TDengine
      (元数据/配置)         (缓存/实时值)      (时序历史数据)

六、代码结构 ​

fastbee/
├── vue/                        ← 前端 Vue2 项目
│   ├── src/
│   │   ├── api/                ← 各模块 API 请求函数
│   │   ├── assets/             ← 静态资源(图片/图标/样式)
│   │   ├── components/         ← 全局公共组件(28 个)
│   │   ├── directive/          ← 全局自定义指令
│   │   ├── lang/               ← 国际化语言包
│   │   ├── layout/             ← 主框架布局
│   │   ├── plugins/            ← Vue 插件注册
│   │   ├── router/             ← 路由配置
│   │   ├── store/              ← Vuex 状态管理
│   │   ├── utils/              ← 工具函数(request/mqttTool 等)
│   │   └── views/              ← 业务页面视图
│   ├── package.json
│   └── vue.config.js
│
├── springboot/                 ← 后端 Spring Boot 多模块项目
│   ├── fastbee-admin/          ← 管理端控制器 + 配置
│   ├── fastbee-open-api/       ← Open API 接口层(IoT 业务 Controller)
│   ├── fastbee-service/        ← 业务服务层(iot-service / system-service)
│   ├── fastbee-server/         ← 协议接入服务
│   │   ├── iot-server-core/    ← IoT 核心服务逻辑
│   │   ├── mqtt-broker/        ← 内置 Netty MQTT Broker
│   │   ├── http-server/        ← HTTP 设备接入
│   │   ├── coap-server/        ← CoAP 设备接入
│   │   ├── sip-server/         ← SIP 视频接入
│   │   └── boot-strap/         ← 启动入口
│   ├── fastbee-protocol/       ← 协议解析(Modbus/自定义)
│   ├── fastbee-mq/             ← 消息队列集成
│   ├── fastbee-notify/         ← 通知服务(短信/邮件/微信等)
│   ├── fastbee-plugs/          ← 插件(OSS/OAuth/Quartz/代码生成)
│   ├── fastbee-iot-data/       ← IoT 数据处理
│   ├── fastbee-record/         ← 录像服务
│   ├── fastbee-common-extend/  ← 公共工具扩展
│   └── sql/                    ← 数据库初始化/升级脚本
│
├── docker/                     ← Docker Compose 部署文件
└── sdk/                        ← 设备端 SDK

七、功能模块说明 ​

设备管理 ​

功能说明
设备注册/导入手动新增或批量 Excel 导入设备
设备分配/回收按机构/用户维度分配设备,支持回收
状态实时刷新通过 MQTT 订阅 /+/{sn}/status/post 实时更新在线/离线状态
设备二维码生成绑定二维码,支持打印
OTA 固件升级版本管理 + 升级任务下发
指令下发物模型属性下发 / 功能调用
影子模式设备离线时通过影子缓存最新值

页面路由:/iot/device/list → views/iot/device/index.vue

产品管理 ​

功能说明
产品模板定义设备类型及物模型
物模型属性(Property)/ 功能(Function)/ 事件(Event)三元素
协议配置MQTT / HTTP / CoAP / TCP / Modbus / JT808
产品发布发布后设备不可再修改物模型
拖拽编辑器可视化配置设备运行状态面板

规则引擎 ​

功能说明
场景联动触发器 → 条件 → 动作 可视化编排(LiteFlow 驱动)
设备告警基于阈值/范围/布尔触发,支持静默时间
规则脚本Groovy/JavaScript 脚本处理原始数据
一键触发手动触发场景联动

数据中心 ​

功能说明
实时数据设备最新上报的物模型值(Redis 缓存)
历史数据按时间段查询(TDengine 时序数据库)
数据报表定时生成 Excel,支持邮件通知
数据导出历史数据下载

视频监控 ​

功能说明
设备接入支持 GB28181(SIP)协议
实时播放RTMP / RTSP / FLV / HLS / WebRTC
录像回放按时间段查询历史录像(ZLMediaKit)
云台控制PTZ 指令下发
语音对讲SIP TCP 主动方式

通知服务 ​

支持渠道:短信(阿里云/腾讯)、邮件、微信公众号、企业微信、钉钉、HTTP 推送、MQTT 推送。

系统管理 ​

用户/角色/机构(多租户)/ 菜单/字典/日志/系统监控/代码生成。

八. API 接口文档 ​

完整接口文档可通过 Swagger 访问:http://localhost:8080/swagger-ui/index.html(开发环境)

所有接口统一响应格式:

json
{
  "code": 200,
  "msg": "操作成功",
  "data": { ... }
}

分页列表响应格式:

json
{
  "code": 200,
  "msg": "操作成功",
  "rows": [ ... ],
  "total": 100
}

认证接口 ​

方法路径说明
POST/login账号密码登录
POST/register用户注册
POST/logout退出登录
GET/getInfo获取当前用户信息
GET/captchaImage获取图形验证码
POST/auth/sms/login短信验证码登录
GET/auth/login/{loginId}第三方社交登录
POST/auth/ssoLoginSSO 单点登录

登录示例:

bash
POST /login
Content-Type: application/json

{
  "username": "admin",
  "password": "admin123",
  "code": "1234",
  "uuid": "xxx-xxx-xxx",
  "sourceType": 1
}
json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs..."
  }
}

后续请求需携带头:Authorization: Bearer {token}

设备接口(/iot/device) ​

方法路径权限说明
GET/iot/device/listiot:device:list设备分页列表
GET/iot/device/shortListiot:device:list设备简短列表(首页)
GET/iot/device/alliot:device:list所有设备简短列表
GET/iot/device/{deviceId}iot:device:query设备详情
GET/iot/device/getDeviceBySerialNumber/{sn}iot:device:query按序列号查询
POST/iot/deviceiot:device:add新增设备
PUT/iot/deviceiot:device:edit修改设备
DELETE/iot/device/{deviceId}iot:device:remove删除设备
POST/iot/device/exportiot:device:export导出 Excel
POST/iot/device/assignmentiot:device:assignment分配设备给机构
POST/iot/device/user/assignmentiot:device:assignment分配设备给用户
POST/iot/device/recoveryiot:device:recovery回收设备
GET/iot/device/runningStatusiot:device:query运行状态
GET/iot/device/thingsModelValue/{deviceId}iot:device:query物模型实时值
GET/iot/device/statistic-监测数据统计

产品接口(/iot/product) ​

方法路径说明
GET/iot/product/list产品分页列表
GET/iot/product/shortList产品简短列表
GET/iot/product/{productId}产品详情
POST/iot/product新增产品
PUT/iot/product修改产品
DELETE/iot/product/{productId}删除产品
PUT/iot/product/status发布/下架产品
POST/iot/product/copy?productId=复制产品

物模型接口(/iot/thingsModel) ​

方法路径说明
GET/iot/thingsModel/list物模型列表
POST/iot/thingsModel新增物模型
PUT/iot/thingsModel修改物模型
DELETE/iot/thingsModel/{modelId}删除物模型
POST/iot/thingsModel/sync同步到设备

规则引擎接口(/iot/scene) ​

方法路径说明
GET/iot/scene/list场景联动列表
POST/iot/scene新增场景
PUT/iot/scene修改场景
DELETE/iot/scene/{sceneId}删除场景
POST/iot/scene/trigger/{sceneId}手动触发

数据中心接口(/iot/datacenter) ​

方法路径说明
GET/iot/datacenter/latestData最新数据
GET/iot/datacenter/historyData历史数据

九、开发规范 ​

前端命名规范 ​

类型规范示例
文件/目录kebab-casedevice-edit.vue
组件名PascalCaseDeviceCard
变量/方法camelCasedeviceList, handleQuery()
常量UPPER_CASEMAX_PAGE_SIZE
API 文件camelCasedevice.js, product.js
CSS 类名kebab-case.device-item

后端命名规范 ​

类型规范示例
包名全小写,点分隔com.fastbee.iot.service
类名PascalCaseDeviceServiceImpl
接口名I + PascalCaseIDeviceService
方法名camelCaselistDeviceByGroup()
常量UPPER_SNAKEMAX_RETRY_COUNT
数据库表小写下划线iot_device
数据库字段小写下划线serial_number

API 设计规范 ​

  • RESTful 风格,资源名使用名词复数
  • 路由前缀统一:/iot/(IoT 模块)、/system/(系统模块)
  • Controller 继承 BaseController,使用 @PreAuthorize 做权限校验
  • 使用 @Log 注解记录操作日志
  • 返回统一用 AjaxResult.success() / getDataTable()
java
@PreAuthorize("@ss.hasPermi('iot:device:add')")
@Log(title = "设备", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("新增设备")
public AjaxResult add(@Validated @RequestBody Device device) {
    return toAjax(deviceService.insertDevice(device));
}

十、常见问题解答 ​

前端 ​

Q:npm install 后启动报 patch-package 相关错误?

原因:node_modules 未完整安装或缓存问题。

bash
# 清除缓存重装
rm -rf node_modules package-lock.json
npm cache clean --force
npm install

Q:开发环境接口 404?

检查 .env.development 中 VUE_APP_SERVER_API_URL 是否正确指向后端,并确认后端已启动。

Q:Element UI 弹框(MessageBox)无法弹出?

确认组件已全局注册,项目中通过 Vue.use(Element) 在 main.js 中完成注册,不需要单独引入。

Q:MQTT 连接失败?

  1. 确认 VUE_APP_MQTT_SERVER_URL 配置正确(开发环境 ws://localhost:8083/mqtt)
  2. 确认内置 Broker 已启动(server.broker.enabled: true + server.broker.websocket-port: 8083)
  3. 检查 Token 是否有效(mqttTool 用 Token 作为 MQTT password)

Q:vue-treeselect 出现版本冲突?

项目中统一使用 @riophae/vue-treeselect@0.4.0,不要混用其他版本。

Q:vue-qr 组件导入报错?

javascript
// ✅ 正确方式(默认导入)
import vueQr from 'vue-qr';
// ❌ 错误方式(命名导入会失败)
import { VueQr } from 'vue-qr';

后端 ​

Q:启动报 license 相关错误?

在 application-dev.yml 中配置正确的证书路径:

yaml
license:
  subject: common
  licensePath: classpath:license.lic

向官方申请证书文件(license.lic)放入 resources 目录。

Q:TDengine 报连接超时?

  1. 确认 TDengine 已启动(默认端口 6041)
  2. 检查 application-dev.yml 中 taos 数据源配置
  3. 如不需要时序数据库,可将 taos.enabled: false 跳过

Q:规则引擎不触发?

  1. 确认场景联动状态为"已启用"
  2. 检查触发器条件(数值范围、比较符号)
  3. 查看日志中 LiteFlow 执行链路

Q:设备上线但后台看不到在线状态?

  1. 检查 MQTT 认证(EMQX Webhook 配置)
  2. 确认设备 serialNumber 与系统录入一致
  3. 查看后端日志是否有设备状态处理记录

Q:如何切换 EMQX 和内置 Broker?

yaml
# application.yml
server:
  broker:
    enabled: true   # true = 内置 Netty Broker
                    # false = 使用外部 EMQX(需配置 spring.mqtt.host-url)

Q:多租户数据隔离如何实现?

平台通过 tenant_id(机构 ID)字段隔离数据。Controller 层从 SecurityUtils.getLoginUser() 获取当前登录用户的机构信息,Service 层查询时自动过滤。

Q:Druid 监控页面如何访问?

浏览器访问 http://localhost:8080/druid/index.html,默认账号密码均为 fastbee(可在 application.yml 中修改)。

蜂信物联 | fastbee.cn