• 沒有找到結果。

MessageConfirmHeader结构说明。

4.3.8.1 创建设备命令

典型场景

设备Profile文件中定义了物联网平台可向设备下发的命令,第三方应用可调用此接口 向设备下发命令,配置或修改设备的服务属性,以实现对设备的控制。

物联网平台有两种命令下发机制:

● 立即下发:平台收到命令后立即下发给设备,保证实时性,不保证串行性。

● 缓存下发:平台收到命令后缓存起来,在设备可达时排队串行下发,平台收到前 一个命令的响应(模组自动回复的ACK)才会下发后一个命令,保证串行性,不 保证实时性。

此接口适用于使用LWM2M/CoAP协议接入的设备,例如NB-IoT设备。

接口功能

支持第三方应用向LWM2M/CoAP设备下发命令,实现对设备的控制。支持物联网平台 立即下发命令和缓存下发命令。

接口描述

def postDeviceCommand(self, pdcInDTO, appId, accessToken)

参数说明

参数 必选/可

类型 位置 描述

pdcInDTO 必选 PostDevice CommandI nDTO

body 见下表

PostDeviceCommandInDTO的 描述。

appId 可选 String query 如果是本应用的设备,此参数值 可以填写None,否则填写授权 应用的appId。

accessTok

en 必选 String header 填写鉴权接口获取的 accessToken。

PostDeviceCommandInDTO

参数 必选/可

类型 位置 描述

deviceId 必选 String(64) body 下发命令的设备ID,用于唯一标识 一个设备。

参数 必选/可 选

类型 位置 描述

callback

Url 可选 String(1024) body 命令状态变化通知地址,当命令状 态变化时(执行失败,执行成功,

超时,发送,已送达)会通知第三 方应用。

expireTi

me 可选 Integer(>=0) body 下发命令的有效时间,单位为秒,

表示设备命令在创建后expireTime

ansmit 可选 Integer(0~3) body 命令下发最大重传次数。

CommandDTOV4结构体说明:

参数 必选/可 选

类型 位置 描述

serviceI

d 必选 String(1-6

4) body 命令对应的服务ID,用于标识一个服 务。要与profile中定义的serviceId保持 一致。

method 必选 String(1-1

28) body 命令服务下具体的命令名称,服务属 性等。要与profile中定义的命令名保 持一致。

paras 必选 ObjectNo

de body 命令参数,jsonString格式,里面是一 个个健值对,每个健都是profile中命 令的参数名(paraName),具体格式 需要应用和设备约定。

若profile中命令未定义参数,则paras 值中的参数可不填写,即设置为

"paras": {}。

响应参数

PostDeviceCommandOutDTO

参数 类型 描述 commandI

d String(1-64

) 设备命令ID。

appId String(1-64

) 第三方应用的身份标识,用于唯一标识一个应用。开发

者可通过该标识来指定哪个应用来调用物联网平台的开 放API。

deviceId String(1-64

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

command Command

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

callbackUr

l String(1024

) 令状态变化通知地址,当命令状态变化时(执行失败,

执行成功,超时,发送,已送达)会通知第三方应用。

expireTime Integer(>=0

) 下发命令的超时时间,单位为秒,表示设备命令在创建

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

status String 下发命令的状态。

● “DEFAULT”表示未下发

● “EXPIRED”表示命令已经过期

● “SUCCESSFUL”表示命令已经成功执行

● “FAILED”表示命令执行失败

● “TIMEOUT”表示命令下发执行超时

● “CANCELED”表示命令已经被撤销执行 result ObjectNod

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

creationTi

me String(20) 命令的创建时间。

executeTi

me String(20) 命令执行的时间。

platformIs

suedTime String(20) 平台发送命令的时间。

deliveredTi

me String(20) 平台将命令送达到设备的时间。

issuedTim

es Integer(>=0

) 平台发送命令的次数。

maxRetran

smit Integer(0~3

) 命令下发最大重传次数。

错误码

Http状态

错误码 错误描述 说明

200 100203 The

application is not existed.

应用不存在。

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是否有误。

200 100428 The device is

not online. 设备不在线。

处理建议:请检查设备与物联网平台的 连接是否正常。

200 100431 The

serviceType is not exist.

服务类型不存在。

处理建议:

● 请检查该设备的Profile文件是否已上 传到物联网平台。

● 请检查请求参数是否正确,或者 serviceId在Profile文件中是否存在。

400 100022 The input is

invalid. 输入参数无效。

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

Http状态

错误码 错误描述 说明

400 100223 Command counts has reached the upLimit.

403 100217 The

application hasn't been authorized.

应用未被授权。

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

403 100612 Device is

zombie. 设备为僵尸设备。(距离设备上次上线 时间超过阈值,默认7天)

处理建议:请把设备上线后再重新下发 命令。

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

newCallbackUr l from oss

从oss获取新的回调地址失败。

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

Http状态

错误码 错误描述 说明

503 100501 Congestion occurs, and the current

network has been flow-controlled

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

处理建议:请稍后重新再尝试下发命 令。