Nicht-Telemetrieereignisschemas von Azure IoT Hub
Dieser Artikel enthält die Eigenschaften und Schemas für Nicht-Telemetrie-Ereignisse, die von Azure IoT Hub ausgegeben werden. Ereignisse, die nicht die Telemetrie betreffen, unterscheiden sich von Gerät-zu-Cloud- und Cloud-zu-Gerät-Nachrichten dadurch, dass sie von IoT Hub als Reaktion auf bestimmte Arten von Zustandsänderungen ausgegeben werden, die Ihren Geräten zugeordnet sind. Zum Beispiel Änderungen des Lebenszyklus wie das Erstellen oder Löschen eines Geräts oder Moduls oder Änderungen des Verbindungsstatus wie das Verbinden oder Trennen eines Geräts oder Moduls.
Sie können Nicht-Telemetrieereignisse mithilfe des Nachrichtenroutings weiterleiten oder mithilfe von Azure Event Grid zu Nicht-Telemetrieereignissen gelangen. Weitere Informationen zum IoT Hub-Nachrichtenrouting finden Sie unter IoT Hub-Nachrichtenrouting und React auf IoT Hub-Ereignisse mithilfe von Event Grid.
Die Ereignisbeispiele in diesem Artikel wurden mithilfe des az iot hub monitor-events
Azure CLI-Befehls erfasst. Möglicherweise sehen Sie eine Teilmenge von Eigenschaften, die in den Ereignissen enthalten sind, die an einem Nachrichtenweiterleitungsendpunkt ankommen.
Verfügbare Ereignistypen
Azure IoT Hub gibt die Nicht-Telemetrieereignisse in den folgenden Kategorien aus:
Ereigniskategorie | BESCHREIBUNG |
---|---|
Geräteverbindungsstatus-Ereignisse | Wird ausgegeben, wenn ein Gerät eine Verbindung zu einem IoT-Hub herstellt oder trennt. |
Ereignisse im Gerätelebenszyklus | Wird ausgegeben, wenn ein Gerät oder Modul auf einem IoT-Hub erstellt oder gelöscht wird. |
Änderungsereignisse für Gerätezwillinge | Wird ausgegeben, wenn ein Gerät oder Modulzwilling geändert oder ersetzt wird. |
Änderungsereignisse bei digitalen Zwillingen | Wird ausgegeben, wenn der digitale Zwilling eines Geräts oder Moduls geändert oder ersetzt wird. |
Allgemeine Ereigniseigenschaften
Nicht-Telemetrie-Ereignisse haben mehrere gemeinsame Eigenschaften.
Systemeigenschaften
Die folgenden Systemeigenschaften werden von IoT Hub für jedes Ereignis festgelegt.
Eigenschaft | Typ | BESCHREIBUNG | Schlüsselwort für Routingabfrage |
---|---|---|---|
content-encoding | Zeichenfolge | UTF-8 | $contentEncoding |
content-type | Zeichenfolge | Anwendung/json | $contentType |
correlation-id | Zeichenfolge | Eine eindeutige ID, die das Ereignis identifiziert. | $correlationId |
user-id | Zeichenfolge | Der Name von IoT Hub, der das Ereignis generiert hat. | $userId |
iothub-connection-device-id | string | Der Geräte-ID | $connectionDeviceId |
iothub-connection-module-id | Zeichenfolge | Die Modul-ID. Diese Eigenschaft wird nur für Modullebenszyklus- und Zwillingsereignisse ausgegeben. | $connectionModuleId |
iothub-enqueuedtime | number | Datum und Uhrzeit des Versands der Benachrichtigung. Verwenden Sie in Routing-Abfragen einen ISO8601-Zeitstempel; zum Beispiel $enqueuedTime > "2022-06-06T22:56:06Z" |
$enqueuedTime |
iothub-message-source | Zeichenfolge | Die Ereigniskategorie, die die Nachrichtenquelle identifiziert. Beispiel: deviceLifecycleEvents. | – |
Anwendungseigenschaften
Die folgenden Anwendungseigenschaften werden von IoT Hub für jedes Ereignis festgelegt.
Eigenschaft | Typ | Beschreibung |
---|---|---|
deviceId | Zeichenfolge | Der Geräte-ID |
hubName | Zeichenfolge | Der Name des IoT Hub, der das Ereignis generiert hat. |
iothub-message-schema | Zeichenfolge | Das der Ereigniskategorie zugeordnete Nachrichtenschema; beispielsweise deviceLifecycleNotification. |
moduleId | Zeichenfolge | Die Modul-ID. Diese Eigenschaft wird nur für Modullebenszyklus- und Zwillingsänderungsereignisse ausgegeben. |
operationTimestamp | Zeichenfolge | Der ISO8601-Zeitstempel des Vorgangs. |
opType | Zeichenfolge | Der Bezeichner für den Vorgang, der das Ereignis generiert hat. Beispiel: createDeviceIdentity oder deleteDeviceIdentity. |
Verwenden Sie in Routing-Abfragen den Eigenschaftsnamen. Beispiel: deviceId = "my-device"
.
Geräteverbindungsstatus-Ereignisse
Verbindungsstatusereignisse werden immer dann ausgegeben, wenn ein Gerät oder Modul eine Verbindung zum IoT-Hub herstellt oder trennt.
Anwendungseigenschaften: Die folgende Tabelle zeigt, wie Anwendungseigenschaften für Verbindungsstatusereignisse festgelegt werden:
Eigenschaft | Wert |
---|---|
iothub-message-schema | deviceConnectionStateNotification |
opType | deviceConnected oder deviceDisconnected |
Sowohl Module als auch Geräte verwenden die Anwendungseigenschaften deviceConnected
und deviceDisconnected
, um Verbindungsstatusereignisse zu melden. Wenn das Ereignis von einem Modul stammt, enthält das Ereignis auch eine moduleId
-Eigenschaft. Wenn keine moduleId
-Eigenschaft vorhanden ist, stammt das Ereignis von einem Gerät.
Systemeigenschaften: Die folgende Tabelle zeigt, wie Systemeigenschaften für Verbindungsstatusereignisse festgelegt werden:
Eigenschaft | Wert |
---|---|
iothub-message-source | deviceConnectionStateEvents |
Der Body: Der Body enthält eine Sequenznummer. Die Sequenznummer ist eine Zeichenfolgendarstellung einer Hexadezimalzahl. Sie können einen Zeichenfolgenvergleich verwenden, um die größere Zahl zu ermitteln. Wenn Sie die Zeichenfolge in Hex umwandeln, ist die Zahl eine 256-Bit-Zahl. Die Sequenznummer ist immer ansteigend, sodass das letzte Ereignis eine höhere Nummer als frühere Ereignisse hat. Dies ist nützlich, wenn Sie Geräte häufig verbinden und trennen und sicherstellen möchten, dass nur das letzte Ereignis verwendet wird, um eine nachgelagerte Aktion auszulösen.
Beispiel
Das folgende JSON zeigt ein Geräteverbindungsstatusereignis, das ausgegeben wird, wenn ein Gerät die Verbindung trennt.
{
"event": {
"origin": "contoso-device-1",
"module": "",
"interface": "",
"component": "",
"properties": {
"system": {
"content_encoding": "utf-8",
"content_type": "application/json",
"correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd",
"user_id": "contoso-routing-hub"
},
"application": {
"hubName": "contoso-routing-hub",
"deviceId": "contoso-device-1",
"opType": "deviceDisconnected",
"iothub-message-schema": "deviceConnectionStateNotification",
"operationTimestamp": "2022-06-01T18:43:04.5561024Z"
}
},
"annotations": {
"iothub-connection-device-id": "contoso-device-1",
"iothub-enqueuedtime": 1654109018051,
"iothub-message-source": "deviceConnectionStateEvents",
"x-opt-sequence-number": 72,
"x-opt-offset": "37344",
"x-opt-enqueued-time": 1654109018176
},
"payload": {
"sequenceNumber": "000000000000000001D8713FF7E0851400000002000000000000000000000007"
}
}
}
Ereignisse im Gerätelebenszyklus
Gerätelebenszyklus-Ereignisse werden immer dann ausgegeben, wenn ein Gerät oder Modul erstellt oder aus der Identitätsregistrierung gelöscht wird. Weitere Einzelheiten dazu, wann Gerätelebenszyklus-Ereignisse generiert werden, finden Sie unter Geräte- und Modullebenszyklus-Benachrichtigungen.
Anwendungseigenschaften: Die folgende Tabelle zeigt, wie Anwendungseigenschaften für Gerätelebenszyklusereignisse festgelegt werden:
Eigenschaft | Wert |
---|---|
iothub-message-schema | deviceLifecycleNotification |
opType | Einer der folgenden Werte: createDeviceIdentity, deleteDeviceIdentity. |
Sowohl Module als auch Geräte verwenden die Anwendungseigenschaften createDeviceIdentity
und deleteDeviceIdentity
, um Verbindungsstatusereignisse zu melden. Wenn das Ereignis von einem Modul stammt, enthält das Ereignis auch eine moduleId
-Eigenschaft. Wenn keine moduleId
-Eigenschaft vorhanden ist, stammt das Ereignis von einem Gerät.
Systemeigenschaften: Die folgende Tabelle zeigt, wie Systemeigenschaften für Gerätelebenszyklusereignisse festgelegt werden:
Eigenschaft | Wert |
---|---|
iothub-message-source | deviceLifecycleEvents |
Der Body: Der Body enthält eine Darstellung des Gerätezwillings oder Modulzwillings. Es enthält die Geräte-ID und die Modul-ID, das Zwillings-ETag, die Versionseigenschaft und die Tags, Eigenschaften und zugehörigen Metadaten des Zwillings.
Beispiel
Das folgende JSON zeigt ein Gerätelebenszyklus-Ereignis, das ausgegeben wird, wenn ein Modul erstellt wird. Das Ereignis wird mithilfe des az iot hub monitor-events
Azure CLI-Befehls erfasst.
{
"event": {
"origin": "contoso-device-2",
"module": "module-1",
"interface": "",
"component": "",
"properties": {
"system": {
"content_encoding": "utf-8",
"content_type": "application/json",
"correlation_id": "c5a4e6986c",
"user_id": "contoso-routing-hub"
},
"application": {
"hubName": "contoso-routing-hub",
"deviceId": "contoso-device-2",
"operationTimestamp": "2022-05-27T18:49:38.4904785Z",
"moduleId": "module-1",
"opType": "createDeviceIdentity",
"iothub-message-schema": "deviceLifecycleNotification"
}
},
"annotations": {
"iothub-connection-device-id": "contoso-device-2",
"iothub-connection-module-id": "module-1",
"iothub-enqueuedtime": 1653677378534,
"iothub-message-source": "deviceLifecycleEvents",
"x-opt-sequence-number": 62,
"x-opt-offset": "31768",
"x-opt-enqueued-time": 1653677378643
},
"payload": {
"deviceId": "contoso-device-2",
"moduleId": "module-1",
"etag": "AAAAAAAAAAE=",
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "0001-01-01T00:00:00Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "0001-01-01T00:00:00Z"
},
"$version": 1
}
}
}
}
}
Änderungsereignisse für Gerätezwillinge
Änderungsereignisse für Gerätezwillinge werden ausgegeben, wenn ein Gerätezwilling oder ein Modulzwilling aktualisiert oder ersetzt wird. In einigen Fällen können mehrere Änderungen in einem einzigen Ereignis gepackt werden. Weitere Informationen finden Sie unter Gerätezwillings-Back-End-Vorgänge oder Modulzwillings-Back-End-Vorgänge.
Anwendungseigenschaften: Die folgende Tabelle zeigt, wie Anwendungseigenschaften für Gerätezwillings-Änderungsereignisse festgelegt werden:
Eigenschaft | Wert |
---|---|
iothub-message-schema | twinChangeNotification |
opType | Einer der folgenden Werte: replaceTwin oder updateTwin. |
Systemeigenschaften: Die folgende Tabelle zeigt, wie Systemeigenschaften für Gerätezwillings-Änderungsereignisse festgelegt werden:
Eigenschaft | Wert |
---|---|
iothub-message-source | twinChangeEvents |
Der Body: Auf einem Update enthält der Body die Versionseigenschaft des Zwillings und die aktualisierten Tags und Eigenschaften und deren zugeordnete Metadaten. Bei einem Austausch enthält der Text die Geräte-ID und die Modul-ID, das Zwillings-ETag, die Versionseigenschaft und alle Tags, Eigenschaften und zugehörigen Metadaten des Geräte- oder Modulzwillings.
Beispiel
Das folgende JSON zeigt ein Zwillingsänderungsereignis, das für eine Aktualisierung einer gewünschten Eigenschaft und eines Tags auf einem Modulzwilling ausgegeben wird. Das Ereignis wird mithilfe des az iot hub monitor-events
Azure CLI-Befehls erfasst.
{
"event": {
"origin": "contoso-device-3",
"module": "module-1",
"interface": "",
"component": "",
"properties": {
"system": {
"content_encoding": "utf-8",
"content_type": "application/json",
"correlation_id": "4d1f1e2e74f",
"user_id": "contoso-routing-hub"
},
"application": {
"hubName": "contoso-routing-hub",
"deviceId": "contoso-device-3",
"operationTimestamp": "2022-06-01T22:27:50.2612586Z",
"moduleId": "module-1",
"iothub-message-schema": "twinChangeNotification",
"opType": "updateTwin"
}
},
"annotations": {
"iothub-connection-device-id": "contoso-device-3",
"iothub-connection-module-id": "module-1",
"iothub-enqueuedtime": 1654122470282,
"iothub-message-source": "twinChangeEvents",
"x-opt-sequence-number": 17,
"x-opt-offset": "12352",
"x-opt-enqueued-time": 1654122470329
},
"payload": {
"version": 7,
"tags": {
"tag1": "new value"
},
"properties": {
"desired": {
"property1": "new value",
"$metadata": {
"$lastUpdated": "2022-06-01T22:27:50.2612586Z",
"$lastUpdatedVersion": 6,
"property1": {
"$lastUpdated": "2022-06-01T22:27:50.2612586Z",
"$lastUpdatedVersion": 6
}
},
"$version": 6
}
}
}
}
}
Nächste Schritte
Informationen zum Nachrichtenrouting finden Sie unter IoT Hub-Nachrichtenrouting.
Informationen zum Hinzufügen von Abfragen zu Ihren Nachrichtenrouten finden Sie unter IoT Hub-Abfragesyntax für das Nachrichtenrouting.
Informationen zur Struktur von Gerät-zu-Cloud- und Cloud-zu-Gerät-Nachrichten finden Sie unter Erstellen und Lesen von IoT Hub-Nachrichten.