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


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

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

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

Базовый интерфейс обновления устройств

Интерфейс DeviceUpdateCore используется для отправки действий обновления и метаданных на устройства, а также получения от них информации о состоянии обновления. Интерфейс DeviceUpdateCore разделен на два свойства объекта.

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

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

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

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

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

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

Значение по умолчанию — Video.
interfaceId строка с устройства в облако Это свойство используется службой для обнаружения версии интерфейса, которая используется агентом обновления устройств. Идентификатор интерфейса необходим службе обновления устройств для управления агентом и взаимодействия с ним.

Значение по умолчанию: dtmi:azure:iot:deviceUpdate;1 для устройств, использующих агент DU версии 0.8.0.
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",
                        "interfaceId": "dtmi:azure:iot:deviceUpdateModel;1",
                        "aduVer": "DU;agent/0.8.0-rc1-public-preview",
                        "doVer": "DU;lib/v0.6.0+20211001.174458.c8c4051,DU;agent/v0.6.0+20211001.174418.c8c4051"
                    },
                    "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 — это состояние, которое сообщается агентом обновления устройств после получения действия от службы обновления устройств. Информация о состоянии сообщается в ответ на запрос action (см. раздел Действие), который отправляется агенту обновления устройств от службы обновления устройств. Ознакомьтесь с общими сведениями о рабочем процессе, чтобы узнать подробности о запросах, передаваемых между службой обновления устройств и агентом обновления устройств.

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

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

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

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

Действие

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

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

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

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

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

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

Идентификатор модели

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

Обновление устройств для Центра Интернета вещей требует, чтобы смарт-устройство IoT Plug and Play объявило идентификатор модели со значением dtmi:azure:iot:deviceUpdateModel;1 в ходе подключения устройства. Сведения о том, как объявить идентификатор модели.