储能运行优化策略

本文为您介绍如何通过SDK调用如下算法API:CreateEssOptJob- 创建储能优化任务。

前提条件

已安装SDK,并已获取云账号AK信息。

接口参数

请求参数

字段名称

字段详情

Freq string

默认 15min;需要与 historyData 的数据频率一致;枚举值:

  • FIFTEEN_MIN: 15 分钟

  • FIVE_MIN: 5 分钟

  • ONE_HOUR: 1 小时

  • ONE_DAY: 1 天

示例值:FIFTEEN_MIN枚举值:FIFTEEN_MINFIVE_MINONE_HOURONE_DAY

Duration integer<int32>

从运行日(含)开始, 预测时长(单位:天) 非必填,默认 1 天

示例值:1

RunDate string

运行日,精确到天,“yyyy-MM-dd”格式

示例值:2025-02-12

TimeZone string

时区,默认上海时区:Asia/Shanghai

示例值:Asia/Shanghai

ModelVersion string

模型对应的版本号,默认为 latest

示例值:latest

TopoType string

场站内资源拓扑类型:

  • LOAD_ESS:市电+储能

  • LOAD_ESS_SOLAR: 市电+储能+光伏

示例值:LOAD_ESS_SOLAR枚举值:LOAD_ESSLOAD_ESS_SOLAR

- SystemData array<object>

系统数据,包含场站内各个系统的参数和历史数据

--- object

----SystemType string

系统类型,SystemType 的取值可以是:

  • load: 市电

  • ess:储能

  • solar:光伏

  • hvac: 空调

  • flexible:照明

  • charge:充电桩

示例值:ess

----SystemId string

系统 ID

示例值:1

----SystemParams object

系统参数,各个类型的系统的参数值

示例值:如光伏系统参数:

{
      "sfktj": 0, //是否可调节:0-不可调 1-可调,一般光伏为 不可调
      "cfdfs": 0, //充放电方式:0-正放电负充电 1-负放电正充电
      "zjrl": "xxx", //装机容量
}

-----HistoryData array<object>

各系统的历史运行数据

------- object

历史时段的运行数据

示例值:如市电的历史数据:

{
          "runTime": "2023-05-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
}

- ElecPrice array<object>

目标日期该天的市电分时价格变化,时间粒度与 freq 一致

--- object

目标日期该天某时刻的市电价格

----DataTime string

一天内的时刻

示例值:00:00:15

----Price string

市电价格

示例值:0.5

- GenPrice array<object>

目标日期该天的售电上网价格的分时变化,时间粒度与 freq 一致

--- object

目标日期该天某时刻的售电价格

----DataTime string

一天内的时刻

示例值:00:00:15

----Price string

售电价格

示例值:0.3

- Location object

地址位置信息,经纬度

--Altitude number<double>

海拔高度,精度到小数点后 3 位,默认值为 10

示例值:10.123

--Latitude number<double>

纬度,精度到小数点后 3 位

示例值:40.027

--Longitude number<double>

经度,精度到小数点后 3 位

示例值:120.042

BusinessKey string

业务键,如场站名称编号。

示例值:stationA

说明

每一种SystemType对应的系统参数分别有不同,并且需要与TopoType含义保持一致;其中:

  • 一定要包含市电系统和储能系统

  • 每种类型的系统最多只有一个,如市电系统、储能系统、光伏系统、空调系统(所有空调设备归属到这一个空调系统内)、照明系统(所有照明设备归属到一个照明系统)、充电桩系统;

  • 除市电、储能外,光伏系统和其他用电系统是可选项,根据实际情况在入参中给出数据。

  • 空调系统、照明系统、充电桩系统,都是属于用电系统,且不可调

  • 对于每个系统需要指定一个唯一的sysmtemId, 将在算法结果中按此systemIdsystemType对应的给出调节策略结果。

请求示例

systemData的样例和格式如下:

