更新时间:2024-10-23 GMT+08:00
分享

创建批量任务

功能介绍

应用服务器可调用此接口为创建批量处理任务,对多个设备进行批量操作。当前支持批量软固件升级、批量创建设备、批量修改设备、批量删除设备、批量冻结设备、批量解冻设备、批量创建命令、批量创建消息任务。

调用方法

请参见如何调用API

URI

POST /v5/iot/{project_id}/batchtasks

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数说明:项目ID。获取方法请参见 获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证

Instance-Id

String

参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考查看实例详情

表3 请求Body参数

参数

是否必选

参数类型

描述

app_id

String

参数说明:资源空间ID。此参数为非必选参数,存在多资源空间的用户需要使用该接口时,建议携带该参数指定创建的批量任务归属到哪个资源空间下,否则创建的批量任务将会归属到默认资源空间下。

取值范围:长度不超过36,只允许字母、数字、下划线(_)、连接符(-)的组合。

task_name

String

参数说明:批量任务名称。

取值范围:长度不超过128,只允许中文、字母、数字、下划线(_)的组合。

task_type

String

参数说明:批量任务类型。

取值范围

  • softwareUpgrade: 软件升级任务

  • firmwareUpgrade: 固件升级任务

  • createDevices: 批量创建设备任务

  • deleteDevices: 批量删除设备任务

  • freezeDevices: 批量冻结设备任务

  • unfreezeDevices: 批量解冻设备任务

  • createCommands: 批量创建同步命令任务

  • createAsyncCommands: 批量创建异步命令任务

  • createMessages: 批量创建消息任务

  • updateDeviceShadows:批量配置设备影子任务

  • updateDevices:批量更新设备任务

task_mode

String

参数说明:批量任务的模式,当前只支持网关模式,当task_type为firmwareUpgrade,softwareUpgrade支持该参数。软固件升级的场景下,若升级的设备为某个网关的子设备,则平台下发获取版本信息通知和平台下发升级通知将携带task_id(软固件升级批量任务的任务ID)和sub_device_count(批量任务中网关设备包含的升级子设备数量)字段。

取值范围:GATEWAY: 网关模式。

task_ext_info

Object

参数说明:批量任务额外扩展信息,当task_type为firmwareUpgrade,softwareUpgrade支持该参数。软固件升级的场景下,平台下发获取版本信息通知和平台下发升级通知将携带该字段。

取值范围:最长不超过512个字符。

targets

Array of strings

参数说明:执行批量任务的目标,此处填写device_id列表,且最多支持3万个device_id。当task_type为firmwareUpgrade,softwareUpgrade,deleteDevices,freezeDevices,unfreezeDevices,createCommands,createAsyncCommands,createMessages,updateDeviceShadows,支持该参数。同时使用targets、targets_filter、document_source参数时,只有一个参数会生效,且平台优先使用targets,其次是targets_filter,最后是document_source。

取值范围:device_id列表。device_id支持长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。

targets_filter

Map<String,Object>

参数说明:任务目标筛选参数。Json格式,里面是一个个键值对,(K,V)格式标识筛选targets需要的参数,目前支持的K有group_ids(V填写group_id数组,eg:["e495cf17-ff79-4294-8f64-4d367919d665"],任务则会筛选出来符合该群组条件的设备作为目标)。当task_type为firmwareUpgrade,softwareUpgrade,deleteDevices,freezeDevices,unfreezeDevices,createCommands,createAsyncCommands,createMessages,updateDeviceShadows,支持该参数。同时使用targets、targets_filter、document_source参数时,只有一个参数会生效,且平台优先使用targets,其次是targets_filter,最后是document_source。

document

Object

