Поделиться через


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

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

Дополнительные сведения см. по ссылке .

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

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

Для обновления устройств для Центр Интернета вещей требуется самонастраивающийся смарт-устройство Интернета вещей для объявления идентификатора модели в рамках подключения к устройству. Сведения о том, как объявить идентификатор модели.

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

Другая поддерживаемая модель — dtmi:azure:iot:deviceUpdateModel; 3 , расширяющее устройствоUpdateContractModel; 3 , а также использует другие интерфейсы PnP, которые отправляют свойства устройства и сведения и позволяют выполнять диагностические функции. Дополнительные сведения о [версиях моделей и интерфейсов обновления устройств] (https://github.com/Azure/iot-plugandplay-models/tree/main/dtmi/azure/iot).

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

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

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

Имя. Схема Направление Description Пример
deviceProperties Карта устройства в облако Набор свойств, которые содержат сведения об изготовителе, модели и других устройствах. Дополнительные сведения см. в разделе Свойства устройства.
compatPropertyNames Строка (с разделением запятыми) устройства в облако Устройство сообщило о свойствах, которые используются для проверки совместимости устройства с целью развертывания обновления. Поддерживается не более пяти свойств устройства. "compatPropertyNames": "manufacturer,model"
lastInstallResult Карта устройства в облако Результат, сообщаемый агентом. Он содержит код результата, расширенный код результата и сведения о результатах основного обновления и других поэтапных обновлений.
resultCode integer устройства в облако Код, содержащий сведения о результате последнего действия обновления. Может быть заполнен как успешный или неудачный. 700
extendedResultCode integer устройства в облако Код, содержащий дополнительные сведения о результате. Может быть заполнен как успешный или неудачный. 0x80004005
resultDetails строка устройства в облако Определяемая клиентом строка произвольной формы, которая предоставляет дополнительные сведения о результатах. Возвращается в цифровой двойник без синтаксического анализа
stepResults map устройства в облако Результат, сообщаемый агентом, который содержит код результата, расширенный код результата и сведения о результатах поэтапных обновлений. "step_1": { "resultCode": 0,"extendedResultCode": 0, "resultDetails": ""}
state integer устройства в облако Целое число, указывающее на текущее состояние агента обновления устройств. Дополнительные сведения см. в разделе Состояние.
обновления агентов complex устройства в облако Набор значений, указывающих на развертывание, которое агент в настоящее время обрабатывает, идентификатор текущего развертывания и подтверждение всех запросов повторных попыток, отправляемых из службы в агент. Обратите внимание, что идентификатор рабочего процесса сообщает значение 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"}"

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

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

Имя. Схема Направление Description
manufacturer строка устройства в облако Производитель устройства, сообщаемый через deviceProperties. Это свойство считывается из одного из двух мест. Сначала интерфейс DeviceUpdateCore пытается прочитать значение aduc_manufacturer из файла конфигурации. Если в файле конфигурации значение не указано, по умолчанию сообщается определение времени компиляции для ADUC_DEVICEPROPERTIES_MANUFACTURER. Информация об этом свойстве передается только во время загрузки.

Значение по умолчанию — Contoso.
модель строка устройства в облако Модель устройства, сообщаемая через deviceProperties. Это свойство считывается из одного из двух мест. Сначала интерфейс DeviceUpdateCore пытается прочитать значение aduc_model из файла конфигурации. Если в файле конфигурации значение не указано, по умолчанию сообщается определение времени компиляции для ADUC_DEVICEPROPERTIES_MODEL. Информация об этом свойстве передается только во время загрузки.

Значение по умолчанию — Video.
contractModelId строка устройства в облако Это свойство используется службой для идентификации базовой версии модели, используемой агентом обновления устройств для управления агентом обновления устройств и взаимодействия с ним.
Значение: 'dtmi:azure:iot:deviceUpdateContractModel; 3' для устройств с помощью агента DU версии 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). Настройка свойств агента оптимизации доставки.
Настраиваемые свойства совместимости Определяемый пользователем устройства в облако При настройке развертывания разработчик может определить и другие свойства устройства, которые будут использоваться для проверки совместимости.

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

"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.

State

Значение в поле state — это состояние, которое сообщается агентом обновления устройств после получения действия от службы обновления устройств. Информация о состоянии сообщается в ответ на запрос action (см. раздел Действие), который отправляется агенту обновления устройств от службы обновления устройств. Ознакомьтесь с общими сведениями о рабочем процессе, чтобы узнать подробности о запросах, передаваемых между службой обновления устройств и агентом обновления устройств.

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

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

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

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

Действие

Значение в поле action — это действия, предпринятые агентом обновления устройств в соответствии с указаниями службы обновления устройств. Агент обновления устройств сообщит о состоянии (state) обработки полученного действия. Ознакомьтесь с общими сведениями о рабочем процессе, чтобы узнать подробности о запросах, передаваемых между службой обновления устройств и агентом обновления устройств.

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

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

Интерфейс сведений об устройстве является концепцией, которая используется в архитектуре IoT Plug and Play. Он содержит свойства, передаваемые с устройства в облако, которые предоставляют сведения об оборудовании и операционной системе устройства. Служба "Обновление устройств для Центра Интернета вещей" использует свойства DeviceInformation.manufacturer и DeviceInformation.model для телеметрии и диагностики. Дополнительные сведения см. на странице с примером интерфейса сведений об устройстве.

При реализации этого интерфейса ожидаемое имя компонента в модели — deviceInformation. Сведения о компонентах Azure IoT Plug and Play

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

Next Steps