1. 简介
基于华为云GO SDK, 与资产属性值的相关操作
2. 开发前准备
已注册华为云, 并完成实名认证;
已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK);
GO 1.16及其以上版本
3. 安装SDK
Copied!
go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3
4. 开始使用
4.1 导入依赖模块
Copied!
coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
coreConfig "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config"
iotanalytics "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotanalytics/v1"
iotanalyticsModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotanalytics/v1/model"
4.2.1 配置客户端属性
Copied!
config := coreConfig.DefaultHttpConfig()
config.WithIgnoreSSLVerification(true)
4.2.2 初始化认证信息
Copied!
auth := coreBasic.NewCredentialsBuilder().WithAk(yourAK).WithSk(yourSK).WithProjectId(projectId).Build()
4.2.3 初始化客户端
Copied!
ioTAnalyticsClient := *iotanalytics.NewIoTAnalyticsClient(iotanalytics.IoTAnalyticsClientBuilder().
WithHttpConfig(config).
WithCredential(auth).
WithEndpoint(endpoint).
Build())
5. 示例代码
使用如下代码对资产属性值进行相关查询操作,调用前请根据实际情况替换如下变量:
通用参数: {your ak string}、{your sk string} , 以及各个方法中包含的参数。
Copied!
package main;
func main() {
ak := os.Getenv("HUAWEICLOUD_SDK_AK")
sk := os.Getenv("HUAWEICLOUD_SDK_SK")
endpoint := "{your endpoint string}"
projectId := "{your project id}"
config := coreConfig.DefaultHttpConfig()
config.WithIgnoreSSLVerification(true)
auth := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).WithProjectId(projectId).Build()
ioTAnalyticsClient := *iotanalytics.NewIoTAnalyticsClient(iotanalytics.IoTAnalyticsClientBuilder().
WithHttpConfig(config).
WithCredential(auth).
WithEndpoint(endpoint).
Build())
PropertyValueApplicationShowLastPropertyValue(ioTAnalyticsClient)
PropertyValueApplicationShowMetricValue(ioTAnalyticsClient)
PropertyValueApplicationShowPropertyRawValue(ioTAnalyticsClient)
}
func PropertyValueApplicationShowLastPropertyValue(client iotanalytics.IoTAnalyticsClient) {
showLastPropertyValueRequest := iotanalyticsModel.ShowLastPropertyValueRequest{}
lastAssetPropertyValueRequest := iotanalyticsModel.LastAssetPropertyValueRequest{}
showLastPropertyValueRequest.Body = &lastAssetPropertyValueRequest
showLastPropertyValueRequest.AssetId = "your assetId"
showLastPropertyValueResponse, err := client.ShowLastPropertyValue(&showLastPropertyValueRequest)
if err != nil {
fmt.Println(err)
return
}
log.Println(showLastPropertyValueResponse.String())
}
func PropertyValueApplicationShowMetricValue(client iotanalytics.IoTAnalyticsClient) {
showMetricValueRequest := propertyValueApplicationGetShowMetricValueRequest()
showMetricValueResponse, err := client.ShowMetricValue(&showMetricValueRequest)
if err != nil {
fmt.Println(err)
return
}
log.Println(showMetricValueResponse.String())
}
func PropertyValueApplicationShowPropertyRawValue(client iotanalytics.IoTAnalyticsClient) {
showPropertyRawValueRequest := iotanalyticsModel.ShowPropertyRawValueRequest{}
showPropertyRawValueRequest.AssetId = "your assetId"
rawRequest := iotanalyticsModel.RawRequest{}
rawRequestLimitParam := int32(2000)
rawRequest.Limit = &rawRequestLimitParam
propertyNames := make([]string, 0)
propertyNames = append(propertyNames, "p2")
rawRequest.PropertyNames = propertyNames
timeSpan := iotanalyticsModel.TimeSpanDt{}
timeSpanDTFromParam := "2020-11-21T10:45:32Z"
timeSpan.From = &timeSpanDTFromParam
timeSpanDTToParam := "2020-11-27T10:45:32Z"
timeSpan.To = &timeSpanDTToParam
rawRequest.TimeSpan = &timeSpan
showPropertyRawValueRequest.Body = &rawRequest
showPropertyRawValueResponse, err := client.ShowPropertyRawValue(&showPropertyRawValueRequest)
if err != nil {
fmt.Println(err)
return
}
log.Println(showPropertyRawValueResponse.String())
}
func propertyValueApplicationGetShowMetricValueRequest() iotanalyticsModel.ShowMetricValueRequest {
showMetricValueRequest := iotanalyticsModel.ShowMetricValueRequest{}
showMetricValueRequest.AssetId = "your assetId"
getMetricsValue := iotanalyticsModel.GetMetricsValue{}
getMetricsValue.Type = "transform"
transformMetricsRequest := iotanalyticsModel.TransformMetricsRequest{}
transformMetricsRequestLimitParam := int32(50)
transformMetricsRequest.Limit = &transformMetricsRequestLimitParam
timeSpan := iotanalyticsModel.TimeSpanDt{}
timeSpanDTFromParam1 := "2020-12-25T00:00:00Z"
timeSpan.From = &timeSpanDTFromParam1
timeSpanDTToParam1 := "2020-12-27T00:00:00Z"
timeSpan.To = &timeSpanDTToParam1
transformMetricsRequest.TimeSpan = &timeSpan
metrics := make([]iotanalyticsModel.DtTransformMetrics, 0)
dtTransformMetrics := iotanalyticsModel.DtTransformMetrics{}
dtTransformMetrics.Expression = "floor(y)"
dtTransformMetrics.MetricName = "y2"
inputs := make([]iotanalyticsModel.MetricInput, 0)
metricInput := iotanalyticsModel.MetricInput{}
metricInput.Name = "y"
metricInput.PropertyName = "p2"
inputs = append(inputs, metricInput)
dtTransformMetrics.Inputs = inputs
metrics = append(metrics, dtTransformMetrics)
transformMetricsRequest.Metrics = metrics
getMetricsValue.Transform = &transformMetricsRequest
showMetricValueRequest.Body = &getMetricsValue
return showMetricValueRequest
}
7. 修订记录
发布日期 |
文档版本 |
修订说明 |
2021-12-22 |
1.0 |
文档首次发布 |
0. 版本说明
本示例基于华为云GO SDK开发
1. 简介
基于华为云GO SDK, 与资产属性值的相关操作
2. 开发前准备
已注册华为云, 并完成实名认证; 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK); GO 1.16及其以上版本
3. 安装SDK
4. 开始使用
4.1 导入依赖模块
// 用户身份认证 coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" // 导入待请求接口的类 coreConfig "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config" iotanalytics "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotanalytics/v1" iotanalyticsModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotanalytics/v1/model"
4.2.1 配置客户端属性
config := coreConfig.DefaultHttpConfig() config.WithIgnoreSSLVerification(true)
4.2.2 初始化认证信息
4.2.3 初始化客户端
5. 示例代码
使用如下代码对资产属性值进行相关查询操作,调用前请根据实际情况替换如下变量: 通用参数: {your ak string}、{your sk string} , 以及各个方法中包含的参数。
package main; func main() { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ak := os.Getenv("HUAWEICLOUD_SDK_AK") sk := os.Getenv("HUAWEICLOUD_SDK_SK") endpoint := "{your endpoint string}" projectId := "{your project id}" // 配置客户端属性 config := coreConfig.DefaultHttpConfig() // 根据需要配置是否跳过SSL证书验证 config.WithIgnoreSSLVerification(true) // 创建认证 auth := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).WithProjectId(projectId).Build() // 创建IoTAnalyticsClient实例并初始化 ioTAnalyticsClient := *iotanalytics.NewIoTAnalyticsClient(iotanalytics.IoTAnalyticsClientBuilder(). WithHttpConfig(config). WithCredential(auth). WithEndpoint(endpoint). Build()) // 通过SDK,调用获取资产属性最新值接口 PropertyValueApplicationShowLastPropertyValue(ioTAnalyticsClient) // 通过SDK,调用获取资产属性聚合值接口 PropertyValueApplicationShowMetricValue(ioTAnalyticsClient) // 通过SDK,获取资产属性历史值接口 PropertyValueApplicationShowPropertyRawValue(ioTAnalyticsClient) } /* 获取资产属性最新值 */ func PropertyValueApplicationShowLastPropertyValue(client iotanalytics.IoTAnalyticsClient) { showLastPropertyValueRequest := iotanalyticsModel.ShowLastPropertyValueRequest{} lastAssetPropertyValueRequest := iotanalyticsModel.LastAssetPropertyValueRequest{} showLastPropertyValueRequest.Body = &lastAssetPropertyValueRequest showLastPropertyValueRequest.AssetId = "your assetId" showLastPropertyValueResponse, err := client.ShowLastPropertyValue(&showLastPropertyValueRequest) if err != nil { fmt.Println(err) return } // 输出json格式的字符串响应 log.Println(showLastPropertyValueResponse.String()) } /* 获取资产属性聚合值 */ func PropertyValueApplicationShowMetricValue(client iotanalytics.IoTAnalyticsClient) { // 构造请求参数 showMetricValueRequest := propertyValueApplicationGetShowMetricValueRequest() showMetricValueResponse, err := client.ShowMetricValue(&showMetricValueRequest) if err != nil { fmt.Println(err) return } // 输出json格式的字符串响应 log.Println(showMetricValueResponse.String()) } /* 获取资产属性历史值 */ func PropertyValueApplicationShowPropertyRawValue(client iotanalytics.IoTAnalyticsClient) { // 构造请求参数 showPropertyRawValueRequest := iotanalyticsModel.ShowPropertyRawValueRequest{} showPropertyRawValueRequest.AssetId = "your assetId" rawRequest := iotanalyticsModel.RawRequest{} rawRequestLimitParam := int32(2000) rawRequest.Limit = &rawRequestLimitParam propertyNames := make([]string, 0) propertyNames = append(propertyNames, "p2") rawRequest.PropertyNames = propertyNames timeSpan := iotanalyticsModel.TimeSpanDt{} // 设置起止时间,UTC格式字符串 timeSpanDTFromParam := "2020-11-21T10:45:32Z" timeSpan.From = &timeSpanDTFromParam timeSpanDTToParam := "2020-11-27T10:45:32Z" timeSpan.To = &timeSpanDTToParam rawRequest.TimeSpan = &timeSpan showPropertyRawValueRequest.Body = &rawRequest showPropertyRawValueResponse, err := client.ShowPropertyRawValue(&showPropertyRawValueRequest) if err != nil { fmt.Println(err) return } // 输出json格式的字符串响应 log.Println(showPropertyRawValueResponse.String()) } /* 构造获取资产属性聚合值请求参数 */ func propertyValueApplicationGetShowMetricValueRequest() iotanalyticsModel.ShowMetricValueRequest { showMetricValueRequest := iotanalyticsModel.ShowMetricValueRequest{} showMetricValueRequest.AssetId = "your assetId" getMetricsValue := iotanalyticsModel.GetMetricsValue{} // 设置查询类型,经过转换计算的序列值(transform)、经过聚合计算的序列值(aggregate) getMetricsValue.Type = "transform" transformMetricsRequest := iotanalyticsModel.TransformMetricsRequest{} transformMetricsRequestLimitParam := int32(50) transformMetricsRequest.Limit = &transformMetricsRequestLimitParam timeSpan := iotanalyticsModel.TimeSpanDt{} // 设置起止时间,UTC格式字符串 timeSpanDTFromParam1 := "2020-12-25T00:00:00Z" timeSpan.From = &timeSpanDTFromParam1 timeSpanDTToParam1 := "2020-12-27T00:00:00Z" timeSpan.To = &timeSpanDTToParam1 transformMetricsRequest.TimeSpan = &timeSpan metrics := make([]iotanalyticsModel.DtTransformMetrics, 0) dtTransformMetrics := iotanalyticsModel.DtTransformMetrics{} dtTransformMetrics.Expression = "floor(y)" dtTransformMetrics.MetricName = "y2" inputs := make([]iotanalyticsModel.MetricInput, 0) metricInput := iotanalyticsModel.MetricInput{} metricInput.Name = "y" metricInput.PropertyName = "p2" inputs = append(inputs, metricInput) dtTransformMetrics.Inputs = inputs metrics = append(metrics, dtTransformMetrics) transformMetricsRequest.Metrics = metrics getMetricsValue.Transform = &transformMetricsRequest showMetricValueRequest.Body = &getMetricsValue return showMetricValueRequest }
6. 参考
详细了解数据分析,请参考IoT数据分析
更多关于SDK的调用,请参考华为云开发者 GO 软件开发工具包(GO SDK)
7. 修订记录