IoT Hub 및 IoT 플러그 앤 플레이에 대한 디바이스 업데이트

IoT Hub용 디바이스 업데이트는 IoT 플러그 앤 플레이를 사용하여 OTA(Over The Air) 업데이트를 지원하는 디바이스를 검색하고 관리합니다. Device Update 서비스는 IoT 플러그 앤 플레이 인터페이스를 사용하여 디바이스 간에 속성과 메시지를 보내고 받습니다.

자세한 내용은 다음에서 확인합니다.

Device Update 모델

모델 ID는 스마트 디바이스가 IoT 플러그인을 사용하여 Azure IoT 애플리케이션에 해당 기능을 보급하는 방법입니다. Azure IoT 애플리케이션에 기능을 보급하는 스마트 디바이스를 빌드하는 방법에 대해 자세히 알아보세요. IoT 플러그 앤 플레이 디바이스 개발자 가이드

Device Update for IoT Hub를 사용하려면 IoT 플러그 앤 플레이 스마트 디바이스가 디바이스 연결의 일부로 모델 ID를 알려야 합니다. 모델 ID 공지 방법 알아보기.

디바이스 업데이트에는 DU 기능을 지원하는 여러 PnP 모델이 정의되어 있습니다. 디바이스 업데이트 모델 'dtmi:azure:iot:deviceUpdateContractModel; 3'은 핵심 기능을 지원하고 디바이스 업데이트 핵심 인터페이스를 사용하여 디바이스에 업데이트 작업 및 메타데이터를 보내고 디바이스에서 업데이트 상태 받습니다.

