La función de mensajes de última voluntad se define en MQTT 3.1.1. IoT Platform admite esta función cuando conecta dispositivos a IoT Platform mediante MQTT 5.0. Este tema describe los mensajes de última voluntad.
Contexto
Mensajes de última voluntad
Un mensaje de última voluntad se envía cuando un dispositivo se conecta a IoT Platform. Si el dispositivo se desconecta de IoT Platform y no logra reconectarse dentro del periodo especificado por el parámetro Will Delay Interval, IoT Platform publica el mensaje de última voluntad a los suscriptores en nombre del dispositivo. El valor predeterminado del parámetro Will Delay Interval es 0.
El contenido de un mensaje de última voluntad es similar al de un mensaje común enviado por un dispositivo. Incluye el nombre del tema, la carga útil, el nivel de QoS, la etiqueta Retain, las propiedades de usuario y el intervalo de caducidad del mensaje.
-
Un dispositivo puede desconectarse de un servidor por las siguientes causas:
Fallos o fluctuaciones en la red. Si el dispositivo no se comunica con el servidor durante un periodo de persistencia de conexión especificado, el servidor cierra la conexión.
Corte de energía en el dispositivo. El servidor detecta que la conexión se cerró.
El servidor cierra la conexión cuando el dispositivo intenta realizar operaciones no autorizadas. Por ejemplo, si el dispositivo intenta suscribirse a un tema para el cual no tiene permisos.
-
El mensaje de última voluntad de un dispositivo se elimina en los siguientes escenarios:
Cuando el dispositivo se desconecta de forma esperada, se elimina el mensaje de última voluntad.
Cuando el dispositivo se desconecta de forma inesperada y IoT Platform publica el mensaje de última voluntad en su nombre, se elimina dicho mensaje.
Si no configura el parámetro Message Expiry Interval para el mensaje de última voluntad, este se elimina al caducar.
No es posible actualizar un mensaje de última voluntad.
Las sesiones caducadas no afectan los mensajes de última voluntad. Estos mensajes pueden publicarse independientemente del estado de las sesiones.
Los mensajes de última voluntad admiten la función de caducidad de mensajes. Si el contenido de los mensajes caduca en un periodo determinado, como ocurre con los mensajes relacionados con el control de temperatura, utilice la función de mensajes de última voluntad junto con la de caducidad de mensajes. Para obtener más información, consulte Message expiry.
Si las señales de red son débiles o las conexiones son inestables, configure el parámetro
WillDelayInterval. Esto evita que los mensajes de última voluntad se envíen con frecuencia debido a que los dispositivos se conectan y desconectan repetidamente.
Escenarios
Análisis de excepciones de dispositivos
Si cambia el estado de un dispositivo conectado a IoT Platform, por ejemplo, si pasa a estar en línea o fuera de línea, IoT Platform envía un mensaje relacionado con el estado del dispositivo a los servidores empresariales o al motor de reglas mediante el siguiente topic: /as/mqtt/status/${productKey}/${deviceName}. El mensaje solo incluye información sobre el estado de conexión del dispositivo. Para obtener más datos para el análisis de excepciones del dispositivo, utilice mensajes de última voluntad. Estos mensajes pueden incluir información sobre los dispositivos, como datos del entorno.