thingsboard

ThingsBoard架构详解与实战指南

1 ThingsBoard 架构

1.1 整体架构

官网地址:http://www.ithingsboard.com/docs/reference/monolithic/
在这里插入图片描述

1.1.1 传输组件

ThingsBoard提供了基于MQTT、HTTP和CoAP的API可用于您的设备应用程序/固件;每个传输组件都将数据推送到规则引擎并且还可以使用核心服务向数据库发出请求以验证设备凭据等
由于ThingsBoard在传输和核心服务之间使用了非常简单的通信协议,实现对自定义传输协议的支持非常容易例如:通过TCP的CSV、通过UDP的二进制playload等

1.1.2 规则引擎组件

ThingsBoard规则引擎负责使用用户定义的逻辑和流程来处理传入的消息。

1.1.3 核心服务

核心服务负责处理:
1)调用REST API;
2)WebSocket 订阅 有关实体遥测和属性更改的信息;
3)监视设备 连接状态(活动/不活动)。
ThingsBoard节点使用Akka actor系统来实现租户,设备,规则链和规则节点actor(actor用于处理并发,它定义了一系列系统组件应该如何动作和交互的通用规则)。
平台节点可以加入每个节点都相等的集群。服务发现是通过Zookeeper完成的。
ThingsBoard节点使用基于实体ID的一致哈希算法在彼此之间路由消息。
因此用于同一实体的消息在同一ThingsBoard节点上进行处理。
平台使用gRPC 在ThingsBoard节点之间发送消息。

1.1.4 外部系统

可以通过规则引擎将消息从ThingsBoard推送到外部系统。
您可以将数据推送到外部系统,处理数据并将处理结果报告回ThingsBoard以进行可视化。

1.2 系统关键组件和相关接口

官网地址:http://www.ithingsboard.com/docs/reference/
在这里插入图片描述

1.2.1 ThingsBoard传输

ThingsBoard提供了基于MQTT、HTTP 和 CoAP 的API,适用于你的设备应用程序/固件。
每个协议API都是由单独的服务器组件提供的并且是ThingsBoard“传输层”的一部分。
MQTT传输还提供网关API供代表多个已连接设备和/或传感器的网关使用。
传输从设备接收到消息后,它将被解析并推送到持久的消息队列。
仅在消息队列确认了相应消息后才将消息传递给设备。
ThingsBoard支持多种消息队列实现:Kafka、RabbitMQ、AWS SQS、Azure服务总线和Google发布订阅

1.2.2 ThingsBoard核心

ThingsBoard Core负责处理REST API调用和WebSocket 订阅。
它还负责存储有关活动设备会话和监视设备连接状态。
ThingsBoard核心在幕后使用Actor来实现主要实体(租户和设备)的actor。
平台节点可以加入群集其中每个节点负责传入消息的某些分区

1.2.3 ThingsBoard规则引擎

ThingsBoard规则引擎是系统的心脏负责处理传入的消息。
规则引擎在幕后使用Actor来实现主要实体的actor:规则链和规则节点。
规则引擎节点可以加入集群,其中每个节点负责传入消息的某些分区。
规则引擎从队列中订阅传入的数据并且仅在处理完消息后才对其进行确认。
有多种策略可用于控制顺序或消息处理以及消息确认的标准。
ThingsBoard规则引擎可能以两种模式运行:共享和隔离
在共享模式下规则引擎处理多个租户的消息。
在隔离模式下规则引擎处理特定租户的消息。

1.2.4 消息队列

ThingsBoard支持多种消息队列实现:Kafka、RabbitMQ、AWS SQS、Azure服务总线和Google发布订阅
我们在特定的队列实现上提供“抽象层”并维护两个主要概念:主题和主题分区
ThingsBoard消息生产者根据实体ID的哈希值确定使用哪个分区。
因此同一实体的所有消息总是被推送到同一分区。
ThingsBoard消息使用者使用Zookeeper进行协调,并使用一致性哈希算法确定每个使用者应订阅的分区列表
ThingsBoard使用以下主题:
tb_transport.api.requests: 发送通用API调用以检查从Transport到ThingsBoard核心的设备凭据。
tb_transport.api.responses: 从ThingsBoard核心到Transport接收设备凭证验证结果。
tb_core: 将消息从传输或规则引擎推送到ThingsBoard核心。消息包括会话生命周期事件属性和RPC订阅等。
tb_rule_engine: 将消息从Transport或ThingsBoard核心推送到规则引擎。消息包括传入遥测、设备状态、实体生命周期事件等。

1.2.5 SQL与NoSQL与混合数据库

ThingsBoard使用数据库进行存储 实体设备,资产,客户,仪表板等)和遥测数据(属性,时间序列传感器读数,统计信息,事件)
• SQL-将所有实体和遥测存储在SQL数据库中。 ThingsBoard作者建议使用PostgreSQL这是ThingsBoard支持的主要SQL数据库。 HSQLDB具有最小的负载可用于本地开发、测试我们不建议将HSQLDB用于任何其他用途。

