快速入门:将第一个 IoT Edge 模块部署到 Windows 设备(预览版)

适用于:“是”图标 IoT Edge 1.1

在本快速入门中通过将容器化代码部署到 Linux on Windows IoT Edge 设备来试用 Azure IoT Edge。 IoT Edge 允许你远程管理设备上的代码,这样你就可以将更多工作负荷发送到 Edge。 对于本快速入门,我们建议你使用自己的设备,看看使用 Azure IoT Edge for Linux on Windows 有多么简单。

在本快速入门中,你将学习如何:

  • 创建 IoT 中心。
  • 将 IoT Edge 设备注册到 IoT 中心。
  • 在设备上安装并运行 IoT Edge for Linux on Windows 运行时。
  • 以远程方式将模块部署到 IoT Edge 设备并发送遥测数据。

此图显示本设备和云快速入门体系结构。

本快速入门将逐步介绍如何设置 Azure IoT Edge for Linux on Windows 设备。 然后,将模块从 Azure 门户部署到设备。 你将使用的模块为模拟传感器,可以生成温度、湿度和压强数据。 其他 Azure IoT Edge 教程均以本教程中通过部署模块(这些模块通过分析模拟数据来获得业务见解)执行的操作为基础。

如果没有有效的 Azure 订阅,请在开始之前创建试用版

备注

IoT Edge for Linux on Windows 现提供公共预览版

先决条件

为 Azure CLI 准备环境。

  • 如果需要,请安装 Azure CLI 来运行 CLI 参考命令。

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅登录 Azure CLI

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

创建云资源组,用于管理在本快速入门中使用的所有资源。

az group create --name IoTEdgeResources --location chinaeast

请确保 IoT Edge 设备满足以下要求:

  • 版本

    • Windows 10 版本 1809 或更高版本;内部版本 17763 或更高版本
      • Professional、Enterprise、IoT Enterprise
    • Windows Server 2019 内部版本 17763 或更高版本
  • 硬件要求

    • 最小可用内存:1 GB
    • 最小可用磁盘空间:10 GB

备注

此快速入门使用 Windows Admin Center 创建 IoT Edge for Linux on Windows 部署。 你也可以使用 PowerShell。 如果希望使用 PowerShell 来创建部署,请按照在 Windows 设备上安装和预配 Azure IoT Edge for Linux 操作指南中的步骤进行操作。

创建 IoT 中心

首先,使用 Azure CLI 创建 IoT 中心。

此图显示创建 IoT 中心的步骤。

免费级 Azure IoT 中心适用于此快速入门。 如果曾经用过 IoT 中心并且创建了一个中心,则可使用该 IoT 中心。

以下代码将在资源组 IoTEdgeResources 中创建免费的 F1 中心。 将 {hub_name} 替换为 IoT 中心的唯一名称。 创建 IoT 中心可能需要数分钟的时间。

az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2

如果由于订阅中已经有一个免费的中心而出现错误,请将 SKU 更改为 S1。 如果出现一条错误,指示 IoT 中心名称不可用,则表明他人已使用具有该名称的中心。 请尝试一个新名称。

注册 IoT Edge 设备

使用新创建的 IoT 中心注册 IoT Edge 设备。

此图显示使用 IoT 中心标识注册设备的步骤。

为模拟设备创建设备标识,以便它可以与 IoT 中心通信。 设备标识存在于云中,而将物理设备关联到设备标识时,则使用唯一的设备连接字符串。

IoT Edge 设备的行为和管理方式与典型的 IoT 设备不同。 使用 --edge-enabled 标志声明该标识用于 IoT Edge 设备。

  1. 在 Azure CLI 中输入以下命令,以便在中心创建名为“myEdgeDevice”的设备。

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name {hub_name}
    

    如果出现有关 iothubowner 策略密钥的错误,请确保 Azure CLI 运行最新版的 azure-cli-iot-ext 扩展。

  2. 查看设备的连接字符串,该字符串将物理设备与其在 IoT 中心的标识链接在一起。 它包含 IoT 中心名称、设备名称,以及用于对这两者之间的连接进行身份验证的共享密钥。

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
    
  3. 复制 JSON 输出中 connectionString 键的值并保存。 该值为设备连接字符串。 可使用此值在下一部分中配置 IoT Edge 运行时。

    从 CLI 输出中检索连接字符串

安装和启动 IoT Edge 运行时

在设备上安装 IoT Edge for Linux on Windows,并使用设备连接字符串对其进行配置。

