Azure Device Update for IoT Hub의 IoT 플러그 앤 플레이
IoT Hub용 디바이스 업데이트는 IoT 플러그 앤 플레이를 사용하여 OTA(Over The Air) 업데이트를 지원하는 디바이스를 검색하고 관리합니다. 이 문서에서는 디바이스 업데이트 서비스가 IoT 플러그 앤 플레이 인터페이스를 사용하여 디바이스와 주고받는 속성 및 메시지를 주고받는 방법을 설명합니다.
자세한 내용은 IoT 플러그 앤 플레이 디바이스 개발자 가이드 및 디바이스 업데이트 에이전트를 빌드하는 방법을 참조하세요.
디바이스 업데이트 모델
스마트 디바이스는 IoT 플러그 앤 플레이 모델 ID를 사용하여 Azure IoT 애플리케이션에 해당 기능을 보급합니다. 디바이스 업데이트를 사용하려면 IoT 플러그 앤 플레이 스마트 디바이스가 디바이스 연결의 일부로 모델 ID를 알려야 합니다. 자세한 내용은 모델 ID 공지 사항을 참조하세요.
디바이스 업데이트에는 디바이스 업데이트 기능을 지원하는 몇 가지 정의된 IoT 플러그 앤 플레이 모델이 있습니다. 디바이스 업데이트 모델은 **dtmi:azure:iot:deviceUpdateContractModel;3**
핵심 디바이스 업데이트 기능을 지원하고 디바이스 업데이트 핵심 인터페이스를 사용하여 디바이스에 업데이트 작업 및 메타데이터를 보내고 디바이스에서 업데이트 상태를 받습니다.
지원되는 다른 모델은 **dtmi:azure:iot:deviceUpdateModel;3**
디바이스 속성 정보를 보내고 진단 기능을 사용하도록 설정하는 IoT 플러그 앤 플레이 인터페이스를 확장하고 **deviceUpdateContractModel;3**
사용합니다. 이러한 버전 및 기타 버전은 Azure IoT 플러그 앤 플레이 디바이스 업데이트 모델을 참조하세요.
디바이스 업데이트 에이전트는 디바이스 업데이트 1.1.0 릴리스의 모든 최신 기능을 지원하는 기능을 사용합니다**dtmi:azure:iot:deviceUpdateModel;3**
. 이 모델은 가져오기 매니페스트 버전 5.0을 지원합니다. 이전 매니페스트는 최신 에이전트에서 작동하지만 새 기능에는 최신 매니페스트 버전이 필요합니다.
에이전트 메타데이터
디바이스 업데이트 에이전트는 다음 에이전트 메타데이터 필드를 사용하여 디바이스 업데이트 서비스에 정보를 보냅니다.
속성 | 스키마 | Direction | 설명 |
---|---|---|---|
deviceProperties | 지도 | 디바이스-클라우드 | 제조업체, 모델 및 기타 디바이스 정보를 포함하는 속성 세트입니다. 자세한 내용은 디바이스 속성을 참조하세요. |
compatPropertyNames | 문자열(쉼표로 구분) | 디바이스-클라우드 | 업데이트 배포를 대상으로 하는 디바이스 호환성을 확인하는 데 사용되는 최대 5개의 속성입니다. 예: "compatPropertyNames": "manufacturer,model" |
lastInstallResult | 지도 | 디바이스-클라우드 | 주 업데이트 및 기타 단계 업데이트에 대한 결과 코드, 확장된 결과 코드 및 결과 세부 정보를 포함하는 에이전트에서 보고한 결과입니다. |
resultCode | 정수 | 디바이스-클라우드 | 마지막 업데이트 작업 결과에 대한 정보를 포함하는 코드입니다. 성공 또는 실패에 대해 작성할 수 있습니다. 예: 700 |
extendedResultCode | 정수 | 디바이스-클라우드 | 결과에 대한 자세한 정보를 포함하는 코드입니다. 성공 또는 실패에 대해 작성할 수 있습니다. 예: 0x80004005 |
resultDetails | string | 디바이스-클라우드 | 더 많은 결과 세부 정보를 제공하기 위해 사용자가 제공한 자유형 문자열입니다. 구문 분석하지 않고 트윈으로 반환됩니다. |
stepResults | map | 디바이스-클라우드 | 결과 코드, 확장된 결과 코드 및 단계 업데이트에 대한 결과 세부 정보를 포함하는 에이전트에서 보고한 결과입니다. 예: "step_1": { "resultCode": 0,"extendedResultCode": 0, "resultDetails": ""} |
state | 정수 | 디바이스-클라우드 | Device Update 에이전트의 현재 상태를 나타내는 정수입니다. 자세한 내용은 상태를 참조하세요. |
workflow | complex | 디바이스-클라우드 | 에이전트가 현재 작업 중인 배포, 현재 설치된 배포의 ID 및 서비스에서 에이전트로 전송된 재시도 요청의 승인을 나타내는 값 집합입니다.
workflow 배포가 "nodeployment" 취소되면 ID가 값을 보고합니다. 예: "workflow": {"action": 3,"ID": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01","retryTimestamp": "2022-01-26T11:33:29.9680598Z"} |
installedUpdateId | string | 디바이스-클라우드 | 현재 설치된 디바이스 업데이트 배포의 ID입니다. 이 값은 업데이트 ID JSON 또는 null 디바이스 업데이트를 통해 업데이트한 적이 없는 디바이스를 캡처합니다. 예: "installedUpdateID": "{\"provider\":\"contoso\",\"name\":\"image-update\",\"version\":\"1.0.0\"}" |
IoT Hub 디바이스 쌍 예제:
"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 플러그 앤 플레이 규칙을 참조하세요.
장치 속성
deviceProperties 필드에는 디바이스에 대한 제조업체 및 모델 정보가 포함되어 있습니다.
이름 | 스키마 | Direction | 설명 |
---|---|---|---|
제조업체 | string | 디바이스-클라우드 |
deviceProperties 를 통해 보고된 디바이스의 디바이스 제조업체입니다.인터페이스는 DeviceUpdateCore 먼저 구성 파일에서 값을 읽으 aduc_manufacturer 려고 시도합니다. 구성 파일에 값이 채워지지 않으면 인터페이스는 기본적으로 컴파일 시간 정의를 ADUC_DEVICEPROPERTIES_MANUFACTURER 보고합니다. 이 속성은 부팅 시에만 보고됩니다. 기본값: 'Contoso' |
model | string | 디바이스-클라우드 |
deviceProperties 를 통해 보고된 디바이스의 디바이스 모델입니다. 인터페이스는 DeviceUpdateCore 먼저 구성 파일에서 값을 읽으 aduc_model 려고 시도합니다. 구성 파일에 값이 채워지지 않으면 인터페이스는 기본적으로 컴파일 시간 정의를 ADUC_DEVICEPROPERTIES_MODEL 보고합니다. 이 속성은 부팅 시에만 보고됩니다. 기본값: Video' |
contractModelId | string | 디바이스-클라우드 | 디바이스 업데이트 에이전트가 에이전트를 관리하고 통신하는 데 사용하는 기본 모델 버전을 식별하는 데 사용하는 속성입니다. 값: dtmi:azure:iot:deviceUpdateContractModel;3 디바이스 업데이트 에이전트 버전 1.1.0을 사용하는 디바이스의 경우 참고: 사용 dtmi:azure:iot:deviceUpdateModel;2 중인 에이전트는 .에서 deviceUpdateContractModel;3 확장되므로 as를 deviceUpdateModel;3 contractModelId dtmi:azure:iot:deviceUpdateContractModel;3 보고해야 합니다. |
aduVer | string | 디바이스-클라우드 | 디바이스에서 실행되는 디바이스 업데이트 에이전트의 버전입니다. 이 값은 컴파일 시간 동안 (true)로 1 설정된 경우에만 ENABLE_ADU_TELEMETRY_REPORTING 빌드에서 읽습니다. 값을 (false)로 설정하여 버전 보고를 옵트아웃하도록 0 선택할 수 있습니다. 자세한 내용은 디바이스 업데이트 에이전트를 빌드하는 방법을 참조하세요. |
doVer | string | 디바이스-클라우드 | 디바이스에서 실행되는 전송 최적화 에이전트의 버전입니다. 이 값은 컴파일 시간 동안 (true)로 1 설정된 경우에만 ENABLE_ADU_TELEMETRY_REPORTING 빌드에서 읽습니다. 값을 (false)로 설정하여 버전 보고를 옵트아웃하도록 0 선택할 수 있습니다. 자세한 내용은 배달 최적화 에이전트 속성을 사용자 지정하는 방법을 참조 하세요. |
사용자 지정 호환성 속성 | 사용자 정의 | 디바이스-클라우드 | 업데이트 배포를 대상으로 지정할 때 호환성 검사에 사용할 다른 사용자 정의 디바이스 속성입니다. |
State(상태)
상태 필드는 디바이스 업데이트 서비스에서 디바이스 업데이트 에이전트로 전송된 작업에 대한 응답으로 디바이스 업데이트 에이전트가 보고한 상태입니다. 디바이스 업데이트 서비스와 디바이스 업데이트 에이전트 간에 흐르는 요청에 대한 자세한 내용은 에이전트 워크플로를 참조하세요.
속성 | 값 | 설명 |
---|---|---|
유휴 상태 | 0 | 디바이스가 Device Update 서비스에서 작업을 수신할 준비가 되었습니다. 업데이트가 성공하면 상태가 상태로 돌아갑니다 Idle . |
DeploymentInprogress | 6 | 배포가 진행 중입니다. |
실패함 | 255 | 업데이트하는 동안 오류가 발생했습니다. |
다운로드 성공 | 2 | 성공적인 다운로드가 발생했습니다. 에이전트 버전이 0.7.0 이상인 디바이스만 이 상태를 보고합니다. |
InstallSucceeded | 4 | 성공적으로 설치되었습니다. 에이전트 버전이 0.7.0 이상인 디바이스만 이 상태를 보고합니다. |
작업
작업 필드는 디바이스 업데이트 서비스의 지시에 따라 디바이스 업데이트 에이전트가 수행해야 하는 작업을 나타냅니다. 디바이스 업데이트 에이전트는 수신하는 작업을 처리하기 위한 상태를 보고합니다. 디바이스 업데이트 서비스와 디바이스 업데이트 에이전트 간에 흐르는 요청에 대한 자세한 내용은 에이전트 워크플로를 참조하세요.
속성 | 값 | 설명 |
---|---|---|
applyDeployment | 3 | 배포된 업데이트를 적용합니다. |
cancel | 255 | 현재 작업 처리를 중지하고 Idle 로 돌아가거나 Failed 상태의 에이전트에게 Idle 로 돌아가라고 지시합니다. |
다운로드로 사용 가능한 제품 설명서에서 데이터 공급자 설치 섹션을 참조하세요 | 0 | 게시된 콘텐츠 또는 업데이트 및 필요한 기타 콘텐츠를 다운로드합니다. 이 작업은 에이전트 버전 0.7.0 이상이 있는 디바이스로만 전송됩니다. |
설치 | 1 | 콘텐츠 또는 업데이트를 설치합니다. 일반적으로 콘텐츠 또는 업데이트에 대한 설치 관리자를 호출합니다. 디바이스 업데이트는 에이전트 버전 0.7.0 이상의 디바이스에만 이 작업을 보냅니다. |
apply | 2 | 필요한 경우 다시 부팅하여 업데이트를 완료합니다. 디바이스 업데이트는 에이전트 버전 0.7.0 이상의 디바이스에만 이 작업을 보냅니다. |
서비스 메타데이터
서비스 메타데이터에는 디바이스 업데이트 서비스가 디바이스 업데이트 에이전트에 작업 및 데이터를 전달하는 데 사용하는 필드가 포함되어 있습니다.
속성 | 스키마 | Direction | 설명 |
---|---|---|---|
작업 | 정수 | 클라우드-디바이스 | 에이전트에서 수행해야 하는 작업에 해당하는 정수입니다. 자세한 내용은 작업을 참조하세요. |
updateManifest | string | 클라우드-디바이스 | 업데이트의 내용을 설명합니다. 가져오기 매니페스트에서 생성됩니다. |
updateManifestSignature | JSON 개체 | 클라우드-디바이스 | 원본 확인에 사용할 JSON 웹 키가 있는 JWS(JSON 웹 서명)입니다. |
fileUrls | 지도 | 클라우드-디바이스 |
DownloadUrl 로의 FileID 매핑입니다. 다운로드할 파일과 파일이 올바르게 다운로드되었는지 확인하는 데 사용할 해시를 에이전트에 알릴 수 있습니다. |
디바이스 정보 인터페이스
디바이스 정보 인터페이스는 IoT 플러그 앤 플레이 아키텍처 내에서 사용되는 개념입니다. 인터페이스에는 디바이스 하드웨어 및 운영 체제에 대한 정보를 제공하는 디바이스-클라우드 속성이 포함되어 있습니다. 디바이스 업데이트는 DeviceInformation.manufacturer
원격 분석 및 진단에 해당 및 DeviceInformation.model
속성을 사용합니다. 디바이스 정보 인터페이스의 예는 다음을 참조하세요 https://devicemodels.azure.com/dtmi/azure/devicemanagement/deviceinformation-1.json.
이 인터페이스를 구현할 때 모델의 예상 구성 요소 이름은 deviceInformation입니다. 자세한 내용은 IoT 플러그 앤 플레이 모델링 가이드를 참조하세요.
속성 | Type | 스키마 | Direction | 설명 | 예시 |
---|---|---|---|---|---|
제조업체 | 속성 | string | 디바이스-클라우드 | 디바이스 제조업체의 회사 이름입니다. 제조업체는 OEM(원래 장비 제조업체)의 이름과 같을 수 있습니다. | Contoso |
model | 속성 | string | 디바이스-클라우드 | 디바이스 모델 이름 또는 ID입니다. | IoT Edge 디바이스 |
swVersion | 속성 | string | 디바이스-클라우드 | 디바이스에 있는 소프트웨어 버전입니다. swVersion은 펌웨어의 버전일 수 있습니다. | 4.15.0-122 |
osName | 속성 | string | 디바이스-클라우드 | 디바이스에 있는 운영 체제의 이름입니다. | Ubuntu Server 18.04 |
processorArchitecture | 속성 | string | 디바이스-클라우드 | 디바이스의 프로세서 아키텍처입니다. | ARM64 |
processorManufacturer | 속성 | string | 디바이스-클라우드 | 디바이스에 있는 프로세서 제조업체의 이름입니다. | Microsoft |
totalStorage | 속성 | string | 디바이스-클라우드 | 디바이스에서 사용 가능한 총 스토리지(KB)입니다. | 2048 |
totalMemory | 속성 | string | 디바이스-클라우드 | 디바이스에서 사용 가능한 총 메모리(KB)입니다. | 256 |