
# 平台命令下发
#### 功能介绍
用于平台向设备下发设备控制命令。平台下发命令后，需要设备及时将命令的执行结果返回给平台，如果设备没回响应，平台会认为命令执行超时。命令下发和消息下发的区别，请查看[消息通信说明](https://support.huaweicloud.com/usermanual-iothub/iot_01_0050.html)。
![](https://support.huaweicloud.com/devg-ocsmartcampus/public_sys-resources/note_3.0-zh-cn.png)
低配置且资源受限或者对网络流量有要求的设备，不适合直接构造JSON数据与物联网平台通信时，可将原始二进制数据透传到物联网平台。通过[开发编解码插件](https://support.huaweicloud.com/devg-iothub/iot_02_9990.html)实现二进制数据到平台定义JSON格式的转换。
#### Topic
下行： $oc/devices/{device_id}/sys/commands/request_id={request_id}
上行：$oc/devices/{device_id}/sys/commands/response/request_id={request_id}
![](https://support.huaweicloud.com/devg-ocsmartcampus/public_sys-resources/note_3.0-zh-cn.png)
- {request_id}用于唯一标识这次请求。设备侧收到下行请求的topic带该参数时，上行响应的topic需要将该参数值返回给平台。
- 应用通过平台[下发设备命令](https://support.huaweicloud.com/api-iothub/iot_06_v5_0038.html)时，平台会生成唯一ID（command_id）用于标识该命令，并返回给应用。同时该唯一标识会通过设备命令下行Topic中的request_id携带给设备。
- 设备无法提前感知该request_id，在订阅该Topic时请使用通配符"#"来替代"request_id={request_id}"即为：$oc/devices/{device_id}/sys/commands/#。
 
#### 下行请求参数说明
| 字段名              | 必选/可选 | 类型     | 参数描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| object_device_id | 可选    | String | **参数解释：** - 平台下发时，若为直连设备，不携带该参数。  - 平台下发时，若为网关子设备，该参数为Topic中设备的子设备Id。   |
| service_id       | 可选    | String | **参数解释：** 设备的服务ID，在设备关联的[产品模型](https://support.huaweicloud.com/devg-iothub/iot_02_0005.html)中定义。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| command_name     | 可选    | String | **参数解释：** 设备命令名称，在设备关联的[产品模型](https://support.huaweicloud.com/devg-iothub/iot_02_0005.html)中定义。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| paras            | 必选    | Object | **参数解释：** 设备命令的执行参数，具体字段在设备关联的[产品模型](https://support.huaweicloud.com/devg-iothub/iot_02_0005.html)中定义。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
#### 上行响应参数说明
命令应答的json格式，具体字段在设备关联的产品模型中定义。
| 字段名           | 必选/可选 | 类型      | 参数描述                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| result_code   | 可选    | Integer | **参数解释：** 标识命令的执行结果，0表示成功，其他表示设备执行结果为失败。不带默认为0。                                                     |
| response_name | 可选    | String  | **参数解释：** 命令的响应名称。                                                                                    |
| paras         | 可选    | Object  | **参数解释：** 命令的响应参数，具体字段在设备关联的[产品模型](https://support.huaweicloud.com/devg-iothub/iot_02_0005.html)中定义。 |
   
#### 下行请求示例
```
Topic: $oc/devices/{device_id}/sys/commands/request_id={request_id} 
数据格式：  
{
  "object_device_id": "{object_device_id}",
  "command_name": "ON_OFF",
  "service_id": "WaterMeter",
  "paras": {
    "value": "1"
  }
}
```
 #### 上行响应示例
```
Topic：$oc/devices/{device_id}/sys/commands/response/request_id={request_id}
数据格式：  
{
    "result_code": 0,
    "response_name": "COMMAND_RESPONSE",
    "paras": {
        "result": "success"
    }
}
```
