# 设备按网络信号情况选网
#### 场景说明
使用全球SIM联接服务的设备接入到物联网平台时，可能会面临网络信号强度弱，信号有时延等问题。当应用服务器接收到设备上报的网络信号强度数据时，您可以通过命令下发的方式切换运营商网络。
#### 整体流程
按需选网整体流程如下图所示。
![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0274019516.png "点击放大")
设备在集成SDK Tiny后，还需要完成切换网络命令转换成AT指令的开发，以完成设备网络的自动切换。
当设备接入到物联网平台时，便可实现数据上报，命令下发。
#### 购买模组和eSIM卡
1. 访问[全球SIM联接服务](https://www.huaweicloud.com/product/globalsimlink.html)，单击"购买eSIM"，购买模组和eSIM卡。
   模组型号选择"移远EC20 CEHDLG" 。
   
2. 登录[全球SIM联接控制台](https://console.huaweicloud.com/gsl/#/app/homePage/deviceList)，订购套餐，您可以选择单卡订购或者批量订购。
   - 单卡订购：选择左侧导航栏的"SIM卡管理"，单击某个SIM卡右侧的"服务管理"，然后选择套餐服务并单击"立即订购"。
   
   - 批量订购：选择左侧导航栏的"SIM卡管理"，导出需要订购套餐的SIM卡，下载批量订购的模板，编辑完批量订购文档后，上传，完成批量套餐订购。
    
 
#### 集成IoT Device SDK Tiny
参考[IoT Device SDK Tiny使用指南](https://support.huaweicloud.com/sdkreference-iothub/iot_02_9980.html)，完成设备侧的开发。
#### 开发切网命令转换成AT指令
设备支持自动切网功能，需要进行设备侧开发。
- 设备收到平台下发的切换网络命令如下：
  ```
  {
      "paras":{
          "iccid":"xxxx"
      },
      "service_id":"MobileConnection",
      "command_name":"SWITCH_NETWORK"
  }
  ```
  注：xxxx为SIM卡标识，其他内容固定不变。
  

- 设备收到命令后，执行切网指令：
  ```
  AT+HWICCIDENABLE=xxxx
  ```
  注：xxxx为SIM卡标识。
  
 
#### 创建产品
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"立即使用"进入设备接入控制台。选择您的实例，单击实例卡片进入。
   
2. 选择左侧导航栏的"产品"，单击左侧的"创建产品"，参考下表填写产品的基本信息。
   
   |                                      **基本信息**                                      ||
   |---|---|
   | 所属资源空间   | 在下拉框选择所属资源空间。                      |
   | 产品名称 | 自定义填写，如SwitchNetwork             |
   | 协议类型  | MQTT                             |
   | 数据格式 | JSON                              |
   | 所属行业   | 在下拉框选择相应的行业。                       |
   | 设备类型     | 使用平台预置的产品模型，会自动关联设备类型，不需要再输入设备类型。 |
      
   3. 进入产品详情，单击"导入库模型"，在标准模型列表中选择"MobileDevice"，单击"确定"。
   
   | MobileDevice模型中MobileConnection服务的属性说明                                                                                                    |||
   |:---|---|---|
   | 属性名称         | 描述                  | 示例内容                |
   | iccid        | SIM卡标识               | 898604421920C0XXXX |
   | imsi          | 国际移动用户识别码           | 460046240XXXXX      |
   | imei         | 国际移动设备识别码            | 86761100XXXXXXXX    |
   | operator   | 移动设备的网络运营商（MCC+MNC） | 46000              |
   | rssi       | 接收的信号强度              | -40                |
   | cellId      | 蜂窝小区ID               | 1106525             |
   | lac         | 位置区码               | 12345                |
   | networkType | 网络类型               | 2G,3G,4G,5G,NB-IoT  |
   | modelType   | 模组型号               | EC20 CEHDLG        |
      
   
 
#### 注册设备
1. 在左侧导航栏，单击" 设备 \> 所有设备"。
2. 单击"注册设备"，按照如下表格填写参数后，单击"确定"，完成设备的注册。
   
   | 参数名称    | 说明                                                                                               |
   |:---|:---|
   | 所属资源空间  | 在下拉框选择所属资源空间，与步骤[3]选择的资源空间保持一致。                          |
   | 所属产品   | 选择步骤[3]中创建的产品。 |
   | 设备标识码    | 即node_id，填写为设备的IMEI、MAC地址或Serial No；若没有真实设备，填写自定义字符串，由英文字母和数字组成。                                 |
   | 设备名称    | 自定义。                                                                        |
   | 设备认证类型 | 选择"密钥"。                                                                     |
   | 密钥      | 设备密钥，可自定义，不填写物联网平台会自动生成。                                                  |
      
   
 
#### 设备接入平台
方法一:
您可以使用MQTT.fx模拟设备接入平台。操作方法请参考 [在线开发MQTT协议的模拟智慧路灯](https://support.huaweicloud.com/bestpractice-iothub/iot_bp_00016.html)。
方法二：
您可以使用配置设备接入服务时注册的真实设备接入平台。
#### 属性上报
本文使用MQTT.fx模拟设备上报网络信号强度等数据。
1. 选择Publish页签，输入设备属性上报的topic"$oc/devices/{device_id}/sys/properties/report"，其中{device_id}与注册设备时获取的设备ID保持一致，您可以使用真实设备上报属性。在下方填写上报的属性，单击Publish按钮。具体可参考[设备属性上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html)。
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0273268067.png "点击放大")
   
2. 在控制台"设备列表"中找到该设备，单击"查看"，进入设备详情页。在设备详情页看到最新上报的数据。您也可以调用API查看最新上报数据，详细请参考[查询设备影子数据](https://support.huaweicloud.com/api-iothub/iot_06_v5_0079.html)。
   图1查看上报数据-MobileConnection   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001986185265.png "点击放大") 
 
#### 下发切换网络的命令
本文使用MQTT.fx模拟设备接收命令。
1. 在MQTT.fx，选择Subscribe页签，输入订阅命令的topic "$oc/devices/{device_id}/sys/commands/#"，单击"Subscribe"。更多命令下发格式请参考[命令topic订阅](https://support.huaweicloud.com/api-iothub/iot_06_v5_3014.html)。（您可以使用真实设备订阅topic）
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0273270654.png "点击放大")
   
2. 在控制台设备详情页，进入"云端下发"页签，选择"命令下发"，单击"下发同步命令"。 您也可以调用API下发命令，详细请参考[同步命令下发](https://support.huaweicloud.com/api-iothub/iot_06_v5_0038.html)。
   图2命令下发-MQTT   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001981577861.png "点击放大") 
3. 在MQTT.fx的Subscribe页，接收到平台下发的命令。
   图3接收平台下发命令   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001993078625.png "点击放大") 
4. 使用串口工具发送AT指令完成网络切换。
   1. 安装USB驱动：
      1. 运行exe文件，根据界面提示进行安装。
         ![](https://support.huaweicloud.com/bestpractice-iothub/public_sys-resources/note_3.0-zh-cn.png)
         不同厂家匹配的USB驱动版本不同，请联系厂家获取符合要求的驱动程序。
         
      
      2. 驱动安装成功后，连接开发板的USB接口到PC，并打开电源，可在设备管理器中查看到枚举出的串口设备。
         ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0274080825.png "点击放大")
         
       
   
   2. 使用串口工具切换网络。
      1. 运行exe文件，根据界面提示进行安装。
         ![](https://support.huaweicloud.com/bestpractice-iothub/public_sys-resources/note_3.0-zh-cn.png)
         不同厂家匹配的串口工具版本不同，请联系厂家获取符合要求的串口工具。
         
      
      2. 打开串口工具，选择步骤[2]枚举的AT串口，波特率设置为115200，单击"Open Port"。
         ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0274080826.png "点击放大")
         注：请确保设置正确，否则AT命令不能够被解析或者解析出错。
         
      
      3. 输入"AT+HWICCIDENABLE"完成网络切换。切换成功后，您可以前往全球SIM联接服务控制台 "SIM卡管理"，单击"服务详情"查看正在使用中的套餐。 ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0274125305.png "点击放大")
         
       
    
 
