
# 使用自定义Topic管理室内空调
#### 场景说明
自定义Topic功能用于MQTT协议设备接入物联网平台的场景，支持[设备消息上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_3016.html)、[平台消息下发](https://support.huaweicloud.com/api-iothub/iot_06_v5_3017.html)的Topic进行自定义。根据Topic不同，应用侧可实现不同的业务逻辑处理，也适用于应用侧和设备侧之间，设备无法按照产品模型中定义的属性上报或命令下发的场景。
本示例中，应用服务器收到设备上报Topic为室内温度的数据，判断是否开启或关闭室内空调。
#### 前提条件
- 已经注册华为账号并开通华为云，具体可参考[华为账号注册](https://reg.huaweicloud.com/registerui/public/custom/register.html#/register)。
- 已开通设备接入服务。
- 已在[管理控制台](https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home)创建MQTT协议类型的产品、开发产品模型、新增设备。创建产品、开发产品模型和新增设备的具体操作细节，请参考[创建产品](https://support.huaweicloud.com/usermanual-iothub/iot_01_0054.html)、[开发产品模型](https://support.huaweicloud.com/devg-iothub/iot_02_0005.html)、[注册单个设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0031.html)或[批量注册设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0032.html)。
- 已建立设备和平台之间的连接。具体操作细节，请参考[连接鉴权](https://support.huaweicloud.com/api-iothub/iot_06_v5_3009.html)。
 
#### 新增自定义Topic
具体操作细节请参考[新增自定义Topic](https://support.huaweicloud.com/usermanual-iothub/iot_02_9992.html)。
#### MQTT设备消息上报
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"立即使用"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 选择"设备 \> 所有设备"，找到对应的设备，单击"详情"进入设备详情页。
3. 选择"消息跟踪"页签，单击"启动消息跟踪"跟踪时长根据您的需求自定义。
4. 参考[MQTT设备快速接入](https://support.huaweicloud.com/qs-iothub/iot_05_0005.html)，以MQTT.fx模拟器为例，模拟设备上报自定义Topic消息。
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001428943988.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-iothub/public_sys-resources/note_3.0-zh-cn.png)
   使用IoT Device SDK或原生MQTT协议接入的设备，需要在设备程序中，设置设备上报的自定义Topic名称。
   
5. 在消息跟踪页面，可以查看设备上报的自定义Topic消息。
   图1查看消息跟踪   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001981497761.png "点击放大") 
6. 应用侧通过数据转发的方式，获取MQTT设备上报的自定义Topic消息。更多数据转发方式，请参考[数据转发](https://support.huaweicloud.com/usermanual-iothub/iot_01_0024.html)。您也可以参考最佳实践案例[数据转发到OBS长期存储](https://support.huaweicloud.com/usermanual-iothub/iot_bp_0001.html)。
 
#### MQTT设备消息下发
本示例通过使用postman，下发开启室内空调指令。
1. 使用MQTT.fx模拟器，订阅自定义Topic。 ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001479020377.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-iothub/public_sys-resources/note_3.0-zh-cn.png)
   - 确保创建自定义Topic时，设备操作权限包含"订阅"功能，详细操作请参考[自定义Topic](https://support.huaweicloud.com/usermanual-iothub/iot_02_9992.html#section3)。
   
   - 使用IoT Device SDK或者原生MQTT协议接入的设备，需要在设备程序中，设置设备订阅的自定义Topic名称。
     
2. 使用postman工具模拟应用侧调用[下发设备消息](https://support.huaweicloud.com/api-iothub/iot_06_v5_0059.html)接口，下发开启室内空调的命令。
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001479140877.png "点击放大")
   
3. 调用[查询设备消息](https://support.huaweicloud.com/api-iothub/iot_06_v5_0058.html)接口，查看下发命令是否成功。若命令下发成功，室内空调将会被开启。
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001429260928.png "点击放大")
   
 
