1. Introducción
El siguiente artículo explica cómo usar la característica “Will inspector” para comprobar cuáles son las configuraciones de tus dispositivos conectados con respecto al mensaje WILL (LWT) de manera que pueda hacer un mejor seguimiento para resolver problemas asociados con LWT y su envío.
2. Cómo funciona el LWT de MQTT (Last Will Testament MQTT)
El estándar MQTT incluye una característica que permite configurar un mensaje, un topic, un qos y una indicación retain para enviar un mensaje a tu HUB MQTT en el caso de que la conexión de un dispositivo se pierda de repente.
Como se indica en el apartado 3.1.2.5 Will Flag, el mensaje WILL será enviado bajo las siguientes condiciones:
- Un error I/O o fallo de red detectado por el servidor.
- Un cliente falla al comunicarse dentro del intervalo Keep Alive configurado.
- Un cliente cierra la conexión de red sin primero enviar el paquete DISCONNECT.
- El servidor cierra la conexión de red debido a un error de protocolo.
3. Requisitos
Para que su mensaje LWT sea enviado y lo pueda recibir, tiene que:
- Un dispositivo correctamente configurado
- El dispositivo tiene que perder la conexión de repente sin cerrarse correctamente.
- Otro dispositivo tiene que estar subscrito a dicho topic de manera que pueda recibir el mensaje de will (LWT).
Eso es, si su dispositivo no configura el will, o no pierde la conexión de repente o no hay ningún dispositivo subscrito a dicho topic, entonces no recibirá estos mensajes LWT.
4. Inspeccionando la configuración LWT (Will) de sus dispositivos
Cómo es configurado el Will en sus dispositivos depende de su cliente software MQTT. Por favor, compruebe su documentación para saber cómo hacerlo. Más adelante damos algunos ejemplos.
-
Asumiendo que tiene dispositivos conectados, puede inspeccionar cuál es su configuración actual yendo a la pestaña de “Devices” de su HUB:
-
Ahí verá los dispositivos actualmente conectados con el will configurado (LWT):
5. Qué hacer si no ve la configuración will ahí
Las causas más comunes son:
- Su dispositivo no está conectado y por tanto, no puede tener una configuración WILL
- Está conectado pero no está enviando una configuración WILL
6. Cómo configurar el WILL conn mosquitto_sub para comprobar su entorno
Use los siguientes pasos con mosquitto_sub para depurar y comprobar su HUB MQTT:
-
Pirmero, conecte con un dispositivo que configure un mensaje will (LWT):
>> mosquitto_sub -h 192.168.0.176 -i user_ID -u user_Usr -P '<pass>' -t message/topic/to/subscribe -q 2 -d --will-topic 'user/device/died' --will-retain --will-qos 2 --will-payload 'Device stopped without clean disconnect'
Actualize este comando para configurar el user_ID, user_Usr, password y el resto de configuraciones.
-
Ahora use el inspector will para comprobar que su dispositivo configuró el mensaje will.
-
Ahora, pulse Control+C + mate el proceso asociado a mosquitto_sub para disparar la notificación will.
-
Ahora, puede comprobar en la pestaña “Last Msg” cómo se ha disparado el mensaje:
-
Y cualquier dispositivo subscrito a dicho topic también recibirá una copia de dicho mensaje.