hub IoT di Azure schemi di eventi non di telemetria

Questo articolo fornisce le proprietà e gli schemi per gli eventi non di telemetria generati da hub IoT di Azure. Gli eventi non di telemetria sono diversi dai messaggi da dispositivo a cloud e da cloud a dispositivo in quanto vengono generati direttamente da hub IoT in risposta a tipi specifici di modifiche dello stato associate ai dispositivi. Ad esempio, le modifiche del ciclo di vita come un dispositivo o un modulo creato o eliminato o lo stato della connessione cambia come un dispositivo o un modulo che si connette o si disconnette.

È possibile instradare eventi non di telemetria usando il routing dei messaggi o raggiungere eventi non di telemetria usando Griglia di eventi di Azure. Per altre informazioni sul routing dei messaggi hub IoT, vedere hub IoT routing dei messaggi e React to hub IoT events by using Event Grid .To learn more about hub IoT message routing, see hub IoT message routing and React to hub IoT events by using Event Grid.

Gli esempi di eventi in questo articolo sono stati acquisiti usando il comando dell'interfaccia della az iot hub monitor-events riga di comando di Azure. È possibile che venga visualizzato un subset di proprietà incluse negli eventi che arrivano a un endpoint di routing dei messaggi.

Tipi di evento disponibili

hub IoT di Azure genera gli eventi non di telemetria nelle categorie seguenti:

Categoria evento Descrizione
Eventi dello stato della connessione del dispositivo Generato quando un dispositivo si connette o si disconnette da un hub IoT.
Eventi relativi al ciclo di vita del dispositivo Generato quando un dispositivo o un modulo viene creato o eliminato da un hub IoT.
Eventi di modifica del dispositivo gemello Generato quando un dispositivo o un modulo gemello viene modificato o sostituito.
Eventi di modifica del gemello digitale Generato quando un dispositivo o un modulo gemello digitale viene modificato o sostituito.

Proprietà dell'evento comune

Gli eventi non di telemetria condividono diverse proprietà comuni.

Proprietà di sistema

Le proprietà di sistema seguenti vengono impostate da hub IoT per ogni evento.

Proprietà Type Descrizione Parola chiave per la query di routing
content-encoding string utf-8 $contentEncoding
content-type string application/json $contentType
correlation-id string ID univoco che identifica l'evento. $correlationId
user-id string Nome di hub IoT che ha generato l'evento. $userId
iothub-connection-device-id string ID del dispositivo. $connectionDeviceId
iothub-connection-module-id string ID modulo. Questa proprietà viene restituita solo per gli eventi del ciclo di vita del modulo e dei dispositivi gemelli. $connectionModuleId
iothub-enqueuedtime number Data e ora in cui è stata inviata la notifica. Nelle query di routing usare un timestamp ISO8601 , ad esempio $enqueuedTime > "2022-06-06T22:56:06Z" $enqueuedTime
iothub-message-source string Categoria di eventi che identifica l'origine del messaggio. Ad esempio, deviceLifecycleEvents. N/D

Proprietà dell'applicazione

Le proprietà dell'applicazione seguenti vengono impostate da hub IoT per ogni evento.

Proprietà Type Descrizione
deviceId string ID del dispositivo.
hubName string Nome del hub IoT che ha generato l'evento.
iothub-message-schema string Schema del messaggio associato alla categoria di eventi; ad esempio deviceLifecycleNotification.
moduleId string ID modulo. Questa proprietà viene restituita solo per gli eventi relativi al ciclo di vita del modulo e alla modifica del gemello.
operationTimestamp string Timestamp ISO8601 dell'operazione.
opType string Identificatore dell'operazione che ha generato l'evento. Ad esempio, createDeviceIdentity o deleteDeviceIdentity.

Nelle query di routing usare il nome della proprietà. Ad esempio: deviceId = "my-device".

eventi di stato Connessione ion

Connessione eventi di stato vengono generati ogni volta che un dispositivo o un modulo si connette o si disconnette dall'hub IoT.

Proprietà dell'applicazione: nella tabella seguente viene illustrato come vengono impostate le proprietà dell'applicazione per gli eventi di stato della connessione:

Proprietà valore
iothub-message-schema device Connessione ionStateNotification
opType Uno dei valori seguenti: device Connessione ed, deviceDisconnected, module Connessione ed o moduleDisconnected.

