快速入门:预配模拟对称密钥设备

在本快速入门中,你将在 Windows 计算机上创建一台模拟设备。 该模拟设备将配置为使用对称密钥证明机制进行身份验证。 配置设备后,你将随后使用 Azure IoT 中心设备预配服务将其预配到 IoT 中心。

如果你不熟悉预配过程,请查看预配概述。

本快速入门将演示适用于基于 Windows 工作站的解决方案。 但是,也可以在 Linux 上执行这些过程。 有关 Linux 示例,请参阅教程:预配地理延迟

先决条件

  • 在基于 Windows 的计算机上安装 .NET SDK 6.0 或更高版本。 可使用以下命令来检查你的版本。

    dotnet --info
    
  • 在基于 Windows 的计算机上安装 Python 3.7 或更高版本。 可以通过运行 python --version 来检查 Python 版本。

准备开发环境

在本部分,你将准备用于生成 Azure IoT C SDK 的开发环境。 示例代码尝试在执行设备的启动序列期间预配设备。

  1. 下载最新的 CMake 生成系统

    重要

    在开始 CMake 安装之前,请确认在计算机上安装 Visual Studio 必备组件(Visual Studio 和“使用 C++ 的桌面开发”工作负载)。 满足先决条件并验证下载内容后,安装 CMake 生成系统。 另请注意旧版本的 CMake 生成系统无法生成本文中使用的解决方案文件。 请确保使用最新版本的 CMake。

  2. 打开 Web 浏览器,转到 Azure IoT C SDK 发布页

  3. 选择页面顶部的“标记”选项卡。

  4. 复制最新版 Azure IoT C SDK 的标记名称。

  5. 打开命令提示符或 Git Bash shell。 运行以下命令,以克隆最新版本的适用于 C 的 Azure IoT 设备 SDK GitHub 存储库。 请将 <release-tag> 替换为在上一步骤中复制的标记,例如:lts_01_2023

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    此操作可能需要几分钟才能完成。

  6. 操作完成后,从 azure-iot-sdk-c 目录中运行以下命令:

    mkdir cmake
    cd cmake
    
  7. 代码示例使用对称密钥来提供证明。 运行以下命令,生成特定于你的开发客户端平台(包括设备预配客户端)的 SDK 版本:

    cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    

    提示

    如果 cmake 找不到 C++ 编译器,则可能会在运行以上命令时出现生成错误。 如果出现这种情况,请尝试在 Visual Studio 命令提示符窗口中运行该命令。

  8. 生成成功完成后,最后的几个输出行类似于以下输出:

    $ cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    -- Building for: Visual Studio 16 2019
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19042.
    -- The C compiler identification is MSVC 19.29.30040.0
    -- The CXX compiler identification is MSVC 19.29.30040.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: E:/IoT Testing/azure-iot-sdk-c/cmake
    
  1. 打开 Git CMD 或 Git Bash 命令行环境。

  2. 使用以下命令克隆适用于 C# 的 Azure IoT SDK GitHub 存储库:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. 打开 Git CMD 或 Git Bash 命令行环境。

  2. 使用以下命令克隆适用于 Node.js 的 Azure IoT SDK GitHub 存储库:

    git clone https://github.com/Azure/azure-iot-sdk-node.git --recursive
    
  1. 打开 Git CMD 或 Git Bash 命令行环境。

  2. 使用以下命令克隆适用于 Python 的 Azure IoT SDK GitHub 存储库:

    git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
    

    注意

    本教程中使用的示例位于 azure-iot-sdk-python 存储库的 v2 分支中。 Python SDK 的 V3 可用于 beta 版。

  1. 打开 Git CMD 或 Git Bash 命令行环境。

  2. 使用以下命令克隆适用于 Java 的 Azure IoT SDK GitHub 存储库:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. 转到 azure-iot-sdk-java 根目录,并生成项目以下载全部所需的包。 此步骤可能需要几分钟才能完成。

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

