última voluntad ultima sinonimos significado formato protocols mqtt

protocols - ultima - MQTT ¿Cuál es el propósito o uso del Testamento de Última Voluntad?



ultima voluntad sinonimos (3)

Seguramente me estoy perdiendo algo sobre cómo funciona todo el protocolo MQTT, ya que no puedo comprender el patrón de uso de los mensajes del Testamento del último testamento : ¿cuál es su propósito?
Un ejemplo que veo a menudo es acerca de informar que un dispositivo se ha desconectado. No tiene mucho sentido para mí, ya que es obvio que si un dispositivo no publica ningún dato puede estar desconectado o puede haber algunos problemas de red.

Entonces, ¿cuáles son algunos usos prácticos de la LWT? ¿Para qué fue inventado?


El hecho de que un dispositivo no se esté publicando no significa que no esté en línea o que haya un problema de red.

Tomemos, por ejemplo, un sensor que controla un valor que solo cambia con poca frecuencia, un buen diseño dice que el sensor solo debe publicar los cambios para ayudar a reducir el uso del ancho de banda, ya que la publicación periódica del mismo valor es inútil. Si el valor se publica como un valor retenido, cualquier nuevo suscriptor siempre obtendrá el valor actual sin tener que esperar a que el valor del sensor cambie y se publique nuevamente.

En este caso, el LWT se utiliza para publicar cuando falla el sensor (o si hay un problema de red), por lo que sabemos del problema tan pronto como el cliente mantiene el tiempo de espera.


Hay un artículo detallado sobre los mensajes del último testamento y testamento disponible en la serie de publicaciones del blog MQTT Essentials: http://www.hivemq.com/mqtt-essentials-part-9-last-will-and-testament/ .

Para resumir la publicación del blog:

La función Última voluntad y testamento se usa en MQTT para notificar a otros clientes sobre un cliente desconectado sin gracia.

MQTT se usa a menudo en escenarios donde las redes no confiables son muy comunes. Por lo tanto, se supone que algunos clientes se desconectarán sin gracia de vez en cuando, porque perdieron la conexión, la batería está vacía o cualquier otro caso imaginable. Sería bueno saber si un cliente conectado se ha desconectado correctamente (lo que significa que tiene un mensaje de DESCONEXIÓN MQTT) o no, para tomar la acción adecuada.


Los mensajes de LWT no están realmente preocupados por detectar si un cliente se ha desconectado o no (esa tarea es manejada por mensajes keepAlive). Los mensajes de LWT son sobre lo que sucede después de que el cliente se haya desconectado .

La analogía es la de una última voluntad real : si una persona muere, puede formular un testamento, en el que declara qué acciones se deben tomar después de que haya fallecido. Un ejecutor prestará atención a esos deseos y los ejecutará en su nombre. La analogía en el mundo MQTT es que un cliente puede formular un testamento, en el que declara qué mensaje debe enviar el agente en su nombre después de que se haya desconectado.

Un ejemplo ficticio:

Tengo un sensor, que envía datos cruciales, pero con poca frecuencia. Ha formulado una declaración de último testamento en forma de [tema: ''/ node / gone-offline'', mensaje: '': id''], siendo: id una identificación única para el sensor. También tengo un suscriptor de emergencia para el tema "nodo / desconectado", que enviará un SMS a mi teléfono cada vez que se publique un mensaje en ese canal.

Durante el funcionamiento normal, el sensor mantendrá abierta la conexión con el MQTT-broker enviando mensajes periódicos keepAlive intercalados con las lecturas reales del sensor. Si el sensor se desconecta, la conexión con el intermediario se desactivará, debido a la falta de keepAlives.

Aquí es donde entra LWT: si no se especifica LWT, al agente no le importa y simplemente cierra la conexión. Sin embargo, en nuestro caso, el agente ejecutará la última voluntad del sensor y publicará el mensaje LWT ''/ node / gone-offline:: id''. El mensaje será consumido a mi suscriptor de emergencia y se me notificará la identificación del sensor a través de SMS para que pueda verificar qué está pasando.

En breve:

En lugar de simplemente cerrar la conexión después de que un cliente se haya desconectado, los mensajes de LWT pueden aprovecharse para definir un mensaje para que el agente lo publique en nombre del cliente, ya que el cliente está fuera de línea y ya no puede publicar.