Обновление устройства для Центра Интернета вещей и IoT Plug and Play
Обновление устройства для Центра Интернета вещей использует 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 |