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
发生拥塞,当前的网络已经被流控。
处理建议:请稍后重新再尝试下发命 令。