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

相关推荐
xiaoye-duck12 分钟前
归并排序:递归与非递归全解析
数据结构·排序算法
lqj_本人14 分钟前
鸿蒙Qt数据库实战:SQLite死锁与沙箱路径陷阱
数据库·qt·harmonyos
罗光记18 分钟前
低空基础设施新突破!优刻得 ×IDEA联合发布 OpenSILAS一体机
数据库·经验分享·其他·百度·facebook
合作小小程序员小小店18 分钟前
web网页开发,在线%餐饮点餐%系统,基于Idea,html,css,jQuery,java,ssm,mysql。
java·前端·数据库·html·intellij-idea·springboot
p***434828 分钟前
SQL在业务智能中的分析函数
数据库·sql
@卞44 分钟前
高阶数据结构 --- 单调队列
数据结构·c++·算法
j***29481 小时前
【MySQL — 数据库基础】深入理解数据库服务与数据库关系、MySQL连接创建、客户端工具及架构解析
数据库·mysql·架构
tuokuac2 小时前
SQL中AND和逗号,的区别
java·数据库·sql
Klong.k2 小时前
关于sqlite
数据库·sqlite
DBA圈小圈3 小时前
【KingbaseES】V8R6查询数据库大小
数据库·database