创建设备注册

Azure IoT 设备预配服务支持两类注册:

本文演示要使用 IoT 中心预配的单个设备的单个注册过程。

  1. 登录到 Azure 门户,并导航到设备预配服务实例。

  2. 从导航菜单的“设置”部分选择“管理注册”。

  3. 选择“单个注册”选项卡,然后选择“添加单个注册”。

    显示“添加单个注册”选项的屏幕截图。

  4. 在“添加注册”页的“注册 + 预配”上,提供以下信息以配置注册详细信息:

    字段 说明
    证明 选择“对称密钥”作为证明类型
    对称密钥设置 如果要使用随机生成的密钥,请选中“自动生成对称密钥”复选框。 如果要提供自己的密钥,请取消选中此框。
    注册 ID 提供设备的唯一注册 ID。
    预配状态 如果希望此注册用于预配其设备,请选中“启用此注册”复选框。 如果希望禁用该注册,请取消选中此框。 稍后可以更改此设置。
    重新预配策略 选择一个重新预配策略,反映希望 DPS 如何处理请求重新预配的设备。 有关详细信息,请参阅重新预配策略
  5. 选择“下一步:IoT 中心”。

  6. 在“添加注册”页的“IoT 中心”选项卡上,提供以下信息以确定注册可以预配设备的目标 IoT 中心:

    字段 说明
    目标 IoT 中心 选择一个或多个链接的 IoT 中心,或向 IoT 中心添加新链接。 若要详细了解如何将 IoT 中心链接到 DPS 实例,请参阅如何链接和管理 IoT 中心
    分配策略 如果选择了多个已链接的 IoT 中心,请选择要将设备分配到不同中心的方式。 如需详细了解分配策略,请参阅如何使用分配策略

    如果仅选择了一个已链接的 IoT 中心,建议使用均匀加权分发策略。
  7. 选择“下一步:设备设置

  8. 在“添加注册”页的“设备设置”选项卡上,提供以下信息以定义新预配设备的配置方式:

    字段 说明
    设备 ID 提供将分配给 IoT 中心中预配设备的设备 ID。 如果未提供设备 ID,将使用该注册 ID。
    IoT Edge 如果预配的设备将运行 Azure IoT Edge,请选中在预配设备上启用 IoT Edge。 如果此注册适用于未启用 IoT Edge的设备,请取消选中此框。
    设备标记 使用此文本框可提供要应用于预配设备的设备孪生的任何标记。
    所需属性 使用此文本框可提供要应用于预配设备的设备孪生的任何所需属性。

    有关详细信息,请参阅了解并在 IoT 中心内使用设备孪生

  9. 在完成时选择“下一步:查看 + 创建”。

  10. 在“审阅 + 创建”选项卡上,验证你的全部值,然后选择“创建”。

创建单个注册后,会生成主密钥次密钥,并会将它们添加到注册条目。 本快速入门中稍后的设备示例中会用到主密钥。

  1. 若要查看模拟对称密钥设备注册,请选择“单个注册”选项卡。

  2. 从单个注册列表中选择设备的注册 ID。

  3. 复制生成的“主密钥”的值。

    显示注册详细信息的屏幕截图,其中突出显示了设备注册主键的“复制”按钮

准备和运行设备预配代码

在本部分,你将更新向设备预配服务实例发送设备启动序列的设备示例代码。 此启动序列使得设备可被识别、完成身份验证并分配到与设备预配服务实例链接的 IoT 中心。

示例预配代码按顺序完成以下任务:

  1. 使用以下三个参数通过设备预配资源对你的设备进行身份验证:

    • 设备预配服务的 ID 范围
    • 设备注册的注册 ID。
    • 设备注册的主对称密钥。
  2. 将设备分配到已与设备预配服务实例链接的 IoT 中心。

若要使用设备信息更新并运行预配示例,请执行以下操作:

  1. 在设备预配服务的主菜单中,选择“概述”。

  2. 复制“ID 范围”值。

    显示设备预配服务实例概述的屏幕截图,其中突出显示了实例的 ID 范围值。

  3. 在 Visual Studio 中,打开通过运行 CMake 生成的 azure_iot_sdks.sln 解决方案文件。 解决方案文件应位于以下位置:

    
    \azure-iot-sdk-c\cmake\azure_iot_sdks.sln
    
    

    提示

    如果该文件不是在 cmake 目录中生成的,请确保使用的是最新版本的 CMake 生成系统。

  4. 在 Visual Studio 的“解决方案资源管理器”窗口中,转到“Provision_Samples”文件夹。 展开名为“prov_dev_client_sample”的示例项目。 展开“源文件”,打开“prov_dev_client_sample.c”。

  5. 找到 id_scope 常量,将值替换为在步骤 2 中复制的“ID 范围”值。

    static const char* id_scope = "0ne00002193";
    
  6. 在同一文件中找到 main() 函数的定义。 确保将变量 hsm_type 设置为 SECURE_DEVICE_TYPE_SYMMETRIC_KEY,如以下示例所示:

    SECURE_DEVICE_TYPE hsm_type;
    //hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. 在“prov_dev_client_sample.c”中,找到已注释掉的对 prov_dev_set_symmetric_key_info() 的调用。

    // Set the symmetric key if using they auth type
    //prov_dev_set_symmetric_key_info("<symm_registration_id>", "<symmetric_Key>");
    

    将函数调用取消注释,并将占位符值(包括尖括号)替换为前面复制的设备注册 ID 和主密钥值。

    // Set the symmetric key if using they auth type
    prov_dev_set_symmetric_key_info("symm-key-device-007", "your primary key here");
    
  8. 保存文件。

  9. 右键单击“prov_dev_client_sample”项目,然后选择“设为启动项目”。

  10. 在 Visual Studio 菜单中,选择“调试”>“开始执行(不调试)”以运行该解决方案。 在重新生成项目提示中,选择“是”,以便在运行项目之前重新生成项目。

    以下输出是设备成功连接到要分配到 IoT 中心的预配服务实例的示例:

    Provisioning API Version: 1.2.8
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service:
    test-docs-hub.azure-devices.cn, deviceId: device-007
    Press enter key to exit:
    

示例预配代码完成以下任务:

  1. 使用以下三个参数通过设备预配资源对你的设备进行身份验证:

    • 设备预配服务的 ID 范围
    • 设备注册的注册 ID。
    • 设备注册的主对称密钥。
  2. 将设备分配到已与设备预配服务实例链接的 IoT 中心。

  3. 将测试遥测消息发送到 IoT 中心。

