快速入门:使用适用于 IoT 中心设备预配服务的 Python 设备 SDK 创建和预配模拟的 TPM 设备
在本快速入门中,我们在 Windows 计算机上创建一台模拟 IoT 设备。 此模拟设备包含用作硬件安全模块 (HSM) 的 TPM 模拟器。 我们使用设备预配服务 (DPS) 的单个注册,通过设备示例 Python 代码将此模拟设备连接到 IoT 中心。
先决条件
- 熟悉预配概念。
- 完成通过 Azure 门户设置 IoT 中心设备预配服务。
- 具有活动订阅的 Azure 帐户。 试用版订阅。
- Visual Studio 2015+,结合使用通过 C++ 进行的桌面开发。
- CMake 生成系统。
- Git。
重要
本文仅适用于已弃用的 V1 Python SDK。 V2 中尚不提供用于 IoT 中心设备预配服务的设备和服务客户端。 该团队目前正在努力使 V2 具有功能奇偶一致性。
注意
初始的设备孪生状态配置仅在 IoT 中心的标准层中提供。 有关基本和标准 IoT 中心层的详细信息,请参阅如何选择合适的 IoT 中心层。
准备环境
确保你已安装了 Visual Studio 2015 或更高版本,并为你的 Visual Studio 安装启用“使用 C++ 的桌面开发”。
下载并安装 CMake 生成系统。
确保在计算机上安装
git
并将其添加到可供命令窗口访问的环境变量。 请参阅软件自由保护组织提供的 Git 客户端工具,了解要安装的最新版git
工具,其中包括 Git Bash,这是一个命令行应用,可以用来与本地 Git 存储库交互。打开命令提示符或 Git Bash。 为设备模拟代码示例克隆 GitHub 存储库:
git clone --single-branch --branch v1-deprecated https://github.com/Azure/azure-iot-sdk-python.git --recursive
在该 GitHub 存储库的本地副本中创建一个用于 CMake 生成过程的文件夹。
cd azure-iot-sdk-python/c mkdir cmake cd cmake
代码示例使用 Windows TPM 模拟器。 运行以下命令,启用 SAS 令牌身份验证。 该命令还会为模拟设备生成 Visual Studio 解决方案。
cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
在单独的命令提示符处,导航到 TPM 模拟器文件夹,然后运行将要成为模拟设备的 HSM 的 TPM 模拟器。 单击“允许访问”。 该模拟器通过套接字在端口 2321 和 2322 上进行侦听。 请勿关闭此命令窗口;本快速入门指南自始至终都需让该模拟器保持运行状态。
.\azure-iot-sdk-python\c\provisioning_client\deps\utpm\tools\tpm_simulator\Simulator.exe
创建设备注册项
Azure IoT 设备预配服务支持两类注册:
本文演示单个注册。
打开在 cmake 文件夹中生成的名为
azure_iot_sdks.sln
的解决方案,将其内置到 Visual Studio 中。右键单击“tpm_device_provision”项目, 然后选择“设为启动项目”。 运行解决方案。 输出窗口会显示进行设备注册所需的“认可密钥”和“注册 ID” 。 记下这些值。
登录到 Azure 门户,选择左侧菜单上的“所有资源”按钮,打开设备预配服务 。
在“设备预配服务”菜单中,选择“管理注册”。 选择“个人注册”选项卡,然后选择顶部的“添加个人注册”按钮 。
在“添加注册”面板中,输入以下信息:
选择“TPM” 作为标识证明机制。
使用你之前记下的值输入 TPM 设备的“注册 ID”和“认可密钥” 。
选择与预配服务链接的 IoT 中心。
(可选)可以提供以下信息:
- 输入唯一“设备 ID” 。 为设备命名时,请确保避免使用敏感数据。 如果选择不提供此项,则系统将改用注册 ID 来标识设备。
- 使用设备所需的初始配置更新“初始设备孪生状态” 。
完成后,按“保存”按钮。
成功注册以后,设备的“注册 ID”会显示在“单个注册”选项卡下的列表中。
模拟设备
下载并安装 Python 2.x 或 3.x。 请确保根据安装程序的要求,使用 32 位或 64 位安装。 在安装过程中出现提示时,请确保将 Python 添加到特定于平台的环境变量中。
- 如果使用 Windows OS,则请安装 Visual C++ 可再发行组件包,以便使用 Python 中的本机 DLL。
按照这些说明生成 Python 包。
注意
如果运行
build_client.cmd
,请确保使用--use-tpm-simulator
标志。注意
如果使用
pip
,请确保也安装azure-iot-provisioning-device-client
包。 请注意,发布的 PIP 包使用真实的 TPM 而非模拟器。 若要使用模拟器,需使用--use-tpm-simulator
标志从源进行编译。导航到示例文件夹。
cd azure-iot-sdk-python/provisioning_device_client/samples
使用 Python IDE,编辑名为 provisioning_device_client_sample.py 的 Python 脚本。 将 GLOBAL_PROV_URI 和 ID_SCOPE 变量修改为之前记下的值。 此外,请确保 SECURITY_DEVICE_TYPE 设置为
ProvisioningSecurityDeviceType.TPM
GLOBAL_PROV_URI = "{globalServiceEndpoint}" ID_SCOPE = "{idScope}" SECURITY_DEVICE_TYPE = ProvisioningSecurityDeviceType.TPM PROTOCOL = ProvisioningTransportProvider.HTTP
运行该示例。
python provisioning_device_client_sample.py
请注意相关消息,这些消息模拟设备启动后连接到设备预配服务以获取 IoT 中心信息的情况。
将模拟设备成功预配到与预配服务链接的 IoT 中心以后,设备 ID 会显示在该中心的“IoT 设备”边栏选项卡上 。
如果从设备的注册项中的默认值更改了“初始设备孪生状态”,则它会从中心拉取所需的孪生状态,并执行相应的操作。 有关详细信息,请参阅了解并在 IoT 中心内使用设备孪生
清理资源
如果打算继续使用和探索设备客户端示例,请勿清理在本快速入门中创建的资源。 如果不打算继续学习,请按以下步骤删除本快速入门中创建的所有资源。
- 关闭计算机上的设备客户端示例输出窗口。
- 关闭计算机上的 TPM 模拟器窗口。
- 在 Azure 门户的左侧菜单中选择“所有资源”,然后选择设备预配服务。 打开服务的“管理注册”边栏选项卡,然后选择“单个注册”选项卡 。选中在本快速入门中注册的设备的“注册 ID”旁边的复选框,然后按窗格顶部的“删除”按钮。
- 在 Azure 门户的左侧菜单中选择“所有资源”,然后选择 IoT 中心 。 打开中心的“IoT 设备”边栏选项卡,选中在本快速入门中注册的设备的“设备 ID”旁边的复选框,然后按窗格顶部的“删除”按钮。
后续步骤
在本快速入门中,你已在计算机上创建 TPM 模拟设备,并已使用 IoT 中心设备预配服务将其预配到 IoT 中心。 若要了解如何以编程方式注册 TPM 设备,请继续阅读快速入门中关于 TPM 设备的编程注册内容。