Обновление устройств Azure Plug and Play для Центра Интернета вещей IoT

Обновление устройства для Центра Интернета вещей использует IoT Plug and Play для обнаружения и управления устройствами, которые можно обновлять по беспроводной сети. В этой статье описывается, как служба обновления устройств отправляет и получает свойства и сообщения на и от устройств с помощью интерфейсов Plug and Play для Интернета вещей.

Дополнительные сведения см. в руководстве разработчика устройств IoT Plug and Play и создании агента обновления устройств.

Модели обновления устройств

Интеллектуальные устройства используют идентификаторы моделей IoT Plug and Play для декларирования своих возможностей в приложениях Интернета вещей Azure. Для обновления устройства требуется смарт-устройство IoT с функцией Plug and Play для объявления идентификатора модели при подключении устройства. Смотрите в объявлении об идентификаторе модели для дополнительной информации.

Обновление устройств имеет несколько определённых моделей IoT 'Plug and Play', поддерживающих функции обновления устройств. Модель **dtmi:azure:iot:deviceUpdateContractModel;3** обновления устройств поддерживает ключевые функции обновления устройств и использует интерфейс ядра обновления устройств для отправки действий обновления и метаданных устройствам и получения состояния обновления от устройств.

Другая поддерживаемая модель — это **dtmi:azure:iot:deviceUpdateModel;3**, который расширяет **deviceUpdateContractModel;3** и также использует интерфейсы IoT Plug and Play, которые отправляют сведения о свойствах устройства и активируют диагностические функции. Сведения об этих и других версиях см. в статье Azure IoT Plug and Play модели обновления устройств.

Агент обновления устройств использует **dtmi:azure:iot:deviceUpdateModel;3**, который поддерживает все последние функции в выпуске версии 1.1.0 обновления устройств. Эта модель поддерживает импорт манифеста версии 5.0. Старые манифесты работают с последними агентами, но для новых функций требуется последняя версия манифеста.

Метаданные агента

Агент обновления устройств использует следующие поля метаданных агента для отправки сведений в службы обновления устройств.

