1. ThingsBoard 平台概述:架构、核心组件与数据流模型

ThingsBoard 是一个基于 Java 的开源物联网平台,采用微服务与分布式架构设计,支持设备连接、数据采集、规则处理、可视化展示及远程控制。本章从架构分层、核心组件和数据流模型三个维度建立平台认知,为后续自定义图表与报表开发奠定基础。

1.1 平台架构分层

ThingsBoard 采用四层架构:设备接入层、核心服务层、规则引擎层和应用展示层。各层职责清晰,通过消息队列(Kafka / Pulsar)和数据库(PostgreSQL + Cassandra / TimescaleDB)解耦。

架构要点: 设备接入层支持 MQTT、CoAP、HTTP 协议;核心服务层管理设备元数据与遥测数据;规则引擎层处理数据路由与告警;应用展示层提供仪表板与报表。
ThingsBoard 四层架构图 ThingsBoard 四层架构 设备接入层 MQTT · CoAP · HTTP · LwM2M · SNMP 核心服务层 设备管理 · 遥测存储 · 属性服务 · 租户隔离 规则引擎层 规则链 · 节点处理 · 告警生成 · 数据路由 应用展示层 仪表板 · 报表 · 实时监控 · 移动端

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 的数据流遵循 设备 → 网关/传输 → 规则链 → 存储 → 展示 的路径。理解数据流模型是自定义图表和报表开发的前提。

ThingsBoard 数据流模型 ThingsBoard 数据流模型 设备 传感器/执行器 传输层 MQTT/CoAP/HTTP 规则链 过滤/变换/动作 存储层 SQL / NoSQL 展示层 仪表板/报表 数据流说明: 设备通过 MQTT/CoAP/HTTP 上报遥测 → 传输层解析 → 规则链处理 (过滤无效数据、变换格式、触发告警)→ 存储到数据库 → 仪表板查询展示

1.6 数据流关键路径

从设备上报到仪表板展示,数据经历以下关键步骤:

  1. 设备上报: 设备通过 MQTT 发布遥测到 v1/devices/me/telemetry 主题。
  2. 传输解析: ThingsBoard 传输层解析消息,提取设备 ID、遥测键值对和时间戳。
  3. 规则链处理: 消息进入根规则链,经过过滤、变换、保存遥测等节点。
  4. 数据持久化: 遥测数据写入时序数据库(Cassandra / TimescaleDB),属性写入 PostgreSQL。
  5. 仪表板查询: 前端通过 REST API 或 WebSocket 订阅遥测数据,实时更新图表。
注意: 自定义图表的数据源依赖于规则链中“保存遥测”节点的配置。如果遥测键名未正确保存,仪表板将无法查询到数据。建议在规则链调试模式下使用“检查点”节点验证数据格式。

1.7 本章小结