Event Grid 원본으로서의 Azure IoT Hub
이 아티클에서는 Azure IoT Hub 이벤트에 대한 속성 및 스키마를 제공합니다. 이벤트 스키마에 대한 소개는 Azure Event Grid 이벤트 스키마를 참조하세요.
사용할 수 있는 이벤트 유형
Azure IoT Hub는 다음과 같은 이벤트 유형을 내보냅니다.
이벤트 유형 | 설명 |
---|---|
Microsoft.Devices.DeviceCreated | IoT 허브에 디바이스를 등록하는 경우 게시합니다. |
Microsoft.Devices.DeviceDeleted | IoT 허브에서 디바이스를 삭제하는 경우 게시합니다. |
Microsoft.Devices.DeviceConnected | IoT Hub에 디바이스가 연결되는 경우 게시합니다. |
Microsoft.Devices.DeviceDisconnected | IoT Hub와 디바이스의 연결이 해제되는 경우 게시합니다. |
Microsoft.Devices.DeviceTelemetry | IoT 허브로 원격 분석 메시지를 보내는 경우 게시합니다. |
예제 이벤트
DeviceConnected 및 DeviceDisconnected 이벤트에 대한 스키마는 구조가 동일합니다. 이 샘플 이벤트는 디바이스가 IoT 허브에 연결될 때 발생하는 이벤트의 스키마를 보여 줍니다.
[{
"id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
"source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"type": "Microsoft.Devices.DeviceConnected",
"time": "2018-06-02T19:17:44.4383997Z",
"data": {
"deviceConnectionStateEventInfo": {
"sequenceNumber":
"000000000000000001D4132452F67CE200000002000000000000000000000001"
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice",
"moduleId" : "DeviceModuleID"
},
"specversion": "1.0"
}]
DeviceTelemetry 이벤트는 IoT Hub로 원격 분석 이벤트가 전송될 때 발생합니다. 해당 이벤트에 대한 샘플 스키마는 다음과 같습니다.
[{
"id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
"source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"type": "Microsoft.Devices.DeviceTelemetry",
"time": "2019-01-07T20:58:30.48Z",
"data": {
"body": {
"Weather": {
"Temperature": 900
},
"Location": "USA"
},
"properties": {
"Status": "Active"
},
"systemProperties": {
"iothub-content-type": "application/json",
"iothub-content-encoding": "utf-8",
"iothub-connection-device-id": "d1",
"iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"iothub-connection-auth-generation-id": "123455432199234570",
"iothub-enqueuedtime": "2019-01-07T20:58:30.48Z",
"iothub-message-source": "Telemetry"
}
},
"specversion": "1.0"
}]
DeviceCreated 및 DeviceDeleted 이벤트에 대한 스키마는 구조가 동일합니다. 이 샘플 이벤트는 디바이스가 IoT 허브에 등록될 때 발생하는 이벤트의 스키마를 보여줍니다.
[{
"id": "56afc886-767b-d359-d59e-0da7877166b2",
"source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"type": "Microsoft.Devices.DeviceCreated",
"time": "2018-01-02T19:17:44.4383997Z",
"data": {
"twin": {
"deviceId": "LogicAppTestDevice",
"etag": "AAAAAAAAAAE=",
"deviceEtag": "null",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
}
}
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice"
},
"specversion": "1.0"
}]
이벤트 속성
모든 이벤트에는 동일한 최상위 수준 데이터가 포함됩니다.
속성 | Type | Description |
---|---|---|
id |
string | 이벤트에 대한 고유 식별자입니다. |
source |
string | 이벤트 원본에 대한 전체 리소스 경로입니다. 이 필드는 쓸 수 없습니다. Event Grid는 이 값을 제공합니다. |
subject |
string | 게시자가 정의한 이벤트 주체의 경로입니다. |
type |
string | 이 이벤트 원본에 대해 등록된 이벤트 유형 중 하나입니다. |
time |
string | 공급자의 UTC 시간을 기준으로 이벤트가 생성되는 시간입니다. |
data |
개체 | IoT Hub 이벤트 데이터입니다. |
specversion |
string | CloudEvents 스키마 사양 버전입니다. |
모든 IoT Hub 이벤트의 경우 데이터 개체에 다음 속성이 포함됩니다.
속성 | Type | Description |
---|---|---|
hubName |
string | 디바이스가 만들어지거나 삭제된 IoT Hub의 이름입니다. |
deviceId |
string | 디바이스의 고유 식별자입니다. 이 대/소문자 구분 문자열은 최대 128자까지 가능하며, ASCII 7 비트 영숫자 문자 + 다음 특수 문자 - : . + % _ # * ? ! ( ) , = @ ; $ ' 을 지원합니다. |
데이터 개체의 내용은 각 이벤트 게시자에 따라 다릅니다.
Device Connected 및 Device Disconnected IoT Hub 이벤트의 경우 데이터 개체에 다음 속성이 포함됩니다.
속성 | Type | Description |
---|---|---|
moduleId |
string | 모듈의 고유 식별자입니다. 이 필드는 모듈 디바이스에 대해서만 출력됩니다. 이 대/소문자 구분 문자열은 최대 128자까지 가능하며, ASCII 7 비트 영숫자 문자 + 다음 특수 문자 - : . + % _ # * ? ! ( ) , = @ ; $ ' 을 지원합니다. |
deviceConnectionStateEventInfo |
개체 | 디바이스 연결 상태 이벤트 정보 |
sequenceNumber |
string | 연결된 디바이스 또는 디바이스 분리 이벤트의 순서를 나타내는 데 도움이 되는 숫자입니다. 최신 이벤트는 이전 이벤트보다 시퀀스 번호가 높습니다. 이 숫자는 1을 초과하여 변경될 수 있지만 엄격하게 증가합니다. 시퀀스 번호 사용 방법을 참조하세요. |
디바이스 원격 분석 IoT Hub 이벤트의 경우, 데이터 개체는 IoT Hub 메시지 형식의 Device-to-Cloud 메시지를 포함하며, 다음과 같은 속성을 가집니다.
속성 | Type | Description |
---|---|---|
body |
string | 디바이스의 메시지 내용입니다. |
properties |
string | 애플리케이션 속성은 메시지에 추가할 수 있는 사용자 정의 문자열입니다. 이러한 필드는 선택 사항입니다. |
system properties |
string | 시스템 속성을 사용하면 메시지의 콘텐츠 및 소스를 식별할 수 있습니다. 디바이스 원격 분석 메시지는 메시지 시스템 속성에서 contentType이 JSON으로 설정되고 contentEncoding은 UTF-8로 설정된 유효한 JSON 형식이어야 합니다. 해당 설정을 지정하지 않으면 IoT Hub는 base 64 인코딩 형식으로 메시지를 작성합니다. |
디바이스가 생성됨 및 디바이스가 삭제됨 IoT Hub 이벤트의 경우 데이터 개체에 다음 속성이 포함됩니다.
속성 | Type | 설명 |
---|---|---|
twin |
개체 | 애플리케이션 디바이스 메타데이터의 클라우드 표현인 디바이스 쌍에 관한 정보입니다. |
deviceID |
string | 디바이스 쌍의 고유 식별자입니다. |
etag |
string | 디바이스 쌍에 대한 업데이트의 일관성을 확인하는 유효성 검사기입니다. 각 etag은 디바이스 쌍마다 고유합니다. |
deviceEtag |
string | 디바이스 레지스트리에 대한 업데이트의 일관성을 확인하는 유효성 검사기입니다. 각 deviceEtag는 디바이스 레지스트리마다 고유해야 합니다. |
status |
string | 디바이스 쌍의 활성화 여부를 나타냅니다. |
statusUpdateTime |
string | 마지막 디바이스 쌍 상태 업데이트의 ISO8601 타임 스탬프입니다. |
connectionState |
string | 디바이스의 연결 여부를 나타냅니다. |
lastActivityTime |
string | 마지막 활동의 ISO8601 타임스탬프입니다. |
cloudToDeviceMessageCount |
정수 | 이 디바이스에 전송된 클라우드-디바이스 메시지 횟수입니다. |
authenticationType |
string | 이 디바이스에 사용되는 인증 유형은 SAS , SelfSigned 또는 CertificateAuthority 입니다. |
x509Thumbprint |
string | 지문은 x509 인증서에 대한 고유값으로, 인증서 저장소에서 특정 인증서를 찾는 데 주로 사용됩니다. 지문은 SHA1 알고리즘을 사용하여 동적으로 생성되며 인증서에 실제로 존재하지는 않습니다. |
primaryThumbprint |
string | x509 인증서에 대한 주된 지문입니다. |
secondaryThumbprint |
string | x509 인증서에 대한 보조 지문입니다. |
version |
정수 | 디바이스 쌍이 업데이트될 때마다 하나씩 증가하는 정수입니다. |
desired |
개체 | 애플리케이션 백 엔드에서만 작성할 수 있고 디바이스에서 읽을 수 있는 속성의 일부입니다. |
reported |
개체 | 디바이스에서만 작성할 수 있고 애플리케이션 백 엔드에서 읽을 수 있는 속성의 일부입니다. |
lastUpdated |
string | 마지막 디바이스 쌍 속성 업데이트의 ISO8601 타임 스탬프입니다. |
자습서 및 방법
제목 | 설명 |
---|---|
Logic Apps를 사용하여 Azure IoT Hub 이벤트에 관한 이메일 알림 보내기 | 논리 앱은 사용자의 IoT Hub에 디바이스가 추가될 때마다 알림 이메일을 보냅니다. |
작업을 트리거하기 위해 Event Grid를 사용하여 IoT Hub 이벤트에 대응 | Event Grid와 IoT Hub 통합의 개요입니다. |
디바이스 연결 및 디바이스 연결 해제 이벤트 정렬 | 디바이스 연결 상태 이벤트 정렬하는 방법을 보여 줍니다. |
다음 단계
- Azure Event Grid에 대한 소개는 Event Grid란?을 참조하세요.
- IoT Hub 및 Event Grid와 함께 작동하는 방법에 대해 알아보려면 동작을 트리거하기 위해 Event Grid를 사용하여 IoT Hub 이벤트에 대응을 참조하세요.