更新时间:2022-02-24 GMT+08:00

创建设备命令撤销任务

典型场景

第三方应用向设备下发命令后,如果由于命令排队、设备不在线等原因,物联网平台还未把命令下发给设备执行(DEFAULT状态),此时第三方应用可调用此接口撤销指定设备的所有未下发的命令,对于已下发成功的命令不可撤销。

接口功能

支持第三方应用创建设备命令撤销任务,该任务用于撤销物联网平台中指定设备ID下所有未下发的命令(命令处于DEFAULT状态)。

接口描述

1
public function createDeviceCmdCancelTask($cdcctInDTO, $appId, $accessToken)

参数说明

参数

必选/可选

位置

描述

$cdcctInDTO

必选

body

见下表CreateDeviceCmdCancelTas...的描述。

$appId

必选

query

如果是本应用的设备命令,此参数值可以填写null,否则填写授权应用的appId。

$accessToken

必选

header

填写鉴权接口获取的accessToken。

CreateDeviceCmdCancelTaskInDTO

参数

必选/可选

位置

描述

$deviceId

必选

body

待撤销设备命令的设备ID,撤销任务将会撤销所有向该设备下发的命令。

响应参数

CreateDeviceCmdCancelTaskOutDTO

参数

描述

$taskId

设备命令撤销任务的任务ID。

$appId

设备命令撤销任务所属的应用ID。

$deviceId

执行设备命令撤销任务的设备ID。

$status

撤销任务的任务状态。

  • “WAITTING”表示等待执行中
  • “RUNNING”表示撤销任务正在执行
  • “SUCCESS”表示撤销任务执行成功
  • “FAILED”表示撤销任务执行失败
  • “PART_SUCCESS”表示撤销任务部分执行成功。

$totalCount

撤销的设备命令总数。

$deviceCommands

撤销的设备命令列表,具体参见DeviceCommandRespV4结构体。

DeviceCommandRespV4结构体说明:

参数

描述

$commandId

设备命令ID。

$appId

第三方应用的身份标识,用于唯一标识一个应用。开发者可通过该标识来指定哪个应用来调用物联网平台的开放API。

$deviceId

下发命令的设备ID,用于唯一标识一个设备。

$command

下发命令的信息,具体参见CommandDTOV4结构体。

$callbackUrl

令状态变化通知地址,当命令状态变化时(执行失败,执行成功,超时,发送,已送达)会通知第三方应用。

$expireTime

下发命令的超时时间,单位为秒,表示设备命令在创建后expireTime秒内有效,超过这个时间范围后命令将不再下发,如果未设置则默认为48小时(86400s*2)。

$status

下发命令的状态。

  • “DEFAULT”表示未下发
  • “EXPIRED”表示命令已经过期
  • “SUCCESSFUL”表示命令已经成功执行
  • “FAILED”表示命令执行失败
  • “TIMEOUT”表示命令下发执行超时
  • “CANCELED”表示命令已经被撤销执行

$result

下发命令执行的详细结果。

$creationTime

命令的创建时间。

$executeTime

命令执行的时间。

$platformIssuedTime

平台发送命令的时间。

$deliveredTime

平台将命令送达到设备的时间。

$issuedTimes

平台发送命令的次数。

$maxRetransmit

命令下发最大重传次数。

CommandDTOV4结构体说明:

参数

必选/可选

描述

$serviceId

必选

命令对应的服务ID,用于标识一个服务。

$method

必选

命令服务下具体的命令名称,服务属性等。

$paras

可选

命令参数的jsonString,具体格式需要应用和设备约定。

错误码

Http状态码

错误码

错误描述

说明

200

100203

The application is not existed.

应用不存在。

处理建议:

  • 请检查HTTP请求头域中携带的appId是否有误。
  • 请检查请求路径(url)中传入的appId是否有误。

200

100217

The application hasn't been authorized.

应用未被授权。

处理建议:若非应用授权场景,请确认请求参数中的appId为空。

200

100418

The deviceData is not existed.

设备信息不存在。

处理建议:

  • 请求参数中携带的deviceId错误。请确认该deviceId是否属于该appId或者deviceId是否写错。
  • Header中携带的appId有误,请确认该appId下是否有该deviceId。
  • 如果URL中携带了可选参数appId,请检查该appId是否有误。

400

100022

The input is invalid.

输入参数无效。

处理建议:请检查接口调用请求中携带参数的合法性。

403

100203

The application is not existed.

应用不存在。

处理建议:

  • 请检查HTTP请求头域中携带的appId是否有误。
  • 请检查请求路径(url)中传入的appId是否有误。

403

100217

The application hasn't been authorized.

应用未被授权。

处理建议:若非应用授权场景,请确认请求参数中的appId为空。

403

1010009

app throttle exceed.

应用调用接口过于频繁,超过流控值(默认值是100次/60s)。

处理建议:联系物联网平台维护人员调大流控阈值或者控制接口的调用频率。

403

1010005

App_key or access_token is invalid.

错误的token信息。

处理建议:请检查接口请求中所携带的accessToken是否有误。

500

100001

Internal server error.

服务内部处理错误。

处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。

500

100220

Get AppKey from header failed.

获取appKey失败。

处理建议 : 请检查接口请求的header中是否携带appId。

503

100501

Congestion occurs, and the current network has been flow-controlled

发生拥塞,当前的网络已经被流控。