若要使用设备信息更新并运行预配示例,请执行以下操作:

  1. 在设备预配服务的主菜单中,选择“概述”。

  2. 复制“ID 范围”值。

    显示设备预配服务实例概述的屏幕截图,其中突出显示了实例的 ID 范围值。

  3. 打开命令提示符,转到克隆的 sdk 存储库中的“SymmetricKeySample”:

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample\'
    
  4. 在 SymmetricKeySample 文件夹中,在文本编辑器中打开 Parameters.cs 。 此文件显示了该示例的可用参数。 运行示例时,本文中仅使用前三个必需的参数。 查看此文件中的代码。 无需任何更改。

    参数 必需 说明
    --i--IdScope 正确 DPS 实例的 ID 范围
    --r--RegistrationId 正确 注册 ID 是一个不区分大小写的字符串(最大长度为 128 个字符),包含字母数字字符和以下特殊字符:'-''.''_'':'。 最后一个字符必须是字母数字或短划线 ('-')。
    --p--PrimaryKey 正确 单个注册的主密钥或组注册的派生设备密钥。 有关如何生成派生密钥,请参阅 ComputeDerivedSymmetricKeySample
    --g--GlobalDeviceEndpoint 错误 设备要连接到的全局终结点。 默认为 global.azure-devices-provisioning.net
    --t--TransportType 错误 用于与设备预配实例通信的传输。 默认为 Mqtt。 可能的值包括 MqttMqtt_WebSocket_OnlyMqtt_Tcp_OnlyAmqpAmqp_WebSocket_OnlyAmqp_Tcp_onlyHttp1
  5. 在 SymmetricKeySample 文件夹中,在文本编辑器中打开 ProvisioningDeviceClientSample.cs 。 此文件显示如何将 SecurityProviderSymmetricKey 类和 ProvisioningDeviceClient 类结合使用来预配模拟对称密钥设备。 查看此文件中的代码。 无需任何更改。

  6. 使用以下命令生成并运行示例代码:

    • <id-scope> 替换为在步骤 2 中复制的“ID 范围”。
    • <registration-id> 替换为注册设备时提供的注册 ID
    • <primarykey> 替换为在设备注册过程中复制的“主密钥”。
    dotnet run --i <id-scope> --r <registration-id> --p <primarykey>
    
  7. 现在应会看到类似于以下输出的内容。 “TestMessage”字符串已作为测试消息发送到中心。

    D:\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample>dotnet run --i 0ne00000A0A --r symm-key-csharp-device-01 --p sbDDeEzRuEuGKag+kQKV+T1QGakRtHpsERLP0yPjwR93TrpEgEh/Y07CXstfha6dhIPWvdD1nRxK5T0KGKA+nQ==
    
    Initializing the device provisioning client...
    Initialized for registration Id symm-key-csharp-device-01.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device csharp-device-01 registered to ExampleIoTHub.azure-devices.cn.
    Creating symmetric key authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    Enter any key to exit.
    

示例预配代码按顺序完成以下任务:

  1. 使用以下四个参数通过设备预配资源对你的设备进行身份验证:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. 将设备分配到已与设备预配服务实例链接的 IoT 中心。

  3. 将测试遥测消息发送到 IoT 中心。

若要使用设备信息更新并运行预配示例,请执行以下操作:

  1. 在设备预配服务的主菜单中,选择“概述”。

  2. 复制“ID 范围”和“全局设备终结点”值。

    显示设备预配服务实例概述的屏幕截图,其中突出显示了实例的全局设备终结点和 ID 范围值。

  3. 打开命令提示符以执行 Node.js 命令,然后转到以下目录:

    cd azure-iot-sdk-node/provisioning/device/samples
    
  4. 在“provisioning/device/samples”文件夹中打开“register_symkey.js”并查看代码 。 请注意,示例代码设置了一个自定义有效负载:

    provisioningClient.setProvisioningPayload({a: 'b'});
    

    可以注释禁止此代码,因为本快速入门不需要它。 如果要使用自定义分配函数将设备分配到 IoT 中心,则需要自定义有效负载。 有关详细信息,请参阅教程:使用自定义分配策略

    使用 provisioningClient.register() 方法尝试注册设备。

    不需要进行其他更改。

  5. 在命令提示符中,运行以下命令以设置示例使用的环境变量:

    • <provisioning-global-endpoint> 替换为在步骤 2 中复制的“全局设备终结点”。
    • <id-scope> 替换为在步骤 2 中复制的“ID 范围”。
    • <registration-id> 替换为注册设备时提供的注册 ID
    • <primarykey> 替换为在设备注册过程中复制的“主密钥”。
    set PROVISIONING_HOST=<provisioning-global-endpoint>
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<primarykey>
    
  6. 使用以下命令生成并运行示例代码:

     npm install
    
    node register_symkey.js
    
  7. 现在应会看到类似于以下输出的内容。 “Hello World”字符串已作为测试消息发送到此中心。

    D:\azure-iot-samples-csharp\provisioning\device\samples>node register_symkey.js
    registration succeeded
    assigned hub=ExampleIoTHub.azure-devices.cn
    deviceId=nodejs-device-01
    payload=undefined
    Client connected
    send status: MessageEnqueued
    

