Partilhar via


Esquemas de eventos não telemétricos do Hub IoT do Azure

Este artigo fornece as propriedades e esquemas para eventos não telemétricos emitidos pelo Hub IoT do Azure. Os eventos que não são de telemetria são diferentes das mensagens de dispositivo para nuvem e de nuvem para dispositivo, pois o Hub IoT emite esses eventos em resposta a alterações de estado específicas associadas aos seus dispositivos. Por exemplo, alterações no ciclo de vida, como um dispositivo ou módulo sendo criado ou excluído, ou alterações no estado da conexão, como um dispositivo ou módulo se conectando ou desconectando.

Você pode rotear eventos que não sejam de telemetria usando o roteamento de mensagens ou alcançar eventos que não sejam de telemetria usando a Grade de Eventos do Azure. Para saber mais sobre o roteamento de mensagens do Hub IoT, consulte Roteamento de mensagens do Hub IoT e Reagir a eventos do Hub IoT usando a Grade de Eventos.

Os exemplos de eventos neste artigo foram capturados usando o comando da CLI do az iot hub monitor-events Azure. Você pode ver um subconjunto de propriedades incluídas nos eventos que chegam a um ponto de extremidade de roteamento de mensagens.

Tipos de eventos disponíveis

O Hub IoT do Azure emite os eventos não telemétricos nas seguintes categorias:

Categoria do evento Description
Eventos de estado de conexão do dispositivo Emitido quando um dispositivo se conecta ou desconecta de um hub IoT.
Eventos do ciclo de vida do dispositivo Emitido quando um dispositivo ou módulo é criado ou excluído de um hub IoT.
Eventos de alteração de gêmeos de dispositivo Emitido quando um dispositivo ou módulo twin é alterado ou substituído.
Eventos de alteração de duplos digitais Emitido quando o gêmeo digital de um dispositivo ou módulo é alterado ou substituído.

Propriedades comuns do evento

Os eventos que não são de telemetria compartilham várias propriedades comuns.

Propriedades do sistema

O Hub IoT define as seguintes propriedades do sistema em cada evento.

Propriedade Type Description Palavra-chave para consulta de roteamento
codificação de conteúdo string UTF-8 $contentEncoding
tipo de conteúdo string application/json $contentType
Correlação-ID string Um ID exclusivo que identifica o evento. $correlationId
ID de utilizador string O nome do Hub IoT que gerou o evento. $userId
iothub-connection-device-id string O ID do dispositivo. $connectionDeviceId
iothub-conexão-módulo-id string O ID do módulo. Esta propriedade é saída apenas para o ciclo de vida do módulo e eventos gêmeos. $connectionModuleId
iothub-enqueuedtime Número Data e hora de envio da notificação. Em consultas de roteamento, use um carimbo de data/hora ISO8601 , por exemplo, $enqueuedTime > "2022-06-06T22:56:06Z" $enqueuedTime
iothub-message-source string A categoria de evento que identifica a origem da mensagem. Por exemplo, deviceLifecycleEvents. N/A

Propriedades da aplicação

O Hub IoT define as seguintes propriedades de aplicativo em cada evento.

Propriedade Type Description
deviceId string O ID do dispositivo.
hubName string O nome do Hub IoT que gerou o evento.
iothub-message-schema string O esquema de mensagem associado à categoria do evento; por exemplo, deviceLifecycleNotification.
moduleId string O ID do módulo. Esta propriedade é saída apenas para o ciclo de vida do módulo e eventos de alteração gêmea.
operaçãoCarimbo de data/hora string O carimbo de data/hora ISO8601 da operação.
opType string O identificador da operação que gerou o evento. Por exemplo, createDeviceIdentity ou deleteDeviceIdentity.

Em consultas de roteamento, use o nome da propriedade. Por exemplo, deviceId = "my-device".

Eventos de estado de conexão

Os eventos de estado de conexão são emitidos sempre que um dispositivo ou módulo se conecta ou desconecta do hub IoT.

Propriedades do aplicativo: A tabela a seguir mostra como as propriedades do aplicativo são definidas para eventos de estado de conexão:

Property valor
iothub-message-schema deviceConnectionStateNotification
opType dispositivoConectado ou dispositivoDesconectado

Ambos os módulos e dispositivos usam as propriedades e deviceDisconnected do aplicativo para relatar eventos de deviceConnected estado de conexão. Se o evento veio de um módulo, o evento também inclui uma moduleId propriedade. Se não houver propriedade moduleId , o evento veio de um dispositivo.

