
# 设备消息上报
#### 功能描述
是指设备无法按照产品模型中定义的属性格式进行数据上报时，可调用此接口将设备的自定义数据格式上报给平台，平台对该消息不进行解析，该消息可以转发给应用服务器或华为云其他云服务上进行存储和处理。
消息上报和属性上报的区别，请查看[消息通信说明](https://support.huaweicloud.com/usermanual-iothub/iot_01_0045_2.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/messages/up
![](https://support.huaweicloud.com/devg-ocsmartcampus/public_sys-resources/note_3.0-zh-cn.png)
- 消息上报时除了使用系统预置的消息上报topic外，设备也可以使用非平台声明的自定义topic。如$oc/devices/{device_id}/user/{自定义}。
- 数据上报的过程中，可以通过在topic后面携带?request_id来指定request_id。比如说消息上报：$oc/devices/{device_id}/sys/messages/up?request_id={request_id}。若不指定，平台会自动生成request_id，用于标识此次请求。
 
#### 参数说明
消息上报对数据内容不做固定的要求，当使用系统格式进行下发时，参数说明如下：
| 字段名              | 必选/可选 | 类型            | 参数描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| object_device_id | 可选    | String        | **参数解释：** - 网关设备上报时，子设备进行上报需填写该参数。object_device_id为Topic中设备的子设备Id，否则将请求失败。  - 直连设备上报时，object_device_id需与Topic中的device_id一致。  - 若为空则默认该参数与Topic中的device_id一致。   |
| name             | 可选    | String        | **参数解释：** 消息名称，可不填写，做说明用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| id               | 可选    | String        | **参数解释：** 消息的唯一标识，用于区分与查找消息。如不填写系统会自动生成一个消息ID，消息ID不可重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| content          | 必选    | Object、String | **参数解释：** 消息内容，可以为base64编码格式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
![](https://support.huaweicloud.com/devg-ocsmartcampus/public_sys-resources/note_3.0-zh-cn.png)
设备消息上报时平台不会校验消息格式，这里的参数说明和示例为给的消息样例，设备可以根据需要进行自定义数据格式的上报。
#### 示例
假设设备上报数据内容为"hello!"，请求的样例参考如下：
- 仅发送消息内容：
  ```
  Topic: $oc/devices/{device_id}/sys/messages/up  
  数据格式：
      hello!
  ```
  

- 以系统格式进行上报：
  ```
  Topic: $oc/devices/{device_id}/sys/messages/up  
  数据格式：
  {
      "object_device_id": "{object_device_id}",
      "name":null,
      "id":"aca6a906-c74c-4302-a2ce-b17ba2ce630c",
      "content":"hello!"
  }
  ```
  
 
