1. ThingsBoard 平台概述:架构、核心组件与数据流模型
ThingsBoard 是一个基于 Java 的开源物联网平台,采用微服务与分布式架构设计,支持设备连接、数据采集、规则处理、可视化展示及远程控制。本章从架构分层、核心组件和数据流模型三个维度建立平台认知,为后续自定义图表与报表开发奠定基础。
1.1 平台架构分层
ThingsBoard 采用四层架构:设备接入层、核心服务层、规则引擎层和应用展示层。各层职责清晰,通过消息队列(Kafka / Pulsar)和数据库(PostgreSQL + Cassandra / TimescaleDB)解耦。
架构要点: 设备接入层支持 MQTT、CoAP、HTTP 协议;核心服务层管理设备元数据与遥测数据;规则引擎层处理数据路由与告警;应用展示层提供仪表板与报表。
1.2 核心组件详解
ThingsBoard 的核心组件包括 设备管理、规则链、仪表板、租户与客户、告警 和 报表。下表列出各组件的功能定位与关键特性:
| 组件 | 功能定位 | 关键特性 |
|---|---|---|
| 设备管理 | 设备注册、凭证管理、属性与遥测 | 支持 MQTT/CoAP/HTTP 直连或网关接入 |
| 规则链 | 数据流处理与业务逻辑编排 | 可视化拖拽节点、支持过滤/变换/动作/外部调用 |
| 仪表板 | 数据可视化与实时监控 | 30+ 小部件、自定义图表、状态栏、地图 |
| 租户与客户 | 多租户隔离与权限管理 | 租户级配置、客户级设备分组、角色权限 |
| 告警 | 条件触发与通知 | 基于规则链生成、支持清除/确认/严重级别 |
| 报表 | 数据聚合与导出 | CSV/PDF 导出、定时发送、自定义模板 |
1.3 规则链(Rule Chain)
规则链是 ThingsBoard 的数据处理中枢,采用 节点-连接 的图结构。每个节点执行特定逻辑(过滤、变换、动作、外部系统集成),节点间通过关系类型(Success、Failure、True、False)连接。
开发提示: 规则链支持“根链”和“子链”嵌套。根链处理所有设备数据,子链可被根链节点调用,实现模块化复用。自定义图表的数据源通常由规则链中的“保存遥测”节点写入数据库。
常用规则链节点类型:
- 过滤节点: 检查消息类型、设备类型、属性值,决定数据是否继续传递。
- 变换节点: 修改消息体、添加元数据、转换数据格式(如 JSON → Key-Value)。
- 动作节点: 保存遥测、创建告警、发送邮件、REST API 调用。
- 外部节点: Kafka 输出、RabbitMQ、MongoDB、AWS SQS 等集成。
1.4 仪表板(Dashboard)
仪表板是 ThingsBoard 的可视化容器,支持多页面、多状态、多设备绑定。每个仪表板由 小部件(Widget) 组成,小部件分为三类:
| 小部件类型 | 用途 | 示例 |
|---|---|---|
| 卡片/数值 | 显示最新遥测值或属性 | 温度卡片、开关状态 |
| 图表 | 时间序列数据可视化 | 折线图、柱状图、饼图 |
| 控制 | 下发 RPC 指令到设备 | 开关按钮、滑块、下拉选择 |
| 地图 | 设备地理位置展示 | OpenStreetMap 标记、热力图 |
| 表格 | 遥测数据或告警列表 | 数据表格、告警表格 |
1.5 数据流模型
ThingsBoard 的数据流遵循 设备 → 网关/传输 → 规则链 → 存储 → 展示 的路径。理解数据流模型是自定义图表和报表开发的前提。
1.6 数据流关键路径
从设备上报到仪表板展示,数据经历以下关键步骤:
- 设备上报: 设备通过 MQTT 发布遥测到
v1/devices/me/telemetry主题。 - 传输解析: ThingsBoard 传输层解析消息,提取设备 ID、遥测键值对和时间戳。
- 规则链处理: 消息进入根规则链,经过过滤、变换、保存遥测等节点。
- 数据持久化: 遥测数据写入时序数据库(Cassandra / TimescaleDB),属性写入 PostgreSQL。
- 仪表板查询: 前端通过 REST API 或 WebSocket 订阅遥测数据,实时更新图表。
注意: 自定义图表的数据源依赖于规则链中“保存遥测”节点的配置。如果遥测键名未正确保存,仪表板将无法查询到数据。建议在规则链调试模式下使用“检查点”节点验证数据格式。