Propriedades do sistema: A tabela a seguir mostra como as propriedades do sistema são definidas para eventos de estado de conexão:

Property valor
iothub-message-source deviceConnectionStateEvents

Corpo: O corpo contém um número de sequência. O número de sequência é uma representação de cadeia de caracteres de um número hexadecimal. Você pode usar a comparação de cadeia de caracteres para identificar o número maior. Se você estiver convertendo a cadeia de caracteres em hex, o número será um número de 256 bits. O número de sequência está estritamente aumentando, de modo que o evento mais recente tem um número maior do que os eventos mais antigos. Isso é útil se você tiver conexões e desconexões frequentes de dispositivos e quiser garantir que apenas o evento mais recente seja usado para disparar uma ação downstream.

Exemplo

O JSON a seguir mostra um evento de estado de conexão do dispositivo emitido quando um dispositivo se desconecta.

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

Eventos do ciclo de vida do dispositivo

Os eventos do ciclo de vida do dispositivo são emitidos sempre que um dispositivo ou módulo é criado ou excluído do registro de identidade. Para obter mais detalhes sobre quando os eventos do ciclo de vida do dispositivo são gerados, consulte Notificações do ciclo de vida do dispositivo e do módulo.

Propriedades do aplicativo: A tabela a seguir mostra como as propriedades do aplicativo são definidas para eventos do ciclo de vida do dispositivo:

Property valor
iothub-message-schema dispositivoCiclo de VidaNotificação
opType Um dos seguintes valores: createDeviceIdentity, deleteDeviceIdentity.

Ambos os módulos e dispositivos usam as propriedades e deleteDeviceIdentity do aplicativo para relatar eventos de createDeviceIdentity estado de conexão. Se o evento veio de um módulo, o evento também inclui uma moduleId propriedade. Se não houver propriedade moduleId , o evento veio de um dispositivo.

Propriedades do sistema: A tabela a seguir mostra como as propriedades do sistema são definidas para eventos do ciclo de vida do dispositivo:

Property valor
iothub-message-source dispositivoCiclo de VidaEventos

Corpo: O corpo contém uma representação do dispositivo gêmeo ou módulo gêmeo. Ele inclui o ID do dispositivo e o ID do módulo, o etag gêmeo, a propriedade version e as tags, propriedades e metadados associados do gêmeo.

Exemplo

O JSON a seguir mostra um evento do ciclo de vida do dispositivo emitido quando um módulo é criado. O evento é capturado usando o comando da CLI do 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
                }
            }
        }
    }
}

Eventos de alteração de gêmeos de dispositivo

Os eventos de alteração de gêmeos de dispositivo são emitidos sempre que um gêmeo de dispositivo ou um gêmeo de módulo é atualizado ou substituído. Em alguns casos, várias alterações podem ser empacotadas em um único evento. Para saber mais, consulte Operações de back-end gêmeas de dispositivo ou Operações de back-end gêmeas de módulo.

Propriedades do aplicativo: A tabela a seguir mostra como as propriedades do aplicativo são definidas para eventos de alteração de gêmeos de dispositivo:

Property valor
iothub-message-schema twinChangeNotification
opType Um dos seguintes valores: replaceTwin ou updateTwin.

Propriedades do sistema: A tabela a seguir mostra como as propriedades do sistema são definidas para eventos de alteração de gêmeos de dispositivo:

Property valor
iothub-message-source twinChangeEvents

Corpo: Em uma atualização, o corpo contém a propriedade version do gêmeo e as tags e propriedades atualizadas e seus metadados associados. Em uma substituição, o corpo contém o ID do dispositivo e o ID do módulo, o etag gêmeo, a propriedade version e todas as tags, propriedades e metadados associados do dispositivo ou módulo gêmeo.

Exemplo

O JSON a seguir mostra um evento de alteração gêmea emitido para uma atualização de uma propriedade desejada e uma tag em um gêmeo de módulo. O evento é capturado usando o comando da CLI do 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
                }
            }
        }
    }
}

Próximos passos

  • Para saber mais sobre o roteamento de mensagens, consulte Roteamento de mensagens do Hub IoT.

  • Para saber como adicionar consultas às suas rotas de mensagens, consulte Sintaxe da consulta de roteamento de mensagens do Hub IoT.

  • Para saber mais sobre a estrutura de mensagens de dispositivo para nuvem e de nuvem para dispositivo, consulte Criar e ler mensagens do Hub IoT.