• NoSQL (已弃用)-将所有实体和遥测存储在NoSQL数据库中。 ThingsBoard作者建议使用Cassandra这是ThingsBoard目前支持的唯一NoSQL数据库。

• 混合-将所有实体存储在SQL数据库中,并将所有遥测存储在NoSQL数据库中。

• 混合 (PostgreSQL + Cassandra) - 将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Cassandra数据库中。

• 混合 (PostgreSQL + TimescaleDB) - 将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Timescale数据库中。

1.3 微服务架构

官网地址:http://www.ithingsboard.com/docs/reference/msa/
在这里插入图片描述

2 代码结构

2.1 代码一级包总览

在这里插入图片描述

2.2 包说明

在这里插入图片描述

2.3 代码类接口说明

1: 管理控制器(admin-controller):管理控制器显示
2: 报警控制器(alarm-controller):报警控制器显示
3: 资产控制器(asset-controller):资产控制器显示
4: 审核日志控制器(audit-log-controller):审核日志控制器显示
5: 身份验证控制器(auth-controller):身份验证控制器显示
6: 组件描述符控制器(component-descriptor-controller):组件描述符控制器显示
7: 客户控制器(customer-controller):客户控制器显示
8: 仪表板控制器(dashboard-controller):仪表板控制器显示
9: 设备API控制器(device-api-controller):设备API控制器显示
10: 设备控制器(device-controller):设备控制器显示
11: 实体关系控制器(entity-relation-controller):实体关系控制器显示
12: 实体视图控制器(entity-view-controller):实体视图控制器显示
13: 事件控制器(event-controller):事件控制器显示
14: RPC控制器(rpc-controller):RPC控制器显示
15: 规则链控制器(rule-chain-controller):规则链控制器显示
16: 遥测控制器(telemetry-controller):遥测控制器显示
17: 租户控制器(tenant-controller):租户控制器显示
18: 用户控制器(user-controller):用户控制器显示
19: 控件类型控制器(widget-type-controller):控件类型控制器显示
20: 控件束控制器(widgets-bundle-controller):控件束控制器显示

3 Thingsboard源码运行

https://blog.csdn.net/weixin_38323645/article/details/123464355?spm=1001.2014.3001.5502

4 规则链、设备配置、设备

4.1 规则链添加

在这里插入图片描述
添加后从列表点进来
在这里插入图片描述
在这里插入图片描述

4.2 设备配置创建

第1点和第4点配置下
在这里插入图片描述
在这里插入图片描述

4.3 添加设备

在这里插入图片描述
输入名称,选择设备配置后,直接点添加

5 模拟数据采集

5.1 http传输

规则链开启调试模式
在这里插入图片描述
在设备详情中复制访问令牌
在这里插入图片描述
http方式请求模拟数据采集
tb swagger-ui地址(要登录通过验证后可进行接口调用)
http://localhost:8080/swagger-ui/#/device-api-controller/postTelemetryUsingPOST
在这里插入图片描述
请求
在这里插入图片描述
请求成功后,查看设备详情中的最新遥控数据
在这里插入图片描述
如果再次发送请求,key和前面的请求重复则将会覆盖掉前面一次value值

5.2 mqtt传输

官网说明:http://www.ithingsboard.com/docs/getting-started-guides/helloworld/
0)设备配置的传输方式为MQTT
1)首先全局安装mqtt
npm install mqtt -g
并配置环境变量:
NODE_PATH %AppData%\npm\node_modules
AppData C:\Users\13795\AppData\Roaming
在这里插入图片描述
2)创建一个文件夹,用于存放以下必要文件
在这里插入图片描述
文件内容参照官网,其中,mqtt-js.bat文件中:
THINGSBOARD_HOST设置为transport-mqtt的端口,
ACCESS_TOKEN设置为设备的访问令牌
在这里插入图片描述
双击执行mqtt-js.bat,即可发送数据到tb
在这里插入图片描述
若中文出现乱码,修改一下编码即可
在这里插入图片描述
在这里插入图片描述

6 警告产生与消除

警报的官方说明:http://www.ithingsboard.com/docs/user-guide/alarms/

6.1 警报

1) 创建警报规则链(注意开启调试模式),整体节点如下:
在这里插入图片描述
其中
script为筛选器,可自定义规则:当pm25大于200时候返回true,否则返回false
在这里插入图片描述
返回true时候,产生警报,可以自定义警报信息及计算警报次数
在这里插入图片描述
返回false时候,消除警报
在这里插入图片描述
2) 创建一个新规则链,并将上步骤创建的警报链alarm_chain引入,整体节点如下
在这里插入图片描述
3)创建设备配置,选择new_rule_chain规则链,并在设备预配置中的预配置策略项选择允许创建新设备,创建后详情如下
在这里插入图片描述
4) 创建设备,选择上一步骤创建的设备配置dp1
在这里插入图片描述
5)测试(参照模拟数据采集进行测试)
在这里插入图片描述
在这里插入图片描述
改变值再测试
在这里插入图片描述
在这里插入图片描述

