Udostępnij za pośrednictwem


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 inne niż zdarzenia telemetryczne różnią się od komunikatów urządzenie-chmura i chmura-urządzenie w usłudze IoT Hub emitujących te zdarzenia w odpowiedzi na określone zmiany stanu skojarzone 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

Usługa IoT Hub ustawia następujące właściwości systemowe 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

Usługa IoT Hub ustawia następujące właściwości aplikacji 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łączenia

Zdarzenia stanu połączenia 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 deviceConnectionStateNotification
opType deviceConnected lub deviceDisconnected

Oba moduły i urządzenia używają deviceConnected właściwości i deviceDisconnected aplikacji do raportowania zdarzeń stanu połączenia. Jeśli zdarzenie pochodzi z modułu, zdarzenie zawiera moduleId również właściwość. Jeśli nie moduleId ma właściwości, zdarzenie pochodzi z urządzenia.

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 deviceConnectionStateEvents

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, więc najnowsze zdarzenie ma większą liczbę niż starsze zdarzenia. Jest to przydatne, jeśli często łączy się i rozłącza urządzenie i chcesz upewnić się, że tylko najnowsze zdarzenie jest używane do wyzwalania akcji podrzędnej.

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

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.

Oba moduły i urządzenia używają createDeviceIdentity właściwości i deleteDeviceIdentity aplikacji do raportowania zdarzeń stanu połączenia. Jeśli zdarzenie pochodzi z modułu, zdarzenie zawiera moduleId również właściwość. Jeśli nie moduleId ma właściwości, zdarzenie pochodzi z urządzenia.

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 bliźniaczej reprezentacji.

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

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 i 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.