历史实体属性数据
本文将为你介绍使用DTS进行时序数据记录(属性),利用时序数据制作看板的流程。时序数据记录(事件)可参考此流程。包含以下几个流程: 创建数据推送函数、创建任务、创建时序数据接口、数据应用。
准备事项
1.注册数字孪生服务DTService(以下简称DTS)账户 2.准备APIFox,用于模拟设备属性、事件上报。 3.已成功创建产品”温湿度传感器“。请参考HTTP协议实体接入(透传/自定义)
示例
创建数据推送函数(时序数据记录)
在任务管理-数据推送函数下,创建一个名为”温湿度属性记录“的函数,请求类型需设置为时序数据记录(属性)。时序数据名称可自定义,用于标识时序数据,请按照函数真实含义命名。创建完成后,进入编辑脚本页面。

编辑脚本
在脚本内编辑,需要被记录下来的温湿度传感器的属性。选择记录温湿度传感器的temperature humidity batteryLevel。记录多个属性时,使用,逗号进行分割即可。如果需要对记录内容进行逻辑处理计算,可在sequenceAbstractCalculate函数中编写具体的逻辑。
/**
* 时序数据记录,定义需要记录的摘要参数,从当前上行结构化数据中取值。
* @param {Array<string>} abstractParam - 摘要参数集合,当为属性上报时摘要参数标识为产品属性标识符,当为事件上报时摘要参数标识为事件输出参数标识符(在计算过程中,如果需要记录新增摘要数据,可直接返回摘要对象并在abstractParam中声明变量)
*/
var abstractParam = ["temperature","humidity","batteryLevel"];
/**
* 将摘要数据进行二次计算
* @param {object} body - 入参 eg:{"sourceParam": {},"abstractParam":{}}
* @param {object} body.sourceParam - 上行数据的固定属性,可用于摘要赋值计算等。
* @param {string} body.sourceParam.messageId - 消息编号
* @param {string} body.sourceParam.productId - 产品唯一标识
* @param {string} body.sourceParam.productName - 产品名称
* @param {string} body.sourceParam.sourceType - 资源类型 0 动态资源 1 静态资源
* @param {string} body.sourceParam.deviceId - 设备编号
* @param {string} body.sourceParam.deviceSecret - 设备密钥,与deviceId同时存在
* @param {string} body.sourceParam.deviceName - 设备名称
* @param {string} body.sourceParam.deviceStatus - 设备状态 0 未启用 1 已启用
* @param {string} body.sourceParam.location - 设备位置纬经度(默认0 0 0 = latitude longitude elevation)
* @param {string} body.sourceParam.identifier - 事件标识符,事件上报时存在,否则Val为空
* @param {string} body.sourceParam.name - 功能名称,事件上报时存在,否则Val为空
* @param {string} body.sourceParam.type - 事件类型 0 信息 1 告警,事件上报时存在,否则Val为空
* @param {string} body.sourceParam.description - 事件描述,事件上报时存在,否则Val为空
* @param {string} body.sourceParam.timestamp - 上行数据传输时间。时间戳格式为数值,值为自GMT 1970年1月1日0时0分到当前时间点所经过的毫秒数
* @param {string} body.sourceParam.templateId - 消息(事件、属性详情)模板唯一标识符
* @param {string} body.sourceParam.templateURL - 消息(事件、属性详情)模板访问链接
* @param {string} body.sourceParam.version - 版本号。若不传入此参数,则默认default
* @param {object} body.sourceParam.payload - 验证解析后的上行数据
* @param {object} body.abstractParam - 摘要对象,已根据上行数据赋值
* @returns {object} abstractParam - 摘要对象
*/
function sequenceAbstractCalculate(body) {
return body.abstractParam;
}
编写完成后,保存脚本。可以使用模拟输入检查脚本内容。启用”温湿度属性记录“的函数。
时序数据记录(事件)创建与编辑一致,需注意的是时序数据记录(事件)记录的内容为事件的输出参数。
创建任务
创建任务的目的是,在属性或事件发生时,通过任务触发执行脚本函数(时序数据记录),将需要记录下来的属性或事件输出参数记录到数据库中。
- 在任务管理页面,创建一个任务名为“记录温湿度属性“的任务。
任务逻辑
温湿度传感器全部设备发生属性上报事件 触发 执行 数据推送函数温湿度属性记录
- 创建完成后,进入编辑页面。根据任务逻辑编辑对应的规则。设定触发条件为属性触发:温湿度传感器设备发生属性上报,添加执行任务类型为”数据推送函数“,选择数据推送函数”温湿度属性记录“。
- 编辑完成后保存并开启任务。

