CreateOTADynamicUpgradeJob

调用该接口创建动态升级批次。

使用说明

  • 若未在调用CreateOTAFirmware创建升级包时指定升级包无需验证,则调用本接口创建批量升级批次前,必须保证升级包已验证成功。创建验证升级包任务,请参见CreateOTAVerifyJob
  • 同一设备只能同时在一个升级批次中处于待升级或正在升级状态。对处于待升级或正在升级状态的设备发起新的升级任务,后发起的任务会直接失败。
  • 同一升级包下,只能有一个状态为执行中的动态升级批次。
  • 如果同一个设备处于不同升级包的动态升级策略中,则设备执行最新发起的动态升级。
  • 创建动态升级批次后,系统将自动创建对应的动态升级策略。可以调用CancelOTAStrategyByJob取消动态升级策略。
  • 目前仅中国的华东2(上海)、华北2(北京)和华南1(深圳)地域下,支持使用MQTT协议下载升级包。

  • 目前仅华东2(上海)地域下,企业版实例和新版公共实例,支持创建动态分组的动态升级批次。实例详细说明,请参见实例管理

QPS限制

单个阿里云账号调用该接口的每秒请求数(QPS)最大限制为20。

说明 RAM用户共享阿里云账号配额。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称

类型

是否必选

示例值

描述

Action String CreateOTADynamicUpgradeJob

系统规定参数。取值:CreateOTADynamicUpgradeJob。

FirmwareId String nx3xxVvFdwvn6dim50PY03****

升级包ID,升级包的唯一标识符。

升级包ID是调用CreateOTAFirmware创建升级包时,返回的参数之一。

您也可以调用ListOTAFirmware接口,从返回参数中查看。

ProductKey String a1Le6d0****

升级包所属产品的ProductKey

ProductKey是物联网平台为产品颁发的全局唯一标识符。您可以在物联网平台控制台或调用QueryProductList,查看当前账号下所有产品的信息。

Tag.N.Key String key1

批次标签key。仅支持英文字母、数字、半角句号(.),长度限制为1~30个字符。支持最多添加10个批次标签。

批次标签将在向设备推送升级通知时下发给设备。

说明 批次标签可以不传入。是否必选,表示如果传入批次标签Tag,Tag.N.ValueTag.N.Key必须成对传入。
Tag.N.Value String value1

批次标签value。长度限制为1~1024个字符。支持最多添加10个批次标签。所有批次标签key和value的长度总和,不能超过4096个字符。

说明 批次标签可以不传入。是否必选,表示如果传入批次标签Tag,Tag.N.ValueTag.N.Key必须成对传入。
IotInstanceId String iot-cn-0pp1n8t****

实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID

重要
  • 若有ID值,必须传入该ID值,否则调用会失败。
  • 若无ID值,则无需传入。

实例的更多信息,请参见实例概述

SrcVersion.N RepeatList V1.0.1

待升级版本号列表。

  • 如果传入该参数,则不能传入GroupIdGroupType
  • 如果不传入该参数,则必须传入GroupIdGroupType
说明
  • 基于版本对差分升级包发起动态升级任务时,该参数值必须与差分升级包的待升级版本号(SrcVersion)相同。

    基于动态分组对差分升级包发起动态升级任务时,无需传入该参数。

  • 可以调用QueryDeviceDetail,查看设备OTA模块版本号FirmwareVersion
  • 列表中不能有重复的版本号。
  • 最多可传入30个版本号。
RetryInterval Integer 60

设备升级失败后,自动重试的时间间隔,单位为分钟。可选值:

  • 0:立即重试。
  • 10:10分钟后重试。
  • 30:30分钟后重试。
  • 60:60分钟(即1小时)后重试。
  • 1440:1,440分钟(即24小时)后重试。
重要 RetryInterval的值需要小于TimeoutInMinutes的值。例如:
  • TimeoutInMinutes的值为60分钟,RetryInterval的值最大可设置为30。
  • TimeoutInMinutes的值为1440分钟,RetryInterval的值最大可设置为60。

RetryInterval需设置为24小时后重试,则建议不传入TimeoutInMinutes。因升级超时后,不会再触发升级重试。

不传入此参数,则表示不重试。

RetryCount Integer 1

自动重试次数。

如果传入RetryInterval参数,则需传入该参数。

可选值:

  • 1:1次。
  • 2:2次。
  • 5:5次。
TimeoutInMinutes Integer 1440

设备升级超时时间,超过指定时间后,设备未完成升级,则升级失败。单位为分钟,取值范围为1~1,440。

说明
  • 从设备首次上报进度开始计算时间。升级期间若设备多次上下线,触发物联网平台多次推送升级包,都始终以设备最开始的第一次上报升级进度时间作为开始时间。
  • 因超时而导致的升级失败,物联网平台不会触发自动重试逻辑。

不传入该参数,则表示设备升级没有超时限制。

MaximumPerMinute Integer 1000

每分钟最多向多少个设备推升级包下载URL。取值范围:10~10,000。

不传入该参数,则取默认值10,000。

OverwriteMode Integer 2

是否覆盖之前的升级任务。取值:

  • 1(默认):不覆盖。若设备已有升级任务,则只执行已有任务。
  • 2:覆盖。设备只执行新的升级任务。此时MultiModuleMode不能传入true
