Обновление устройств для Центра Интернета вещей и IoT Plug and Play
Обновление устройств для Центра Интернета вещей использует IoT Plug and Play для обнаружения и управления устройствами, которые можно обновлять по беспроводной сети. Служба обновления устройства отправляет и получает свойства и сообщения на устройства и получать их с устройств с помощью интерфейсов IoT Plug and Play. Использование службы "Обновление устройств для Центра Интернета вещей" возможно при условии, что в устройствах IoT реализованы перечисленные ниже интерфейсы и идентификатор модели.
Дополнительные сведения
- Знакомство с клиентом устройства IoT Plug and Play.
- Изучение реализации агента Обновления устройств.
Базовый интерфейс обновления устройств
Интерфейс 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 в ходе подключения устройства. Сведения о том, как объявить идентификатор модели.