Schematy zdarzeń spoza telemetrii usługi Azure IoT Hub

Ten artykuł zawiera właściwości i schematy zdarzeń nie telemetrycznych emitowanych przez usługę Azure IoT Hub. Zdarzenia nie telemetryczne różnią się od komunikatów z urządzenia do chmury i chmury do urządzenia, które są emitowane bezpośrednio przez usługę IoT Hub w odpowiedzi na określone rodzaje zmian stanu skojarzonych z urządzeniami. Na przykład zmiany cyklu życia, takie jak tworzone lub usuwane urządzenie lub moduł, albo zmiany stanu połączenia, takie jak łączenie lub rozłączanie urządzenia lub modułu.

Zdarzenia niezwiązane z telemetrią można kierować przy użyciu routingu komunikatów lub dotrzeć do zdarzeń niezwiązanych z telemetrią przy użyciu usługi Azure Event Grid. Aby dowiedzieć się więcej o routingu komunikatów usługi IoT Hub, zobacz Routing komunikatów usługi IoT Hub i Reagowanie na zdarzenia usługi IoT Hub przy użyciu usługi Event Grid.

Przykłady zdarzeń w tym artykule zostały przechwycone przy użyciu polecenia interfejsu wiersza polecenia platformy az iot hub monitor-events Azure. Może zostać wyświetlony podzestaw właściwości uwzględnionych w zdarzeniach, które docierają do punktu końcowego routingu komunikatów.

Dostępne typy zdarzeń

Usługa Azure IoT Hub emituje zdarzenia niezwiązane z telemetrią w następujących kategoriach:

Kategoria zdarzenia opis
Zdarzenia stanu połączenia urządzenia Emitowane, gdy urządzenie łączy się z centrum IoT Hub lub rozłącza się z nią.
Zdarzenia cyklu życia urządzenia Emitowane po utworzeniu lub usunięciu urządzenia lub modułu z centrum IoT.
Zdarzenia zmiany bliźniaczej reprezentacji urządzenia Emitowane po zmianie lub zastąpieniu bliźniaczej reprezentacji urządzenia lub modułu.
Zdarzenia zmiany cyfrowej reprezentacji bliźniaczej Emitowane po zmianie lub zastąpieniu cyfrowej reprezentacji bliźniaczej urządzenia lub modułu.

Typowe właściwości zdarzenia

Zdarzenia niezwiązane z telemetrią mają kilka typowych właściwości.

Właściwości systemu

Następujące właściwości systemowe są ustawiane przez usługę IoT Hub dla każdego zdarzenia.

Właściwość Type Opis Słowo kluczowe dla zapytania routingu
kodowanie zawartości string utf-8 $contentEncoding
typ zawartości string application/json $contentType
identyfikator korelacji string Unikatowy identyfikator identyfikujący zdarzenie. $correlationId
identyfikator użytkownika string Nazwa usługi IoT Hub, która wygenerowała zdarzenie. $userId
iothub-connection-device-id string Identyfikator urządzenia. $connectionDeviceId
iothub-connection-module-id string Identyfikator modułu. Ta właściwość jest danymi wyjściowymi tylko dla cyklu życia modułu i zdarzeń bliźniaczych. $connectionModuleId
iothub-enqueuedtime Liczba Data i godzina wysłania powiadomienia. W zapytaniach routingu użyj znacznika czasu ISO8601 , na przykład $enqueuedTime > "2022-06-06T22:56:06Z" $enqueuedTime
iothub-message-source string Kategoria zdarzeń identyfikująca źródło komunikatów. Na przykład deviceLifecycleEvents. Nie dotyczy

Właściwości aplikacji

Następujące właściwości aplikacji są ustawiane przez usługę IoT Hub dla każdego zdarzenia.

Właściwość Type Opis
deviceId string Identyfikator urządzenia.
hubName string Nazwa centrum IoT Hub, które wygenerowało zdarzenie.
iothub-message-schema string Schemat komunikatu skojarzony z kategorią zdarzeń; na przykład deviceLifecycleNotification.
moduleId string Identyfikator modułu. Ta właściwość jest danymi wyjściowymi tylko dla cyklu życia modułu i zdarzeń zmiany reprezentacji bliźniaczej.
operationTimestamp string Sygnatura czasowa ISO8601 operacji.
Optype string Identyfikator operacji, która wygenerowała zdarzenie. Na przykład createDeviceIdentity lub deleteDeviceIdentity.

W zapytaniach routingu użyj nazwy właściwości. Na przykład deviceId = "my-device".

Zdarzenia stanu Połączenie ion

zdarzenia stanu Połączenie ion są emitowane za każdym razem, gdy urządzenie lub moduł łączy się lub rozłącza z centrum IoT.

Właściwości aplikacji: W poniższej tabeli przedstawiono sposób ustawiania właściwości aplikacji dla zdarzeń stanu połączenia:

Właściwości Wartość
iothub-message-schema device Połączenie ionStateNotification
Optype Jedną z następujących wartości: device Połączenie ed, deviceDisconnected, module Połączenie ed lub moduleDisconnected.

Właściwości systemu: W poniższej tabeli przedstawiono sposób ustawiania właściwości systemu dla zdarzeń stanu połączenia:

Właściwości Wartość
iothub-message-source device Połączenie ionStateEvents

