你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Device Update for Azure IoT Hub 完成代理更新

查看将代理更新与 Device Update for Azure IoT Hub 配合使用(如果尚未查看)。

设置测试设备或虚拟机

本教程使用 Ubuntu Server 18.04 LTS 虚拟机 (VM) 作为示例。

安装设备更新代理和依赖项

  1. 在 APT 包存储库中注册 packages.microsoft.com:

    sudo apt-get update
    
    sudo apt install curl
    
    curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ~/microsoft-prod.list
    
    sudo cp ~/microsoft-prod.list /etc/apt/sources.list.d/
    
    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > ~/microsoft.gpg
    
    sudo cp ~/microsoft.gpg /etc/apt/trusted.gpg.d/
    
    sudo apt-get update
    
  2. 在 IoT 设备上安装 deviceupdate-agent。 从 packages.microsoft.com 下载最新的 Device Update Debian 文件:

    sudo apt-get install deviceupdate-agent
    

    或者,将下载的 Debian 文件复制到测试 VM。 如果在计算机上使用 PowerShell,请运行以下 shell 命令:

    scp <path to the .deb file> tester@<your vm's ip address>:~
    

    然后远程连接到 VM,并在主文件夹中运行以下 shell 命令:

    #go to home folder 
    cd ~
    #install latest Device Update agent
    sudo apt-get install ./<debian file name from the previous step>
    
  3. 转到 Azure IoT 中心,复制 IoT 设备的设备更新模块的主连接字符串。 请将 connectionData 字段的任何默认值替换为 du-config.json 文件中的主连接字符串:

    sudo nano /etc/adu/du-config.json  
    

    注意

    可以改为复制设备的主连接字符串,但我们建议使用设备更新模块的字符串。 有关设置模块的信息,请参阅设备更新代理预配

  4. 确保 /etc/adu/du-diagnostics-config.json 包含正确的日志收集设置。 例如:

    {
      "logComponents":[
        {
          "componentName":"adu",
           "logPath":"/var/log/adu/"
        },
        {
          "componentName":"do",
          "logPath":"/var/log/deliveryoptimization-agent/"
        }
      ],
      "maxKilobytesToUploadPerLogPath":50
    }
    
  5. 重启设备更新代理:

    sudo systemctl restart deviceupdate-agent
    

设置模拟组件

为了进行测试和演示,我们将在设备上创建以下模拟组件:

  • 三个电机
  • 两个摄像头
  • "hostfs"
  • "rootfs"

重要

上述组件配置基于名为 libcontoso-component-enumerator.so 的示例组件枚举器扩展的实现。 它还需要以下模拟组件清单数据文件:/usr/local/contoso-devices/components-inventory.json。

  1. 演示文件夹复制到测试 VM 上的主目录。 然后,运行以下命令以将所需文件复制到正确的位置:

    `~/demo/tools/reset-demo-components.sh` 
    

    reset-demo-components.sh 命令会代你执行以下步骤:

    • 它复制 components-inventory.json 并添加到 /usr/local/contoso-devices 文件夹。

    • 它从 Assets 文件夹复制 Contoso 组件枚举器扩展 (libcontoso-component-enumerator.so) 并将其添加到 /var/lib/adu/extensions/sources 文件夹。

    • 它会注册扩展:

      sudo /usr/bin/AducIotAgent -E /var/lib/adu/extensions/sources/libcontoso-component-enumerator.so
      

导入示例更新