参数说明:执行任务数据文档,Json格式,Json里面是(K,V)键值对。当task_type为firmwareUpgrade,softwareUpgrade,createCommands,createAsyncCommands,createMessages,updateDeviceShadows,支持该参数。

  • softwareUpgrade|firmwareUpgrade,需要填写key为package_id,value为在平台上传的软固件附件id,id由portal软件库包管理上传并查询获得。eg:“{"package_id": "32822e5744a45ede319d2c50"}”。

  • createCommands,需要填写同步命令相关参数,eg:“{"service_id":"water","command_name":"ON_OFF","paras":{"value":"ON"}}”,参考设备同步命令)。

  • createAsyncCommands,需要填写异步命令相关参数,eg:“{"service_id":"water","command_name":"ON_OFF","paras":{"value":"ON"},"expire_time":0,"send_strategy":"immediately"}”,参考设备异步命令)。

  • createMessages,需要填写消息下发相关参数,eg:“{"message_id":"99b32da9-cd17-4cdf-a286-f6e849cbc364","name":"messageName","message":"HelloWorld","encoding":"none","payload_format":"standard","topic":"messageDown","topic_full_name":"/device/message/down"}”,参考下发设备消息)。

  • updateDeviceShadows,需要填写配置设备影子相关参数,eg:“{"shadow": [{"service_id": "WaterMeter","desired": {"temperature": "60"}}]}”,参考配置设备影子预期数据)。限制说明:1. service_id和desired参数必填。2. 配置的service_id数量不大于5个且service_id不能重复。3. 配置参数内容大小不超过10K。

task_policy

TaskPolicy object

参数说明:任务策略请求信息。

document_source

String

参数说明:上传的批量任务文件ID。当task_type为createDevices,updateDevices,deleteDevices,freezeDevices,unfreezeDevices时,支持该参数。使用该参数时,需要先调用批量任务的文件管理接口上传文件来获取文件ID,文件样例请参见 批量注册设备模板批量更新设备模板批量删除设备模板批量冻结设备模板批量解冻设备模板。同时使用targets、targets_filter、document_source参数时,只有一个参数会生效,且平台优先使用targets,其次是targets_filter,最后是document_source。

表4 TaskPolicy

参数

是否必选

参数类型

描述

schedule_time

String

参数说明:批量任务指定执行时间。

取值范围:7天内,不传入此参数表示立即执行,格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

retry_count

Integer

参数说明:批量任务子任务自动重试次数。

取值范围:如果传入retry_interval参数,则需传入该参数,最大支持重试5次。

retry_interval

Integer

参数说明:批量任务子任务失败后,自动重试时间间隔,单位:分钟。

取值范围:最大1440(24小时),不传入此参数表示不重试,如果传入retry_count参数则需要传入该参数。

响应参数

状态码: 201

表5 响应Body参数

参数

参数类型

描述

task_id

String

批量任务ID,创建批量任务时由物联网平台分配获得。

task_name

String

批量任务名称。

task_type

String

批量任务类型,取值范围:firmwareUpgrade,softwareUpgrade,createDevices,deleteDevices,freezeDevices,unfreezeDevices,createCommands,createAsyncCommands,createMessages,updateDeviceShadows。

  • softwareUpgrade: 软件升级任务

  • firmwareUpgrade: 固件升级任务

  • createDevices: 批量创建设备任务

  • deleteDevices: 批量删除设备任务

  • freezeDevices: 批量冻结设备任务

  • unfreezeDevices: 批量解冻设备任务

  • createCommands: 批量创建同步命令任务

  • createAsyncCommands: 批量创建异步命令任务

  • createMessages: 批量创建消息任务

  • updateDeviceShadows: 批量配置设备影子任务

  • updateDevices:批量更新设备任务

task_mode

String

参数说明:批量任务的模式,当前只支持网关模式,当task_type为firmwareUpgrade,softwareUpgrade支持该参数。软固件升级的场景下,若升级的设备为某个网关的子设备,则平台下发获取版本信息通知和平台下发升级通知将携带task_id(软固件升级批量任务的任务ID)和sub_device_count(批量任务中网关设备包含的升级子设备数量)字段。

取值范围:GATEWAY: 网关模式。

task_ext_info

Object

参数说明:批量任务额外扩展信息,当task_type为firmwareUpgrade,softwareUpgrade支持该参数。软固件升级的场景下,平台下发获取版本信息通知和平台下发升级通知将携带该字段。

取值范围:最长不超过512个字符。

targets

Array of strings

执行批量任务的目标,当task_type为firmwareUpgrade,softwareUpgrade,deleteDevices,freezeDevices,unfreezeDevices,createCommands,createAsyncCommands,createMessages,updateDeviceShadows,此处填写device_id列表。

targets_filter

Map<String,Object>

