# 通过设备发放实现批量设备自动注册
#### 场景说明
当前物联网平台基于安全考虑，需要将设备的基本信息（例如设备ID、鉴权信息）注册到平台后，设备才能连接上平台。当用户的设备数不断增多时，如何安全且快速地注册设备尤为关键，需要采用安全的批量注册的场景。本文基于设备发放注册组功能，使用证书策略，带您快速体验设备批量自注册场景，并成功发放到指定的设备接入区域（本文以"华南-广州-友好用户环境"为例）。
#### 整体流程
图1整体流程图   
![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001426562620.png "点击放大")
如上图所示，用户可以在设备发放里设置证书策略，不同的证书策略可以将设备发放到不同的设备接入服务实例中，当设备携带了对应证书并成功接入到设备发放时，可以主动发起发放引导流程，从而将该设备按照证书的策略发放到对应的设备接入实例。
#### 详细业务流程
图2业务流程图   
![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001425964194.png "点击放大")
如上图所示，用户需要按照上图的设备发放步骤操作，然后才能通过证书策略发放到对应设备接入实例，当前样例代码已将全流程自动化，用户可以参考后续的步骤来完成批量自注册流程。
#### 前提条件
1. 已开通[IoTDA的"华南-广州-友好用户环境"](https://console.huaweicloud.com/iotdm/#/dm-portal/home)。
2. 进入"华南-广州-友好用户环境"控制台，选择左侧导航栏"设备发放"服务，开通设备发放服务。
   图3华南-广州-华南友好环境控制台   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001830451681.png "点击放大")
   图4授权开通   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001783692352.png "点击放大")
   图5授权成功   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001783852028.png "点击放大") 
3. 安装IntelliJ IDEA。
   1. 访问[IntelliJ IDEA官网](https://www.jetbrains.com/idea/)，选择合适系统的版本下载。（本文以windows 64-bit系统IntelliJ IDEA 2019.2.3 Ultimate为例）。
      图6IntelliJ IDEA官网   
      ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001491232185.png "点击放大") 
   
   2. 下载完成后，运行安装文件，根据界面提示安装。
    
4. 安装Maven软件，通过 Maven 安装项目依赖是使用 Java SDK 的推荐方法，首先您需要[下载](https://maven.apache.org/download.cgi)并[安装 Maven](https://maven.apache.org/install.html) ，安装完成后您只需在 Java 项目的 pom.xml 文件加入相应的依赖项即可。
 
#### 导入批量自注册样例代码
1. 下载[Java批量自注册样例代码](https://obs-pipeline.obs.cn-north-4.myhuaweicloud.com/sdkDeploy/iot-device-sdk-java-addE2ETest.zip)。
2. 解压后选择样例代码主目录下的pom.xml文件，并用IDEA开发者工具打开后，可以看到工程目录如下。 
   图7工程目录   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001425586400.png "点击放大")
   
   
3. 修改AKSK.properties中的ak/sk参数，scopeId参数，accesspointid参数 
   ![](https://support.huaweicloud.com/bestpractice-iothub/public_sys-resources/note_3.0-zh-cn.png)
   1. 用户可以在[此处](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)获取ak/sk。
   
   2. scopeId可以在[此处](https://console.huaweicloud.com/iot/#/iotdmp/provisioning/group)获取。
      图8获取注册组scopeId   
      ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001834758325.png "点击放大") 
   
   3. accesspointid可以在[IoTDA的"华南-广州-友好用户环境"](https://console.huaweicloud.com/iotdm/#/dm-portal/home)的总览界面获取到。
      图9accesspointid获取   
      ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001787866718.png "点击放大") 
    
   
   
4. 上述步骤替换后，代码导入和修改完毕。
 
#### 权限配置
1. 单击设备接入[控制台页面](https://console.huaweicloud.com/iotdm/#/dm-portal/home)右上角的账号，选择"统一身份验证"。
   
   图10统一身份认证   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001834747249.png "点击放大")
   
   
2. 进入统一身份认证服务页面后，单击左侧"委托"，然后在右上角的输入框中输入"iotps"，如下图再单击委托名称右侧的"授权"。 
   图11创建委托授权   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001788028618.png "点击放大")
   
   
3. 进入授权页面后，在右上角的输入框中"iotda"，然后选择"IoTDA FullAccess"，再单击"下一步"。 
   图12选择策略   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001787870114.png "点击放大")
   
   
4. 跳转到如下页面后，直接单击右下角的"确定"即可。 
   图13设置最小授权范围   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001834669965.png "点击放大")
   
   
 
#### 开始批量自注册引导
上述内容修改完后，可以运行iot-device-e2e-demo下的 BootstrapCertAuthRegisterGroup.java类，右键单击运行后，SDK会自动开始批量自注册过程。当前默认自注册大约1000设备，大约10TPS。
由于MQTT连接会占用较多内存，建议适当调大 JVM 最大堆内存。
1. 单击IDEA菜单栏上方的"RUN \> Edit Configurations"。 ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001479052105.png "点击放大")
   
2. 单击"Modify options \> Add VM options"。 ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001478932397.png "点击放大")
   
3. 如下图输入"-Xmx4096m"。 ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001479172857.png "点击放大")
   
4. 运行程序，如下图所示。
   图14批量自注册   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001425904872.png "点击放大") 
 
#### 结果验证
1. 在自动开始批量自注册之后，用户可以在IDEA的控制台看到自注册的日志。
   图15自注册日志   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001425587552.png "点击放大") 
2. 用户可以在[设备接入控制台](https://console.huaweicloud.com/iotdm/#/dm-portal/home)看到已发放的设备数目。
   图16查看已发放的设备数目列表   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001787872470.png "点击放大") 
3. 用户可以通过右上角的"所有状态"来过滤"在线"的设备，可以看到在线设备数一直在增长。
   图17设备在线状态   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001834752381.png "点击放大") 
4. 用户可以回到[设备发放控制台](https://console.huaweicloud.com/iot/#/iotdmp/provisioning/strategy)，看到SDK默认创建好的证书策略。
   图18设备发放证书策略   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001834674925.png "点击放大") 
5. 用户可以看到SDK默认创建的注册组。
   图19注册组列表   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001787878538.png "点击放大") 
6. 单击上图中的"注册组"名称，可以看到注册组里设备发放状态。
   图20设备发放状态   
   ![](https://support.huaweicloud.com/bestpractice-iothub/figure/zh-cn_image_0000001834758813.png "点击放大") 
 