模拟属性上报触发
使用APIFox模拟温湿度传感器实体属性上报。
数据应用
方式1:时序数据查询接口
创建时序查询接口
时序查询接口页面是将HTTP请求的请求体中的请求参数进行了可视化配置。页面中配置的内容实际都为查询时的请求参数。 在任务管理下进入时序数据查询接口页面。选择创建一个名为“温湿度属性查询”的接口。用于查询已通过时序数据记录的温湿度传感器属性。
进行创建之前需要在组织结构下,先将温度传感器实体通过孪生体进行管理。示例将其所有温度传感器实体使用孪生体“温度传感器”进行管理。
选择查询的孪生体为“温湿度传感器”,查询的目标时序数据记录为“温湿度属性记录”,查询内容为统计查询。并将查询结果按时间倒序排列。 设置完成后,点击保存并启用。

| 功能名称 | 含义 |
|---|---|
| 孪生体 | 查询指定孪生体下实体产生的时序数据 |
| 时序数据名称 | 查询指定的时序数据记录 |
| 时间范围 | 查询指定的时间范围内的时序数据记录 |
| 查询内容 | 查询的时序数据记录内容。 统计查询:统计时序数据记录的数量; 条件查询:查询满足条件的时序数据记录 |
| 查询方法 | 使用不同的查询方法对请求数据进行处理,提取出所需数据。 分组查询:对查询结果进行分组处理,支持按时序、产品、实体进行分组; 按时间排序:对查询结果按照时间的正序或逆序排列; 分页查询:查询指定页码的指定条目数的结果。 |
查看结果集范例
“查询温湿度属性”接口启用后,可点击查看结果集范例。结果集范例包含请求体示例和返回结果响应示例。通过查看结果集范例还能验证时序数据是否记录成功,响应结果中是否有内容。 完整的接口内容请参考时序数据查询接口。