任务目标筛选参数。Json格式,里面是一个个键值对,(K,V)格式标识筛选targets需要的参数,目前支持的K有group_ids(V填写group_id数组,eg:["e495cf17-ff79-4294-8f64-4d367919d665"],任务则会筛选出来符合该群组条件的设备作为目标)

document

Object

执行任务数据文档,Json格式。(当task_type为softwareUpgrade|firmwareUpgrade,也就是软固件升级任务时,Json里面是(K,V)键值对,需要填写key为package_id,value为在平台上传的软固件附件id,id由portal软件库包管理上传并查询获得。当task_type为createCommands,也就是批量创建同步命令任务时,Json里面是命令相关参数,eg:{"service_id":"water","command_name":"ON_OFF","paras":{"value":"ON"}},参考设备同步命令)。当task_type为createAsyncCommands,也就是批量创建异步命令任务时,Json里面是命令相关参数,eg:{"service_id":"water","command_name":"ON_OFF","paras":{"value":"ON"},"expire_time":0,"send_strategy":"immediately"},参考设备异步命令)。当task_type为updateDeviceShadows,也就是批量配置设备影子任务时,Json里面是命令相关参数,eg:{"shadow": [{"service_id": "WaterMeter","desired": {"temperature": "60"}}]},参考配置设备影子预期数据)。

task_policy

TaskPolicy object

任务执行策略。

status

String

批量任务的状态,可选参数,取值范围:Success|Fail|Processing|PartialSuccess|Stopped|Waitting|Initializing|Stopping。

  • Initializing: 初始化中。

  • Waitting: 等待中。

  • Processing: 执行中。

  • Success: 成功。

  • Fail: 失败。

  • PartialSuccess: 部分成功。

  • Stopped: 停止。

  • Stopping 停止中。

status_desc

String

批量任务状态描述(包含主任务失败错误信息)

task_progress

TaskProgress object

子任务执行统计结果。

create_time

String

批量任务的创建时间。格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

表6 TaskPolicy

参数

参数类型

描述

schedule_time

String

参数说明:批量任务指定执行时间。

取值范围:7天内,不传入此参数表示立即执行,格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。

retry_count

Integer

参数说明:批量任务子任务自动重试次数。

取值范围:如果传入retry_interval参数,则需传入该参数,最大支持重试5次。

retry_interval

Integer

参数说明:批量任务子任务失败后,自动重试时间间隔,单位:分钟。

取值范围:最大1440(24小时),不传入此参数表示不重试,如果传入retry_count参数则需要传入该参数。

表7 TaskProgress

参数

参数类型

描述

total

Integer

子任务总个数。

processing

Integer

正在执行的子任务个数。

success

Integer

执行成功的子任务个数。

fail

Integer

执行失败的的子任务个数。

waitting

Integer

等待执行的子任务个数。

fail_wait_retry

Integer

失败等待重试的子任务个数。

stopped

Integer

停止的子任务个数。

removed

Integer

移除的子任务个数。

请求示例

  • 创建批量软件升级任务,指定设备升级。

    POST https://{endpoint}/v5/iot/{project_id}/batchtasks
    
    {
      "app_id" : "Ev8FVvCfOdQDzrFrxSOemiw_aMca",
      "task_name" : "BatchSoftwareUpgradeTask",
      "task_type" : "softwareUpgrade",
      "targets" : [ "e495cf17-ff79-4294-8f64-4d367919d665" ],
      "document" : {
        "package_id" : "32822e5744a45ede319d2c50"
      },
      "task_policy" : {
        "schedule_time" : "20151212T121212Z",
        "retry_count" : 5,
        "retry_interval" : 60
      }
    }
  • 创建批量软件升级任务,指定设备组中设备进行升级。

    POST https://{endpoint}/v5/iot/{project_id}/batchtasks
    
    {
      "app_id" : "Ev8FVvCfOdQDzrFrxSOemiw_aMca",
      "task_name" : "BatchSoftwareUpgradeTask",
      "task_type" : "softwareUpgrade",
      "document" : {
        "package_id" : "32822e5744a45ede319d2c50"
      },
      "targets_filter" : {
        "group_ids" : [ "e495cf17-ff79-4294-8f64-4d367919d665" ]
      },
      "task_policy" : {
        "schedule_time" : "20151212T121212Z",
        "retry_count" : 5,
        "retry_interval" : 60
      }
    }
  • 创建批量注册设备任务,从文件中读取参数。

    POST https://{endpoint}/v5/iot/{project_id}/batchtasks
    
    {
      "app_id" : "Ev8FVvCfOdQDzrFrxSOemiw_aMca",
      "task_name" : "BatchCreateDevicesTask",
      "task_type" : "createDevices",
      "task_policy" : {
        "schedule_time" : "20151212T121212Z",
        "retry_count" : 5,
        "retry_interval" : 60
      },
      "document_source" : "jeQDJQZltU8iKgFFoW060F5SGZka"
    }

