디바이스와 DPS 간에 페이로드를 전송하는 방법
DPS에 등록하는 디바이스는 등록 시 등록 ID와 유효한 자격 증명(키 또는 X.509 인증서)을 제공해야 합니다. 그러나 디바이스에서 추가 데이터가 필요한 IoT 솔루션이나 시나리오가 있을 수 있습니다. 예를 들어, 사용자 지정 할당 정책 웹후크는 디바이스 모델 번호와 같은 정보를 사용하여 디바이스를 프로비전할 IoT 허브를 선택할 수 있습니다. 마찬가지로 디바이스는 클라이언트 쪽 논리를 용이하게 하기 위해 등록 응답에 추가 데이터를 요구할 수 있습니다. DPS는 디바이스가 등록할 때 선택적 페이로드를 보내고 받을 수 있는 기능을 디바이스에 제공합니다.
사용 시기
선택적 페이로드를 보내는 일반적인 시나리오는 다음과 같습니다.
사용자 지정 할당 정책은 디바이스 페이로드를 사용하여 디바이스의 IoT 허브를 선택하거나 초기 트윈을 설정할 수 있습니다. 예를 들어, 디바이스 모델에 따라 디바이스를 할당할 수 있습니다. 이 경우 등록할 때 모델 정보를 보고하도록 디바이스를 구성할 수 있습니다. DPS는 디바이스의 페이로드를 사용자 지정 할당 웹후크에 전달합니다. 그런 다음 웹후크는 디바이스 모델 정보를 기반으로 디바이스를 프로비전할 IoT 허브를 결정할 수 있습니다. 필요한 경우 웹후크는 웹후크 응답에서 데이터를 JSON 개체로 디바이스에 다시 반환할 수도 있습니다. 자세한 내용은 사용자 지정 할당에서 디바이스 페이로드 사용을 참조하세요.
IoT PnP(플러그 앤 플레이) 디바이스는 DPS에 등록할 때 페이로드를 사용하여 모델 ID를 보낼 수 있습니다. SDK 또는 샘플 리포지토리의 PnP 샘플에서 이 사용 예를 찾을 수 있습니다. 예를 들면 C# PnP 온도 조절기 또는 Node.js PnP 온도 조절기입니다.
DPS를 통해 연결하는 IoT Central 디바이스는 IoT 플러그 앤 플레이 규칙을 따르고 등록 시 모델 ID를 보내야 합니다. IoT Central은 모델 ID를 사용하여 디바이스를 올바른 디바이스 템플릿에 할당합니다. 자세한 내용은 IoT Central을 위한 디바이스 구현 및 모범 사례를 참조하세요.
디바이스에서 DPS로 데이터 페이로드 전송
디바이스가 DPS에 등록하기 위해 디바이스 등록을 호출할 때 payload 속성에 추가 데이터를 포함할 수 있습니다. 예를 들어, 다음 JSON은 TPM 증명을 사용하여 등록 요청의 본문을 보여 줍니다.
{
"registrationId": "mydevice",
"tpm": {
"endorsementKey": "xxxx-device-endorsement-key-xxxx",
"storageRootKey": "xxx-device-storage-root-key-xxxx"
},
"payload": { A JSON object that contains your additional data }
}
payload 속성은 JSON 개체여야 하며 IoT 솔루션 또는 시나리오와 관련된 모든 데이터를 포함할 수 있습니다.
DPS가 디바이스에 데이터 반환
DPS는 등록 응답에서 디바이스로 데이터를 다시 반환할 수 있습니다. 현재 이 기능은 사용자 지정 할당 시나리오에서만 사용됩니다. 사용자 지정 할당 정책 웹후크가 디바이스에 데이터를 반환해야 하는 경우 웹후크 응답에서 데이터를 JSON 개체로 다시 전달할 수 있습니다. 그런 다음 DPS는 디바이스 등록 응답의 registrationState.payload 속성에서 해당 데이터를 다시 전달합니다. 예를 들어, 다음 JSON은 TPM 증명을 사용하여 등록하기 위한 성공적인 응답의 본문을 보여 줍니다.
{
"operationId":"5.316aac5bdc130deb.b1e02da8-xxxx-xxxx-xxxx-7ea7a6b7f550",
"status":"assigned",
"registrationState":{
"registrationId":"my-tpm-device",
"createdDateTimeUtc":"2022-08-31T22:02:50.5163352Z",
"assignedHub":"sample-iot-hub-1.azure-devices.net",
"deviceId":"my-tpm-device",
"status":"assigned",
"substatus":"initialAssignment",
"lastUpdatedDateTimeUtc":"2022-08-31T22:02:50.7370676Z",
"etag":"xxxx-etag-value-xxxx",
"tpm": {"authenticationKey": "xxxx-encrypted-authentication-key-xxxxx"},
"payload": { A JSON object that contains the data returned by the webhook }
}
}
payload 속성은 JSON 개체여야 하며 IoT 솔루션 또는 시나리오와 관련된 모든 데이터를 포함할 수 있습니다.
SDK 지원
이 기능은 C, C#, JAVA 및 Node.js 클라이언트 SDK에서 사용할 수 있습니다. IoT Hub 및 IoT Hub Device Provisioning 서비스에 사용할 수 있는 Azure IoT SDK에 대해 자세히 알아보려면 Microsoft Azure IoT SDK를 참조하세요.
IoT Edge 지원
버전 1.4부터 IoT Edge는 JSON 파일에 포함된 데이터 페이로드 전송을 지원합니다. 디바이스가 (다시) 등록될 때 페이로드 파일을 읽고 DPS로 전송합니다. 일반적으로 iotedge config apply
를 처음 실행할 때 발생합니다. CLI의 다시 프로비전 명령 iotedge system reprovision
을 사용하여 다시 읽고 등록하도록 강제할 수도 있습니다.
다음은 payload
속성이 로컬 JSON 파일의 경로로 설정된 /etc/aziot/config.toml
의 코드 조각 예입니다.
[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "0ab1234C5D6"
# Uncomment to send a custom payload during DPS registration
payload = { uri = "file:///home/aziot/payload.json" }
페이로드 파일(이 경우 /home/aziot/payload.json
)에는 다음과 같은 유효한 JSON이 포함될 수 있습니다.
{
"modelId": "dtmi:com:example:edgedevice;1"
}
다음 단계
사용자 지정 할당 정책에 대한 개요는 사용자 지정 할당 정책 이해를 참조하세요.
사용자 지정 할당 정책을 사용하여 디바이스를 프로비전하는 방법을 알아보려면 사용자 지정 할당 정책 사용을 참조하세요.