说明 不覆盖升级中的任务。
DynamicMode Integer 1

动态升级模式。取值范围:

  • 1(默认):除了升级当前满足升级条件的设备,还将持续检查设备是否满足升级条件,对满足升级条件的设备进行升级。
  • 2:仅对后续上报新版本号的设备生效。
NeedPush Boolean true

物联网平台是否主动向设备推送升级任务。

  • true(默认):是。批次任务创建完成后,物联网平台主动将升级任务,直接推送给升级范围内的在线设备。

    此时,设备仍可主动向物联网平台发起请求,来获取OTA升级任务信息。

  • false:否。设备必须通过向物联网平台发起请求,来获取OTA升级任务信息。
NeedConfirm Boolean false

如需自主控制设备OTA升级时,可配置此参数,通过手机App来控制,设备是否可进行OTA升级。手机App需您自行开发。

  • false(默认):否。直接按照NeedPush设置,获取OTA升级任务信息。
  • true:是。设备无法获取OTA升级任务,需App侧确认OTA升级后,才能按照NeedPush设置,获取OTA升级任务信息。
GroupId String IwOwQj7DJ***

分组ID。

  • 如果传入该参数,则必须同时传入GroupType,且不能传入SrcVersion.N
  • 如果不传入该参数,则无需传入GroupType,且必须传入SrcVersion.N

您可调用QueryDeviceGroupList接口查询分组ID(GroupId)。

GroupType String LINK_PLATFORM_DYNAMIC

分组类型,仅可取值LINK_PLATFORM_DYNAMIC(动态分组)。

  • 如果传入该参数,则必须同时传入GroupId,且不能传入SrcVersion.N
  • 如果不传入该参数,则无需传入GroupId,且必须传入SrcVersion.N
DownloadProtocol String HTTPS

升级包下载协议,可选:HTTPS(默认)或MQTT。设备端收到物联网平台推送的升级包下载信息后,通过该协议下载升级包。

重要 使用MQTT协议下载升级包,必须符合以下条件:
  • 支持的地域:仅中国的华东2(上海)、华北2(北京)和华南1(深圳)。
  • OTA升级包:仅包含一个文件,且文件大小不超过16 MB。
  • 设备端SDK:必须使用物联网平台提供的C语言Link SDK最新版本的软件包,开发OTA升级和MQTT下载文件的能力。详细内容,请参见使用MQTT协议下载升级包的OTA升级代码示例
MultiModuleMode Boolean false

设备是否支持多模块同时升级。

  • false(默认):否,设备不支持多模块同时升级。
  • true:是,设备支持多个不同模块同时独立升级。MultiModuleModetrue时,OverwriteMode不能传入2

    相同模块下的升级任务会被覆盖,但不会覆盖升级中的任务。多个不同模块升级互不影响。

重要
  • 支持的实例:企业版实例和新版公共实例。
  • 设备端SDK:必须使用物联网平台提供的设备端C语言4.x版本的Link SDK。
  • 发起基于分组的动态升级批次:MultiModuleModeOverwriteMode的设置,必须与分组对应的存量动态升级批次中的设置保持一致。

更多信息,请参见设备支持多模块同时升级说明表

调用API时,除了本文介绍的该API的特有请求参数,还需传入公共请求参数。公共请求参数说明,请参见公共参数文档

返回数据

名称

类型

示例值

描述

Code String iot.system.SystemException

调用失败时,返回的错误码。更多信息,请参见错误码

Data Struct

调用成功时,返回的升级批次信息。详情见以下Data包含的参数。

JobId String XUbmsMHmkqv0PiAG****010001

升级批次ID,升级批次的唯一标识符。

UtcCreate String 2019-05-10T02:18:53.000Z

升级批次的创建时间,UTC格式。

ErrorMessage String 系统异常

调用失败时,返回的出错信息。

RequestId String 9F41D14E-CB5F-4CCE-939C-057F39E688F5

阿里云为该请求生成的唯一标识符。

Success Boolean true

表示是否调用成功。

  • true:调用成功。
  • false:调用失败。

示例

请求示例

http(s)://iot.cn-shanghai.aliyuncs.com/?Action=CreateOTADynamicUpgradeJob
&FirmwareId=nx3xxVvFdwvn6dim50PY03****
&ProductKey=a1Le6d0****
&Tag.1.Key=key1
&Tag.1.Value=value1
&MaximumPerMinute=1000
&RetryCount=1
&RetryInterval=60
&TimeoutInMinutes=1440
&SrcVersion.1=V1.0.1
&OverwriteMode=2
&<公共请求参数>

正常返回示例

XML格式

<CreateOTADynamicUpgradeJobResponse>
   <Data>
       <JobId>wahVIzGkCMuAUE2gDERM02****</JobId>
       <UtcCreate>2019-11-04T06:22:19.566Z</UtcCreate>
   </Data>
   <RequestId>29EC7245-0FA4-4BB6-B4F5-5F04818FDFB1</RequestId>
   <Success>true</Success>
</CreateOTADynamicUpgradeJobResponse>

JSON格式

{
  "Data": {
    "JobId": "XUbmsMHmkqv0PiAG****010001",
    "UtcCreate": "2019-05-10T02:18:53.000Z"
  },
  "RequestId": "9F41D14E-CB5F-4CCE-939C-057F39E688F5",
  "Success": true
}