Monitorar o status da conexão do dispositivo

O Hub IoT do Azure dá suporte a vários métodos para monitorar o status de seus dispositivos. Este artigo apresenta os diferentes métodos de monitoramento e fornece orientação para ajudá-lo a escolher a melhor opção para sua solução de IoT.

A tabela a seguir apresenta três maneiras de monitorar o status da conexão do dispositivo:

Método Frequência de estado Custo Esforço para construir
Dispositivo twin connectionState propriedade Intermitente Mínimo Mínimo
Event Grid 60 segundos Mínimo Mínimo
Padrão de pulsação personalizado do dispositivo Personalizar Máximo Máximo

Devido à sua confiabilidade, baixo custo e facilidade de uso, recomendamos o Event Grid como a solução de monitoramento preferida para a maioria dos clientes.

No entanto, existem certas limitações ao monitoramento com a Grade de Eventos que podem desqualificá-lo para algumas soluções de IoT. Use este artigo para entender os benefícios e limitações de cada opção.

Dispositivo twin connectionState

Cada identidade de dispositivo do Hub IoT contém uma propriedade chamada connectionState que relata conectado ou desconectado. Esta propriedade representa a compreensão do Hub IoT sobre o status de conexão de um dispositivo.

A propriedade connection state tem várias limitações:

  • O estado da conexão é atualizado somente para dispositivos que usam MQTT ou AMQP.
  • As atualizações dessa propriedade dependem de pings no nível do protocolo e podem atrasar até cinco minutos.

Por esses motivos, recomendamos que você use apenas o campo connectionState durante o desenvolvimento e a depuração. As soluções de IoT não devem consultar o campo em tempo de execução. Por exemplo, não consulte o campo connectionState para verificar se um dispositivo está conectado antes de enviar uma mensagem de nuvem para dispositivo ou um SMS.

Event Grid

Recomendamos a Grade de Eventos como a solução de monitoramento preferida para a maioria dos clientes.

Inscreva-se nos eventos deviceConnected e deviceDisconnected na Grade de Eventos para receber alertas e monitorar o estado da conexão do dispositivo.

Use os seguintes artigos para saber como integrar eventos conectados e desconectados de dispositivos em sua solução de IoT:

Os eventos de estado de conexão do dispositivo estão disponíveis para dispositivos que se conectam usando o protocolo MQTT ou AMQP ou usando qualquer um desses protocolos por WebSockets. As solicitações feitas apenas com HTTPS não acionarão notificações de estado de conexão do dispositivo.

  • Para dispositivos que se conectam usando os SDKs do Azure IoT para Java, Node ou Python:
    • MQTT: os eventos de estado de conexão são enviados automaticamente.
    • AMQP: um link de nuvem para dispositivo deve ser criado para reduzir atrasos nos estados de conexão de relatórios.
  • Para dispositivos que se conectam usando os SDKs do Azure IoT para .NET ou C, os eventos de estado de conexão não serão relatados até que uma mensagem inicial de dispositivo para nuvem seja enviada ou uma mensagem de nuvem para dispositivo seja recebida.

Fora dos SDKs do Azure IoT, no MQTT essas operações equivalem a operações SUBSCRIBE ou PUBLISH nos tópicos de mensagens apropriados. No AMQP, essas operações equivalem a anexar ou transferir uma mensagem nos caminhos de link apropriados.

Limitações da grade de eventos

Usar a Grade de Eventos para monitorar o status do dispositivo vem com as seguintes limitações:

  • A Grade de Eventos não relata cada evento de conexão e desconexão de dispositivo individual. Em vez disso, ele pesquisa o status do dispositivo a cada 60 segundos e publica o estado de conexão mais recente se houver uma alteração de estado. Por esse motivo, os relatórios de alteração de estado podem ser atrasados até um minuto e as alterações de estado individuais podem não ser relatadas se vários eventos acontecerem dentro da janela de 60 segundos.
  • Os dispositivos que usam AMQP precisam de link de nuvem para dispositivo antes de poderem relatar o status do dispositivo.
  • A Grade de Eventos expõe um ponto de extremidade público que não pode ser oculto.

Se alguma dessas limitações afetar sua capacidade de usar a Grade de Eventos para monitoramento de status do dispositivo, considere a criação de um padrão de pulsação de dispositivo personalizado.

Padrão de pulsação do dispositivo

Se precisar de saber o estado da ligação dos seus dispositivos, mas as limitações da Grelha de Eventos forem demasiado restritivas para a sua solução, pode implementar o padrão de pulsação. No padrão de pulsação, o dispositivo envia mensagens do dispositivo para a nuvem pelo menos uma vez a cada período fixo de tempo (por exemplo, pelo menos uma vez a cada hora). Mesmo que um dispositivo não tenha dados para enviar, ele ainda envia uma mensagem vazia do dispositivo para a nuvem, geralmente com uma propriedade que o identifica como uma mensagem de pulsação. No lado do serviço, a solução mantém um mapa com a última pulsação recebida para cada dispositivo. Se a solução não receber uma mensagem de pulsação dentro do tempo esperado do dispositivo, ela assume que há um problema com o dispositivo.

Limitações de pulsação do dispositivo

Como as mensagens de pulsação são implementadas como mensagens do dispositivo para a nuvem, elas contam para a cota de mensagens e os limites de limitação do Hub IoT.

Padrão de tempo de expiração curto

Se uma solução de IoT usar o estado de conexão apenas para determinar se deve enviar mensagens da nuvem para o dispositivo para um dispositivo e as mensagens não forem transmitidas para grandes conjuntos de dispositivos, considere usar o padrão de tempo de expiração curto como uma alternativa mais simples ao padrão de pulsação. O padrão de tempo de expiração curto é uma maneira de determinar se as mensagens da nuvem para o dispositivo devem ser enviadas enviando mensagens com um tempo de expiração de mensagem curto e solicitando confirmações de mensagens dos dispositivos.

Para obter mais informações, consulte Expiração da mensagem (tempo de vida).

Outras opções de monitorização

Uma implementação mais complexa pode incluir as informações do Azure Monitor e do Azure Resource Health para identificar dispositivos que estão tentando se conectar ou se comunicar, mas falhando. Os painéis do Azure Monitor são úteis para ver a integridade agregada de seus dispositivos, enquanto a Grade de Eventos e os padrões de pulsação facilitam a resposta a interrupções de dispositivos individuais.

Para saber mais sobre como usar esses serviços com o Hub IoT, consulte Monitorar o Hub IoT e Verificar a integridade dos recursos do Hub IoT. Para obter informações mais específicas sobre como usar o Azure Monitor ou a Grade de Eventos para monitorar a conectividade do dispositivo, consulte Monitorar, diagnosticar e solucionar problemas de conectividade do dispositivo.