示例预配代码按顺序完成以下任务:

  1. 使用以下四个参数通过设备预配资源对你的设备进行身份验证:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. 将设备分配到已与设备预配服务实例链接的 IoT 中心。

  3. 将测试遥测消息发送到 IoT 中心。

若要使用设备信息更新并运行预配示例,请执行以下操作:

  1. 在设备预配服务的主菜单中,选择“概述”。

  2. 复制“ID 范围”和“全局设备终结点”值。

    显示设备预配服务实例概述的屏幕截图,其中突出显示了实例的全局设备终结点和 ID 范围值。

  3. 打开命令提示符,然后转到 provision_symmetric_key.py 示例文件所在的目录。

    cd azure-iot-sdk-python\samples\async-hub-scenarios
    
  4. 在命令提示符中,运行以下命令以设置示例使用的环境变量:

    • <provisioning-global-endpoint> 替换为在步骤 2 中复制的“全局设备终结点”。
    • <id-scope> 替换为在步骤 2 中复制的“ID 范围”。
    • <registration-id> 替换为注册设备时提供的注册 ID
    • <primarykey> 替换为在设备注册过程中复制的“主密钥”。
    set PROVISIONING_HOST=<provisioning-global-endpoint>
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<primarykey>
    
  5. 通过运行以下命令来安装 azure-iot-device 库。

    pip install azure-iot-device
    
  6. 运行 provision_symmetric_key.py 中的 Python 示例代码。

    python provision_symmetric_key.py
    
  7. 现在应会看到类似于以下输出的内容。 一些示例风速遥测消息也已作为测试发送到中心。

    D:\azure-iot-sdk-python\samples\async-hub-scenarios>python provision_symmetric_key.py
    RegistrationStage(RequestAndResponseOperation): Op will transition into polling after interval 2. Setting timer.
    The complete registration result is
    python-device-008
    docs-test-iot-hub.azure-devices.cn
    initialAssignment
    null
    Will send telemetry from the provisioned device
    sending message #8
    sending message #9
    sending message #3
    sending message #10
    sending message #4
    sending message #2
    sending message #6
    sending message #7
    sending message #1
    sending message #5
    done sending message #8
    done sending message #9
    done sending message #3
    done sending message #10
    done sending message #4
    done sending message #2
    done sending message #6
    done sending message #7
    done sending message #1
    done sending message #5
    

示例预配代码按顺序完成以下任务:

  1. 使用以下四个参数通过设备预配资源对你的设备进行身份验证:

    • GLOBAL_ENDPOINT
    • SCOPE_ID
    • REGISTRATION_ID
    • SYMMETRIC_KEY
  2. 将设备分配到已与设备预配服务实例链接的 IoT 中心。

  3. 将测试遥测消息发送到 IoT 中心。

若要使用设备信息更新并运行预配示例,请执行以下操作:

  1. 在设备预配服务的主菜单中,选择“概述”。

  2. 复制“ID 范围”和“全局设备终结点”值。 这些值分别是 SCOPE_IDGLOBAL_ENDPOINT 参数。

    显示设备预配服务实例概述的屏幕截图,其中突出显示了实例的全局设备终结点和 ID 范围值。

  3. 打开 Java 设备示例代码进行编辑。 设备示例代码的完整路径为:

    azure-iot-sdk-java/provisioning/provisioning-device-client-samples/provisioning-symmetrickey-individual-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningSymmetricKeyIndividualEnrollmentSample.java

  4. 为 DPS 和设备注册设置以下变量的值:

    • <id-scope> 替换为在步骤 2 中复制的“ID 范围”。
    • <provisioning-global-endpoint> 替换为在步骤 2 中复制的“全局设备终结点”。
    • <registration-id> 替换为注册设备时提供的注册 ID
    • <primarykey> 替换为在设备注册过程中复制的“主密钥”。
    private static final String SCOPE_ID = "<id-scope>";
    private static final String GLOBAL_ENDPOINT = "<provisioning-global-endpoint>";
    private static final String SYMMETRIC_KEY = "<primarykey>";
    private static final String REGISTRATION_ID = "<registration-id>";
    
  5. 打开命令提示符进行生成。 转到 Java SDK 存储库的预配示例项目文件夹。

    cd azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-symmetrickey-individual-sample
    
  6. 生成示例。

    mvn clean install
    
  7. 转到 target 文件夹,并执行已创建的 .jar 文件。 在 java 命令中,将 {version} 占位符替换为计算机上 .jar 文件名中的版本。

    cd target
    java -jar ./provisioning-symmetrickey-individual-sample-{version}-with-deps.jar
    
  8. 现在应会看到类似于以下输出的内容。

    Starting...
    Beginning setup.
    Initialized a ProvisioningDeviceClient instance using SDK version 1.11.0
    Starting provisioning thread...
    Waiting for Provisioning Service to register
    Opening the connection to device provisioning service...
    Connection to device provisioning service opened successfully, sending initial device registration message
    Authenticating with device provisioning service using symmetric key
    Waiting for device provisioning service to provision this device...
    Current provisioning status: ASSIGNING
    Device provisioning service assigned the device successfully
    IotHUb Uri : <Your IoT hub name>.azure-devices.cn
    Device ID : java-device-007
    Sending message from device to IoT Hub...
    Press any key to exit...
    Message received! Response status: OK_EMPTY
    

确认设备预配注册

  1. 转到 Azure 门户

  2. 在门户页面的左侧菜单中,选择“所有资源”。

  3. 选择设备分配到的 IoT 中心。

  4. 在“设备管理”菜单中选择“设备”。

  5. 如果设备已成功预配,则设备 ID 应显示在列表中,并且其状态设为“已启用”。 如果看不到设备,请选择页面顶部的“刷新”。

    显示设备已注册到 IoT 中心且已为 C 示例启用的屏幕截图。

    显示已向 IoT 中心注册且已为 C# 示例启用设备的屏幕截图。

    显示设备已注册到 IoT 中心且已为 Node.js 示例启用的屏幕截图。

    显示已向 IoT 中心注册且已为 Python 示例启用设备的屏幕截图。

    显示已向 IoT 中心注册且已为 Java 示例启用设备的屏幕截图。

注意

如果从设备的注册项中的默认值更改了“初始设备孪生状态”,则它会从中心拉取所需的孪生状态,并执行相应的操作。 有关详细信息,请参阅了解并在 IoT 中心内使用设备孪生

清理资源

如果你打算继续使用和探索设备客户端示例,请不要清理在本快速入门中创建的资源。 如果你不打算继续学习,请按以下步骤删除本快速入门中创建的所有资源。

删除设备注册

  1. 关闭计算机上的设备客户端示例输出窗口。

  2. 在 Azure 门户的左侧菜单中,选择“所有资源”。

  3. 选择你的设备预配服务。

  4. 在“设置”菜单中,选择“管理注册” 。

  5. 选择“单个注册”选项卡。

  6. 选中在本快速入门中注册的设备的“注册 ID”旁边的复选框。

  7. 在页面顶部,选择“删除”。

从 IoT 中心删除设备注册

  1. 在 Azure 门户的左侧菜单中,选择“所有资源”。

  2. 选择 IoT 中心。

  3. 在“资源管理器”菜单中选择“IoT 设备” 。

  4. 选中在本快速入门中注册的设备的“设备 ID”旁边的复选框。

  5. 在页面顶部,选择“删除”。

后续步骤

在本快速入门中,你使用单个注册将单个设备预配到了 IoT 中心。 接下来了解如何跨多个中心预配多个设备。