注意事项
HTTP 状态码
1.7 设备命令
1.7.2 设备异步命令
1.7.2.1 下发异步设备命令
Internal server
error. 服务器内部错误 请联系华为工程师
分析解决。
IOTDA .00002 0
Decrypt IAM token
failed. IAM Token解析失 败
Event:update)、创建规则动作并激活规则后,当命令状态变更时,物联网平台会根 据规则将结果发送到规则指定的服务器,如用户自定义的HTTP服务器,AMQP服务 器,以及华为云的其他储存服务器等, 详情参考设备命令状态变更通知。注意:此接口 适用于NB设备异步命令下发,暂不支持其他协议类型设备命令下发。
调试
您可以在API Explorer中调试该接口。
URI
请求方法 POST
URI /v5/iot/{project_id}/devices/{device_id}/async-commands 传输协议 HTTPS
请求参数
名称 必选/可
选
类型 位置 说明
X-Auth-Token 必选 String Head
er 参数说明:用户Token。通过调用 IAM服务 获取IAM用户Token接口 获取,接口返回的响应消息头中
“X-Subject-Token”就是需要获 取的用户Token。简要的获取方法 样例请参见 Token认证。
Instance-Id 可选 String Head
er 参数说明:实例ID。物理多租下各 实例的唯一标识,一般华为云租户 无需携带该参数,仅在物理多租场 景下从管理面访问API时需要携带 该参数。
project_i
d 必选 String Path 参数说明:项目ID。获取方法请参 见 获取项目ID。
device_id 必选 String Path 参数说明:下发命令的设备ID,用 于唯一标识一个设备,在注册设备 时由物联网平台分配获得。
取值范围:长度不超过128,只允 许字母、数字、下划线(_)、连 接符(-)的组合。
service_id 可选 String Body 参数说明:设备命令所属的设备服 务ID,在设备关联的产品模型中定 义。如设备需要编解码插件来解析 命令,此参数为必填项。
名称 必选/可 选
类型 位置 说明
comman
d_name 可选 String Body 参数说明:设备命令名称,在设备 关联的产品模型中定义。如设备需 要编解码插件来解析命令,此参数 为必填项。
取值范围:长度不超过128的字符 串。
paras 必选 Object Body 参数说明:设备执行的命令,Json 格式,里面是一个个健值对,如果 service_id不为空,每个健都是 profile中命令的参数名
(paraName);如果service_id为 空则由用户自定义命令格式。设备 命令示例:{"value":"1"},具体格 式需要应用和设备约定, 最大 32K。
expire_ti
me 可选 Integer Body 参数说明:物联网平台缓存命令的 时长, 单位秒, 平台最多缓存20条 消息(即最多缓存20条PENDING 状态的命令) 该参数在
send_strategy字段为delay时有 效,默认缓存24小时,最大缓存2 天。
send_stra
tegy 必选 String Body 参数说明:下发策略,默认缓存下 发。
取值范围:
● immediately:表示立即下发,
此时expire_time无效。
● delay:表示缓存下发,等数据上 报或者设备上线之后下发。
expire_time为0或空时,命令会 默认缓存24小时。
响应参数
名称 类型 说明
device_id String 设备ID,用于唯一标识一个设备,在注册设备时 由物联网平台分配获得。
command_i
d String 设备命令ID,用于唯一标识一条命令,在下发设
备命令时由物联网平台分配获得。
service_id String 设备命令所属的设备服务ID,在设备关联的产品 模型中定义。
名称 类型 说明 command_n
ame String 设备命令名称,在设备关联的产品模型中定义。
paras Object 设备执行的命令,Json格式,里面是一个个健值 对,如果service_id不为空,每个健都是profile中 命令的参数名(paraName);如果service_id为空 则由用户自定义命令格式。设备命令示例:
{"value":"1"},具体格式需要应用和设备约定。
expire_time Integer 物联网平台缓存命令的时长, 单位秒。
status String 设备命令状态,如果命令被缓存,返回PENDING, 如果命令下发给设备,返回SENT。
created_tim
e String 命令的创建时间,"yyyyMMdd'T'HHmmss'Z'"格 式的UTC字符串。
send_strateg
y String 下发策略, immediately表示立即下发,delay表 示缓存起来,等数据上报或者设备上线之后下 发。
请求示例
POST https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/async-commands Content-Type: application/json
X-Auth-Token: ********
Instance-Id: ********
{ "service_id" : "Switch", "command_name" : "ON_OFF", "paras" : {
"value" : "ON"
}, "expire_time" : 0,
"send_strategy" : "immediately"
}
响应示例
Status Code: 200 OK
Content-Type: application/json
{ "device_id" : "c1224afb-e9f0-4916-8220-b6bab568e888", "command_id" : "b1224afb-e9f0-4916-8220-b6bab568e888", "service_id" : "Switch",
"command_name" : "ON_OFF", "send_strategy" : "immediately", "paras" : {
"value" : "ON"
}, "expire_time" : 0,
错误码
HTTP 状态码
错误码 错误码英文描述 错误码中文描述 处理建议
400 IOTDA .01402 8
Invalid input. The gateway is not online.
Invalid parameter
'commandName'. commandName参
数不合法 请检查
Invalid input. The format of
parameter
'commandBody' is not the type of json.
Invalid input. The size of paras has exceeds max length.
paras参数大小超过 最大值
请减小请求中paras 参数长度。
403 IOTDA .00002 1
Operation not allowed. User not found by IAM token or the authorized user has not subscribed IOTDA service.
没有找到IAM Token所对应的用户 信息或该用户没有 订阅设备接入服务
(IOTDA)
请排查IAM Token 所在用户是否订阅
Operation not allowed. The user does not have the permission
Operation not allowed.
Application not found by
authorized user or the authorized user has no application.
Operation not allowed. The device has been frozen, can not be operated.
设备已被冻结,不 允许操作
请将设备解冻后再 重试。
HTTP 状态码
错误码 错误码英文描述 错误码中文描述 处理建议
IOTDA .01410 1
Command counts reached upper limit.
命令数量达到上限 请等待缓存命令下 发后再下发新命令, 或增大缓存命令 数。
404 IOTDA .01400 0
The device does
not exist. 设备不存在 请排查请求参数是 否有误并确认是否 有在平台注册该设 备。
500 IOTDA .00000 1
Internal server
error. 服务器内部错误 请联系华为工程师
分析解决。
IOTDA .00002 0
Decrypt IAM token
failed. IAM Token解析失
败 请联系华为工程师
分析解决。