6.2 创建警报仪表板

1)
在这里插入图片描述
2)打开仪表板编辑,添加新部件
在这里插入图片描述
添加额外字段信息,选择status添加
在这里插入图片描述
编辑刚添加的status,改为自定义字段
在这里插入图片描述
一共添加了3个自定义字段
在这里插入图片描述
可以看到:
在这里插入图片描述
还可以看到详情信息
在这里插入图片描述

<think>好的,我现在需要处理用户关于ThingsBoard的查询。首先,用户希望了解ThingsBoard IoT平台的文档和概述,并可能希望生成相关问题。根据用户提供的系统级指令,我需要确保行内数学表达式用$...$,独立公式用$$...$$,并且语法正确。不过,当前问题主要涉及物联网平台,可能不太需要数学公式,但还是要留意可能的数学内容,比如算法或数据处理中的公式。 接下来,用户的历史引用包括Kafka的架构和数据处理,但用户明确提到之前的引用不是他们的真正需求,应该专注于ThingsBoard。因此,我需要忽略之前的引用,专注于ThingsBoard的相关信息。 用户要求回答结构清晰,分步骤解决问题,并保证真实可靠。因此,我需要组织信息,先介绍ThingsBoard的基本信息,然后核心功能,架构组件,技术特性,应用场景,最后生成相关问题。 首先,我需要确认ThingsBoard是什么。它是一个开源的IoT平台,用于设备管理、数据收集、处理和可视化。支持云和本地部署,提供可扩展性和多租户功能。核心功能包括设备管理、数据采集(支持MQTT、CoAP、HTTP等协议)、规则链(数据处理和自动化)、仪表盘(数据可视化)、报警和通知、安全机制(TLS、设备认证)等。 架构方面,ThingsBoard采用微服务架构,组件包括传输层(处理设备通信)、规则引擎(处理数据流)、存储(Cassandra、PostgreSQL/TimescaleDB)、Web UI和REST API。技术特性包括横向扩展、高可用性、多租户、可定制化。 应用场景包括智能能源、工业物联网、智慧城市、农业物联网等。 需要确保回答使用中文,结构清晰,可能分点描述。然后生成相关问题,比如如何安装配置,规则链的使用,设备集成方法,性能优化,安全机制,与其他平台对比等。 需要检查是否有需要数学公式的地方,比如规则链的处理逻辑如果有算法,可能需要公式,但如果没有,可以省略。比如数据处理中的滤波算法,如果有的话,可以用行内公式,例如$y = \frac{1}{N}\sum_{i=1}^{N} x_i$,但不确定是否有必要,需根据实际情况添加。 最后,生成的问题需要围绕用户可能感兴趣的方面,如安装、配置、功能使用、优化、安全等。确保问题符合用户可能的需求,帮助他们进一步探索ThingsBoard。</think>### ThingsBoard物联网平台概述 ThingsBoard是一个开源的物联网平台,专注于设备管理、数据采集、实时可视化和规则引擎处理。其核心架构支持云部署和本地部署,提供高扩展性、多租户能力及灵活的插件机制[^1]。以下是其关键组成部分: #### 1. 核心功能 - **设备管理**:支持设备注册、配置、远程控制及OTA更新 - **数据采集**:通过MQTT、CoAP、HTTP等协议接收传感器数据,支持结构化(JSON)和非结构化数据 - **规则引擎**:基于节点链的数据处理流程,例如: ```python # 示例:温度超过阈值时触发告警 if msg.temperature > 30: sendAlert("High Temperature Detected") ``` - **可视化仪表盘**:拖拽式界面创建实时数据图表,支持地图、时序图等 - **安全机制**:TLS加密通信、设备认证(X.509证书、Token) #### 2. 架构组件 $$ \text{系统架构} = \begin{cases} \text{传输层(MQTT/HTTP网关)} \\ \text{规则引擎(数据过滤/转发)} \\ \text{存储层(Cassandra/PostgreSQL)} \\ \text{Web UI与API服务} \end{cases} $$ #### 3. 技术特性 - **横向扩展**:通过Kubernetes实现集群部署 - **高可用性**:数据分片与副本机制(参考CAP定理$_{[一致性、可用性、分区容错性]}$) - **多租户支持**:企业用户可独立管理子账户与设备 #### 4. 应用场景 - 智能能源:电表数据监控与分析 - 工业物联网:PLC设备状态预测性维护 - 智慧农业:温湿度传感器联动灌溉系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值