Имя. Схема Направление Описание
свойства устройства Карта устройства в облако Набор свойств, которые содержат сведения об изготовителе, модели и других устройствах. Дополнительные сведения см. в свойствах устройства.
compatPropertyNames Строка (с разделением запятыми) устройства в облако До пяти свойств используются для проверки совместимости устройства при целевом развертывании обновления.
Пример: compatPropertyNames: "производитель,модель"
результатПоследнейУстановки Карта устройства в облако Результат, сообщаемый агентом, содержащий код результатов, расширенный код результата и сведения о результатах для основного обновления и других обновлений шага.
resultCode целое число устройства в облако Код, содержащий сведения о результате последнего действия обновления. Может быть заполнено для указания успешного или неудачного результата.
Пример: 700
extendedResultCode целое число устройства в облако Код, содержащий дополнительные сведения о результатах. Может быть заполнен как в случае успеха, так и в случае неудачи.
Пример: 0x80004005
деталиРезультата строка устройства в облако Строка бесплатной формы, предоставляемая пользователем, для получения дополнительных сведений о результатах. Возвращается в двойник без синтаксического анализа.
stepResults карта устройства в облако Результат, сообщаемый агентом, содержащий код результата, расширенный код результата и сведения о результатах для обновлений шагов.
Пример: "step_1": { "resultCode": 0,"extendedResultCode": 0, "resultDetails": ""}
состояние целое число устройства в облако Целое число, указывающее на текущее состояние агента обновления устройств. Дополнительные сведения см. в разделе "Состояние ".
рабочий процесс сложный устройства в облако Набор значений, указывающий развертывание, над которым агент в настоящее время работает, идентификатор текущего установленного развертывания и подтверждение получения любого запроса на повторную попытку, отправленного службой агенту. Идентификатор workflow сообщает "nodeployment" значение после отмены развертывания.
Пример: "workflow": {"action": 3,"ID": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01","retryTimestamp": "2022-01-26T11:33:29.9680598Z"}
installedUpdateId строка устройства в облако Идентификатор текущего развертывания обновления устройства. Это значение записывает код JSON обновления или null устройство, которое никогда не обновлялось с помощью обновления устройства.
Пример: "installedUpdateID": "{\"provider\":\"contoso\",\"name\":\"image-update\",\"version\":\"1.0.0\"}"

Пример двойника устройства Центра Интернета вещей:

"deviceUpdate": {
                "__t": "c",
                "agent": {
                    "deviceProperties": {
                        "manufacturer": "contoso",
                        "model": "virtual-vacuum-v1",
                        "contractModelId": "dtmi:azure:iot:deviceUpdateContractModel;3",
                        "aduVer": "DU;agent/1.1.0",
                        },
                    "compatPropertyNames": "manufacturer,model",
                    "lastInstallResult": {
                        "resultCode": 700,
                        "extendedResultCode": 0,
                        "resultDetails": "",
                        "stepResults": {
                            "step_0": {
                                "resultCode": 700,
                                "extendedResultCode": 0,
                                "resultDetails": ""
                            }
                        }
                    },
                    "state": 0,
                    "workflow": {
                        "action": 3,
                        "id": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01",
                        "retryTimestamp": "2022-01-26T11:33:29.9680598Z"
                    },
                    "installedUpdateId": "{\"provider\":\"Contoso\",\"name\":\"Virtual-Vacuum\",\"version\":\"5.0\"}"
                },

Примечание.

Устройство или модуль должны добавить маркер {"__t": "c"}, чтобы указать, что элемент ссылается на компонент. Дополнительные сведения см. в статье Соглашения IoT Plug and Play.

Свойства устройства

Поле deviceProperties содержит сведения о производителе и модели устройства.

Имя. Схема Направление Описание
производитель строка устройства в облако Производитель этого устройства сообщает через deviceProperties.
Интерфейс DeviceUpdateCore сначала пытается считывать aduc_manufacturer значение из файла конфигурации. Если значение не заполнено в файле конфигурации, интерфейс по умолчанию передает определение ADUC_DEVICEPROPERTIES_MANUFACTURERвремени компиляции. Информация об этом свойстве передается только во время загрузки.
Значение по умолчанию: Contoso
модель строка устройства в облако Модель устройства, сообщаемая через deviceProperties. Интерфейс DeviceUpdateCore сначала пытается считывать aduc_model значение из файла конфигурации. Если значение не заполнено в файле конфигурации, интерфейс по умолчанию передает определение ADUC_DEVICEPROPERTIES_MODELвремени компиляции. Информация об этом свойстве передается только во время загрузки.
Значение по умолчанию — Video.
идентификаторМоделиКонтракта строка устройства в облако Свойство, используемое службой для идентификации базовой версии агента обновления устройств, который используется для управления и обмена данными с агентом.
Значение: dtmi:azure:iot:deviceUpdateContractModel;3 для устройств, использующих агента обновления устройств версии 1.1.0.
Примечание. Агенты, использующие dtmi:azure:iot:deviceUpdateModel;2, должны сообщать contractModelId как dtmi:azure:iot:deviceUpdateContractModel;3, поскольку deviceUpdateModel;3 является расширением deviceUpdateContractModel;3.
aduVer строка устройства в облако Версия агента обновления устройства, выполняющегося на устройстве. Это значение считывается из сборки только в том случае, если во время компиляции для ENABLE_ADU_TELEMETRY_REPORTING установлено значение 1 (true). Вы можете отказаться от отчетов о версиях, задав значение 0 false. Дополнительные сведения см. в разделе "Создание агента обновления устройства".
doVer строка устройства в облако Версия агента оптимизации доставки, выполняющегося на устройстве. Значение считывается из сборки, только если ENABLE_ADU_TELEMETRY_REPORTING задано значение 1 true во время компиляции. Вы можете отказаться от отчетов о версиях, задав значение 0 false. Дополнительные сведения см. в разделе "Настройка свойств агента оптимизации доставки".
Настраиваемые свойства совместимости Пользовательский (настраиваемый) устройства в облако Другие пользовательские свойства устройства, используемые для проверки совместимости при целевом развертывании обновления.

Штат

Поле состояния — это состояние агента обновления устройства в ответ на действие , отправленное агенту обновления устройств из службы обновления устройств. Дополнительные сведения о запросах, которые передаются между службой обновления устройств и агентом обновления устройств, см. в рабочем процессе агента.

Имя. Значение Описание
Бездействие 0 Устройство готово к получению действия от службы обновления устройства. После успешного обновления состояние возвращается в Idle состояние.
Развертывание в процессе 6 Выполняется развертывание.
Неудачно 255 Во время обновления произошел сбой.
Загрузка завершена успешно 2 Произошло успешное скачивание. Это состояние отображается только на устройствах с агентом версии 0.7.0 или более старым.
УстановкаУспешна 4 Произошла успешная установка. Это состояние отображается только на устройствах с агентом версии 0.7.0 или более старым.

Действие

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

Имя. Значение Описание
применить развертывание 3 Примените развернутое обновление.
Отмена 255 Прерывание обработки текущего действия и возврат к состоянию Idle. Это же действие используется, чтобы указать агенту в состоянии Failed вернуться к состоянию Idle.
загрузить 0 Скачайте опубликованное содержимое или обновление и все другое необходимое содержимое. Это действие отправляется только на устройства с агентом версии 0.7.0 или более поздней.
Установить 1 Обычно содержимое или обновление устанавливают, чтобы вызвать установщик для содержимого или обновления. Обновление устройства отправляет это действие только на устройства с агентом версии 0.7.0 или более ранней.
применить 2 Завершите обновление, перезагрузив при необходимости. Обновление устройства отправляет это действие только на устройства с агентом версии 0.7.0 или более ранней.

Метаданные службы

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

Имя. Схема Направление Описание
действие целое число из облака на устройство Целое число, соответствующее действию, которое должен выполнить агент. См. действие для подробной информации.
обновитьМанифест строка из облака на устройство Описывает содержимое обновления. Создается из манифеста импорта.
обновитьПодписьМанифеста JSON-объект из облака на устройство Веб-подпись JSON (JWS) с веб-ключами JSON для проверки источника.
fileUrls Карта из облака на устройство Сопоставьте FileID с DownloadUrl. Сообщает агенту, какие файлы нужно скачать и хэш, чтобы убедиться, что файлы загружены правильно.

Интерфейс сведений об устройстве

Интерфейс сведений об устройстве является концепцией, которая используется в архитектуре IoT Plug and Play. Интерфейс содержит свойства устройства в облако, которые предоставляют сведения об оборудовании устройства и операционной системе. Обновление устройства использует свойства DeviceInformation.manufacturer и DeviceInformation.model для телеметрии и диагностики. Пример интерфейса сведений об устройстве см. в разделе https://devicemodels.azure.com/dtmi/azure/devicemanagement/deviceinformation-1.json.

При реализации этого интерфейса ожидаемое имя компонента в модели — deviceInformation. Для получения дополнительной информации см. руководство по моделированию Интернета вещей Plug and Play.

Имя. Тип Схема Направление Описание Пример
производитель Свойство строка устройства в облако Название компании-производителя устройства. Производитель может совпадать с именем изготовителя исходного оборудования (OEM). Contoso
модель Свойство строка устройство к облаку Имя или идентификатор модели устройства. Устройство IoT Edge
swVersion Свойство строка передача данных с устройства на облако Версия программного обеспечения на вашем устройстве. swVersion может быть версией вашей микропрограммы. 4.15.0-122
osName Свойство строка подключение устройства к облаку Название операционной системы, установленной на устройстве. Ubuntu Server 18.04
архитектура процессора Свойство строка подключение устройства к облаку Архитектура процессора на устройстве. ARM64
производитель процессора Свойство строка устройства в облако Наименование производителя процессора на устройстве. Microsoft
общаяПамять Свойство строка устройства в облако Общий объем доступного хранилища на устройстве в килобайтах. 2048
totalMemory Свойство строка устройства в облако Общий объем доступной памяти на устройстве в килобайтах. 256