最近在整理thingsboard课程,基于最新thingsboard版本3.9.1/4.0,欢迎大家收藏、关注我,提问,在评论区留言,我争取把最新、最准、最好的课程,呈现在各位亦师亦友的csdn广大读者面前。
本文thingsBoard基本概念描述了租户/客户/用户/设备资产/实体视图/告警/仪表板/规则节点/规则链/属性/时序数据/关系。
目录
1.基本概念
1.1 实体
租户
租户是一个独立的业务实体,理论上可以是个人或组织,租户可以拥有多个设备或资产,多个客户和用户,可以对这些资源进行维护管理。租户信息在tenant表。
客户
客户是属于租户下面的,一个租户可以有多个客户,客户可以有多个用户、多个设备或资产。客户信息在customer表。
用户
用户是客户下面的,可以继承拥有客户的设备或资产。用户信息在tb_user表。
设备
设备是最常用的一种实体,设备上报遥测数据(时间序列)给平台,也可以平台发送远程命令给设备,常见的设备类型很多,比如sensors(传感器)、actuators(执行器)、switches(开关)、其他设备实体(机床、泵站、车辆、仪表等)。设备信息在device表。
资产
资产是对各种实体集合在一起抽象出来的概念,比如工厂/车间/产线、园区/建筑/楼层、港口/码头/泊位、农场/作物区/大棚等。进一步来说,如上举例中,此时对应的设备分别可以是机床、烟感报警器、泊位水质传感器、温湿度传感器。资产信息保存在asset表。
资产与设备不同,资产不能直接上报遥测数据,但可以通过关联设备而得到遥测数据。
实体视图
类似数据库表和视图的概念,允许租户管理员控制设备或资产数据的可见性范围,实体视图信息保存在entity_view表。
实体视图技术实现的本质是数据访问控制:可以精确控制设备(或资产)的遥测数据和属性的可见范围。即:
设备的时序遥测数据的键值过滤、时间过滤,属性(客户端/服务端/共享)过滤。
资产的时序遥测数据的键值过滤、时间过滤,属性(客户端/服务端/共享)过滤。
实体视图的功能如下:
(1)多客户共享:支持将同一设备或资产的数据通过多个视图方式共享给多个用户。
(设备或资产只能分配给某1个用户)
(2)细粒度权限:允许特定用户a查看部分数据(如传感器读数),允许用户b查看其他数据(比如环境数据)。
(3)时间范围限制:设置数据访问的时间窗口,用户只能看到指定时间段内的数据。不同时段数据展示给不同用户。
告警
本质上告警是用于表示设备或资产(以及其他实体)的超阈值事件描述。
告警信息在alarm表。
仪表板
仪表板主要两个应用场景:可视化展示从设备采集到的数据,从平台发送控制指令给设备。仪表板信息保存在dashboard表。
规则节点
处理传入消息、实体生命周期事件等的单元。
节点信息在rule_node表。
规则链
定义规则链中的处理流程,可能包含许多规则节和与其他规则链的链接。
规则链信息在rule_chain表。
*每一个实体都有以下三个概念:
属性 - 与实体关联的静态和半静态键值对kv。例如序列号、型号、固件版本。我们应该重点关注和学习设备的属性,键值对kv。
时间序列数据 - 可用于存储,查询和可视化的时间序列数据点。例如温度、湿度、压力、扭矩、机床主轴转速、进给倍率等。
关系 - 指向其他实体的连接。例如包含Contains、管理Manages。
详细解释一下:
关系定义了同一租户下的的两个实体之间的连接,关系是有方向的:向外的关联(从From)或向内的关联(到To),可以将关系理解为面向对象编程中的has-a关系。
关系信息保存在relation表。
有一些实体支持配置化/模板化:(官方英文叫做profile)
租户配置文件 - 包含多个租户的常用设置:实体、API和速率限制等。每个租户都有一个配置模板。数据保存在tenant_profile表。
设备配置文件 - 包含多个设备的通用设置:处理和传输配置等。每个设备都有一个配置模板。数据保存在device_profile表。
资产配置文件 - 包含多个资产的通用设置:处理配置等。每个资产都有一个配置模板。数据保存在asset_profile表。
1.2关系
每一个关系,都有源实体(From)、目标实体(To),如上图所示。
实体包括:租户/客户/用户/设备/资产/实体视图/警报/仪表板/规则节点/规则链。
每个实体都支持:属性/时间序列数据/关系。
在PostgresSQL数据库中relation表中存储了关系数据。
1.3关系的用途和用法
(1)资产所涵盖的设备有哪些? 在relation表中
在界面上看到Asset Test1资产包含了设备Test Device A1,如下:
在资产界面看:
在设备界面看:
在数据库表中看关系数据,如下:
(2)某个规则链的多个规则节点是怎么连接在一起的? 在relation表中
开始 from_id, 下一个to_id
(3)关系的创建/管理/维护,怎么做?
可以通过三种方式创建/管理关系:
(3-1)web-ui操作:通过实体详情页的关联选项卡,人工方式增加。
(3-2) API调用:使用 REST API。如下:
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Authorization: Bearer JWT_TOKEN" \
-d '{
"from": {"id": "d5213b30-2e5b-11eb-adc1-0242ac120002", "entityType": "DEVICE"},
"to": {"id": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv", "entityType": "ASSET"},
"type": "Contains"
}' \
"http://localhost:8080/api/relation"
(3-3) 规则链:通过规则链节点relation,动态创建关系。如下: