准备
在这里,我们讨论该项目的总体目标以及如何为练习准备资源。
项目概述
在本模块中,你首先创建完成本模块所需的 Azure 资源,例如设备预配服务 (DPS) 的实例和 IoT 中心。 接下来在 Azure Cloud Shell 中使用 OpenSSL 生成 X.509 根 CA 证书,并使用该根证书在 DPS 中配置组注册。 然后使用根证书生成两个设备证书,你可以在模拟设备代码中使用这两个证书将设备预配到 IoT 中心。 在设备代码中,请实现对用于执行设备初始配置的设备孪生属性的访问。 然后测试模拟设备。 若要完成本模块,请取消预配整个组注册。
安装
在本模块中,你将创建以下资源:
- Azure IoT 中心
- Azure IoT 中心设备预配服务实例
- 以 C# 编写的两个模拟设备
云资源
若要完成此引导式项目,你需要一个 IoT 中心和一个设备预配服务实例,它们相互链接。 创建这些服务实例可能需要几分钟的时间。
首先单击“激活沙盒”按钮。 沙盒会自动创建会显示在此 Web 页面中的 Azure 资源组。 可使用以下步骤为此项目创建更多资源。 资源组名称在代码步骤中使用它的位置会自动替换。
注意
处于不活动状态 20 分钟后,沙盒 Azure Cloud Shell 会超时。 沙盒仍然可用,Cloud Shell 可以重新激活,但命令行和环境变量会丢失。 IoT 中心和设备预配服务实例功能正常且可用。 请务必按照本页末尾的说明复制这些值,这样你就仍然可以根据需要在后续的 Cloud Shell 命令中引用和输入这些值。
安装适用于 Azure CLI 的 Azure IoT 扩展。
az extension add --name azure-iot
使用随机数创建一个名为“suffix”的变量,用于那些需要是全局独一无二的资源名称。
let suffix=$RANDOM*$RANDOM echo $suffix
在 Azure 沙盒创建的资源组名称中创建 IoT 中心。
az iot hub create --name hub-$suffix --resource-group <rgn>[sandbox resource group name]</rgn> --location westus
在 Azure 沙盒创建的资源组中创建 DPS 实例。
az iot dps create --name dps-$suffix --resource-group <rgn>[sandbox resource group name]</rgn> --location westus
从 IoT 中心获取中心连接字符串,将其提供给 DPS 实例以链接两个资源。
hubConnectionString=$(az iot hub connection-string show --hub-name hub-$suffix --key-type primary --query connectionString -o tsv) echo $hubConnectionString
将 IoT 中心作为链接的中心添加到 DPS 实例。 链接 IoT 中心意味着 DPS 实例可以为该 IoT 中心预配设备。
az iot dps linked-hub create --dps-name dps-$suffix --resource-group <rgn>[sandbox resource group name]</rgn> --connection-string $hubConnectionString
部署完成后,打开文本编辑器工具。 使用文本编辑器存储与 Azure 资源关联的配置值,以防沙盒在 20 分钟后超时。 在文本编辑器中保存以下名称和值,它们可以在后续单元页中使用。
名称 值 资源组名称 在此网页上列出 后缀 存储在 $suffix
中。 例如,$suffix
的值为586732230
。IoT 中心连接字符串 存储在 $hubConnectionString
中IoT 中心名称 hub-$suffix
。 例如hub-586732230
。DPS 名称 dps-$suffix
。 例如dps-586732230
。DPS ID 作用域 从你在步骤 5 中运行的 az iot dps create
命令返回的 JSON 数据中的idScope
值。 例如,idScope
的值为0ne0000000
。
开发资源
若要通过设备预配服务模拟 IoT 设备预配,请在开发计算机上运行两个 C# 应用程序。 在开发计算机上让以下先决条件准备就绪: