0. 版本说明
本示例基于华为云Java SDK V3.0版本开发
1. 简介
基于华为云Java SDK, 与资产属性值的相关操作
2. 开发前准备
已注册华为云, 并完成实名认证;
已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK);
Java JDK 1.8及其以上版本
3. 安装SDK
通过 Maven 安装项目依赖是使用 Java SDK 的推荐方法,首先您需要在您的操作系统中下载并安装 Maven ,安装完成后您只需在 Java 项目的 pom.xml 文件加入相应的依赖项即可。
本示例使用iotanalytics SDK
Copied!
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-iotanalytics</artifactId>
<version>3.0.72</version>
</dependency>
4. 开始使用
4.1 导入依赖模块
Copied!
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.iotanalytics.v1.IoTAnalyticsClient;
import com.huaweicloud.sdk.iotanalytics.v1.model.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
4.2.1 配置客户端属性
Copied!
HttpConfig config = HttpConfig.getDefaultHttpConfig();
config.withIgnoreSSLVerification(true);
4.2.2 初始化认证信息
Copied!
BasicCredentials auth = new BasicCredentials()
.withAk(ak)
.withSk(sk);
4.2.3 初始化客户端
Copied!
GslClient ecsClient = GslClient.newBuilder()
.withHttpConfig(config)
.withCredential(auth)
.build();
5. 示例代码
使用如下代码对资产属性值进行相关查询操作,调用前请根据实际情况替换如下变量:
通用参数: {your ak string}、{your sk string} , 以及各个方法中包含的参数。
Copied!
package com.huawei.iotanalytics;
public class PropertyValueApplication {
private static final Logger logger = LoggerFactory.getLogger(PropertyValueApplication.class);
public static void main(String[] args) {
String ak = System.getenv("HUAWEICLOUD_SDK_AK");
String sk = System.getenv("HUAWEICLOUD_SDK_SK");
String endpoint = "{your endpoint string}";
String projectId = "{your project id}";
HttpConfig config = HttpConfig.getDefaultHttpConfig();
config.withIgnoreSSLVerification(true);
BasicCredentials auth = new BasicCredentials()
.withAk(ak)
.withSk(sk)
.withProjectId(projectId);
IoTAnalyticsClient ioTAnalyticsClient = IoTAnalyticsClient.newBuilder()
.withHttpConfig(config)
.withCredential(auth)
.withEndpoint(endpoint)
.build();
showLastPropertyValue(ioTAnalyticsClient);
showMetricValue(ioTAnalyticsClient);
showPropertyRawValue(ioTAnalyticsClient);
}
public static void showLastPropertyValue(IoTAnalyticsClient client) {
try {
ShowLastPropertyValueRequest showLastPropertyValueRequest = new ShowLastPropertyValueRequest();
LastAssetPropertyValueRequest lastAssetPropertyValueRequest = new LastAssetPropertyValueRequest();
showLastPropertyValueRequest.setBody(lastAssetPropertyValueRequest);
showLastPropertyValueRequest.setAssetId("your assetId");
ShowLastPropertyValueResponse showLastPropertyValueResponse = client.showLastPropertyValue(showLastPropertyValueRequest);
logger.info(showLastPropertyValueResponse.toString());
} catch (ServiceResponseException e) {
logger.error("HttpStatusCode: " + e.getHttpStatusCode());
logger.error("RequestId: " + e.getRequestId());
logger.error("ErrorCode: " + e.getErrorCode());
logger.error("ErrorMsg: " + e.getErrorMsg());
}
}
public static void showMetricValue(IoTAnalyticsClient client) {
try {
ShowMetricValueRequest showMetricValueRequest = getShowMetricValueRequest();
ShowMetricValueResponse showMetricValueResponse = client.showMetricValue(showMetricValueRequest);
logger.info(showMetricValueResponse.toString());
} catch (ServiceResponseException e) {
logger.error("HttpStatusCode: " + e.getHttpStatusCode());
logger.error("RequestId: " + e.getRequestId());
logger.error("ErrorCode: " + e.getErrorCode());
logger.error("ErrorMsg: " + e.getErrorMsg());
}
}
public static void showPropertyRawValue(IoTAnalyticsClient client) {
try {
ShowPropertyRawValueRequest showPropertyRawValueRequest = new ShowPropertyRawValueRequest();
showPropertyRawValueRequest.setAssetId("your assetId");
RawRequest rawRequest = new RawRequest();
rawRequest.setLimit(2000);
List<String> propertyNames = new ArrayList<>();
propertyNames.add("p2");
rawRequest.setPropertyNames(propertyNames);
TimeSpanDT timeSpan = new TimeSpanDT();
timeSpan.setFrom("2020-11-21T10:45:32Z");
timeSpan.setTo("2020-11-27T10:45:32Z");
rawRequest.setTimeSpan(timeSpan);
showPropertyRawValueRequest.setBody(rawRequest);
ShowPropertyRawValueResponse showPropertyRawValueResponse = client.showPropertyRawValue(showPropertyRawValueRequest);
logger.info(showPropertyRawValueResponse.toString());
} catch (ServiceResponseException e) {
logger.error("HttpStatusCode: " + e.getHttpStatusCode());
logger.error("RequestId: " + e.getRequestId());
logger.error("ErrorCode: " + e.getErrorCode());
logger.error("ErrorMsg: " + e.getErrorMsg());
}
}
private static ShowMetricValueRequest getShowMetricValueRequest() {
ShowMetricValueRequest showMetricValueRequest = new ShowMetricValueRequest();
showMetricValueRequest.setAssetId("your assetId");
GetMetricsValue getMetricsValue = new GetMetricsValue();
getMetricsValue.setType("transform");
TransformMetricsRequest transformMetricsRequest = new TransformMetricsRequest();
transformMetricsRequest.setLimit(50);
TimeSpanDT timeSpan = new TimeSpanDT();
timeSpan.setFrom("2020-12-25T00:00:00Z");
timeSpan.setTo("2020-12-27T00:00:00Z");
transformMetricsRequest.setTimeSpan(timeSpan);
List<DTTransformMetrics> metrics = new ArrayList<>();
DTTransformMetrics dtTransformMetrics = new DTTransformMetrics();
dtTransformMetrics.setExpression("floor(y)");
dtTransformMetrics.setMetricName("y2");
List<MetricInput> inputs = new ArrayList<>();
MetricInput metricInput = new MetricInput();
metricInput.setName("y");
metricInput.setPropertyName("p2");
inputs.add(metricInput);
dtTransformMetrics.setInputs(inputs);
metrics.add(dtTransformMetrics);
transformMetricsRequest.setMetrics(metrics);
getMetricsValue.setTransform(transformMetricsRequest);
showMetricValueRequest.setBody(getMetricsValue);
return showMetricValueRequest;
}
}
7. 修订记录
发布日期 |
文档版本 |
修订说明 |
2021-12-22 |
1.0 |
文档首次发布 |
0. 版本说明
本示例基于华为云Java SDK V3.0版本开发
1. 简介
基于华为云Java SDK, 与资产属性值的相关操作
2. 开发前准备
已注册华为云, 并完成实名认证; 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK); Java JDK 1.8及其以上版本
3. 安装SDK
通过 Maven 安装项目依赖是使用 Java SDK 的推荐方法,首先您需要在您的操作系统中下载并安装 Maven ,安装完成后您只需在 Java 项目的 pom.xml 文件加入相应的依赖项即可。 本示例使用iotanalytics SDK
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-iotanalytics</artifactId> <version>3.0.72</version> </dependency>
4. 开始使用
4.1 导入依赖模块
// 用户身份认证 import com.huaweicloud.sdk.core.auth.BasicCredentials; // 请求异常类 import com.huaweicloud.sdk.core.exception.ServiceResponseException; // 导入相应产品的 {Service}Client import com.huaweicloud.sdk.iotanalytics.v1.IoTAnalyticsClient; // 导入待请求接口的 request 和 response 类 import com.huaweicloud.sdk.iotanalytics.v1.model.*; // 日志打印 import org.slf4j.Logger; import org.slf4j.LoggerFactory;
4.2.1 配置客户端属性
HttpConfig config = HttpConfig.getDefaultHttpConfig(); config.withIgnoreSSLVerification(true);
4.2.2 初始化认证信息
BasicCredentials auth = new BasicCredentials() .withAk(ak) .withSk(sk);
4.2.3 初始化客户端
GslClient ecsClient = GslClient.newBuilder() .withHttpConfig(config) .withCredential(auth) .build();
5. 示例代码
使用如下代码对资产属性值进行相关查询操作,调用前请根据实际情况替换如下变量: 通用参数: {your ak string}、{your sk string} , 以及各个方法中包含的参数。
package com.huawei.iotanalytics; public class PropertyValueApplication { private static final Logger logger = LoggerFactory.getLogger(PropertyValueApplication.class); public static void main(String[] args) { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份认证为例,运行示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); String endpoint = "{your endpoint string}"; String projectId = "{your project id}"; // 配置客户端属性 HttpConfig config = HttpConfig.getDefaultHttpConfig(); // 根据需要配置是否跳过SSL证书验证 config.withIgnoreSSLVerification(true); // 创建认证 BasicCredentials auth = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); // 创建IoTAnalyticsClient实例并初始化 IoTAnalyticsClient ioTAnalyticsClient = IoTAnalyticsClient.newBuilder() .withHttpConfig(config) .withCredential(auth) .withEndpoint(endpoint) .build(); // 通过SDK,调用获取资产属性最新值接口 showLastPropertyValue(ioTAnalyticsClient); // 通过SDK,调用获取资产属性聚合值接口 showMetricValue(ioTAnalyticsClient); // 通过SDK,获取资产属性历史值接口 showPropertyRawValue(ioTAnalyticsClient); } /** * 获取资产属性最新值 */ public static void showLastPropertyValue(IoTAnalyticsClient client) { try { ShowLastPropertyValueRequest showLastPropertyValueRequest = new ShowLastPropertyValueRequest(); LastAssetPropertyValueRequest lastAssetPropertyValueRequest = new LastAssetPropertyValueRequest(); showLastPropertyValueRequest.setBody(lastAssetPropertyValueRequest); showLastPropertyValueRequest.setAssetId("your assetId"); ShowLastPropertyValueResponse showLastPropertyValueResponse = client.showLastPropertyValue(showLastPropertyValueRequest); // 输出json格式的字符串响应 logger.info(showLastPropertyValueResponse.toString()); } catch (ServiceResponseException e) { logger.error("HttpStatusCode: " + e.getHttpStatusCode()); logger.error("RequestId: " + e.getRequestId()); logger.error("ErrorCode: " + e.getErrorCode()); logger.error("ErrorMsg: " + e.getErrorMsg()); } } /** * 获取资产属性聚合值 */ public static void showMetricValue(IoTAnalyticsClient client) { try { // 构造请求参数 ShowMetricValueRequest showMetricValueRequest = getShowMetricValueRequest(); ShowMetricValueResponse showMetricValueResponse = client.showMetricValue(showMetricValueRequest); // 输出json格式的字符串响应 logger.info(showMetricValueResponse.toString()); } catch (ServiceResponseException e) { logger.error("HttpStatusCode: " + e.getHttpStatusCode()); logger.error("RequestId: " + e.getRequestId()); logger.error("ErrorCode: " + e.getErrorCode()); logger.error("ErrorMsg: " + e.getErrorMsg()); } } /** * 获取资产属性历史值 */ public static void showPropertyRawValue(IoTAnalyticsClient client) { try { // 构造请求参数 ShowPropertyRawValueRequest showPropertyRawValueRequest = new ShowPropertyRawValueRequest(); showPropertyRawValueRequest.setAssetId("your assetId"); RawRequest rawRequest = new RawRequest(); rawRequest.setLimit(2000); List<String> propertyNames = new ArrayList<>(); propertyNames.add("p2"); rawRequest.setPropertyNames(propertyNames); TimeSpanDT timeSpan = new TimeSpanDT(); // 设置起止时间,UTC格式字符串 timeSpan.setFrom("2020-11-21T10:45:32Z"); timeSpan.setTo("2020-11-27T10:45:32Z"); rawRequest.setTimeSpan(timeSpan); showPropertyRawValueRequest.setBody(rawRequest); ShowPropertyRawValueResponse showPropertyRawValueResponse = client.showPropertyRawValue(showPropertyRawValueRequest); // 输出json格式的字符串响应 logger.info(showPropertyRawValueResponse.toString()); } catch (ServiceResponseException e) { logger.error("HttpStatusCode: " + e.getHttpStatusCode()); logger.error("RequestId: " + e.getRequestId()); logger.error("ErrorCode: " + e.getErrorCode()); logger.error("ErrorMsg: " + e.getErrorMsg()); } } /** * 构造获取资产属性聚合值请求参数 */ private static ShowMetricValueRequest getShowMetricValueRequest() { ShowMetricValueRequest showMetricValueRequest = new ShowMetricValueRequest(); showMetricValueRequest.setAssetId("your assetId"); GetMetricsValue getMetricsValue = new GetMetricsValue(); // 设置查询类型,经过转换计算的序列值(transform)、经过聚合计算的序列值(aggregate) getMetricsValue.setType("transform"); TransformMetricsRequest transformMetricsRequest = new TransformMetricsRequest(); transformMetricsRequest.setLimit(50); TimeSpanDT timeSpan = new TimeSpanDT(); // 设置起止时间,UTC格式字符串 timeSpan.setFrom("2020-12-25T00:00:00Z"); timeSpan.setTo("2020-12-27T00:00:00Z"); transformMetricsRequest.setTimeSpan(timeSpan); List<DTTransformMetrics> metrics = new ArrayList<>(); DTTransformMetrics dtTransformMetrics = new DTTransformMetrics(); dtTransformMetrics.setExpression("floor(y)"); dtTransformMetrics.setMetricName("y2"); List<MetricInput> inputs = new ArrayList<>(); MetricInput metricInput = new MetricInput(); metricInput.setName("y"); metricInput.setPropertyName("p2"); inputs.add(metricInput); dtTransformMetrics.setInputs(inputs); metrics.add(dtTransformMetrics); transformMetricsRequest.setMetrics(metrics); getMetricsValue.setTransform(transformMetricsRequest); showMetricValueRequest.setBody(getMetricsValue); return showMetricValueRequest; } }
6. 参考
详细了解数据分析,请参考IoT数据分析
更多关于SDK的调用,请参考华为云开发者 Java 软件开发工具包(Java SDK)
7. 修订记录