物联网数据分析(IoTA)-资产属性管理
引导式阅读
Python
物联网数据分析(IoTA)-资产属性管理
作者
C***
上架时间
2023-11-13 02:11:21

0. 版本说明

本示例基于华为云GO SDK开发

1. 简介

基于华为云GO SDK, 与资产属性值的相关操作

2. 开发前准备

已注册华为云, 并完成实名认证; 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK); GO 1.16及其以上版本

3. 安装SDK

go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3

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 初始化认证信息

auth := coreBasic.NewCredentialsBuilder().WithAk(yourAK).WithSk(yourSK).WithProjectId(projectId).Build()

4.2.3 初始化客户端

ioTAnalyticsClient := *iotanalytics.NewIoTAnalyticsClient(iotanalytics.IoTAnalyticsClientBuilder(). WithHttpConfig(config). WithCredential(auth). WithEndpoint(endpoint). Build())

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. 修订记录

发布日期 文档版本 修订说明
2021-12-22 1.0 文档首次发布