结果集范例
{
"request": {
"intelligentSpacesIdList": [
"bf029ce259a74835"
],
"flag": 0,
"abstractIdentifierList": [
"Record"
],
"queryMethod": 1,
"abstractIdentifierPropertyCriteriaList": null,
"queryCriteriaList": [
{
"queryCriteria": 2,
"startTime": null,
"endTime": null,
"groupCriteria": null,
"sortCriteria": 0,
"currentPage": null,
"pageSize": null
}
]
},
"response": {
"bf029ce259a74835": [
{
"resultId": "1eb9a1b696254f32",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:24",
"addUser": "system",
"abstractDataId": "160abc8160194695",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&28.86,humidity&57.17,batteryLevel&43",
"location": "0 0 0"
},
{
"resultId": "3239b0d4a7244229",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:23",
"addUser": "system",
"abstractDataId": "8703096e95ef4431",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&38.78,humidity&2.31,batteryLevel&88",
"location": "0 0 0"
},
{
"resultId": "b4c3a169713d4925",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:22",
"addUser": "system",
"abstractDataId": "8c9cb82869924438",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&14.32,humidity&24.85,batteryLevel&80",
"location": "0 0 0"
},
{
"resultId": "36889a3100044b60",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:21",
"addUser": "system",
"abstractDataId": "2e69d7eb09b8422c",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&8.14,humidity&16.84,batteryLevel&18",
"location": "0 0 0"
},
{
"resultId": "8b042827cf5845b7",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:19",
"addUser": "system",
"abstractDataId": "01fc627180f1424d",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&3.2,humidity&21.94,batteryLevel&52",
"location": "0 0 0"
},
{
"resultId": "24a17b1d0c7b4529",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:14",
"addUser": "system",
"abstractDataId": "3504cb8b8bcb43e7",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&36.95,humidity&43.72,batteryLevel&98",
"location": "0 0 0"
},
{
"resultId": "76be272476ac4a0e",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:18:38",
"addUser": "system",
"abstractDataId": "45b6f1ad43bb44db",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&-8.41,humidity&14.62,batteryLevel&90",
"location": "0 0 0"
}
]
}
}
使用APIFox创建请求查询时序数据
第三方可通过时序数据查询接口获取时序数据记录,建立自己的数据展示应用。示例使用APIFox模拟第三方发送时序数据查询请求并获得响应的过程。
- 根据时序数据查询接口,在APIFox中编写时序数据查询接口的调用请求。
- 接口地址填写
http://192.168.100.38:48083/bv-microservice-digitaltwin-center/sceneLinkage/bvSpaceAbstractTemplate/findSpaceAbstractResultSet( 请求地址的IP值根据实际部署环境进行替换)的值,从结果集范例中复制request的内容至请求体中。修改查询时间范围为”2025-07-22“到”2025-07-23“。 - 接口准备完毕,点击发送。
发送请求体示例
{
"intelligentSpacesIdList": [
"bf029ce259a74835"
],
"flag": 0,
"abstractIdentifierList": [
"Record"
],
"queryMethod": 1,
"abstractIdentifierPropertyCriteriaList": null,
"queryCriteriaList": [
{
"queryCriteria": 2,
"startTime": "2025-07-22",
"endTime": "2025-07-23",
"groupCriteria": null,
"sortCriteria": 0,
"currentPage": null,
"pageSize": null
}
]
}
- 获得DTS返回的响应结果。参数的详细含义可参考时序数据查询接口。
响应结果示例
{
"code": 0,
"message": "success",
"info": {
"request": {
"intelligentSpacesIdList": [
"bf029ce259a74835"
],
"flag": 0,
"abstractIdentifierList": [
"Record"
],
"queryMethod": 1,
"abstractIdentifierPropertyCriteriaList": null,
"queryCriteriaList": [
{
"queryCriteria": 2,
"startTime": "2025-07-22",
"endTime": "2025-07-23",
"groupCriteria": null,
"sortCriteria": 0,
"currentPage": null,
"pageSize": null
}
]
},
"response": {
"bf029ce259a74835": [
{
"resultId": "1eb9a1b696254f32",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:24",
"addUser": "system",
"abstractDataId": "160abc8160194695",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&28.86,humidity&57.17,batteryLevel&43",
"location": "0 0 0"
},
{
"resultId": "3239b0d4a7244229",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:23",
"addUser": "system",
"abstractDataId": "8703096e95ef4431",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&38.78,humidity&2.31,batteryLevel&88",
"location": "0 0 0"
},
{
"resultId": "b4c3a169713d4925",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:22",
"addUser": "system",
"abstractDataId": "8c9cb82869924438",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&14.32,humidity&24.85,batteryLevel&80",
"location": "0 0 0"
},
{
"resultId": "36889a3100044b60",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:21",
"addUser": "system",
"abstractDataId": "2e69d7eb09b8422c",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&8.14,humidity&16.84,batteryLevel&18",
"location": "0 0 0"
},
{
"resultId": "8b042827cf5845b7",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:19",
"addUser": "system",
"abstractDataId": "01fc627180f1424d",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&3.2,humidity&21.94,batteryLevel&52",
"location": "0 0 0"
},
{
"resultId": "24a17b1d0c7b4529",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:21:14",
"addUser": "system",
"abstractDataId": "3504cb8b8bcb43e7",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&36.95,humidity&43.72,batteryLevel&98",
"location": "0 0 0"
},
{
"resultId": "76be272476ac4a0e",
"productId": "Re8agKekkXw8Oczi",
"addTime": "2025-07-22 15:18:38",
"addUser": "system",
"abstractDataId": "45b6f1ad43bb44db",
"title": "记录温湿度属性",
"deviceId": "970bdf41-7818-4718-b00e-eb14a08b6372",
"deviceName": "温湿度传感器1751939165",
"deviceStatus": 0,
"deviceSecret": "9d4e0d3949134bd5",
"abstractIdentifier": "Record",
"payload": "temperature&-8.41,humidity&14.62,batteryLevel&90",
"location": "0 0 0"
}
]
},
"interfacePath": "/bv-microservice-digitaltwin-center/sceneLinkage/bvSpaceAbstractTemplate/findSpaceAbstractResultSet",
"requestType": 1,
"intelligentSpacesTree": {
"bf029ce259a74835": {
"intelligentSpacesId": "bf029ce259a74835",
"intelligentSpacesParentId": null,
"intelligentSpacesParentName": null,
"intelligentSpacesName": "温湿度传感器",
"intelligentSpacesCategory": 0,
"intelligentSpacesType": 2,
"intelligentSpacesJointId": null,
"intelligentSpacesCreateMode": 0,
"intelligentSpacesReferenceId": null,
"intelligentSpacesDescription": null,
"intelligentSpacesSequence": null,
"subordinateIntelligentSpacesList": null,
"subordinateIntelligentSpacesCount": null,
"intelligentSpacesResourceList": null,
"intelligentSpacesResourceCount": null,
"hasStructIntelligentSpacesParent": null,
"isSubscribed": null
}
}
}
}
方式2:低代码设计器图表
DTS数据孪生架构提供快速接入查看DTS设备数据的平台功能低代码设计器,详细可视化功能可查看《BigView低代码设计器教程》。