# 网关与子设备
#### 概述
物联网平台设备分为直连设备和非直连设备。
- 直连设备：通过平台支持的协议，直接连接到平台的设备称为直连设备。平台支持直连的协议请参考[概述](https://support.huaweicloud.com/usermanual-iothub/iot_01_01271.html)中类型为通用协议，子类型为直连云端中的协议。
- 非直连设备：针对未实现TCP/IP协议栈的设备，由于无法直接同物联网平台通信，它需要通过网关进行数据转发。网关设备为直连设备，当前仅支持通过MQTT协议直连到平台的设备作为网关设备。
直连设备与非直连设备关系如下图
图1网关与子设备   
![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002218187682.png "点击放大")
#### 业务流程
IoT Device SDK提供相关的接口，开发者调用这些接口实现网关与物联网平台的对接。不同语言的SDK的接口名称不一样，每个接口功能请参见[IoT Device SDK使用指南（Java）](https://support.huaweicloud.com/sdkreference-iothub/iot_02_0089.html)、[IoT Device SDK使用指南（C）](https://support.huaweicloud.com/sdkreference-iothub/iot_02_0090.html)、[IoT Device SDK使用指南（C#）](https://support.huaweicloud.com/sdkreference-iothub/iot_02_0091.html)、[IoT Device SDK使用指南（Android）](https://support.huaweicloud.com/sdkreference-iothub/iot_02_0092.html)、[IoT Device SDK Tiny使用指南（C）](https://support.huaweicloud.com/sdkreference-iothub/iot_02_9980.html)。
表1业务流程 
|                                                                                                                                  应用侧管理子设备业务流程                                                                                                                                   |                                                                                                       网关管理子设备业务流程                                                                                                       |
|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
|                                                                               图2应用侧管理子设备流程图 ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001828200993.png "点击放大")                                                                                |                                                                           图3网关侧管理子设备流程图 ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001777615646.png "点击放大")                                                                           |
|                                                                                                                                                                                                                                                                1.在物联网平台上传网关的产品模型，并注册网关设备。                                                                                                                                                                                                                                                                 ||
|                                                                                                                                                                                                                                                                        2.网关调用鉴权接口上线                                                                                                                                                                                                                                                                        ||
|                                                                                                                                                                                                                                                                     3.在物联网平台上传子设备的产品模型。                                                                                                                                                                                                                                                                     ||
| 4.网关鉴权成功后，应用调用[创建设备](https://support.huaweicloud.com/api-iothub/iot_06_v5_0046.html)接口，填写设备相关信息（与产品模型定义一致）。添加成功后，您可以在物联网平台查看添加的子设备（[如何查看？]）。您也可以通过控制台添加子设备，详细请查看[如何添加？] | 4.网关鉴权成功后，网关调用[网关新增子设备请求](https://support.huaweicloud.com/api-iothub/iot_06_v5_30181.html)接口，填写设备相关信息（与产品模型定义一致）。平台在处理完成后，将处理结果通过接口[网关新增子设备请求响应](https://support.huaweicloud.com/api-iothub/iot_06_v5_30182.html)发送给网关。 |
|                                                                                                                          5.添加子设备后，子设备状态显示"未激活"。请在子设备添加成功后，或者子设备上报数据前，调用[网关更新子设备状态](https://support.huaweicloud.com/api-iothub/iot_06_v5_3022.html)接口进行设备状态更新。 说明： 子设备的状态表示子设备接入网关的状态，由网关上报到物联网平台进行状态的刷新；如果网关不能正常上报子设备的状态信息到物联网平台，则展示的子设备状态不会刷新。例如：某子设备通过网关接入到物联网平台，子设备状态为在线状态，如果此时网关与物联网平台断开连接，则网关不能上报子设备的状态到物联网平台，该子设备的状态会一直显示在线。                                                                                                                          ||
|                                                                                                                                                                                                                     6.网关调用[网关批量属性上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_3006.html)接口上报子设备的数据，接口里的参数填写网关和子设备的相关设备信息。                                                                                                                                                                                                                      ||
|                                                                                                                                                                                                                                                           7.网关订阅命令下发Topic，接收并处理应用服务器或物联网平台下发的命令。                                                                                                                                                                                                                                                            ||
|                                                                               8.应用服务器调用[删除设备](https://support.huaweicloud.com/api-iothub/iot_06_v5_0041.html)接口，给网关下发删除子设备命令，网关收到该命令后，可以进行相应的业务处理。                                                                                |            8.网关调用[网关删除子设备请求](https://support.huaweicloud.com/api-iothub/iot_06_v5_30183.html)接口，平台收到后会进行数据处理，当处理完成后会通过接口[网关删除子设备请求响应](https://support.huaweicloud.com/api-iothub/iot_06_v5_30184.html)将结果发送给设备。            |
   
#### 设备如何切换网关
由于实际生产需要，在特定场景下需要切换设备的网关，下面介绍3种方式切换子设备网关。
- 修改单个设备网关；在设备详情页单击"切换网关"后，进入网关切换页面。选择目标网关后，单击"确认"，完成当前设备的网关切换。
  图4设备信息-切换网关   
  ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002252754129.png "点击放大") 
- 批量修改子设备网关；在设备详情页单击"子设备"，进入子设备管理页面。选择您想要切换网关的子设备后，单击"切换网关"进入选择网关页面，选择目标网关后单击"确定"，完成网关的切换。
  图5子设备-切换网关   
  ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002217754412.png "点击放大") 
- 当您需要将一批设备切换到指定网关时，您可以直接调用[创建批量任务](https://support.huaweicloud.com/api-iothub/iot_06_v5_0045.html)接口，将一批设备批量迁移至指定网关。
  ```
  {
    "app_id": "资源空间id",
    "task_name": "任务名称",
    "task_type": "changeGateway",// 任务类型，此处固定为changeGateway
    "targets":["66bd9bbbfae9e821c15413df_asdasd4"],// 需要迁移的设备的设备id
    "document": {"gateway_id":"6396e6ab78242f16ee80b6f1_wbxtest10824"}// 目标网关的设备id
  }
  ```
  
 
#### 网关如何接入物联网平台？
通过在网关上集成SDK， 设备将数据上报给网关，通过网关转发到华为物联网平台，网关接入物联网平台的开发指南请参见[设备通过网关接入平台](https://support.huaweicloud.com/sdkreference-iothub/iot_02_0178.html)。
 #### 物联网平台上如何添加子设备？
- **方式1** ：当网关接入物联网平台后，调用[创建设备](https://support.huaweicloud.com/api-iothub/iot_06_v5_0046.html)接口，完成子设备接入到物联网平台。

- **方式2** ：访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台，选择您的实例，单击实例卡片进入。选择"设备 \> 所有设备"，在设备列表中，单击具体的网关设备进入到网关的详情页面，进入"子设备"页签，单击"添加子设备"。
  图6设备-添加子设备   
  ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001950378348.png "点击放大") 
 
 #### 查看子设备
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 在左侧导航栏选择"设备 \> 所有设备"页面，在设备列表中，单击具体的网关进入到网关的详情页面，选择"子设备"页签。
3. "子设备"页签呈现通过该网关方式接入到物联网平台的设备，可以查看子设备的状态、设备ID、设备标识码等信息。
4. 在子设备页签中，单击具体的子设备，可以查看子设备的[设备详情](https://support.huaweicloud.com/usermanual-iothub/iot_01_0065.html#ZH-CN_TOPIC_0000001267915337__section1930894118501)。
   
   图7设备-子设备详情   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001950370334.png "点击放大")
   
   
 