此图显示启动 IoT Edge 运行时的步骤。

  1. 下载 Windows Admin Center

  2. 按照安装向导中的提示在设备上设置 Windows Admin Center。

  3. 打开 Windows Admin Center。

  4. 选择右上角的“设置齿轮”图标,然后选择“扩展”。

  5. 在“源”选项卡上,选择“添加”。

  6. 在文本框中输入 https://aka.ms/wac-insiders-feed,然后选择“添加”。

  7. 添加源后,请转到“可用扩展”选项卡,并等待扩展列表进行更新。

  8. 从“可用扩展”列表中选择“Azure IoT Edge”。

  9. 安装该扩展。

  10. 安装扩展后,选择左上角的“Windows Admin Center”,以切换到主仪表板页面。

    localhost 连接代表正在运行 Windows Admin Center 的电脑。

    Windows Admin 起始页屏幕截图。

  11. 选择 添加

    屏幕截图显示在 Windows Admin Center 中选择“添加”按钮。

  12. 在“Azure IoT Edge”磁贴上,选择“新建”来启动安装向导。

    屏幕截图显示在“Azure IoT Edge”磁贴中创建新部署。

  13. 继续执行安装向导,选择接受 Microsoft 软件许可条款,然后单击“下一步”。

    屏幕截图显示选择“下一步”以继续执行安装向导。

  14. 选择“可选诊断数据”,然后选择“下一步:部署。 此选择提供扩展诊断数据,可帮助 Microsoft 监视和维护服务质量。

    屏幕截图显示诊断数据选项。

  15. 在“选择目标设备”屏幕中,选择所需的目标设备,验证它是否满足最低要求。 在本快速入门中,我们要将 IoT Edge 安装在本地设备上,因此选择“localhost”连接。 如果目标设备满足要求,则选择“下一步”以继续。

    屏幕截图显示目标设备列表。

  16. 选择“下一步”以接受默认设置。 部署屏幕显示下载包、安装包、配置主机和最终设置 Linux 虚拟机 (VM) 的进程。 成功部署如下所示:

    成功部署屏幕截图。

  17. 在完成时选择“下一步:连接”,继续执行最后一个步骤 - 使用 IoT 中心实例中的设备 ID 预配 Azure IoT Edge 设备。

  18. 之前在此快速入门中复制的连接字符串粘贴到“设备连接字符串”字段中。 然后选择“使用所选方法进行预配”。

    屏幕截图显示“设备连接字符串”字段中的连接字符串。

  19. 完成预配后,选择“完成”,即可完成并返回到 Windows Admin Center 起始屏幕。 应可以看到你的设备被列为 IoT Edge 设备。

    屏幕截图显示 Windows Admin Center 中的所有连接。

  20. 选择你的 Azure IoT Edge 设备,可查看其仪表板。 你应该会看到 Azure IoT 中心内设备孪生的工作负载已经部署。 “IoT Edge 模块列表”应显示一个正在运行 edgeAgent 的模块,而“IoT Edge 状态”应显示“活动(正在运行)”。

IoT Edge 设备现在已配置好。 它可以运行云部署型模块了。

部署模块

从云端管理 Azure IoT Edge 设备,部署将遥测数据发送到 IoT 中心的模块。

此图显示部署模块的步骤。

Azure IoT Edge 的主要功能之一是从云中将代码部署到 IoT Edge 设备。 IoT Edge 模块 是以容器形式实现的可执行程序包。 在本部分中,你将直接从 Azure IoT 中心的 Azure 市场的 IoT Edge 模块部分部署一个预建的模块。

在本部分中部署的模块模拟一个传感器并发送生成的数据。 开始使用 IoT Edge 时,此模块是非常有用的代码段,因为你可以使用模拟的数据进行开发和测试。 如果要确切了解此模块的功能,则可以查看模拟的温度传感器源代码

请按照以下步骤从 Azure 市场部署你的第一个模块。

  1. 登录 Azure 门户并转到 IoT 中心。

  2. 从左侧菜单中的“自动设备管理”下,选择“IoT Edge” 。

  3. 选择设备列表中目标设备的设备 ID。

  4. 在上方栏中,选择“设置模块”。

    显示正在选择“设置模块”的屏幕截图。

  5. 在“IoT Edge 模块”下,打开“添加”下拉菜单,然后选择“市场模块” 。

    显示“添加”下拉菜单的屏幕截图。

  6. 在 IoT Edge 模块市场中,搜索并选择 Simulated Temperature Sensor 模块。

    该模块会添加到“IoT Edge 模块”部分,并处于所需的运行状态。

  7. 在完成时选择“下一步:”路由以继续执行向导的下一步。

    显示在添加模块后继续下一步的屏幕截图。

  8. 在“路由”选项卡上,删除默认路由(路由),然后选择“下一步: 查看 + 创建”继续执行向导的下一步。

    备注

    路由使用名称和值对构造而成。 应在此页上看到两条路由。 默认路由(路由)会将所有消息发送到 IoT 中心(称为 $upstream)。 从 Azure 市场添加模块时,将自动创建第二条路由 (SimulatedTemperatureSensorToIoTHub)。 此路由用于将所有来自模拟温度模块中的消息发送到 IoT 中心。 可以删除默认路由,因为在这种情况下它是多余的。

    显示删除默认路由并转到下一步的屏幕截图。

  9. 查看 JSON 文件,然后选择“创建”。 JSON 文件定义你部署到 IoT Edge 设备的所有模块。 你将看到“SimulatedTemperatureSensor”模块以及“edgeAgent”和“edgeHub”这两个运行时模块 。

    备注

    在将新部署提交到 IoT Edge 设备时,不会向设备推送任何内容。 相反,设备会定期对 IoT 中心进行查询以获取任何新指令。 如果设备找到了更新的部署清单,则它会使用关于新部署的信息来从云中拉取模块映像,然后开始在本地运行模块。 此过程可能需要几分钟。

  10. 创建模块部署详细信息后,向导会将你返回到设备详细信息页。 在“模块”选项卡上查看部署状态。

    应会看到三个模块:$edgeAgent、$edgeHub 和 SimulatedTemperatureSensor 。 如果其中一个或多个模块在“在部署中指定”下为“是”,但在“由设备报告”下不是,则意味着 IoT Edge 设备仍在启动它们 。 等待几分钟,然后刷新页面。

    显示已部署模块列表中模拟温度传感器的屏幕截图。

