Supervisión del estado de conexión del dispositivo

Azure IoT Hub admite varios métodos para supervisar el estado de los dispositivos. En este artículo se presentan los diferentes métodos de supervisión y se proporcionan instrucciones para ayudar al usuario a elegir la mejor opción para la solución de IoT.

En la tabla siguiente se presentan tres maneras de supervisar el estado de conexión del dispositivo:

Método Frecuencia de estado Coste Trabajo de compilación
Propiedad connectionState del dispositivo gemelo Intermitente Bajo Bajo
Event Grid 60 segundos Bajo Bajo
Patrón de latido de dispositivo personalizado Personalizado Alto Alto

Debido a su confiabilidad, bajo costo y facilidad de uso, se recomienda Event Grid como solución de supervisión preferida para la mayoría de los clientes.

Sin embargo, hay ciertas limitaciones en la supervisión con Event Grid que pueden descalificarla para algunas soluciones de IoT. Use este artículo para comprender las ventajas y limitaciones de cada opción.

ConnectionState del dispositivo gemelo

Cada identidad del dispositivo de IoT Hub contiene una propiedad denominada connectionState que informa de si está conectada o desconectada. Esta propiedad representa el reconocimiento de IoT Hub del estado de conexión de un dispositivo.

La propiedad de estado de conexión tiene varias limitaciones:

  • El estado de conexión se actualiza solo para dispositivos que usen AMQP o MQTT.
  • Las actualizaciones de esta propiedad se basan en pings de nivel de protocolo y pueden retrasarse hasta cinco minutos.

Por estos motivos, se recomienda usar solo el campo connectionState durante el desarrollo y la depuración. Las soluciones de IoT no deben consultar el campo en tiempo de ejecución. Por ejemplo, no hay que consultar el campo connectionState para comprobar si el dispositivo está conectado antes de enviar un mensaje de la nube al dispositivo o un SMS.

Event Grid

Se recomienda Event Grid como solución de supervisión preferida para la mayoría de los clientes.

Suscríbase a los eventos deviceConnected y deviceDisconnected en Event Grid para obtener alertas y supervisar el estado de conexión del dispositivo.

Use los artículos siguientes para aprender a integrar eventos conectados y desconectados del dispositivo en la solución de IoT:

Los eventos de estado de conexión de dispositivos están disponibles para los dispositivos que se conectan mediante el protocolo MQTT o AMQP, o mediante cualquiera de estos protocolos a través de WebSockets. Las solicitudes realizadas solo con HTTPS no desencadenarán notificaciones de estado de conexión de dispositivos.

  • Para los dispositivos que se conectan mediante los SDK de Azure IoT para Java, Node o Python:
    • MQTT: los eventos de estado de conexión se envían automáticamente.
    • AMQP: se debe crear un vínculo de nube a dispositivo para reducir los retrasos en los estados de conexión de informes.
  • En el caso de los dispositivos que se conectan mediante los SDK de Azure IoT para .NET o C, los eventos de estado de conexión no se notificarán hasta que se envíe un mensaje inicial de dispositivo a nube o se reciba un mensaje de nube a dispositivo.

Fuera de los SDK de Azure IoT, en MQTT estas operaciones equivalen a las operaciones SUBSCRIBE o PUBLISH en los temas de mensajería correspondientes. Con AMQP, estas operaciones equivalen a adjuntar o transferir un mensaje en las rutas de acceso al vínculo adecuadas.

Limitaciones de Event Grid

El uso de Event Grid para supervisar el estado del dispositivo incluye las siguientes limitaciones:

  • Event Grid no notifica las conexiones y desconexiones de cada dispositivo individual. En su lugar, sondea el estado del dispositivo cada 60 segundos y publica el estado de conexión más reciente si se produjo un cambio de estado. Por este motivo, los informes de cambios de estado pueden retrasarse hasta un minuto y los cambios de estado individuales pueden no informarse si se producen varios eventos en el periodo de 60 segundos.
  • Los dispositivos que usan AMQP necesitan un vínculo de nube a dispositivo para poder notificar el estado del dispositivo.
  • Event Grid expone un punto de conexión público que no se puede ocultar.

Si alguna de estas limitaciones afecta a la capacidad de usar Event Grid para supervisar el estado del dispositivo, considere la posibilidad de crear un patrón de latido de dispositivo personalizado en su lugar.

Patrón de latido de dispositivo

Si necesita conocer el estado de conexión de los dispositivos, pero las limitaciones de Event Grid son demasiado restrictivas para la solución, puede implementar el patrón de latido. En el patrón de latido, el dispositivo envía mensajes de dispositivo a la nube al menos una vez en un período de tiempo predeterminado (por ejemplo, al menos una vez cada hora). Incluso si un dispositivo no tiene ningún dato que enviar, seguirá enviando un mensaje de dispositivo a la nube vacío, normalmente con una propiedad que lo identifica como un mensaje de latido. En el lado del servicio, la solución mantiene un mapa con el último latido recibido para cada dispositivo. Si la solución no recibe un mensaje de latido en el tiempo esperado por parte del dispositivo, da por supuesto que hay un problema con el dispositivo.

Limitaciones de latido de dispositivo

Dado que los mensajes de latido se implementan como mensajes de dispositivo a nube, cuentan con respecto a los límites y la cuota de mensajes de IoT Hub.

Patrón de tiempo de expiración breve

Si una solución IoT utiliza el estado de la conexión únicamente para determinar si debe enviar mensajes de la nube al dispositivo a un dispositivo, y los mensajes no se difunden a grandes conjuntos de dispositivos, considere la posibilidad de utilizar el patrón de tiempo de expiración corto como una alternativa más sencilla al patrón de latido. El patrón de tiempo de expiración breve es una manera de determinar si se envían mensajes de la nube al dispositivo mediante el envío de mensajes con un breve tiempo de expiración de mensajes y la solicitud de confirmaciones de mensajes desde los dispositivos.

Para más información, consulte Expiración de mensajes (período de vida).

Otras opciones de supervisión

Una implementación más compleja podría incluir la información de Azure Monitor y Azure Resource Health para identificar los dispositivos que están intentando conectarse o comunicarse sin éxito. Los paneles de Azure Monitor son útiles para ver el estado agregado de los dispositivos, mientras que los patrones de latido y Event Grid facilitan la respuesta a interrupciones de dispositivos individuales.

Para más información sobre el uso de estos servicios con IoT Hub, consulte Supervisión de Azure IoT Hub y Comprobación del estado de un centro de IoT con Azure Resource Health. Para información más específica sobre el uso de Azure Monitor o Event Grid para supervisar la conectividad de los dispositivos, consulte Supervisión, diagnóstico y solución de problemas de desconexión de Azure IoT Hub.