
# 平台设置设备属性
#### 功能介绍
用于平台设置设备属性。设备的产品模型中定义了平台可向设备设置的属性，平台可调用此[修改设备属性](https://support.huaweicloud.com/api-iothub/iot_06_v5_0035.html)接口设置指定设备的属性数据。设备收到属性设置请求后，需要将执行结果返回给平台，如果设备没回响应平台会认为属性设置请求执行超时。
![](https://support.huaweicloud.com/api-iothub/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/properties/set/request_id={request_id}
上行: $oc/devices/{device_id}/sys/properties/set/response/request_id={request_id}
![](https://support.huaweicloud.com/api-iothub/public_sys-resources/note_3.0-zh-cn.png)
- 应用[修改设备属性](https://support.huaweicloud.com/api-iothub/iot_06_v5_0035.html)时，平台会生成唯一ID用于标识该请求。同时该唯一标识会通过平台设置设备属性下行Topic中的request_id携带给设备。
- 设备无法提前感知该request_id，在订阅该Topic时请使用通配符"#"来替代"request_id={request_id}"即为：$oc/devices/{device_id}/sys/properties/set/#。
 
#### 下行请求参数说明
| 字段名              | 必选/可选 | 类型                      | 参数描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| object_device_id | 可选    | String                  | **参数解释：** - 平台下发时，若为直连设备，不携带该参数。  - 平台下发时，若为网关子设备，该参数为Topic中设备的子设备ID。   |
| services         | 必选    | List\<ServiceProperty\> | 设备服务数据列表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
ServiceProperty结构定义：
| 字段名        | 必选/可选 | 类型     | 参数描述                                                                                                                                                                 |
|:---|:---|:---|:---|
| service_id | 必选    | String | **参数解释：** 设备的服务ID，由创建的[产品模型](https://support.huaweicloud.com/devg-iothub/iot_02_0005.html)确定。 |
| properties | 必选    | Object | **参数解释：** 设备服务的属性列表，具体字段在产品模型里定义，可以设置多个字段。                                                   |
   
#### 上行响应参数说明
| 字段名         | 必选/可选 | 类型      | 参数描述                                                                                                           |
|:---|:---|:---|:---|
| result_code | 可选    | Integer | **参数解释：** 命令的执行结果，0表示成功，其他表示失败。不带默认认为成功。 |
| result_desc | 可选    | String  | **参数解释：** 属性设置的响应描述。                    |
   
#### 下行请求示例
```
Topic: $oc/devices/{device_id}/sys/properties/set/request_id={request_id} 
数据格式：  
{
    "object_device_id":"{object_device_id}",
    "services": [{
            "service_id": "Temperature",
            "properties": {
                "value": 57,
                "value2": 60
            }
        },
        {
            "service_id": "Battery",
            "properties": {
                "level": 80,
                "level2": 90
            }
        }
    ]
}
```
 #### 上行响应示例
```
Topic：$oc/devices/{device_id}/sys/properties/set/response/request_id={request_id}
数据格式：  
{
    "result_code": 0,
    "result_desc": "success"
}
```