[
  {
    "SystemType":"load",
    "SystemId": 1,
    "SystemParams":{
        "sfktj": 0, //是否可调
        "state": 1, //运行状态:0-停止 1-运行
        "cfdfs": 0, //充放电方式:0-正放电负充电 1-负放电正充电
        //边界属性
        "byqyxsx": "1200", //变压器运行上限
        "byqyxxx": "-1200", //变压器运行下限
        "bwdydj": "90", //电压等级
    },
    "HistoryData":[
        {
          "runTime": "2023-05-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        },
        ...
        {
          "runTime": "2023-08-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        }
      ]
  },
  {
    "systemType":"ess",
    "systemId": 2,
    "systemParams":{
        "sfktj": 1, //是否可调
        "cfdfs": 0, //充放电方式:0-正放电负充电 1-负放电正充电
        // 边界属性
        "zxfdgl": "0", //最小放电功率
        "zdfdgl": "100",  //最大放电功率
        "zxcdgl": "0", //最小充电功率
        "zdcdgl": "100", //最大充电功率
        "socyxxx": "0.05", //soc运行下限
        "socyxsx": "0.98", //soc运行上限
        "rcdcssx": "2", //日充放电次数上限
        "rcdcsxx": "1", //日充放电次数下限
        "edrl": "215", // 额定容量
        "edgl": "xxx", //额定功率
      },
    "historyData":[
                {
                  "runTime": "2023-05-06 20:00:00",
                  "essRunPwr":0,//储能总有功功率, kW
                  "essRunQvr":0,//储能总无功功率, Var
                  "essRunSva":0,//储能总视在功率, VA
                  "essSOC":0,//储能系统SOC
                  "essSOH":0,//储能系统SOH
                  "cos":0,//功率因数
                  "aggChrgNgy":0,//储能累计充电量,kWh
                  "aggDischrgNgy":0,//储能累计放电量,kWh
                  "runState":0,//运行状态, 0-故障 1-运行 2-待机
                  "controlState":0,//控制状态, 0-本地 1-远端
                },
                ...
                {
                  "runTime": "2023-08-06 20:00:00",
                  "essRunPwr":0,//储能总有功功率, kW
                  "essRunQvr":0,//储能总无功功率, Var
                  "essRunSva":0,//储能总视在功率, VA
                  "essSOC":0,//储能系统SOC
                  "essSOH":0,//储能系统SOH
                  "cos":0,//功率因数
                  "aggChrgNgy":0,//储能累计充电量,kWh
                  "aggDischrgNgy":0,//储能累计放电量,kWh
                  "runState":0,//运行状态, 0-故障 1-运行 2-待机
                  "controlState":0,//控制状态, 0-本地 1-远端
                }
          ]
  },
  {
    "systemType":"solar",
    "systemId": 4,
    "systemParams":{
      "sfktj": 0, //是否可调节:0-不可调 1-可调,一般光伏为 不可调
      "cfdfs": 0, //充放电方式:0-正放电负充电 1-负放电正充电
      "zjrl": "xxx", //装机容量
    },
    "historyData":[
      {
        "runTime": "2023-05-06 20:00:00",
        "alterPwr":0, //交流侧有功功率,kW	
        "aggGenNgy":0, //累计发电量,kWh	
        "dayGenNgy":0, //日发电量,kWh	
        "runState":0, //运行状态, 0-故障 1-运行 2-待机
      },
      ...
      {
        "runTime": "2023-08-06 20:00:00",
        "alterPwr":0, //交流侧有功功率,kW	
        "aggGenNgy":0, //累计发电量,kWh	
        "dayGenNgy":0, //日发电量,kWh	
        "runState":0, //运行状态, 0-故障 1-运行 2-待机
      }
    ]
  },
  {
    "systemType":"hvac",
    "systemId": 5,
    "systemParams":{
      "sfktj": 0, //是否可调节:0-不可调 1-可调
      "edgl": "" // 总额定功率,单位kW
    },
    "historyData":[
        {
          "runTime": "2023-05-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        },
        ...
        {
          "runTime": "2023-08-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        }
      ]
  },
  {
    "systemType":"flexible",
    "systemId": 6,
    "systemParams":{
      "sfktj": 0, //是否可调节:0-不可调 1-可调,一般照明系统不建议设定为可调
      "edgl": "" // 总额定功率,单位kW
    },
    "historyData":[
        {
          "runTime": "2023-05-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        },
        ...
        {
          "runTime": "2023-08-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        }
      ]
  },
  {
    "systemType":"charge",
    "systemId": 7,
    "systemParams":{
      "sfktj": 0, //是否可调节:0-不可调 1-可调
      "edgl": "" // 总额定功率,单位kW
    },
    "historyData":[
        {
          "runTime": "2023-05-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        },
        ...
        {
          "runTime": "2023-08-06 20:00:00",
          "pwr": 0.0, //总有功功率, 单位kW
          "qvr": 0.0, //总无功功率, 单位Var
          "sva": 0.0, //总视在功率, 单位VA
          "cos": 1, //总功率因数
          "fwdActngy": 0.0, //累计正向有功总电量, 单位kWh
          "rvsActngy": 0.0, //累计反相有功总电量, 单位kWh
          "demandpwr": 0.0 //正向有功总需量, 单位kW
        }
      ]
  }
]

elecPricegenPrice的样例和格式如下:

[
	{      
		"dataTime":"00:00:00", 
		"price": 0.9
	},
	{      
		"dataTime":"00:15:00", 
		"price": 0.3
	},
	{      
		"dataTime":"00:30:00", 
		"price": 0.34
	},
	...
	{      
		"dataTime":"23:45:00", 
		"price": 0.1
	}
]

返回参数

字段名称

字段详情

RequestId string

Id of the request

示例值:68738E75-43C1-5AE5-9F3A-AFEF576D7B5F

Success string

是否调用成功。

  • True:调用成功。

  • False:调用失败。

示例值:True

Code string

状态码。

说明 200 表示成功。

示例值:200

Message string

返回信息。

示例值:successful

- Data object

返回 JOB 详细信息

--Completed boolean

操作是否完成,取值范围: True:当前 Job 已经执行完成。 False:当前 Job 还在执行中。

示例值:True

--CreateTime string

任务创建时间

示例值:2024-12-22 00:00:21

--Error string

当前操作异常或者失败时的错误信息

示例值:""

--JobId string

算法计算任务 ID

示例值:8c0ca18a-246a-4acd-80ca-e16d8ff5ef33

--Progress integer<int32>

进度

示例值:25

--- Response object

计算任务的结果

----DebugInfo any

调试信息

示例值:{}

----JobType string

计算任务类型,枚举值:LoadForecast PowerForecast

示例值:LoadForecast

----Result any

计算任务的结果

示例值:{}

--Status string

任务状态,枚举值: RUNNING, SUCCESS, FAIL

示例值:RUNNING

说明

计算任务是一个异步任务,最终计算任务的结果,需要使用Jobld通过结果查询结果获得。

返回示例

{
  "RequestId": "68738E75-43C1-5AE5-9F3A-AFEF576D7B5F",
  "Success": "True",
  "Code": "200",
  "Message": "successful",
  "Data": {
    "Completed": true,
    "CreateTime": "2024-12-22 00:00:21",
    "Error": "\"\"",
    "JobId": "8c0ca18a-246a-4acd-80ca-e16d8ff5ef33",
    "Progress": 25,
    "Response": {
      "DebugInfo": "{}",
      "JobType": "LoadForecast",
      "Result": "{}"
    },
    "Status": "RUNNING"
  }
}

SDK调用示例

Java SDK使用示例

当不需要并发调用时,可以使用Java同步的方式调用SDK;当需要并发调用时,使用Java异步的方式调用SDK。

Java同步(pom.xml):

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>brain_industrial20200920</artifactId>
  <version>2.1.0</version>
</dependency>

Java同步(sample.java):

// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用凭据初始化账号Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.brain_industrial20200920.Client createClient() throws Exception {
        // 工程代码建议使用更安全的无AK方式,凭据配置方式请参见:https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                .setCredential(credential);
        // Endpoint 请参考 https://api.aliyun.com/product/brain-industrial
        config.endpoint = "brain-industrial.cn-hangzhou.aliyuncs.com";
        return new com.aliyun.brain_industrial20200920.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        
        com.aliyun.brain_industrial20200920.Client client = Sample.createClient();
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestLocation location = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestLocation()
                .setAltitude(10D)
                .setLatitude(23D)
                .setLongitude(113.5D);
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestGenPrice genPrice0 = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestGenPrice()
                .setDataTime("00:00:00")
                .setPrice("0.8");
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestElecPrice elecPrice0 = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestElecPrice()
                .setDataTime("00:00:00")
                .setPrice("2.1");
        java.util.Map<String, Object> systemData0HistoryData0 = TeaConverter.buildMap(
            new TeaPair("runTime", "2025-01-01"),
            new TeaPair("value", 3)
        );
        java.util.Map<String, Integer> systemData0SystemParams = TeaConverter.buildMap(
            new TeaPair("byqyxsx", 1200),
            new TeaPair("byqyxxx", 0),
            new TeaPair("bwdydj", 220)
        );
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData systemData0 = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData()
                .setSystemType("load")
                .setSystemId("1")
                .setSystemParams(systemData0SystemParams)
                .setHistoryData(java.util.Arrays.asList(
                    systemData0HistoryData0
                ));
        java.util.Map<String, Object> systemData1HistoryData0 = TeaConverter.buildMap(
            new TeaPair("runTime", "2025-01-01 00:00:00"),
            new TeaPair("value", 100)
        );
        java.util.Map<String, String> systemData1SystemParams = TeaConverter.buildMap(
            new TeaPair("zxfdgl", "0"),
            new TeaPair("zdfdgl", "100"),
            new TeaPair("zxcdgl", "0"),
            new TeaPair("zdcdgl", "100"),
            new TeaPair("socyxxx", "0.05"),
            new TeaPair("socyxsx", "0.98"),
            new TeaPair("rcdcssx", "2"),
            new TeaPair("rcdcsxx", "1"),
            new TeaPair("edrl", "215"),
            new TeaPair("edgl", "100")
        );
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData systemData1 = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData()
                .setSystemType("ess")
                .setSystemId("2")
                .setSystemParams(systemData1SystemParams)
                .setHistoryData(java.util.Arrays.asList(
                    systemData1HistoryData0
                ));
        java.util.Map<String, Object> systemData2HistoryData0 = TeaConverter.buildMap(
            new TeaPair("runTime", "2025-01-01 00:00:00"),
            new TeaPair("value", 0)
        );
        java.util.Map<String, Integer> systemData2SystemParams = TeaConverter.buildMap(
            new TeaPair("zjrl", 800)
        );
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData systemData2 = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData()
                .setSystemType("solar")
                .setSystemId("3")
                .setSystemParams(systemData2SystemParams)
                .setHistoryData(java.util.Arrays.asList(
                    systemData2HistoryData0
                ));
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest createEssOptJobRequest = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest()
                .setFreq("FIFTEEN_MIN")
                .setDuration(1)
                .setRunDate("2025-01-01")
                .setTimeZone("Asia/Shanghai")
                .setModelVersion("latest")
                .setTopoType("LOAD_ESS_SOLAR")
                .setSystemData(java.util.Arrays.asList(
                    systemData0,
                    systemData1,
                    systemData2
                ))
                .setElecPrice(java.util.Arrays.asList(
                    elecPrice0
                ))
                .setGenPrice(java.util.Arrays.asList(
                    genPrice0
                ))
                .setLocation(location)
                .setBusinessKey("stationA");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            client.createEssOptJobWithOptions(createEssOptJobRequest, runtime);
        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

Java异步(pom.xml):

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alibabacloud-brain_industrial20200920</artifactId>
    <version>2.0.2</version>
</dependency>

Java异步(sample.java):

// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用凭据初始化账号Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.brain_industrial20200920.Client createClient() throws Exception {
        // 工程代码建议使用更安全的无AK方式,凭据配置方式请参见:https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                .setCredential(credential);
        // Endpoint 请参考 https://api.aliyun.com/product/brain-industrial
        config.endpoint = "brain-industrial.cn-hangzhou.aliyuncs.com";
        return new com.aliyun.brain_industrial20200920.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        
        com.aliyun.brain_industrial20200920.Client client = Sample.createClient();
        java.util.Map<String, Integer> systemData0SystemParams = TeaConverter.buildMap(
            new TeaPair("byqyxxx", 0),
            new TeaPair("byqyxsx", 1200)
        );
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData systemData0 = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest.CreateEssOptJobRequestSystemData()
                .setSystemType("load")
                .setSystemId("1")
                .setSystemParams(systemData0SystemParams);
        com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest createEssOptJobRequest = new com.aliyun.brain_industrial20200920.models.CreateEssOptJobRequest()
                .setFreq("FIFTEEN_MIN")
                .setDuration(1)
                .setRunDate("2025-01-01")
                .setTopoType("LOAD_ESS")
                .setSystemData(java.util.Arrays.asList(
                    systemData0
                ));
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            client.createEssOptJobWithOptions(createEssOptJobRequest, runtime);
        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

Python SDK使用示例

Python依赖:

pip install alibabacloud_brain_industrial20200920==2.1.0
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_brain_industrial20200920.client import Client as brain_industrial20200920Client
from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_brain_industrial20200920 import models as brain_industrial_20200920_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> brain_industrial20200920Client:
        """
        使用凭据初始化账号Client
        @return: Client
        @throws Exception
        """
        # 工程代码建议使用更安全的无AK方式,凭据配置方式请参见:https://help.aliyun.com/document_detail/378659.html。
        credential = CredentialClient()
        config = open_api_models.Config(
            credential=credential
        )
        # Endpoint 请参考 https://api.aliyun.com/product/brain-industrial
        config.endpoint = f'brain-industrial.cn-hangzhou.aliyuncs.com'
        return brain_industrial20200920Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        system_data_0system_params = {
            'byqyxxx': 0,
            'byqyxsx': 1200
        }
        system_data_0 = brain_industrial_20200920_models.CreateEssOptJobRequestSystemData(
            system_type='load',
            system_id='1',
            system_params=system_data_0system_params
        )
        create_ess_opt_job_request = brain_industrial_20200920_models.CreateEssOptJobRequest(
            freq='FIFTEEN_MIN',
            duration=1,
            run_date='2025-01-01',
            topo_type='LOAD_ESS',
            system_data=[
                system_data_0
            ]
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            client.create_ess_opt_job_with_options(create_ess_opt_job_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        system_data_0system_params = {
            'byqyxxx': 0,
            'byqyxsx': 1200
        }
        system_data_0 = brain_industrial_20200920_models.CreateEssOptJobRequestSystemData(
            system_type='load',
            system_id='1',
            system_params=system_data_0system_params
        )
        create_ess_opt_job_request = brain_industrial_20200920_models.CreateEssOptJobRequest(
            freq='FIFTEEN_MIN',
            duration=1,
            run_date='2025-01-01',
            topo_type='LOAD_ESS',
            system_data=[
                system_data_0
            ]
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            await client.create_ess_opt_job_with_options_async(create_ess_opt_job_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])