Как получить обновление устройства через azure-iot-sdk-c

В настоящее время я разрабатываю стратегию обновления для устройств Интернета вещей под управлением встроенного Linux. Обновление устройства Azure для Центра Интернета вещей.
Я прочитал много документации MS по этой теме. Но мне не хватает части, как соединить все службы вместе, поэтому они делают то, что я хочу.

Что я знаю:

Чего я хочу:

  • Отправить данные телеметрии для устройства
  • Вызов методов на устройстве
  • Разверните образ обновления на мои устройства IoT из центральной точки (IoT Hub).
  • Автоматически начинать загрузку при появлении нового патча.
  • Имейте одно клиентское приложение, которое все это делает.

Что у меня есть:

Моя проблема:

Я не знаю, как соединить все эти части вместе, чтобы при развертывании нового артефакта все совместимые устройства начали загрузку сами по себе, или если я даже на правильном пути. Моим следующим шагом было бы просто вызвать метод, который загружает файл обновления и передает его моему средству обновления rauc, но это нарушит цель обновления устройства и агента обновления, по крайней мере, с моим текущим пониманием их. У меня возникла дополнительная проблема с агентом устройства, которую я объяснил на github, но я не думаю, что это связано.

Кроме того, я читал, что обновление устройства использует интерфейсы PnP и в этом руководство, которое они используют iot-dps, чтобы зарегистрировать новые устройства, но прежде чем я углублюсь в эти темы, я хотел бы знать, подходит ли это для моего случая.

Этот вопрос по MS.


person Voxel    schedule 13.04.2021    source источник
comment
Тот же вопрос здесь: docs.microsoft .com / ru-ru / answers / questions / 355475 / index.html   -  person asergaz    schedule 14.04.2021
comment
Да, это мой вопрос. На него также есть ссылка внизу этого сообщения.   -  person Voxel    schedule 14.04.2021


Ответы (2)


На данный момент у нас нет общего руководства по интеграции вашего существующего приложения / клиента / модуля с агентом обновлений, над которым мы работаем в ближайшее время. А пока я могу отослать вас к некоторым соответствующим указателям в нашей документации, которые помогут вам начать работу:

Интерфейс PnP агента обновления: https://docs.microsoft.com/en-us/azure/iot-hub-device-update/device-update-plug-and-play

Рабочий процесс агента обновления: https://docs.microsoft.com/en-us/azure/iot-hub-device-update/understand-device-update#device-update-agent

Ссылка на код рабочего процесса: https://github.com/Azure/iot-hub-device-update/blob/main/src/agent/adu_core_interface/src/agent_workflow.c

Обратите внимание, что для конкретных реализаций установки у нас есть концепция обработчика, который сопоставляется с конкретным 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

person Yuval Gross    schedule 16.04.2021
comment
Спасибо за ответ. Я уже просмотрел эти файлы и, тем временем, думаю, что у меня есть базовое представление о том, как работает Агент, и где я могу добавить свои дополнительные задачи, которые он должен выполнять. Я с нетерпением жду возможности увидеть ожидаемый путь. Есть ли приблизительная оценка, когда это произойдет очень скоро? - person Voxel; 21.04.2021
comment
Как только у меня все будет в порядке, я опубликую это в своем решении. Но ваш ответ заверил меня, что я не упускаю ничего очевидного. - person Voxel; 21.04.2021

Спасибо за вопросы, пожалуйста, посмотрите несколько ответов ниже.

  1. Судя по вашим отзывам, вы успешно выполнили OTA-обновление своего IoT-устройства. Поздравляю!
  2. Мы поддерживаем обновления OTA с помощью таких установщиков, как swUpdate для обновлений изображений (A / B) и apt для обновлений на основе пакетов. Таким образом, вам не нужно использовать программу обновления RAUC, если какая-либо из них соответствует вашим потребностям. Если нет, мы заинтересованы в том, чтобы услышать ваш пример использования и отзывы о том, как мы можем улучшить платформу в будущем. а. Вот различные руководства по обновлению для справки: i. Обновление изображения: начало работы с Ссылка на изображение Raspberry Pi 3 B + Yocto
    ii. Обновление пакета: начало работы с Агент пакета Ubuntu Server 18.04 x64 iii. Руководство по обновлению устройства для Центра Интернета вещей Azure для операционной системы реального времени Azure
  3. Мы пока не поддерживаем возможность динамического развертывания, при котором совместимые устройства просто начинают загружать обновление, а кто-то вручную не запускает новое развертывание с портала (или API). Мы рассмотрим эту возможность для будущих выпусков.
  4. Для использования функции обновления устройств для IoT Hub на устройствах не обязательно должна быть включена поддержка PnP. Однако им действительно нужен установленный агент обновления устройств, который обменивается данными со службой обновления устройств через Центр Интернета вещей, используя свойства двойника устройства PnP для управления обновлением.
  5. Регистрация устройства: устройство можно зарегистрировать в Центре Интернета вещей с помощью DPS (в производственных сценариях) или вручную с помощью строки подключения (для тестирования). В зависимости от вашего варианта использования вы можете зарегистрировать устройство с помощью DPS с предпочтительной аутентификацией (SAS, TPM, сертификат X509). Затем вы должны предоставить агенту обновления устройства доступ к вашему устройству, используя IoT Identity Service или с помощью файла конфигурации для тестирования. Подробности о том, как подготовить агент обновления устройств, можно найти на здесь.
person Val    schedule 14.04.2021
comment
1. На данный момент кросс-компиляция будет выполняться только на моей машине разработчика, когда все будет работать как задумано. 2. swUpdate был вариантом, но RAUC больше подходил для нашего случая использования. 3. Возможно, мое объяснение было недостаточно ясным. Часть ручного развертывания из серверного приложения или концентратора - это нормально. Я просто не хочу запускать процесс загрузки на каждом устройстве вручную. 4. Значит, агент устройства - это отдельная программа, которую нужно запускать на каждом устройстве в дополнение к моему клиентскому приложению? 5. Следующим шагом после завершения первоначального тестирования будет автоматизация всей установки обновления. - person Voxel; 14.04.2021
comment
Для №3: вы можете группировать устройства в Центре Интернета вещей для одновременного развертывания обновления на нескольких устройствах. Это запустит процесс загрузки из службы обновления устройств в агент обновления устройств на всех устройствах в группе. Узнайте, как сгруппировать устройства здесь . Также будет полезно просмотреть одно сквозное обновление из это руководство, в котором описывается процесс группировки и развертывания обновлений на устройствах. - person Val; 15.04.2021
comment
Для №4: агент обновления устройства работает со службой, чтобы организовать управление обновлениями из облака. Если ваше клиентское приложение включает в себя агент обновления устройства, вам не нужно иметь отдельную программу. - person Val; 15.04.2021
comment
Спасибо за разъяснение. Включение агента обновлений в мое клиентское приложение - это именно то, что я хочу. Было бы очень полезно руководство о том, как я могу этого добиться. - person Voxel; 15.04.2021