Check Dead Data

检测指定设备的测点数据是否为死数,同时返回测点的最后变更数据。


测点数据是否为死数判断条件:

  • 测点最后变更数据的时间戳与系统当前时间相比大于指定的时间间隔(interval)

  • 若指定测点的数据不存在,不返回数据

操作权限

需授权的资源

所需操作权限

资产

Read

有关各资源及其对应的权限,参考 策略,角色,与权限>>

请求格式

POST https://{apigw-address}/tsdb-service/v2.1/data/latest/check-dead

请求参数(URI)

名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

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

请求参数(Body)

名称

必需/可选

数据类型

描述

payload

必需

Object[]

请求体,包含资产ID、测点ID、时间间隔等查询条件。详见 payload

payload

名称

必需/可选

数据类型

描述

assetId

必需

String

资产ID。如何获取Asset ID信息>>

pointId

必需

String

资产测点ID。如何获取pointId信息>>

interval

必需

Integer

指定测点最后变更数据的时间戳与系统当前时间相比较的时间间隔,单位为毫秒。

响应参数

名称

数据类型

描述

data

List<JSONObject>

测点数据是否为死数检测结果。详见 items

items

示例

{
  "assetId": "yourAssetId",
  "pointId": "yourPointId",
  "duration": 1076897472,
  "judgeResult": true,
  "lastChangedValue": "1",
  "lastChangedTimestamp": 1610667000000
}

参数

名称

数据类型

描述

assetId

String

资产ID。

pointId

String

资产测点ID。

duration

Integer

测点数据未变更的持续时长。

judgeResult

Boolean

判断结果。true 表示测点数据为死数,false 表示测点数据不是死数。

lastChangedValue

Double

测点的最后变更数据。

lastChangedTimestamp

Long

测点最后变更数据时间戳,UNIX时间,精确到毫秒。

错误码

有关错误码的描述,参见 通用错误码

示例

请求示例

url: https://{apigw-address}/tsdb-service/v2.1/data/latest/check-dead?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "payload": [
    {
      "assetId": "yourAssetId",
      "pointId": "yourPointId",
      "interval": 864000000
    }
  ]
}

返回示例

{
  "msg": "OK",
  "code": 0,
  "data": {
    "items": [
      {
        "assetId": "yourAssetId",
        "pointId": "yourPointId",
        "duration": 1076897472,
        "judgeResult": true,
        "lastChangedValue": "1",
        "lastChangedTimestamp": 1610667000000
      },
      {
        "assetId": "yourAssetId",
        "pointId": "yourPointId",
        "duration": 1106897472,
        "judgeResult": true,
        "lastChangedValue": "1",
        "lastChangedTimestamp": 1610637000000
      },
      {
        "assetId": "yourAnotherAssetId",
        "pointId": "yourPointId",
        "duration": 1105757472,
        "judgeResult": true,
        "lastChangedValue": "29",
        "lastChangedTimestamp": 1610638140000
      }
    ]
  },
  "submsg": ""
}

Java SDK调用示例

import com.alibaba.fastjson.JSONObject;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envision.apim.poseidon.request.PoseidonRequest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CheckDeadData {
    private static final String API_GATEWAY_URL = "https://{apigw-address}";

    private static class Request extends PoseidonRequest {

        public void setBodyParams(String key, Object value) {
            bodyParams().put(key, value);
        }

        public void setMethod(String method) {
            this.method = method;
        }

        private String method;

        @Override
        public String baseUri() {
            return "";
        }

        @Override
        public String method() {
            return method;
        }
    }

    public static void main(String[] args) {
        //1.在EnOS管理门户的左边导航栏中点击应用注册。
        //2.点击需调用API的应用,查看基本信息中的AccessKey和SecretKey
        Poseidon poseidon = Poseidon.config(
                PConfig.init()
                        .appKey("AccessKey of your APP")
                        .appSecret("SecretKey of your APP")
        ).method("POST").header("Content-Type", "application/json");

        Request request = new Request();
        List<Map<String, Object>> payload = new ArrayList<>();
        Map<String, Object> param1 = new HashMap<>();
        param1.put("assetId", "yourAssetId");
        param1.put("pointId", "yourPointId");
        param1.put("interval", 86400000);
        Map<String, Object> param2 = new HashMap<>();
        param2.put("assetId", "yourAnotherAssetId");
        param2.put("pointId", "yourPointId");
        param2.put("interval", 86400000);
        payload.add(param1);
        payload.add(param2);
        request.setBodyParams("payload", payload);

        JSONObject response =  poseidon
                .url(API_GATEWAY_URL + "/tsdb-service/v2.1/data/latest/check-dead")
                .queryParam("orgId", "yourOrgId")
                .getResponse(request, JSONObject.class);
        System.out.println(response);
    }
}