Treść: treść zawiera numer sekwencji. Numer sekwencji jest reprezentacją ciągu liczby szesnastkowej. Możesz użyć porównania ciągów, aby zidentyfikować większą liczbę. Jeśli konwertujesz ciąg na szesnastkowy, liczba będzie liczbą 256-bitową. Liczba sekwencji jest ściśle zwiększana, a najnowsze zdarzenie będzie miało większą liczbę niż inne zdarzenia. Jest to przydatne, jeśli często łączy się i rozłączasz urządzenia i chcesz upewnić się, że do wyzwalania akcji podrzędnej jest używane tylko najnowsze zdarzenie.

Przykład

Poniższy kod JSON pokazuje zdarzenie stanu połączenia urządzenia emitowane po rozłączeniu urządzenia.

{
    "event": {
        "origin": "contoso-device-1",
        "module": "",
        "interface": "",
        "component": "",
        "properties": {
            "system": {
                "content_encoding": "utf-8",
                "content_type": "application/json",
                "correlation_id": "98dcbcf6-3398-c488-c62c-06330e65ea98",
                "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"
        }
    }
}

Zdarzenia cyklu życia urządzenia

Zdarzenia cyklu życia urządzenia są emitowane za każdym razem, gdy urządzenie lub moduł zostanie utworzone lub usunięte z rejestru tożsamości. Aby uzyskać więcej informacji na temat generowania zdarzeń cyklu życia urządzenia, zobacz Powiadomienia dotyczące cyklu życia urządzenia i modułu.

Właściwości aplikacji: W poniższej tabeli przedstawiono sposób ustawiania właściwości aplikacji dla zdarzeń cyklu życia urządzenia:

Właściwości Wartość
iothub-message-schema deviceLifecycleNotification
Optype Jedna z następujących wartości: createDeviceIdentity, deleteDeviceIdentity, createModuleIdentity lub deleteModuleIdentity.

Właściwości systemu: W poniższej tabeli przedstawiono sposób ustawiania właściwości systemu dla zdarzeń cyklu życia urządzenia:

Właściwości Wartość
iothub-message-source deviceLifecycleEvents

Treść: treść zawiera reprezentację bliźniaczej reprezentacji urządzenia lub bliźniaczej reprezentacji modułu. Zawiera identyfikator urządzenia i identyfikator modułu, bliźniacze elementy etag, właściwość wersji oraz tagi, właściwości i skojarzone metadane reprezentacji bliźniaczej.

Przykład

Poniższy kod JSON przedstawia zdarzenie cyklu życia urządzenia emitowane podczas tworzenia modułu. Zdarzenie jest przechwytywane przy użyciu polecenia interfejsu wiersza polecenia platformy az iot hub monitor-events Azure.

{
    "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": "createModuleIdentity",
                "iothub-message-schema": "moduleLifecycleNotification"
            }
        },
        "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
                }
            }
        }
    }
}

Zdarzenia zmiany bliźniaczej reprezentacji urządzenia

Zdarzenia zmiany bliźniaczej reprezentacji urządzenia są emitowane za każdym razem, gdy bliźniacze reprezentacje urządzenia lub bliźniacze reprezentacje modułu zostaną zaktualizowane lub zastąpione. W niektórych przypadkach w jednym zdarzeń może zostać spakowanych kilka zmian. Aby dowiedzieć się więcej, zobacz Operacje zaplecza bliźniaczej reprezentacji urządzenia lub Operacje zaplecza bliźniaczej reprezentacji modułu.

Właściwości aplikacji: W poniższej tabeli przedstawiono sposób ustawiania właściwości aplikacji dla zdarzeń zmiany bliźniaczej reprezentacji urządzenia:

Właściwości Wartość
iothub-message-schema twinChangeNotification
Optype Jedna z następujących wartości: replaceTwin lub updateTwin.

Właściwości systemu: W poniższej tabeli przedstawiono sposób ustawiania właściwości systemu dla zdarzeń zmiany bliźniaczej reprezentacji urządzenia:

Właściwości Wartość
iothub-message-source twinChangeEvents

Treść: w aktualizacji treść zawiera właściwość wersji bliźniaczej reprezentacji bliźniaczej oraz zaktualizowane tagi i właściwości oraz skojarzone z nimi metadane. W zamian treść zawiera identyfikator urządzenia i identyfikator modułu, bliźniacze etag, właściwość wersji oraz wszystkie tagi, właściwości i skojarzone metadane bliźniaczej reprezentacji urządzenia lub modułu.

Przykład

Poniższy kod JSON przedstawia zdarzenie zmiany bliźniaczej reprezentacji emitowane dla aktualizacji żądanej właściwości i tagu na bliźniaczej reprezentacji modułu. Zdarzenie jest przechwytywane przy użyciu polecenia interfejsu wiersza polecenia platformy az iot hub monitor-events Azure.

{
    "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
                }
            }
        }
    }
}

Następne kroki

  • Aby dowiedzieć się więcej o routingu komunikatów, zobacz Routing komunikatów usługi IoT Hub.

  • Aby dowiedzieć się, jak dodawać zapytania do tras komunikatów, zobacz Składnia zapytania routingu komunikatów usługi IoT Hub.

  • Aby dowiedzieć się więcej o strukturze komunikatów urządzenie-chmura i komunikaty z chmury do urządzenia, zobacz Tworzenie i odczytywanie komunikatów usługi IoT Hub.