ThingsBoard是一个基于Java的开源物联网平台,旨在实现物联网项目的快速开发、管理和扩展。它使用行业标准的物联网协议(MQTT、CoAP和HTTP)实现设备连接,并支持云和本地部署。ThingsBoard结合了可扩展性、容错性和高性能,确保数据不会丢失。
ThingsBoard集群可以处理数百万个设备,提供高可用性和可扩展性。该平台还支持多种数据采集方式,包括从设备直接采集、通过网关采集以及使用其他云服务采集。用户可以在云服务器上通过可自定义的仪表板查看或共享来自任意数量设备的数据。此外,ThingsBoard还提供了30多个可自定义的小部件,允许用户为大多数物联网用例构建最终用户自定义仪表板。
Thingsboard 分为专业版和社区版,社区版是开源的,专业版是收费的。thingsboard 提供了30多个可自定义的小部件,允许为大多数物联网用例构建最终用户自定义仪表板。官网地址:http://thingsboard.io/
提供设备、资产和客户,并定义它们之间的关系。
警报管理:分析传入的遥测数据并通过复杂的事件处理触发警报。
设备管理:使用远程过程调用(RPC)控制设备。根据设备生命周期事件,REST API 事件,RPC 请求等构建工作流
可扩展性:可水平扩展的平台,使用领先的开源技术进行构建。
数据可视化: 从设备和资产收集并可视化数据。提供了现成的30个可配置小部件,并能够使用内置编辑器创建自己的小部件。内置线图,数字和模拟仪表,地图等等。
容错:没有单点故障,集群中的每个节点都是相同的。没有主人工人或热备用人员。自动检测到节点故障。可以在不停机的情况下更换故障节点。使用可靠的 NoSQL 数据库复制持久数据。
强大而高效:单个服务器节点可以处理成千上万个设备,具体取决于用例。ThingsBoard 集群可以处理数百万个设备。
可自定义的:通过可自定义的小部件和规则引擎节点,轻松添加新功能。使用可自定义的规则链,窗口小部件和传输实现来扩展默认平台功能。除了MQTT,CoAP和HTTP支持之外,ThingsBoard用户还可以使用自己的传输实现或自定义现有协议的行为。
持久:永远不会丢失您的数据。
遥测数据收集功能: 设计动态且响应迅速的仪表板,并向您的客户提供设备或资产遥测和见解。可以可靠地收集和存储遥测数据,以应对网络和硬件故障。使用可自定义的Web仪表板或服务器端API访问收集的数据。
Thingsboard有两种架构形式,微服务架构和 Monolithic 架构,两个架构的基本功能一致,该文档主要介绍 Monolithic 架构,架构图如下:
Device端:数据采集,需要支持MQTT或HTTP等协议
通讯通道:数据采集监听
规则引擎:对数据进行过滤,处理核心业务规则服务侧 API 和 GW
用 户 端:用户和应用
1. 设备连接
支持MQTT、CoAP、HTTP(S) 等协议,通过以上协议设备可以连接到信息网络,比如4G、5G。
2. 引擎规则
TingsBoard Rule Engine 处理来自设备的信息,并触发称为插件的可配置模块。
3. 核心服务
TingsBoard包含一组允许管理管理以下实体的核心服务:
设备及其凭据
规则链及规则节点
租户 Tenants,客户 Customers 和平台的关系是:平台 =>租户 =>客户
小部件和仪表盘
警报和事件
规则能够调用此API的某个子集。例如,规则可以为某些设备创建报警
4. 服务端API网关
每个 ThingsBoard 服务器都为注册用户提供 REST API。system telemetry 服务允许使用REST API 和 websocket 管理属性并获取时间序列数据。系统 RPC 服务提供 REST API 以自定义命令推送到设备。
测量数据处理:
RPC 过程:
根据发起者,Thinsboard RPC 功能可以分为两种类型:设备发起的 RPC 调用和服务器发起的 RPC 调用。为了使用更熟悉的名称,我们将源自设备的 RPC 调用命名为客户端 RPC 调用,将源自服务器的 RPC 调用命名为服务器端 RPC 调用。
服务器端RPC调用可以分为单向和双向:
单向RPC:请求没有发送确认就发送到设备,并且显然不提供设备的任何响应。仅当在可配置的超时时间内没有与目标设备的活动连接时,RPC调用才会失败。
双向RPC:请求被发送到设备,并期望在特定的超时时间内接收到来自设备的响应。服务器端请求将被阻止,直到目标设备回复该请求为止。
规则引擎:
规则:过滤器,处理器,Action
插件:处理消息,服务侧API请求,WebSocket和应用,持久化和查询事件,插件间RPC通信
遥测插件-系统插件,负责处理与设备属性和遥测有关的各种请求。
RPC 插件-允许使用 REST API 对设备执行 RPC 调用。RPC 调用将使用支持的网络协议传递到设备。
设备消息传递插件-允许分配给相同客户交换事件的设备。
发送邮件插件-允许发送电子邮件。您可以指定邮件服务器属性。有关更多详细信息,请参见插件文档。
Kafka插件-允许将遥测消息推送到Apache Kafka。有关更多详细信息,请参见插件文档。
RabbitMQ插件-允许将遥测消息推送到RabbitMQ。有关更多详细信息,请参见插件文档。
REST API呼叫插件-允许使用REST API将遥测消息推送到外部服务器。有关更多详细信息,请参见插件文档。时间RPC插件-允许从设备发送RPC请求以获取当前服务器端时间戳。
IoT网关:
在所有的物联网中,IOT 网关是非常重要的一环,大部分(60%-80%)设备都属于哑终端设备(不支持 IP),这些设备都需要通过网关才能够接入到云平台。因此 Thingsboard 支持通过 IOT 网关进入到平台,下面是 IOT 网关的整体架构图。
(其中最新版本的采用Python语言进行编写,建议可以自定义接收端口后,发送到ThingsBoard)
目前网关支持:
MQTT扩展,用于控制,配置和收集使用现有协议连接到外部MQTT代理的IoT设备的数据。
OPC-UA扩展,用于从连接到OPC-UA服务器的IoT设备收集数据。
Sigfox扩展,用于从连接到Sigfox Backend的IoT设备收集数据。
Modbus扩展,用于从通过Modbus协议连接的物联网设备收集数据。
1、操作系统
Thingsboard兼容多种操作系统,包括Linux、Windows和macOS。
2、Java环境
Thingsboard需要Java运行环境。推荐使用Java 11(OpenJDK 11),确保Java环境正确安装并配置环境变量。
3、数据库系统
ThingsBard平台目前支持三种数据库选项:
- SQL:将所有实体和遥测存储在SQL数据库中,建议使用PostgreSQL数据库HSQLDB可用于本地开发和测试不建议将HSQLDB用于任何其他用途。
- 混合:将所有实体存储在SQL数据库中,并将所有遥测存储在NoSQL数据库中。
- 混合 (PostgreSQL + Cassandra):将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Cassandra数据库中。
- 混合 (PostgreSQL + TimescaleDB):将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Timescale数据库中。
1、ThingsBoard设计为:
- 扩展性:可水平扩展的平台使用领先的开源技术构建。
- 容错性:没有单点故障集群中的每个节点都是相同的。
- 健壮性:单个服务器节点可以根据使用情况处理以万级别的设备,集群可以处理数百万级别设备。
- 持久化:永远不会丢失你的数据。
- 自定义:使用可自定义的部件和规则引擎节点可以轻松添加新功能。
2、规则引擎
ThingsBoard规则引擎是系统的心脏,负责处理传入的消息。
- 规则引擎使用Actor来实现。主要实体的actor:规则链和规则节点。
- 规则引擎节点可以加入集群,其中每个节点负责传入消息的某些分区。
- 在隔离模式下规则引擎处理特定租户的消息。
- 在共享模式下规则引擎处理多个租户的消息。
- ThingsBoard规则引擎可能以两种模式运行:共享和隔离
- 规则引擎从队列中订阅传入的数据并且仅在处理完消息后才对其进行确认。
- 设备管理: 提供了对物联网设备的注册、分组、监控和远程控制功能。
- 数据收集和存储: 负责从各类IoT设备高效地收集和存储大量数据。
- 数据可视化: 通过自定义仪表板和小部件,实现数据的实时可视化和分析。
- 规则引擎: 使用户能够定义复杂的业务逻辑,自动化处理和响应数据。
- 安全: 提供了全面的安全机制,包括数据加密和设备鉴权,确保平台和数据的安全。
- 集成和API: 支持与外部系统和服务的广泛集成,增强平台的功能和灵活性。
提供了丰富的API和集成选项,可以轻松地与其他系统和应用程序集成。