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 中 "实体 - 关系 - 数据" 的关联模式,常用于仪表盘、规则链等场景中数据的查询和展示。

相关推荐
chian-ocean8 小时前
双向链表的“链”与“殇”——Rust LinkedList 的深度剖析、实战与再思考
数据结构·链表·rust
苦学编程的谢8 小时前
Redis_1_初识Redis+浅谈分布式系统
数据库·redis·缓存
人工智能教学实践8 小时前
Flask-SQLAlchemy 操作 SQLite 数据库示例
数据库·sqlite·flask
岑梓铭8 小时前
《考研408数据结构》第七章(6.1~6.3图的概念、存储方式、深/广度遍历)复习笔记
数据结构·笔记·考研·算法·图论·408·ds
qq_433554549 小时前
C++ 单调栈
数据结构·c++·算法
向前阿、9 小时前
数据结构从基础到实战——排序
c语言·开发语言·数据结构·程序人生·算法
老华带你飞9 小时前
房屋租赁|房屋出租|房屋租赁系统|基于Springboot的房屋租赁系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·vue·论文·毕设·房屋租赁系统
TDengine (老段)9 小时前
TDengine 数学函数 ASCII 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Doro再努力9 小时前
数据结构04:链表的概念及实现单链表
c语言·数据结构