Get Asset DI Data Duration


获取指定设备的指定测点在一段时间内不同状态(DI)的时长统计。

请求格式


POST https://{apigw-address}/tsdb-service/v2.1/di/duration

请求参数(URI)


名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的 OU ID。如何获取 orgId 信息 >>

请求参数(Body)


名称

必需/可选

数据类型

描述

modelId

可选

String

资产所属模型 ID。如何获取 modelId 信息 >>

assetIds

必需

String

资产 ID,支持查询多个资产,多个资产 ID 之间用英文逗号隔开。如何获取 Asset ID 信息 >>

pointIds

必需

String

资产测点,支持多测点查询,各个测点间用逗号隔开。如何获取 pointId 信息 >>

startTime

必需

String

采样数据开始时间,支持设备当地时间和 UTC 时间。设备当地时间的格式为 YYYY-MM-DD HH:MM:SS。当格式为设备当地时间时,使用设备所在地的当地时间进行查询。UTC 时间格式如 2019-06-01T00:00:00+08:00+08:00 表示时区。当格式为 UTC 时间时,对所有资产按照统一的开始时间和结束时间进行查询。

endTime

必需

String

采样数据结束时间,格式必须与开始时间保持一致。

status

可选

String

对包含多个状态时长统计的结果进行筛选,例如只需要状态为 0 的结果,可赋值 0。支持对多个状态进行筛选,多个状态之间用英文逗号隔开。使用 status 筛选后,返回结果中将不包含的状态。

ifWithUnknown

可选

Boolean

是否包含无法确认(Unknown)的状态,默认为 true,即包含。当某段时间内的状态无法确认时,默认将返回“Unknown”状态。

响应参数


名称

数据类型

描述

items

List<JSONObject>

资产测点最后变更数据列表。单个设备单一测点的数据将按照时间戳升序排列。详见 items

items


名称

数据类型

描述

scanEndTimestamp

Long

此参数标志时长统计需要扫描的最后一个时间点。由于一次时长统计扫描的数据不得超过 640,000 条,当在用户期望的起止时间内扫描到的数据超过 640,000 条时,将停止扫描,并通过此参数返回扫描到的最后一个点的时间戳,表示此时间戳后的数据未进行统计。

assetId

String

资产 ID。

pointId

String

测点标识符。

durations

List<JSONObject>

各个状态的时长统计。

status

Integer

对应设备测点的值。

duration

Integer

上述设备测点的值在用户选择的开始时间到 scanEndTimestamp 中的时长,单位为毫秒。

示例 1


示例 1 的请求包含无法确认的状态,即 ifWithUnknown 值为 true

请求示例


url: https://{apigw-address}/tsdb-service/v2.1/di/duration?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "assetIds": "yourAssetId1,yourAssetId2",
  "pointIds": "yourPointIds",
  "startTime": "2020-03-01 00:00:00",
  "endTime": "2020-03-02 00:00:00",
  "status": "0,1",
  "ifWithUnknown": true,
  "localTimeFormat": 1,
  "itemFormat": 0
}

返回示例


{
    "code": 0,
    "msg": "OK",
    "submsg": null,
    "data": {
        "items": [
            {
                "scanEndTimestamp": 1583082072000,
                "pointId": "yourPointId",
                "assetId": "yourAssetId1",
                "durations": [
                    {
                        "duration": 60000,
                        "status": 0
                    },
                    {
                        "duration": 60000,
                        "status": 1
                    },
                    {
                        "duration": 180000,
                        "status": "Unknown"
                    }
                ]
            },
            {
                "scanEndTimestamp": 1583082072000,
                "pointId": "yourPointId",
                "assetId": "yourAssetId2",
                "durations": [
                    {
                        "duration": 60000,
                        "status": 0
                    },
                    {
                        "duration": 60000,
                        "status": 1
                    },
                    {
                        "duration": 180000,
                        "status": "Unknown"
                    }
                ]
            }
        ]
    }
}

示例 2


示例 2 的请求不包含无法确认的状态,即 ifWithUnknown 值为 false

请求示例


url: https://{apigw-address}/tsdb-service/v2.1/di/duration?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "assetIds": "yourAssetId1,yourAssetId2",
  "pointIds": "yourPointIds",
  "startTime": "2020-03-01 00:00:00",
  "endTime": "2020-03-02 00:00:00",
  "status": "0,1",
  "ifWithUnknown": false,
  "localTimeFormat": 1,
  "itemFormat": 0
}

返回示例


{
    "code": 0,
    "msg": "OK",
    "submsg": null,
    "data": {
        "items": [
            {
                "scanEndTimestamp": 1583082072000,
                "durations": [
                    {
                        "duration": 60000,
                        "status": 0
                    },
                    {
                        "duration": 60000,
                        "status": 1
                    }
                ],
                "pointId": "yourPointId",
                "assetId": "yourAssetId1"
            },
            {
                "scanEndTimestamp": 1583082072000,
                "durations": [
                    {
                        "duration": 60000,
                        "status": 0
                    },
                    {
                        "duration": 60000,
                        "status": 1
                    }
                ],
                "pointId": "yourPointId",
                "assetId": "yourAssetId2"
            }
        ]
    }
}

示例 3


示例 3 对返回结果进行状态筛选,即在 status 参数中指定了状态。

请求示例


url: https://{apigw-address}/tsdb-service/v2.1/di/duration?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "assetIds": "yourAssetId1,yourAssetId2",
  "pointIds": "yourPointIds",
  "startTime": "2020-03-01 00:00:00",
  "endTime": "2020-03-02 00:00:00",
  "status": "1",
  "localTimeFormat": 1,
  "itemFormat": 0
}

返回示例


{
    "code": 0,
    "msg": "OK",
    "submsg": null,
    "data": {
        "items": [
            {
                "scanEndTimestamp": 1583082072000,
                "durations": [
                    {
                        "duration": 60000,
                        "status": 1
                    }
                ],
                "pointId": "yourPointId",
                "assetId": "yourAssetId1"
            },
            {
                "scanEndTimestamp": 1583082072000,
                "durations": [
                    {
                        "duration": 60000,
                        "status": 1
                    }
                ],
                "pointId": "yourPointId",
                "assetId": "yourAssetId2"
            }
        ]
    }
}

SDK 示例


你可以在 Github 上获取 TSDB 数据服务的 Java SDK 示例