fastbee/docs/knowledge-base/02-runtime-flows.md
2026-05-25 20:44:59 +08:00

4.7 KiB
Raw Permalink Blame History

核心运行链路

应用启动

  1. FastBeeApplication 启动 Spring Boot。
  2. application.yml 激活 profile,默认是 prod,本地开发通常改为 dev。
  3. 动态数据源初始化 master,可选初始化 taos。
  4. MyBatis Plus 扫描 com.fastbee.**.domain 和 classpath*:mapper/**/*Mapper.xml。
  5. boot-strap 模块按配置启动协议服务。
  6. LiteFlow 从数据库加载规则链和脚本:
    • 规则链表:iot_scene
    • 脚本表:iot_script
    • 应用名字段:application_name

设备上报链路

设备
  -> MQTT/TCP/HTTP/CoAP/SIP 协议接入
  -> 协议解码 / Topic 解析 / Session 管理
  -> MessageProducer.sendPublishMsg 或其他队列入口
  -> fastbee-mq 本地队列
  -> fastbee-iot-data DataHandlerImpl
  -> 设备物模型值更新
  -> 设备日志/事件日志/TDengine
  -> 规则引擎/场景联动/条件触发
  -> WebSocket/MQTT 推送到前端

关键代码位置:

环节 位置
MQTT Broker 启动 fastbee-server/boot-strap/.../MQTTBootStrap.java
TCP 服务启动 fastbee-server/boot-strap/.../TCPBootStrap.java
消息生产入口 fastbee-mq/.../MessageProducer.java
上报队列 fastbee-mq/.../DeviceReportQueue.java
上报处理 fastbee-iot-data/.../DataHandlerImpl.java
物模型更新 fastbee-service/fastbee-iot-service 下 IDeviceService 实现
规则匹配 fastbee-iot-data 的 IRuleEngine 和 fastbee-iot-service 的 RuleProcess

服务/指令下发链路

前端/API
  -> DeviceMessageServiceImpl.messagePost / MqttMessagePublishImpl.funcSend
  -> 查询设备产品、协议、物模型和传输方式
  -> MQTT: 发布到设备 Topic
  -> TCP: 组包后通过 SessionManager/MessageManager 写回连接
  -> GB28181: 调用 SIP Gateway
  -> FunctionLog 记录下发结果
  -> WebSocket/MQTT 推送调试消息到前端

下发时的重要分支:

分支 处理
MQTT 设备 使用 PubMqttClient.publish 发布到 TopicsUtils.buildTopic(...) 生成的 Topic。
TCP 设备 将指令转为协议字节,交给 MessageManager.requestR 对对应 Session 写出。
子设备 先解析网关设备关系,把子设备指令映射到网关产品/设备,再设置 slave 地址。
影子模式 不真实下发,直接构造上报数据并走 dataHandler.reportData 更新影子值。
离线延迟下发 deferIfOffline=true 时写入 iot_device_deferred_command,等待设备上线后补发。

规则引擎链路

规则体系有两层:

类型 入口 数据表
场景联动 IRuleEngine.ruleMatch(...) iot_scene, iot_scene_device, iot_scene_script, iot_device_job
数据桥接/脚本 RuleProcess.processRuleScript(...) iot_script, bridge, iot_script_bridge

LiteFlow SQL 规则源配置在 application.yml:

chainTableName: iot_scene
scriptTableName: iot_script
chainEnableField: enable
scriptEnableField: enable

设备 TCP 属性上报后,如果启用规则引擎,会额外以 tcp/property/post 作为桥接 Topic 调用 RuleProcess,用于 HTTP/MQTT/数据库桥接。

数据持久化链路

数据 主要表
产品、分类、协议 iot_product, iot_category, iot_protocol
设备与绑定 iot_device, iot_device_user, iot_device_group, iot_sub_gateway
物模型 iot_things_model, iot_things_model_template, 翻译表
上报日志 iot_device_log, iot_event_log, iot_function_log, iot_alert_log
固件升级 iot_firmware, iot_firmware_task, iot_firmware_task_detail
规则/桥接 iot_scene, iot_script, bridge, iot_script_bridge
通知 notify_channel, notify_template, notify_log
视频 sip_device, sip_device_channel, media_server, iot_sip_relation

TDengine 可选数据源 taos 默认禁用,相关日志服务在 fastbee-iot-service 的 tdengine 包和 fastbee-iot-data 中被调用。

视频监控链路

GB28181 设备/NVR
  -> SIP Server
  -> sip_device / sip_device_channel
  -> ZLMediaKit media_server
  -> 播放、PTZ、录像、回放 API
  -> fastbee-record 可独立承接录像相关回调/下载

视频相关 Controller 分布在 fastbee-open-api/src/main/java/com/fastbee/controller/media 和 fastbee-record。

通知链路

业务事件/告警/推送配置
  -> notify_template
  -> notify_channel
  -> fastbee-notify-core 具体渠道
  -> notify_log

物模型推送扩展表:

  • iot_things_model_push_config:某设备的物模型推送配置。
  • iot_push_model_item:配置下需要推送的物模型项和阈值。
  • iot_push_user:配置下的接收用户。