查看生成的数据

此快速入门中,创建了新的 IoT Edge 设备,并在该设备上安装了 IoT Edge 运行时。 然后,你使用了 Azure 门户部署 IoT Edge 模块,使其在不更改设备本身的情况下在设备上运行。

推送的模块会生成示例环境数据,你可以在稍后使用该数据进行测试。 模拟传感器正在监视一台计算机和该计算机周围的环境。 例如,该传感器可能位于服务器机房中、工厂地板上或风力涡轮机上。 它将发送包含环境温度和湿度、机器温度和压力以及时间戳的消息。 IoT Edge 教程使用此模块创建的数据作为测试数据进行分析。

在 Windows Admin Center 的命令行界面中,确认从云中部署的模块正在 IoT Edge 设备上运行。

  1. 连接到新建的 IoT Edge 设备。

    屏幕截图显示在 Windows Admin Center 中选择“连接”。

    在“概述”页上,你将看到“IoT Edge 模块列表”和“IoT Edge 状态”。 你可以查看已部署的模块和设备状态。

  2. 在“工具”下,选择“命令行界面”。 命令行界面是一种 PowerShell 终端,它自动使用安全外壳 (SSH) 连接到 Windows 电脑上 Azure IoT Edge 设备的 Linux VM。

    屏幕截图显示打开命令行界面。

  3. 若要在设备上验证这三个模块,请运行以下 Bash 命令:

    sudo iotedge list
    

    屏幕截图显示命令行界面 IoT edge 列表输出。

  4. 查看从温度传感器模块发送到云的消息。

    iotedge logs SimulatedTemperatureSensor -f
    

    重要

    引用模块名称时,IoT Edge 命令区分大小写。

    屏幕截图显示从模块发送到云的消息列表。

你也可使用 Visual Studio Code 的 Azure IoT 中心扩展查看到达 IoT 中心的消息。

清理资源

若要继续学习 IoT Edge 教程,请跳过此步骤。 可以使用在本快速入门中注册和设置的设备。 否则,可删除已创建的 Azure 资源,避免产生费用。

如果是在新资源组中创建的虚拟机和 IoT 中心,则可删除该组以及所有关联的资源。 如果不希望删除整个组,则可改为删除单个资源。

重要

检查资源组的内容,确保没有要保留的内容。 删除资源组的操作不可逆。

使用以下命令删除 IoTEdgeResources 组。 删除操作可能需要几分钟时间。

az group delete --name IoTEdgeResources

可以通过使用此命令查看资源组列表来确认已删除该资源组。

az group list

删除 Azure IoT Edge for Linux on Windows

可以使用 Windows Admin Center 中的仪表板扩展卸载 Azure IoT Edge for Linux on Windows。

  1. 在 Windows Admin Center 中连接到 IoT Edge 设备。 此时将加载 Azure 仪表板工具扩展。

  2. 选择“卸载”。 删除 Azure IoT Edge 后,Windows Admin Center 将从“开始”页中删除 Azure IoT Edge 设备连接项。

备注

从 Windows 系统中删除 Azure IoT Edge 的另一种方法是:在 IoT Edge 设备上,选择“开始” > “设置” > “应用” > “Azure IoT Edge” > “卸载”。 此方法将从 IoT Edge 设备中删除 Azure IoT Edge,但会保留 Windows Admin Center 中的连接。 要完成删除操作,也可从“设置”菜单卸载 Windows Admin Center。

后续步骤

在本快速入门中,你创建了一个 IoT Edge 设备并使用 Azure IoT Edge 云接口将代码部署到该设备上。 现在,你有了一个测试设备,可以生成与环境相关的原始数据。

下一步是设置本地开发环境,以便开始创建运行业务逻辑的 IoT Edge 模块。