Monitorar o status de 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 diretrizes para ajudar 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 status Custo Esforço para compilar
Propriedade connectionState do dispositivo gêmeo Intermitente Baixo Baixo
Grade de Eventos 60 segundos Baixo Baixo
Padrão de pulsação de dispositivo personalizado Personalizado Alto Alto

Devido à confiabilidade, ao baixo custo e à facilidade de uso, a Grade de Eventos é recomendada como a solução de monitoramento preferencial para a maioria dos clientes.

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

ConnectionState do dispositivo gêmeo

Cada identidade do dispositivo Hub IoT contém uma propriedade chamada connectionState que relata conectado ou desconectado. Essa propriedade representa o reconhecimento do Hub IoT do status da conexão de um dispositivo.

A propriedade de estado de conexão tem várias limitações:

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

Por esses motivos, é recomendável que você use o somente o campo connectionState durante o desenvolvimento e a depuração. Soluções de IoT não devem consultar o campo no 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.

Grade de Eventos

A Grade de Eventos é recomendada como a solução de monitoramento preferencial para a maioria dos clientes.

Assine os eventos deviceConnected e deviceDisconnected na Grade de Eventos para obter alertas e monitorar o estado de conexão do dispositivo.

Use os seguintes artigos para saber como integrar eventos conectados e desconectados do dispositivo 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 em WebSockets. As solicitações feitas somente com HTTPS não dispararão notificações de estado de conexão do dispositivo.

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

Fora dos SDKs do IoT do Azure, no MQTT, essas operações são equivalentes a assinar ou publicar operações nos Tópicosde mensagens apropriados. Em AMQP, essas operações equivalem a anexar ou transferir uma mensagem nos caminhos de link apropriados.

Limitações da Grade de Eventos

O uso da Grade de Eventos para monitorar o status do dispositivo tem as seguintes limitações:

  • A Grade de Eventos não relata cada evento de conexão e desconexão de dispositivos individual. Em vez disso, ela 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 em até um minuto e as alterações de estado individuais podem não ser relatadas se vários eventos ocorrerem dentro da janela de 60 segundos.
  • Os dispositivos que usam o 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 uma dessas limitações afetar sua capacidade de usar a Grade de Eventos para monitoramento de status do dispositivo, considere criar um padrão de pulsação de dispositivo personalizado.

Padrão de pulsação de dispositivo

Se você precisar saber o estado da conexão de seus dispositivos, mas as limitações da Grade de Eventos forem muito restritivas para sua solução, você poder 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 de tempo fixo (por exemplo, pelo menos uma vez a cada hora). Mesmo que um dispositivo não tenha dados para enviar, ele enviará uma mensagem vazia do dispositivo para a nuvem geralmente com uma propriedade que a identifique 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 de um dispositivo no tempo esperado, ela considerará que há um problema com ele.

Limitações de pulsação do dispositivo

Como as mensagens de pulsação são implementadas como mensagens de dispositivo para nuvem, elas contam na sua cota de mensagens e limitações do Hub IoT.

Padrão de tempo de expiração curto

Se uma solução IoT usar o estado de conexão apenas para determinar se deve enviar mensagens de nuvem para dispositivo para um dispositivo e as mensagens não forem difundidas para conjuntos grandes de dispositivos, considere usar o padrão de tempo de expiração curto como uma alternativa mais simples em relação ao padrão de pulsação. O padrão de tempo de expiração curto é uma maneira de determinar se é necessário enviar mensagens da nuvem para o dispositivo enviando mensagens com um curto tempo de expiração de mensagem 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 monitoramento

Uma implementação mais complexa poderia incluir as informações do Azure Monitor e do Azure Resource Health para identificar os 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 individuais do dispositivo.

Para saber mais sobre como usar esses serviços com o Hub IoT, confira Monitorar o Hub IoT e Verificar a integridade do recurso 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, confira Monitorar, diagnosticar e solucionar problemas de conectividade do dispositivo.