下发设备命令
功能介绍
设备的产品模型中定义了物联网平台可向设备下发的命令,应用服务器可调用此接口向指定设备下发命令,以实现对设备的同步控制。平台负责将命令以同步方式发送给设备,并将设备执行命令结果同步返回, 如果设备没有响应,平台会返回给应用服务器超时,平台超时时间是20秒。如果命令下发需要超过20秒,建议采用消息下发。
注意:
-
此接口适用于MQTT设备同步命令下发,暂不支持NB-IoT设备命令下发。
-
此接口仅支持单个设备同步命令下发,如需多个设备同步命令下发,请参见 创建批量任务。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
URI
POST /v5/iot/{project_id}/devices/{device_id}/commands
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
参数说明:项目ID。获取方法请参见 获取项目ID。 |
device_id |
是 |
String |
参数说明:下发消息的设备ID,用于唯一标识一个设备,在注册设备时由物联网平台分配获得。 取值范围:长度不超过128,只允许字母、数字、下划线(_)、连接符(-)的组合。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
否 |
String |
参数说明:用户Token。通过调用IAM服务 获取IAM用户Token接口获取,接口返回的响应消息头中“X-Subject-Token”就是需要获取的用户Token。简要的获取方法样例请参见 Token认证。 |
Instance-Id |
否 |
String |
参数说明:实例ID。物理多租下各实例的唯一标识,建议携带该参数,在使用专业版时必须携带该参数。您可以在IoTDA管理控制台界面,选择左侧导航栏“总览”页签查看当前实例的ID,具体获取方式请参考 查看实例详情。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
service_id |
否 |
String |
参数说明:设备命令所属的设备服务ID,在设备关联的产品模型中定义。 取值范围:长度不超过64的字符串。 |
command_name |
否 |
String |
参数说明:设备命令名称,在设备关联的产品模型中定义。 取值范围:长度不超过128的字符串。 |
paras |
是 |
Object |
参数说明:设备执行的命令,Json格式,里面是一个个键值对,如果serviceId不为空,每个键都是profile中命令的参数名(paraName);如果serviceId为空则由用户自定义命令格式。设备命令示例:{"value":"1"},具体格式需要应用和设备约定。此参数仅支持Json格式,暂不支持字符串。 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
command_id |
String |
设备命令ID,用于唯一标识一条命令,在下发设备命令时由物联网平台分配获得。 |
response |
Object |
设备上报的命令执行结果。Json格式,具体格式需要应用和设备约定。 |
error_code |
String |
命令下发异常错误码。 |
error_msg |
String |
命令下发异常错误信息。 |
请求示例
创建命令,命令名为ON_OFF,命令为ON。
POST https://{endpoint}/v5/iot/{project_id}/devices/{device_id}/commands { "service_id" : "reboot", "command_name" : "ON_OFF", "paras" : { "value" : "ON" } }
响应示例
状态码: 200
OK
{ "command_id" : "b1224afb-e9f0-4916-8220-b6bab568e888", "response" : { "result_code" : 0, "response_name" : "COMMAND_RESPONSE", "paras" : { "result" : "success" } }, "error_code" : "string", "error_msg" : "string" }
状态码
状态码 |
描述 |
---|---|
200 |
OK |
400 |
Bad Request |
401 |
Unauthorized |
403 |
Forbidden |
404 |
Not Found |
500 |
Internal Server Error |
错误码
请参见错误码。