物联网开源平台开发系列004 – Thingsboard的实体、资产、设备一般说明及数据存储

随着物联网(IoT)的快速发展,大量的设备接入网络,产生了海量的数据。如何有效地存储、管理和分析这些数据成为了关键。Thingsboard作为一个开源的IoT平台,提供了丰富的功能来满足这一需求。本文将深入研究Thingsboard的实体及数据存储机制,为读者提供清晰、易懂的理解。

物联网开源平台开发系列004 – Thingsboard的实体、资产、设备一般说明及数据存储

配置文件

Thingsboard 对设备和资产,都有配置(profile),类似物模型的概念。所有的设备或资产,都套用某个配置。

设备配置文件 – 包含多个设备的通用设置:处理和传输配置等。每个设备在某个时间点都有唯一的配置文件;数据库表device_profile,核心字段profile_data;

资产配置文件 – 包含多个资产的通用设置:处理配置等。每个资产在某个时间点都有唯一的配置文件;数据库表asset_profile,表结构类同于device_profile,但内容少;

Thingsboard主要包括以下实体(Entity)类型

  1. 设备(Device) – 设备是Thingsboard中最基本的实体,代表了一个物理设备或者一个逻辑设备。每个设备都有一个唯一的ID,用于标识其在平台中的身份;有2个数据库表,device表和device_credentials表
    • device表 – 存储设备基本信息。这里的设备是可能产生遥测数据和处理RPC命令的基本物联网实体。例如传感器,致动器,开关。
    • device_credentials表 – 存储设备的凭证信息,每一个设备都需要有相应的凭证。设备凭证是物联网设备和物联网平台连通的重要依据,是物联网平台对外访问接口的安全访问控制信息。
  2. 资产(Asset) – 资产是抽象的物联网实体,可能与其他设备和资产相关。例如工厂、田地、车辆。个人感觉可以类同于设备,但不能传入遥测数据;数据库表为asset,存储资产的基本信息。
  3. 实体视图(Entity View) – 对数据的查看权限进行进一步的细分,限制设备或资产遥测和属性对客户的暴露程度。如果您只想与客户分享部分设备或资产数据。简单来说,你可以限制你设备的客户端/服务端/共享属性,时序数据等隐藏或者暴露;甚至可以设定展示的时间段。实体视图类似于SQL数据库视图,它限制了基础表暴露给外部世界的程度,实体视图限制了设备或资产遥测和属性暴露给客户的程度。作为租户管理员,您可以为每个设备或资产创建多个实体视图,并将其分配给不同的客户。数据库表为entity_view , 核心字段为keys,暴露出的内容;
  4. 网关(Gateway) – 一种设备,Thingsboard标准的设备,允许您将连接到传统系统和第三方系统的设备与 ThingsBoard 集成。
  5. 仪表板(Dashboard) – 仪表板是Thingsboard的可视化界面,用于展示设备的实时数据、历史数据、统计信息等。数据库表为dashboard表,存储用于展示设备属性和遥测数据的仪表板信息。可视化您的物联网数据以及通过用户界面控制特定设备的能力。核心字段为configuration;
  6. 告警(Alarm) – 当设备的数据满足某个条件时,会触发告警。告警可以用于及时发现并处理设备的问题。数据库表为alarm表;

实体关系

实体关系定义属于同一租户的两个 ThingsBoard 实体之间的联系。关系具有任意类型:包含、管理、支持等。关系也是有方向性的。您可以将 ThingsBoard 关系视为面向对象编程中的Has-a关系。

关系有助于在 ThingsBoard 中对物理世界对象进行建模。理解它们的最简单方法是使用示例。假设我们想要构建一个应用程序,从土壤湿度和温度传感器收集数据,在仪表板上可视化这些数据,检测问题,发出警报并控制灌溉。我们还假设我们想要使用数百个传感器支持多个字段。字段也可以分组到地理区域中。

下图解释了这些实体在 ThingsBoard 中的配置和存储方式:

物联网开源平台开发系列004 – Thingsboard的实体、资产、设备一般说明及数据存储

ThingsBoard 提供用户界面和 REST API 来配置和管理IoT 应用程序中的多种实体类型及其关系。

数据库表为relation,存储设备、资产、实体视图、租户、客户、仪表板、规则链和规则节点间的连接关系,其中规则节点和规则节点之间的连接关系较为复杂。

Thingsboard数据存储结构

Thingsboard的数据存储主要依赖于其数据库。Thingsboard支持多种数据库,如PostgreSQL、Cassandra等。其中,PostgreSQL为默认数据库, 如果考虑数据量>5k/s ,Cassandra用于存放时序数据,是遥测数据数据库。

Thingsboard在时序数据中主要使用以下表:

  1. attribute_kv表 – 用于存放设备的属性数据。一些不常变化的设备属性数据存放于此表。entity_id 字段为每个设备/资产的实体ID;attribute_type字段标注的是属性类型,通常分为服务端属性,共享属性,设备端属性,主要区别是谁能访问和操作该属性;官方文档
    • 服务端属性(Server-side Attributes) – 通过管理 UI 或 REST API 配置的属性。设备固件无法访问服务器端属性。如纬度、经度和地址是可以分配给代表建筑物或其他房地产的资产的服务器端属性的很好示例,您可以在仪表板中的地图小部件上使用这些属性来可视化建筑物的位置。
    • 设备端属性(Client-side Attributes) – 仅适用于设备。它用于从设备向 ThingsBoard报告各种半静态数据。
    • 共享属性(Shared Attributes) – 仅适用于设备。设备固件/应用程序可以请求共享属性的值或订阅属性的更新。通过 MQTT 或其他双向通信协议进行通信的设备可以订阅属性更新并实时接收通知。通过 HTTP 或其他请求-响应通信协议进行通信的设备可以定期请求共享属性的值。
  2. ts_kv_dictionary表 – 用于存储遥测数据的Key名及其对应的ID。这样做的好处是可以减少数据的存储空间,同时提高查询效率;
  3. ts_kv表 – 用于存储遥测时序数据,历史值。数据按照月份进行分区,每个月都会生成一个新的分区表。每个分区表都存储了当月每分钟每秒的数据;entity_id 字段为设备/资产的实体ID;key存放的是key的ID,真实的key存放在ts_kv_dictionary表中;ts存放的是unix时间戳;剩下的字段为value,只是区分不同类型;
  4. ts_kv_latest表 – 用于存储遥测数据,最新值。表结构类似于ts_kv,只是存放最新的一条,用的是update+insert的存储策略;页面上显示的遥测数据就是此表的内容;

系列文章:

物联网开源平台开发系列001 – 开源平台Thingsboard 介绍

物联网开源平台开发系列002 – Thingsboard 用户系统分析

物联网开源平台开发系列003 – Thingsboard OAuth2 – Google身份验证登陆

物联网开源平台开发系列004 – Thingsboard的实体、资产、设备一般说明及数据存储 – 陈皮王五de杂记

物联网开源平台开发系列005 – Thingsboard的API简述 – 陈皮王五de杂记

物联网开源平台开发系列006 – 在Thingsboard内创建一个设备 – 陈皮王五de杂记

物联网开源平台开发系列007 – 在Thingsboard内批量导入设备 – 陈皮王五de杂记

原创文章,作者:Gary,如若转载,请注明出处:https://www.cpw5.top/695.html

淘宝小店:陈皮王五工作室

(0)
GaryGary
上一篇 4天前
下一篇 2天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(3条)