ThingsBoard部件数据结构解析

本文描述在Entities Table表中定义数据源后,在部件中获得的数据,并对数据结构进行解释。这代表了最新值部件的数据结构。

数据源定义

提取用户直接相关的资产或设备,并增加获取每个实体的类型字段。

部件数据

按所设置的别名,部件的self.ctx.data会获得一个数组,每个子项表示获取的一个资产或设备。如下是其中一条子项的结构

javascript 复制代码
{
    "datasource": {
        "type": "entity",
        "name": "午羊科技",
        "entityAliasId": "38b298f6-87a5-3d54-935b-80390bca1a95",
        "dataKeys": [
            {
                "name": "type",
                "type": "entityField",
                "label": "类型",
                "color": "#2196f3",
                "settings": {

                },
                "_hash": 0.41103952066475935,
                "hidden": false,
                "inLegend": true,
                "pattern": "类型"
            }
        ],
        "alarmFilterConfig": {
            "statusList": [
                "ACTIVE"
            ]
        },
        "aliasName": "用户的直接",
        "entityFilter": {
            "type": "relationsQuery",
            "resolveMultiple": true,
            "rootStateEntity": false,
            "stateEntityParamName": null,
            "defaultStateEntity": null,
            "rootEntity": {
                "entityType": "USER",
                "id": "ced2ae20-679f-11f0-a3ef-fd437db78ef1"
            },
            "direction": "FROM",
            "maxLevel": 1,
            "fetchLastLevelOnly": false,
            "filters": [
                {
                    "relationType": "Contains",
                    "entityTypes": [
                        "ASSET"
                    ]
                },
                {
                    "relationType": "Manages",
                    "entityTypes": [
                        "ASSET"
                    ]
                }
            ]
        },
        "pageLink": {
            "pageSize": 1024,
            "page": 0,
            "sortOrder": {
                "key": {
                    "type": "ENTITY_FIELD",
                    "key": "createdTime"
                },
                "direction": "DESC"
            }
        },
        "dataReceived": true,
        "entity": {
            "id": {
                "entityType": "ASSET",
                "id": "b78f3120-8c5c-11f0-87b9-7908c6298307"
            },
            "label": "",
            "name": "午羊科技"
        },
        "entityId": "b78f3120-8c5c-11f0-87b9-7908c6298307",
        "entityType": "ASSET",
        "entityName": "午羊科技",
        "entityLabel": "",
        "entityDescription": "",
        "generated": false
    },
    "dataKey": {
        "name": "type",
        "type": "entityField",
        "label": "类型",
        "color": "#2196f3",
        "settings": {

        },
        "_hash": 0.41103952066475935,
        "hidden": false,
        "inLegend": true,
        "pattern": "类型"
    },
    "data": [
        [
            1761784842450,
            "组织",
            [
                1761784842450,
                1761784842450
            ]
        ]
    ]
}

结构分析

在 ThingsBoard 的self.ctx.data结构中,这条数据主要描述了与 "午羊科技" 资产相关的数据源配置及具体数据,核心存储结构和关键信息如下:

  1. 顶层核心字段
  • datasource:数据源配置(最关键的结构),包含数据来源的实体、过滤规则、查询参数等。
  • dataKey:数据键配置,定义了当前获取的具体字段信息。
  • data:实际的业务数据,包含时间戳和对应的值。
  1. datasource 核心子结构
    描述数据的来源实体、过滤逻辑、查询范围等,是 ThingsBoard 中数据关联的核心配置:
子字段 含义说明
type 数据源类型,此处为"entity",表示数据来自 ThingsBoard 的实体(如资产、设备等)。
name 实体名称,此处为"午羊科技"(对应资产的名称)。
entityAliasId 实体别名 ID,用于在仪表盘等配置中关联该实体的唯一标识。
entityId / entityType 实体 ID 和类型,此处entityType为"ASSET"(资产),entityId是该资产的唯一 ID。
entityFilter 实体过滤规则,用于筛选符合条件的实体。
pageLink 分页和排序配置。
dataKeys 要获取的实体字段列表,此处只配置了"type"字段(对应dataKey的信息)。
dataReceived 数据接收状态,true表示已成功获取数据。
  1. dataKey 结构
    定义当前获取的具体字段信息,与datasource.dataKeys中的配置一致:
  • name: "type":字段名称(实体的 "类型" 字段)。
  • type: "entityField":字段类型,表示是实体本身的属性字段(非遥测、属性等其他类型)。
  • label: "类型":显示标签(前端展示用)。
  • 其他字段(color、hidden等):前端展示相关的配置(颜色、是否隐藏等)。
  1. data 结构
    实际业务数据,格式为二维数组,具体参见ThingsBoard部件数据为什么是数组
    示例:[[1761784842450, "组织", [1761784842450, 1761784842450]]]
  • 第一个元素 1761784842450:时间戳(毫秒级,对应具体时间点)。
  • 第二个元素 "组织":字段值(即type字段的实际值,表示该资产类型为 "组织")。
  • 第三个元素 [时间戳, 时间戳]:数据的有效时间范围(此处开始和结束时间相同,可能表示瞬时值)。

总结

该结构的核心是通过datasource定义数据来源(基于实体关系过滤的资产),通过dataKey指定要获取的字段,最终在data中存储该字段的时间戳和值。这种结构体现了 ThingsBoard 中 "实体 - 关系 - 数据" 的关联模式,常用于仪表盘、规则链等场景中数据的查询和展示。

相关推荐
TDengine (老段)6 小时前
金融风控系统中的实时数据库技术实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
看我干嘛!6 小时前
第三次python作业
服务器·数据库·python
2501_936960366 小时前
ROS快速入门教程
数据库·mongodb
知识分享小能手6 小时前
Oracle 19c入门学习教程,从入门到精通,Oracle 的闪回技术 — 语法知识点与使用方法详解(19)
数据库·学习·oracle
踢足球09296 小时前
寒假打卡:2026-01-31
数据库·sql
是小崔啊6 小时前
PostgreSQL快速入门
数据库·postgresql
xxxmine7 小时前
Redis 持久化详解:RDB、AOF 与混合模式
数据库·redis·缓存
yufuu987 小时前
使用Scikit-learn进行机器学习模型评估
jvm·数据库·python
近津薪荼7 小时前
优选算法——双指针8(单调性)
数据结构·c++·学习·算法
松☆7 小时前
Dart 中的常用数据类型详解(含 String、数字类型、List、Map 与 dynamic) ------(2)
数据结构·list