设备接入 IoTDA设备接入 IoTDA

更新时间:2021/09/06 GMT+08:00
分享

创建批量任务

接口说明

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

调试

您可以在API Explorer中调试该接口。

URI

请求方法

POST

URI

/v5/iot/{project_id}/batchtasks

传输协议

HTTPS

请求参数

名称

必选/可选

类型

位置

说明

X-Auth-Token

必选

String

Header

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

Instance-Id

可选

String

Header

参数说明:实例ID。物理多租下各实例的唯一标识,一般华为云租户无需携带该参数,仅在物理多租场景下从管理面访问API时需要携带该参数。

project_id

必选

String

Path

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

app_id

可选

String

Body

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

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

task_name

必选

String

Body

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

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

task_type

必选

String

Body

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

取值范围

  • softwareUpgrade: 软件升级任务
  • firmwareUpgrade: 固件升级任务
  • createDevices: 批量创建设备任务
  • deleteDevices: 批量删除设备任务
  • freezeDevices: 批量冻结设备任务
  • unfreezeDevices: 批量解冻设备任务
  • createCommands: 批量创建同步命令任务
  • createAsyncCommands: 批量创建异步命令任务
  • createMessages: 批量创建消息任务
  • updateDeviceShadows:批量配置设备影子任务

targets

可选

List<String>

Body

参数说明:执行批量任务的目标,此处填写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

可选

Object

Body

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

document

可选

Object

Body

参数说明:执行任务数据文档,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

Body

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

document_source

可选

String

Body

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

表1 TaskPolicy

名称

必选/可选

类型

说明

schedule_time

可选

String

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

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

retry_count

可选

Integer

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

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

retry_interval

可选

Integer

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

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

响应参数

名称

类型

说明

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: 批量配置设备影子任务

targets

List<String>

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

targets_filter

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。

  • Initializing: 初始化中。
  • Waitting: 等待中。
  • Processing: 执行中。
  • Success: 成功。
  • Fail: 失败。
  • PartialSuccess: 部分成功。
  • Stopped: 停止。

status_desc

String

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

task_progress

TaskProgress Object

子任务执行统计结果。

create_time

String

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

表2 TaskPolicy

名称

类型

说明

schedule_time

String

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

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

retry_count

Integer

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

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

retry_interval

Integer

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

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

表3 TaskProgress

名称

类型

说明

total

Integer

子任务总个数。

processing

Integer

正在执行的子任务个数。

success

Integer

执行成功的子任务个数。

fail

Integer

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

waitting

Integer

等待执行的子任务个数。

fail_wait_retry

Integer

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

stopped

Integer

停止的子任务个数。

请求示例

POST https://{Endpoint}/v5/iot/{project_id}/batchtasks
Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********

{
  "app_id" : "Ev8FVvCfOdQDzrFrxSOemiw_aMca",
  "task_name" : "BatchCommandTask",
  "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
  },
  "document_source" : "jeQDJQZltU8iKgFFoW060F5SGZka"
}

响应示例

Status Code: 201 Created

Content-Type: application/json

{
  "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"
}

错误码

HTTP状态码

错误码

错误码英文描述

错误码中文描述

处理建议

400

IOTDA.014201

Invalid input. The batch task name already exists.

该任务名已存在

请更换任务名后重试。

IOTDA.014203

Invalid input. The document params is invalid, errorMsg : %s

文档中的参数不合法

请排查请求参数是否符合华为云文档要求。

IOTDA.014204

Invalid input. The targets and targets_filter can not all be empty

targets和targets_filter参数不能全部为空

请保证其中一个参数不为空。

IOTDA.014205

Invalid input. The targets_filter's key only support %s

targets_filter参数的key只支持指定类型

请排查请求参数是否符合华为云文档要求。

IOTDA.014207

Invalid input. The scheduleTime must be greater than the current time, up to %s days later

开始时间不能早于当前时间,最晚启动事件不能超过指定天数

请排查请求参数是否符合华为云文档要求。

IOTDA.014208

Invalid input. Parameter retry_count and retry_interval depend on each other and must be assigned at the same time

retry_count和retry_interval参数互相依赖,并且必须同时分配

请保证retry_count和retry_interval参数同时不为空。

403

IOTDA.014202

Operation not allowed. The amount of unfinished task has reached the limit %s.

未完成的任务数量达到上限

请在任务完成后重试。

IOTDA.014206

Operation not allowed. The amount of targets has reached the limit %s.

targets的数量超过上限

请排查请求参数是否符合华为云文档要求。

分享:

    相关文档

    相关产品