创建设备更新帐户和实例,包括配置 IoT 中心(如果尚未这样做)。 然后开始执行以下过程。

  1. 最新设备更新版本中的“资产”下,下载代理更新的导入清单和映像。

  2. 登录到 Azure 门户并转到具有设备更新的 IoT 中心。 在左侧窗格中,选择“设备管理”>“更新”。

  3. 选择“更新”选项卡。

  4. 选择“+ 导入新更新”。

  5. 选择“+ 从存储容器中选择”,然后选择你的存储帐户和容器。

    显示用于选择从存储容器中导入的按钮的屏幕截图。

  6. 选择“上传”以添加在步骤 1 中下载的文件。

  7. 将父导入清单、子导入清单和有效负载文件上传到你的容器。

    以下示例演示了上传的示例文件,这些文件用于更新已连接到智能吸尘器设备的摄像头。 它还包含一个预安装脚本,用于在无线更新之前关闭摄像头。

    在示例中,父导入清单是 contoso.Virtual-Vacuum-virtual-camera.1.4.importmanifest.json。 包含摄像头更新详细信息的子导入清单是 Contoso.Virtual-Vacuum.3.3.importmanifest.json。 这两个清单文件名都遵循所需的格式并以 .importmanifest.json 结尾。

    显示上传的示例文件的屏幕截图,这些文件用于更新已连接到智能吸尘器设备的摄像头。

  8. 选择“选择”。

  9. UI 现在会显示要导入到设备更新的文件列表。 选择“导入更新”。

    显示列出的文件以及用于导入更新的按钮的屏幕截图。

  10. 导入过程随即开始,屏幕更改为“导入历史记录”部分。 选择“刷新”以查看进度,直到完成导入过程。 导入过程可能会在几分钟内完成,也可能需要更长时间,具体取决于更新的大小。

  11. 当“状态”列指示导入成功时,请选择“可用更新”选项卡。现在应会在列表中看到导入的更新。

    显示添加到列表中的已导入更新的屏幕截图。

有关导入过程的详细信息,请参阅将更新导入到设备更新

查看设备组

Device Update 使用组来组织设备。 Device Update 根据设备的分配标记和兼容性属性自动将设备分组。 每个设备仅属于一个组,但组可以有多个子组来对不同的设备类进行排序。

  1. 转到页面顶部的“组和部署”选项卡。

    屏幕截图显示了未分组的设备。

  2. 查看组列表和更新合规性图表。 更新合规性图表显示了处于各种合规性状态的设备的计数:“最新的更新”、“可用的新更新”和“正在进行的更新”。 了解更新合规性

    屏幕截图显示了更新符合性视图。

  3. 应会看到一个设备组,其中包含在本教程中设置的模拟设备,以及新组中设备的任何可用更新。 如果设备不满足组的设备类要求,它们将显示在相应的无效组中。 若要从此视图中将最佳可用更新部署到新的用户定义组,请选择组旁边的“部署”。

有关标记和组的详细信息,请参阅管理设备组

部署更新

  1. 创建组后,你应该会看到适用于你设备组的新更新,并在“最佳更新”下显示该更新的链接(你可能需要刷新一次)。

    有关合规性的详细信息,请参阅设备更新合规性

  2. 单击“组名称”选择目标组。 你将转到组基本信息下的组详细信息。

    组详细信息

  3. 要启动部署,请前往“当前部署”选项卡。在“可用更新”部分,选择所需更新旁边的“部署”链接。 给定组的最佳可用更新将以“最佳”高亮表示。

    选择更新

  4. 计划你的部署,使其立即或将来开始,然后选择“创建”。

    创建部署

  5. “部署”详细信息下的“状态”应转换为“活动”,而部署的更新应标记为“部署中”。

    活动的部署

  6. 查看符合性图表。 此时会看到更新正在进行。

  7. 成功更新设备后,应会看到合规性图表和部署详细信息已更新,以反映这种状态。

    更新成功

监视更新部署

  1. 选择页面顶部的“部署历史记录”选项卡。

    部署历史记录

  2. 选择所创建的部署旁边的详细信息链接。

    部署详细信息

  3. 选择“刷新”以查看最新状态详细信息。

现在,你已使用 Device Update for IoT Hub 成功完成了端到端代理更新。

清理资源

如果你不再需要设备更新帐户、实例、IoT 中心和 IoT 设备,请进行清理。

后续步骤