지원되는 다른 모델은 dtmi:azure:iot:deviceUpdateModel입니다. deviceUpdateContractModel을 확장하는 3 3 및 디바이스 속성 및 정보를 보내고 진단 기능을 사용하도록 설정하는 다른 PnP 인터페이스도 사용합니다. [Device Update 모델 및 인터페이스 버전](https://github.com/Azure/iot-plugandplay-models/tree/main/dtmi/azure/iot)에 대해 자세히 알아봅니다.

디바이스 업데이트 에이전트는 dtmi:azure:iot:deviceUpdateModel을 사용합니다. 1.1.0 릴리스의 모든 최신 기능을 지원하는 3. 이 모델은 V5 매니페스트 버전을 지원합니다. 이전 매니페스트는 최신 에이전트에서 작동하지만 새 기능을 사용하려면 최신 매니페스트 버전을 사용해야 합니다.

에이전트 메타데이터

Device Update 에이전트는 에이전트 메타데이터 필드를 사용하여 Device Update 서비스에 정보를 보냅니다.

이름 스키마 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 에이전트의 현재 상태를 나타내는 정수입니다. 자세한 내용은 State 섹션을 참조하세요.
workflow complex 디바이스-클라우드 에이전트가 현재 작업 중인 배포, 현재 배포의 ID, 서비스에서 에이전트로 전송된 재시도 요청의 승인 등을 나타내는 값 세트입니다. 배포가 취소되면 워크플로 ID는 "nodeployment" 값을 보고합니다. "workflow": {"action": 3,"ID": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01","retryTimestamp": "2022-01-26T11:33:29.9680598Z"}
installedUpdateId string 디바이스-클라우드 현재 설치된 업데이트의 ID입니다(디바이스 업데이트를 통해). 이 값은 Device Update를 통해 업데이트를 수행한 적이 없는 디바이스에 대해 업데이트 ID JSON 또는 null을 캡처하는 문자열입니다. installedUpdateID{"provider":"contoso","name":"image-update","version":"1.0.0"}"

장치 속성

deviceProperties 필드에는 디바이스에 대한 제조업체 및 모델 정보가 포함되어 있습니다.

이름 스키마 Direction 설명
제조업체 string 디바이스-클라우드 deviceProperties를 통해 보고된 디바이스의 디바이스 제조업체입니다. 이 속성은 두 위치 중 하나에서 읽습니다. 먼저 DeviceUpdateCore 인터페이스는 구성 파일에서 ‘aduc_manufacturer’ 값을 읽으려고 시도합니다. 구성 파일에 값이 작성되지 않은 경우, 기본적으로 ADUC_DEVICEPROPERTIES_MANUFACTURER에 대한 컴파일 시간 정의를 보고합니다. 이 속성은 부팅 시에만 보고됩니다.

기본값: ‘Contoso’.
model string 디바이스-클라우드 deviceProperties를 통해 보고된 디바이스의 디바이스 모델입니다. 이 속성은 두 위치 중 하나에서 읽습니다. 먼저 DeviceUpdateCore 인터페이스는 구성 파일에서 'aduc_model' 값을 읽으려고 시도합니다. 구성 파일에 값이 작성되지 않은 경우, 기본적으로 ADUC_DEVICEPROPERTIES_MODEL에 대한 컴파일 시간 정의를 보고합니다. 이 속성은 부팅 시에만 보고됩니다.

기본값: Video'
contractModelId string 디바이스-클라우드 이 속성은 서비스에서 Device Update 에이전트가 에이전트를 관리하고 통신하는 데 사용하는 기본 모델 버전을 식별하는 데 사용됩니다.
값: 'dtmi:azure:iot:deviceUpdateContractModel; DU 에이전트 버전 1.1.0을 사용하는 디바이스의 경우 3'입니다.
참고: 'dtmi:azure:iot:deviceUpdateModel;을 사용하는 에이전트 2'는 contractModelId를 'dtmi:azure:iot:deviceUpdateContractModel;로 보고해야 합니다. deviceUpdateModel로 3' deviceUpdateContractModel에서 3이 확장됩니다. 3
aduVer string 디바이스-클라우드 디바이스에서 실행되는 디바이스 업데이트 에이전트의 버전입니다. 이 값은 컴파일 시간 동안 ENABLE_ADU_TELEMETRY_REPORTING이 1(true)로 설정된 경우에만 빌드에서 읽습니다. 고객은 값을 0(false)으로 설정하여 버전 보고를 옵트아웃하도록 선택할 수 있습니다. 디바이스 업데이트 에이전트 속성을 사용자 지정하는 방법
doVer string 디바이스-클라우드 디바이스에서 실행되는 전송 최적화 에이전트의 버전입니다. 컴파일 시간 동안 ENABLE_ADU_TELEMETRY_REPORTING이 1(true)로 설정된 경우에만 빌드에서 값을 읽습니다. 고객은 값을 0(false)으로 설정하여 버전 보고를 옵트아웃하도록 선택할 수 있습니다. 전송 최적화 에이전트 속성을 사용자 지정하는 방법.
사용자 지정 호환성 속성 사용자 정의 디바이스-클라우드 구현자는 업데이트 배포를 대상으로 하는 동안 호환성 검사에 사용할 다른 디바이스 속성을 정의할 수 있습니다.

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 플러그 앤 플레이 규칙을 참조하세요.

State(상태)

State 필드는 Device Update 서비스에서 작업을 받은 후 DU(Device Update) 에이전트가 보고한 상태입니다. 상태는 Device Update 서비스에서 Device Update 에이전트로 전송된 작업(자세한 내용은 작업 섹션 참조)에 대한 응답으로 보고됩니다. Device Update 서비스와 Device Update 에이전트 간에 전달되는 요청에 대한 자세한 내용은 개요 워크플로를 참조하세요.

속성 설명
유휴 상태 0 디바이스가 Device Update 서비스에서 작업을 수신할 준비가 되었습니다. 업데이트에 성공하면 상태가 Idle 상태로 돌아갑니다.
DeploymentInprogress 6 배포가 진행 중입니다.
실패함 255 업데이트하는 동안 오류가 발생했습니다.
다운로드 성공 2 다운로드가 완료되었습니다. 이 상태는 에이전트 버전 0.7.0 이상이 있는 디바이스만 보고합니다.
InstallSucceeded 4 설치가 완료되었습니다. 이 상태는 에이전트 버전 0.7.0 이상이 있는 디바이스만 보고합니다.

서비스 메타데이터

서비스 메타데이터에는 Device Update 에이전트에 작업 및 데이터를 전달하기 위해 Device Update 서비스에서 사용하는 필드가 포함되어 있습니다.

이름 스키마 Direction 설명
작업 정수 클라우드-디바이스 에이전트에서 수행해야 하는 작업에 해당하는 정수입니다. 자세한 내용은 작업 섹션을 참조하세요.
updateManifest string 클라우드-디바이스 업데이트 콘텐츠를 설명하는 데 사용됩니다. 가져오기 매니페스트에서 생성됩니다.
updateManifestSignature JSON 개체 클라우드-디바이스 원본 확인에 사용되는 JSON 웹 키가 있는 JWS(JSON 웹 서명)입니다.
fileUrls 지도 클라우드-디바이스 DownloadUrl로의 FileID 매핑입니다. 다운로드할 파일과 파일이 올바르게 다운로드되었는지 확인하는 데 사용할 해시를 에이전트에 알려 줍니다.

작업

작업 필드는 Device Update 서비스의 지시에 따라 Device Update 에이전트가 수행하는 작업을 나타냅니다. Device Update 에이전트는 수신된 작업을 처리하기 위한 상태를 보고합니다. Device Update 서비스와 Device Update 에이전트 간에 전달되는 요청에 대한 자세한 내용은 개요 워크플로를 참조하세요.

속성 설명
applyDeployment 3 업데이트를 적용합니다. 배포된 업데이트를 적용하도록 디바이스에 신호를 보냅니다.
cancel 255 현재 작업 처리를 중지하고 Idle로 돌아가거나 Failed 상태의 에이전트에게 Idle로 돌아가라고 지시합니다.
다운로드로 사용 가능한 제품 설명서에서 데이터 공급자 설치 섹션을 참조하세요 0 게시된 콘텐츠 또는 업데이트와 필요한 기타 콘텐츠를 다운로드합니다. 이 작업은 에이전트 버전 0.7.0 이상이 있는 디바이스에만 전송됩니다.
설치 1 콘텐츠 또는 업데이트를 설치합니다. 일반적으로 이 작업은 설치 콘텐츠나 업데이트를 위한 설치 관리자 호출을 의미합니다. 이 작업은 에이전트 버전 0.7.0 이상이 있는 디바이스에만 전송됩니다.
apply 2 업데이트를 완료합니다. 필요한 경우 시스템을 다시 부팅하도록 신호를 보냅니다. 이 작업은 에이전트 버전 0.7.0 이상이 있는 디바이스에만 전송됩니다.

디바이스 정보 인터페이스

디바이스 정보 인터페이스는 IoT 플러그 앤 플레이 아키텍처 내에서 사용되는 개념입니다. 디바이스의 하드웨어 및 운영 체제에 대한 정보를 제공하는 디바이스-클라우드 속성을 포함합니다. IoT Hub의 디바이스 업데이트는 원격 분석과 진단에 DeviceInformation.manufacturerDeviceInformation.model 속성을 사용합니다. 자세히 알아보려면 이 디바이스 정보 인터페이스의 예제를 참조하세요.

모델에 필요한 구성 요소 이름은 이 인터페이스가 구현될 때 deviceInformation입니다. Azure 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

다음 단계