响应示例

状态码: 201

Created

{
  "task_id" : "5c8ba99030344005c02316ad",
  "task_name" : "testname",
  "task_type" : "softwareUpgrade",
  "targets" : [ "e495cf17-ff79-4294-8f64-4d367919d665" ],
  "targets_filter" : {
    "group_ids" : [ "e495cf17-ff79-4294-8f64-4d367919d665" ]
  },
  "document" : {
    "package_id" : "32822e5744a45ede319d2c50"
  },
  "task_policy" : {
    "schedule_time" : "20151212T121212Z",
    "retry_count" : 5,
    "retry_interval" : 60
  },
  "status" : "Success",
  "status_desc" : "string",
  "task_progress" : {
    "total" : 0,
    "processing" : 0,
    "success" : 0,
    "fail" : 0,
    "waitting" : 0,
    "fail_wait_retry" : 0,
    "stopped" : 0
  },
  "create_time" : "20151212T121212Z"
}

SDK代码示例

SDK代码示例如下。

  • 创建批量软件升级任务,指定设备升级。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.AbstractCredentials;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.core.region.Region;
    import com.huaweicloud.sdk.iotda.v5.*;
    import com.huaweicloud.sdk.iotda.v5.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class CreateBatchTaskSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
            String iotdaEndpoint = "<YOUR ENDPOINT>";
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
                    .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
                    .withAk(ak)
                    .withSk(sk);
    
            IoTDAClient client = IoTDAClient.newBuilder()
                    .withCredential(auth)
                    // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
                    .withRegion(new Region("cn-north-4", iotdaEndpoint))
                    .build();
            CreateBatchTaskRequest request = new CreateBatchTaskRequest();
            CreateBatchTask body = new CreateBatchTask();
            TaskPolicy taskPolicybody = new TaskPolicy();
            taskPolicybody.withScheduleTime("20151212T121212Z")
                .withRetryCount(5)
                .withRetryInterval(60);
            List<String> listbodyTargets = new ArrayList<>();
            listbodyTargets.add("e495cf17-ff79-4294-8f64-4d367919d665");
            body.withTaskPolicy(taskPolicybody);
            body.withDocument("{\"package_id\":\"32822e5744a45ede319d2c50\"}");
            body.withTargets(listbodyTargets);
            body.withTaskType("softwareUpgrade");
            body.withTaskName("BatchSoftwareUpgradeTask");
            body.withAppId("Ev8FVvCfOdQDzrFrxSOemiw_aMca");
            request.withBody(body);
            try {
                CreateBatchTaskResponse response = client.createBatchTask(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • 创建批量软件升级任务,指定设备组中设备进行升级。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.AbstractCredentials;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.core.region.Region;
    import com.huaweicloud.sdk.iotda.v5.*;
    import com.huaweicloud.sdk.iotda.v5.model.*;
    
    import java.util.Map;
    import java.util.HashMap;
    
    public class CreateBatchTaskSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
            String iotdaEndpoint = "<YOUR ENDPOINT>";
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
                    .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
                    .withAk(ak)
                    .withSk(sk);
    
            IoTDAClient client = IoTDAClient.newBuilder()
                    .withCredential(auth)
                    // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
                    .withRegion(new Region("cn-north-4", iotdaEndpoint))
                    .build();
            CreateBatchTaskRequest request = new CreateBatchTaskRequest();
            CreateBatchTask body = new CreateBatchTask();
            TaskPolicy taskPolicybody = new TaskPolicy();
            taskPolicybody.withScheduleTime("20151212T121212Z")
                .withRetryCount(5)
                .withRetryInterval(60);
            Map<String, Object> listbodyTargetsFilter = new HashMap<>();
            listbodyTargetsFilter.put("group_ids", "[e495cf17-ff79-4294-8f64-4d367919d665]");
            body.withTaskPolicy(taskPolicybody);
            body.withDocument("{\"package_id\":\"32822e5744a45ede319d2c50\"}");
            body.withTargetsFilter(listbodyTargetsFilter);
            body.withTaskType("softwareUpgrade");
            body.withTaskName("BatchSoftwareUpgradeTask");
            body.withAppId("Ev8FVvCfOdQDzrFrxSOemiw_aMca");
            request.withBody(body);
            try {
                CreateBatchTaskResponse response = client.createBatchTask(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • 创建批量注册设备任务,从文件中读取参数。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.AbstractCredentials;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.core.region.Region;
    import com.huaweicloud.sdk.iotda.v5.*;
    import com.huaweicloud.sdk.iotda.v5.model.*;
    
    
    public class CreateBatchTaskSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            // ENDPOINT:请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
            String iotdaEndpoint = "<YOUR ENDPOINT>";
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate";
                    .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios
                    .withAk(ak)
                    .withSk(sk);
    
            IoTDAClient client = IoTDAClient.newBuilder()
                    .withCredential(auth)
                    // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
                    .withRegion(new Region("cn-north-4", iotdaEndpoint))
                    .build();
            CreateBatchTaskRequest request = new CreateBatchTaskRequest();
            CreateBatchTask body = new CreateBatchTask();
            TaskPolicy taskPolicybody = new TaskPolicy();
            taskPolicybody.withScheduleTime("20151212T121212Z")
                .withRetryCount(5)
                .withRetryInterval(60);
            body.withDocumentSource("jeQDJQZltU8iKgFFoW060F5SGZka");
            body.withTaskPolicy(taskPolicybody);
            body.withTaskType("createDevices");
            body.withTaskName("BatchCreateDevicesTask");
            body.withAppId("Ev8FVvCfOdQDzrFrxSOemiw_aMca");
            request.withBody(body);
            try {
                CreateBatchTaskResponse response = client.createBatchTask(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • 创建批量软件升级任务,指定设备升级。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkcore.auth.credentials import DerivedCredentials
    from huaweicloudsdkcore.region.region import Region as coreRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkiotda.v5 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        // ENDPOINT请在控制台的"总览"界面的"平台接入地址"中查看应用侧的https接入地址
        iotdaEndpoint = "<YOUR ENDPOINT>";
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId).with_derived_predicate(DerivedCredentials.get_default_derived_predicate())
    
        client = IoTDAClient.new_builder() \
            .with_credentials(credentials) \
            # 标准版/企业版:需要使用自行创建的Region对象,基础版:请选择IoTDAClient中的Region对象 如: .with_region(IoTDARegion.CN_NORTH_4)
            .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \
            .build()
    
        try:
            request = CreateBatchTaskRequest()
            taskPolicybody = TaskPolicy(
                schedule_time="20151212T121212Z",
                retry_count=5,
                retry_interval=60
            )
            listTargetsbody = [
                "e495cf17-ff79-4294-8f64-4d367919d665"
            ]
            request.body = CreateBatchTask(
                task_policy=taskPolicybody,
                document="{\"package_id\":\"32822e5744a45ede319d2c50\"}",
                targets=listTargetsbody,
                task_type="softwareUpgrade",
                task_name="BatchSoftwareUpgradeTask",
                app_id="Ev8FVvCfOdQDzrFrxSOemiw_aMca"
            )
            response = client.create_batch_task(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • 创建批量软件升级任务,指定设备组中设备进行升级。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkcore.auth.credentials import DerivedCredentials
    from huaweicloudsdkcore.region.region import Region as coreRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkiotda.v5 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        // ENDPOINT请在控制台的"总览"界面的"平台接入地址"中查看应用侧的https接入地址
        iotdaEndpoint = "<YOUR ENDPOINT>";
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId).with_derived_predicate(DerivedCredentials.get_default_derived_predicate())
    
        client = IoTDAClient.new_builder() \
            .with_credentials(credentials) \
            # 标准版/企业版:需要使用自行创建的Region对象,基础版:请选择IoTDAClient中的Region对象 如: .with_region(IoTDARegion.CN_NORTH_4)
            .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \
            .build()
    
        try:
            request = CreateBatchTaskRequest()
            taskPolicybody = TaskPolicy(
                schedule_time="20151212T121212Z",
                retry_count=5,
                retry_interval=60
            )
            listTargetsFilterbody = {
                "group_ids": "[e495cf17-ff79-4294-8f64-4d367919d665]"
            }
            request.body = CreateBatchTask(
                task_policy=taskPolicybody,
                document="{\"package_id\":\"32822e5744a45ede319d2c50\"}",
                targets_filter=listTargetsFilterbody,
                task_type="softwareUpgrade",
                task_name="BatchSoftwareUpgradeTask",
                app_id="Ev8FVvCfOdQDzrFrxSOemiw_aMca"
            )
            response = client.create_batch_task(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • 创建批量注册设备任务,从文件中读取参数。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkcore.auth.credentials import DerivedCredentials
    from huaweicloudsdkcore.region.region import Region as coreRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkiotda.v5 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        // ENDPOINT请在控制台的"总览"界面的"平台接入地址"中查看应用侧的https接入地址
        iotdaEndpoint = "<YOUR ENDPOINT>";
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId).with_derived_predicate(DerivedCredentials.get_default_derived_predicate())
    
        client = IoTDAClient.new_builder() \
            .with_credentials(credentials) \
            # 标准版/企业版:需要使用自行创建的Region对象,基础版:请选择IoTDAClient中的Region对象 如: .with_region(IoTDARegion.CN_NORTH_4)
            .with_region(coreRegion(id="cn-north-4", endpoint=endpoint)) \
            .build()
    
        try:
            request = CreateBatchTaskRequest()
            taskPolicybody = TaskPolicy(
                schedule_time="20151212T121212Z",
                retry_count=5,
                retry_interval=60
            )
            request.body = CreateBatchTask(
                document_source="jeQDJQZltU8iKgFFoW060F5SGZka",
                task_policy=taskPolicybody,
                task_type="createDevices",
                task_name="BatchCreateDevicesTask",
                app_id="Ev8FVvCfOdQDzrFrxSOemiw_aMca"
            )
            response = client.create_batch_task(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • 创建批量软件升级任务,指定设备升级。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        iotda "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region"
        core_auth "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        // endpoint:请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址
        endpoint := "<YOUR ENDPOINT>"
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            // 企业版/标准版需要使用衍生算法,基础版请删除该配置"WithDerivedPredicate"
            WithDerivedPredicate(core_auth.GetDefaultDerivedPredicate()). // Used in derivative ak/sk authentication scenarios
            Build()
    
        client := iotda.NewIoTDAClient(
            iotda.IoTDAClientBuilder().
                // 标准版/企业版需要自行创建region,基础版使用IoTDARegion中的region对象
                WithRegion(region.NewRegion("cn-north-4", endpoint)).
                WithCredential(auth).
                Build())
    
        request := &model.CreateBatchTaskRequest{}
    	scheduleTimeTaskPolicy:= "20151212T121212Z"
    	retryCountTaskPolicy:= int32(5)
    	retryIntervalTaskPolicy:= int32(60)
    	taskPolicybody := &model.TaskPolicy{
    		ScheduleTime: &scheduleTimeTaskPolicy,
    		RetryCount: &retryCountTaskPolicy,
    		RetryInterval: &retryIntervalTaskPolicy,
    	}
    	var listTargetsbody = []string{
            "e495cf17-ff79-4294-8f64-4d367919d665",
        }
    	var documentCreateBatchTask interface{} = "{\"package_id\":\"32822e5744a45ede319d2c50\"}"
    	appIdCreateBatchTask:= "Ev8FVvCfOdQDzrFrxSOemiw_aMca"
    	request.Body = &model.CreateBatchTask{
    		TaskPolicy: taskPolicybody,
    		Document: &documentCreateBatchTask,
    		Targets: &listTargetsbody,
    		TaskType: "softwareUpgrade",
    		TaskName: "BatchSoftwareUpgradeTask",
    		AppId: &appIdCreateBatchTask,
    	}
    	response, err := client.CreateBatchTask(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • 创建批量软件升级任务,指定设备组中设备进行升级。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        iotda "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region"
        core_auth "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        // endpoint:请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址
        endpoint := "<YOUR ENDPOINT>"
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            // 企业版/标准版需要使用衍生算法,基础版请删除该配置"WithDerivedPredicate"
            WithDerivedPredicate(core_auth.GetDefaultDerivedPredicate()). // Used in derivative ak/sk authentication scenarios
            Build()
    
        client := iotda.NewIoTDAClient(
            iotda.IoTDAClientBuilder().
                // 标准版/企业版需要自行创建region,基础版使用IoTDARegion中的region对象
                WithRegion(region.NewRegion("cn-north-4", endpoint)).
                WithCredential(auth).
                Build())
    
        request := &model.CreateBatchTaskRequest{}
    	scheduleTimeTaskPolicy:= "20151212T121212Z"
    	retryCountTaskPolicy:= int32(5)
    	retryIntervalTaskPolicy:= int32(60)
    	taskPolicybody := &model.TaskPolicy{
    		ScheduleTime: &scheduleTimeTaskPolicy,
    		RetryCount: &retryCountTaskPolicy,
    		RetryInterval: &retryIntervalTaskPolicy,
    	}
    	var listTargetsFilterbody = map[string]interface{}{
            "group_ids": "[e495cf17-ff79-4294-8f64-4d367919d665]",
        }
    	var documentCreateBatchTask interface{} = "{\"package_id\":\"32822e5744a45ede319d2c50\"}"
    	appIdCreateBatchTask:= "Ev8FVvCfOdQDzrFrxSOemiw_aMca"
    	request.Body = &model.CreateBatchTask{
    		TaskPolicy: taskPolicybody,
    		Document: &documentCreateBatchTask,
    		TargetsFilter: listTargetsFilterbody,
    		TaskType: "softwareUpgrade",
    		TaskName: "BatchSoftwareUpgradeTask",
    		AppId: &appIdCreateBatchTask,
    	}
    	response, err := client.CreateBatchTask(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • 创建批量注册设备任务,从文件中读取参数。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        iotda "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/iotda/v5/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region"
        core_auth "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        // endpoint:请在控制台的"总览"界面的"平台接入地址"中查看"应用侧"的https接入地址
        endpoint := "<YOUR ENDPOINT>"
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            // 企业版/标准版需要使用衍生算法,基础版请删除该配置"WithDerivedPredicate"
            WithDerivedPredicate(core_auth.GetDefaultDerivedPredicate()). // Used in derivative ak/sk authentication scenarios
            Build()
    
        client := iotda.NewIoTDAClient(
            iotda.IoTDAClientBuilder().
                // 标准版/企业版需要自行创建region,基础版使用IoTDARegion中的region对象
                WithRegion(region.NewRegion("cn-north-4", endpoint)).
                WithCredential(auth).
                Build())
    
        request := &model.CreateBatchTaskRequest{}
    	scheduleTimeTaskPolicy:= "20151212T121212Z"
    	retryCountTaskPolicy:= int32(5)
    	retryIntervalTaskPolicy:= int32(60)
    	taskPolicybody := &model.TaskPolicy{
    		ScheduleTime: &scheduleTimeTaskPolicy,
    		RetryCount: &retryCountTaskPolicy,
    		RetryInterval: &retryIntervalTaskPolicy,
    	}
    	documentSourceCreateBatchTask:= "jeQDJQZltU8iKgFFoW060F5SGZka"
    	appIdCreateBatchTask:= "Ev8FVvCfOdQDzrFrxSOemiw_aMca"
    	request.Body = &model.CreateBatchTask{
    		DocumentSource: &documentSourceCreateBatchTask,
    		TaskPolicy: taskPolicybody,
    		TaskType: "createDevices",
    		TaskName: "BatchCreateDevicesTask",
    		AppId: &appIdCreateBatchTask,
    	}
    	response, err := client.CreateBatchTask(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

201

Created

400

BAD REQUEST

401

Unauthorized

403

FORBIDDEN

500

Internal Server Error

错误码

请参见错误码

相关文档