简介
ThingsBoard 是一个开源的物联网平台,支持设备连接、数据收集、处理、可视化和告警。它基于 Java(Spring Boot)构建,使用 MQTT/CoAP/HTTP 协议通信,并内置规则引擎、设备管理、仪表盘等功能。
本文旨在对 ThingsBoard 的源码结构进行简要解析,帮助开发者理解其整体架构与关键模块实现。
项目结构概览
ThingsBoard 源码采用多模块 Maven 项目组织,主要模块包括:
application:主启动模块,包含 Spring Boot 入口类。dao:数据访问层,封装与数据库(Cassandra / PostgreSQL)交互逻辑。rule-engine:规则引擎核心,处理消息路由、过滤、转换等。transport:协议传输层,支持 MQTT、HTTP、CoAP 等接入方式。ui:前端界面(Angular),独立于后端。common:通用工具类、消息模型、常量定义等。
核心流程解析
以设备通过 MQTT 上报数据为例:
- 设备连接到
mqtt-transport模块; - 消息被封装为内部格式,发送至 Kafka(或内存队列);
rule-engine消费消息,根据用户配置的规则链处理;- 处理结果可能写入数据库(
dao)、触发告警或转发至其他系统; - 前端通过 REST API 或 WebSocket 获取最新数据并展示。
关键源码位置
thingsboard/
├── application/ # 启动入口
├── common/ # 公共组件
├── dao/ # 数据访问
├── rule-engine/ # 规则引擎逻辑
├── transport/mqtt/ # MQTT 接入实现
├── ui/ # 前端代码(Angular)
└── rest-api/ # REST 接口定义
二次开发建议
若需扩展 ThingsBoard 功能,推荐方式包括:
- 自定义规则节点(继承
org.thingsboard.rule.engine.api.RuleNode); - 开发插件或微服务对接外部系统;
- 修改前端 UI 并重新构建;
- 调整数据库模型(需谨慎,注意兼容性)。