Proprietà di sistema: nella tabella seguente viene illustrato come vengono impostate le proprietà di sistema per gli eventi di stato della connessione:

Proprietà valore
iothub-message-source device Connessione ionStateEvents

Corpo: il corpo contiene un numero di sequenza. Il numero di sequenza è una rappresentazione in formato stringa di un numero esadecimale. È possibile usare il confronto tra stringhe per identificare il numero maggiore. Se si converte la stringa in esadecimale, il numero sarà un numero a 256 bit. Il numero di sequenza è sempre in aumento e all'evento più recente viene associato un numero superiore rispetto a quello di altri eventi. Ciò è utile se il dispositivo si connette e si disconnette frequentemente e si vuole assicurarsi che venga usato solo l'evento più recente per attivare un'azione downstream.

Esempio

Il codice JSON seguente mostra un evento di stato della connessione del dispositivo generato quando un dispositivo si disconnette.

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

Eventi relativi al ciclo di vita del dispositivo

Gli eventi del ciclo di vita del dispositivo vengono generati ogni volta che un dispositivo o un modulo viene creato o eliminato dal registro delle identità. Per altri dettagli sui casi in cui vengono generati gli eventi del ciclo di vita del dispositivo, vedere Notifiche relative al ciclo di vita dei dispositivi e dei moduli.

Proprietà dell'applicazione: nella tabella seguente viene illustrato come vengono impostate le proprietà dell'applicazione per gli eventi del ciclo di vita del dispositivo:

Proprietà valore
iothub-message-schema deviceLifecycleNotification
opType Uno dei valori seguenti: createDeviceIdentity, deleteDeviceIdentity, createModuleIdentity o deleteModuleIdentity.

Proprietà di sistema: nella tabella seguente viene illustrato come vengono impostate le proprietà di sistema per gli eventi del ciclo di vita del dispositivo:

Proprietà valore
iothub-message-source deviceLifecycleEvents

Corpo: il corpo contiene una rappresentazione del dispositivo gemello o del modulo gemello. Include l'ID dispositivo e l'ID del modulo, l'etag del gemello, la proprietà della versione e i tag, le proprietà e i metadati associati del gemello.

Esempio

Il codice JSON seguente mostra un evento del ciclo di vita del dispositivo generato quando viene creato un modulo. L'evento viene acquisito usando il comando dell'interfaccia della az iot hub monitor-events riga di comando di 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
                }
            }
        }
    }
}

Eventi di modifica del dispositivo gemello

Gli eventi di modifica del dispositivo gemello vengono generati ogni volta che un dispositivo gemello o un modulo gemello viene aggiornato o sostituito. In alcuni casi, è possibile creare un pacchetto di diverse modifiche in un singolo evento. Per altre informazioni, vedere Operazioni back-end del dispositivo gemello o Operazioni back-end del modulo gemello.

Proprietà dell'applicazione: nella tabella seguente viene illustrato come vengono impostate le proprietà dell'applicazione per gli eventi di modifica dei dispositivi gemelli:

Proprietà valore
iothub-message-schema twinChangeNotification
opType Uno dei valori seguenti: replaceTwin o updateTwin.

Proprietà di sistema: nella tabella seguente viene illustrato come vengono impostate le proprietà di sistema per gli eventi di modifica dei dispositivi gemelli:

Proprietà valore
iothub-message-source twinChangeEvents

Corpo: in un aggiornamento, il corpo contiene la proprietà version del gemello e i tag e le proprietà aggiornati e i relativi metadati associati. In una sostituzione, il corpo contiene l'ID dispositivo e l'ID del modulo, l'etag gemello, la proprietà della versione e tutti i tag, le proprietà e i metadati associati del dispositivo o del modulo gemello.

Esempio

Il codice JSON seguente mostra un evento di modifica del gemello generato per un aggiornamento di una proprietà desiderata e un tag in un modulo gemello. L'evento viene acquisito usando il comando dell'interfaccia della az iot hub monitor-events riga di comando di 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
                }
            }
        }
    }
}

Passaggi successivi

  • Per informazioni sul routing dei messaggi, vedere hub IoT routing dei messaggi.

  • Per informazioni su come aggiungere query alle route dei messaggi, vedere hub IoT sintassi delle query di routing dei messaggi.

  • Per informazioni sulla struttura dei messaggi da dispositivo a cloud e da cloud a dispositivo, vedere Creare e leggere hub IoT messaggi.