问题描述
我目前正在为运行嵌入式 Linux 的 IoT 设备制定更新策略。使用适用于 IoT 中心的 Azure 设备更新。
我已经阅读了很多关于这个主题的 MS 文档。但我错过了如何将所有服务连接在一起的部分,所以他们做我想做的事。
我所知道的:
- c-sdk 用于与设备对话并形成设备。
- 接收更新的 Device Update Agent。
- 获得可靠下载的 Delivery Optimization SDK。
我想要的:
- 发送设备的遥测数据
- 在设备上调用方法
- 从中心点(IoT 中心)将更新映像部署到我的 IoT 设备。
- 在新补丁可用时自动开始下载。
- 拥有一个可以完成所有这些工作的客户端应用程序。
我有什么:
- 更新的客户端使用 rauc 实现。我只需要一种将更新文件传送到设备的方法。
- 我可以使用 iot-sdk-c 发送遥测、编辑设备孪生和调用方法。
- 我使用设备更新创建了一个 IoTHub,并将我的设备与 Device Update Agent
- 我创建了一个 Update-Artifact 并imported 它,并为我的 deployment 创建了一个新的 target group。
- 我能够使用 AducIotAgent 模拟成功下载。
我的问题:
我不知道如何将所有这些部分连接在一起,以便在我部署新工件时,所有兼容设备都会自行开始下载,或者我是否走在正确的道路上。 我的下一步是简单地调用一个方法来下载更新文件并将其传递给我的 rauc 更新程序,但这将违背设备更新和更新代理的目的,至少在我目前对它们的理解下。 我在 github 上解释了设备代理的另一个问题,但我认为这无关。
此外,我了解到设备更新使用 PnP interfaces 并且在此 guide 中他们使用 iot-dps 来注册新设备,但在我进一步阅读这些主题之前,我想知道是否适合我的情况。
解决方法
在这一点上,我们没有关于如何将您现有的应用程序/客户端/模块与更新代理集成的一般指南,这是我们正在努力添加的内容。现在,我可以向您推荐我们文档中的一些相关指针,这将有助于您入门:
更新代理 PnP 接口:https://docs.microsoft.com/en-us/azure/iot-hub-device-update/device-update-plug-and-play
请注意,对于特定于安装的实现,我们有一个“处理程序”的概念,它映射到特定的“updateType”。这是相关的指针: https://docs.microsoft.com/en-us/azure/iot-hub-device-update/device-update-agent-overview#update-handlers
此类处理程序的一个示例是 APT 或 SWUpdate,它们位于此处: https://github.com/Azure/iot-hub-device-update/tree/main/src/content_handlers/swupdate_handler
,感谢您的提问,请参阅下面的一些回复。
- 根据您的反馈,您似乎已成功完成对 IoT 设备的 OTA 更新。恭喜!
- 我们使用安装程序支持 OTA 更新,例如:swUpdate 用于图像 (A/B) 更新和 apt 用于基于包的更新。因此,如果其中任何一个满足您的需求,您就不需要使用 RAUC 更新程序。如果没有,我们有兴趣听取您的用例以及关于我们未来如何改进平台的反馈。
一种。以下是各种更新教程供参考:
一世。 Image Update: Getting Started with Raspberry Pi 3 B+ Reference Yocto Image
ii. Package Update: Getting Started using Ubuntu Server 18.04 x64 Package agent iii.Device Update for Azure IoT Hub tutorial for Azure-Real-Time-Operating-System - 我们尚不支持动态部署功能,其中兼容设备只需开始下载更新,而无需有人从门户(或 API)手动启动新部署。我们将在未来的版本中考虑此功能。
- 设备无需启用 PnP 即可使用 IoT 中心的设备更新。但是,他们确实需要安装设备更新代理,该代理通过 IoT 中心与设备更新服务通信,使用 PnP 设备孪生属性来协调更新。
- 设备注册:可以使用 DPS(在生产场景中)或使用连接字符串(用于测试)手动向 IoT 中心注册设备。根据您的用例,您可以使用具有首选身份验证(SAS、TPM、X509 证书)的 DPS 注册设备。接下来,您必须使用 IoT Identity Service 或使用配置文件为您的设备提供设备更新代理访问权限以进行测试。有关如何配置设备更新代理的详细信息,请参见 here。