修改设备命令
接口说明
应用服务器向设备下发命令后,如果由于命令排队、设备不在线等原因,物联网平台还未把命令下发给设备执行,此时应用服务器可调用此接口修改该命令的状态信息。仅能修改还处于PENDING状态的命令,且当前仅支持把命令状态修改为CANCELED状态,即撤销命令的执行。
URI
| 请求方法 | PUT |
|---|---|
| URI | /iocm/app/cmd/v1.4.0/deviceCommands/{deviceCommandId} |
| 传输协议 | HTTPS |
请求参数
| 参数 | 必选/可选 | 类型 | 位置 | 描述 |
|---|---|---|---|---|
| app_key | 必选 | String | header | 访问物联网平台的应用ID,在物联网平台创建应用时由平台分配获得。 |
| Authorization | 必选 | String | header | 访问物联网平台的认证信息,值为“Bearer {accessToken}”,其中{accessToken}为调用鉴权接口返回的accessToken。 |
| deviceCommandId | 必选 | String | path | 要修改的命令ID,在调用创建设备命令接口后获得。 |
| appId | 可选 | String | query | 命令所属的应用ID,当修改授权应用下的命令时才需要填写。 |
| status | 必选 | String | body | 命令的状态,可选值:CANCELED,撤销命令。 |
响应参数
Status Code: 200 OK
| 参数 | 类型 | 描述 |
|---|---|---|
| commandId | String(1-64) | 设备命令ID,用于唯一标识一条命令,在下发设备命令时由物联网平台分配获得。 |
| appId | String(1-64) | 设备命令所属的应用ID。 |
| deviceId | String(1-64) | 下发命令的设备ID,用于唯一标识一个设备,在注册设备时由物联网平台分配获得。 |
| command | 下发命令的信息。 | |
| callbackUrl | String(1024) | 命令状态变化通知地址,当命令状态变化时(执行失败,执行成功,超时,发送,已送达)会通知应用服务器。 |
| expireTime | Integer(>=0) | 下发命令的超时时间,单位为秒,表示设备命令在创建后expireTime秒内有效,超过这个时间范围后命令将不再下发,如果未设置则默认为48小时(86400s*2)。 |
| status | String | 下发命令的状态。
|
| result | ObjectNode | 下发命令执行的详细结果。 |
| creationTime | String(20) | 命令创建的UTC时间,时间格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。 若需要显示本地时区时间,您需要自己进行时间转换。 |
| executeTime | String(20) | 命令执行的UTC时间,时间格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。 若需要显示本地时区时间,您需要自己进行时间转换。 |
| platformIssuedTime | String(20) | 平台发送命令的UTC时间,时间格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。 若需要显示本地时区时间,您需要自己进行时间转换。 |
| deliveredTime | String(20) | 平台将命令送达到设备的UTC时间,时间格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。 若需要显示本地时区时间,您需要自己进行时间转换。 |
| issuedTimes | Integer(>=0) | 平台发送命令的次数。 |
| maxRetransmit | Integer(0~3) | 命令下发最大重传次数。 |
| 参数 | 类型 | 描述 |
|---|---|---|
| serviceId | String(1-64) | 命令对应的服务ID,用于标识一个服务。 |
| method | String(1-128) | 命令服务下具体的命令名称,要与profile中定义的命令名保持一致。 |
| paras | ObjectNode | 命令参数,jsonString格式,里面是一个个健值对,每个健都是profile中命令的参数名(paraName),具体格式需要应用和设备约定。 |
请求示例
PUT https://{host}:{port}/iocm/app/cmd/v1.4.0/deviceCommands/{deviceCommandId}?appId={appId}
Content-Type: application/json
app_key: ******
Authorization: Bearer ******
{
"status": "CANCELED"
} 正常响应示例
StatusCode: 200 OK
Content-Type: application/json
{
"commandId": "********",
"appId": "********",
"deviceId": "********",
"command": {
"serviceId": "********",
"method": "********",
"paras": {
"paraName1": "paraValue1",
"paraName2": "paraValue2"
}
},
"callbackUrl": "http://127.0.0.1:9999/cmd/callbackUrl",
"expireTime": null,
"status": "PENDDING",
"result": null,
"creationTime": "20170222T164000Z",
"executeTime": null,
"platformIssuedTime": null,
"deliveredTime": null,
"issuedTimes": null,
"maxRetransmit": ******
} 错误码
| Http状态码 | 错误码 | 错误描述 | 说明 |
|---|---|---|---|
| 200 | 100203 | The application is not existed. | 应用不存在。 处理建议:
|
| 200 | 100217 | The application hasn't been authorized. | 应用未被授权。 处理建议:若非应用授权场景,请确认请求参数中的appId为空。 |
| 200 | 100418 | The deviceData is not existed. | 设备信息不存在。 处理建议:
|
| 200 | 100428 | The device is not online. | 设备不在线。 处理建议:请检查设备与物联网平台的连接是否正常。 |
| 200 | 100431 | The serviceType is not exist. | 服务类型不存在。 处理建议:
|
| 200 | 100434 | The device command is not existed. | 设备命令不存在。 处理建议:请检查接口请求中的设备命令ID是否正确。 |
| 200 | 100435 | The device command already canceled, expired or executed, Cannot cancel. | 设备命令已经取消,过期或执行,不能取消。 |
| 400 | 100022 | The input is invalid. | 输入参数无效。 处理建议:请检查接口调用请求中携带参数的合法性。 |
| 403 | 1010009 | app throttle exceed. | 应用调用接口过于频繁,超过流控值(默认值是100次/60s)。 处理建议:联系物联网平台维护人员调大流控阈值或者控制接口的调用频率。 |
| 403 | 1010005 | Invalid access token or appId. | 错误的token信息。 处理建议:请检查接口请求中所携带的accessToken是否有误。 |
| 500 | 100001 | Internal server error. | 服务内部处理错误。 处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。 |
| 500 | 100023 | The data in dataBase is abnomal. | 数据库异常。 处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。 |
| 500 | 100220 | Get AppKey from header failed. | 获取appKey失败。 处理建议 : 请检查接口请求的header中是否携带appId。 |
| 500 | 101016 | Get iotws address failed. | 获取iotws地址失败。 处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。 |
| 500 | 101017 | Get newCallbackUrl from oss failed. | 从oss获取新的回调地址失败。 处理建议:物联网平台内部错误,请联系物联网平台维护人员处理。 |
| 503 | 100501 | Congestion occurs, and the current network has been flow-controlled | 发生拥塞,当前的网络已经被流控。 |
Did this article solve your problem?
Thank you for your score!Your feedback would help us improve the website.