PiCockpit: estados online / offline, y MQTT
En la próxima versión de PiCockpit, tendremos un seguimiento de estado en línea para Pi's conectados a través de picockpit-client.
La función en línea se realiza mediante la función de última voluntad de MQTT.
Puedes probarlo desconectando tu Pi de la red.
Desenchufé la Pi en: 17:59:10
Alrededor de 18:00:05 se mostraba como fuera de línea:
¿Por qué?
Esto se debe a que MQTT tiene un ping keep-alive después de un intervalo de tiempo acordado entre el Broker MQTT y el cliente.
Para ahorrar ancho de banda en la red, suponemos que el cliente sigue estando ahí, hasta que falla el siguiente ping.
Si el cliente no responde como debería, el mensaje de última voluntad del cliente se enviará a los suscriptores adecuados.
En otras palabras: si su Pi se desconecta, lo sabrá después de un minuto en tiempo real en PiCockpit.
Para el futuro también estamos planeando introducir mensajes push, para que pueda ser notificado de que un cliente se desconecta, incluso si no está conectado a PiCockpit.
¿Y si vuelve la red?
Si la red vuelve a funcionar, picockpit-client (si sigue funcionando - es decir, la Pi está en un estado normal) volverá a conectarse al cliente MQTT, después de un cierto tiempo de espera.
Tu Raspberry Pi aparecerá de nuevo como conectada.
Por favor, no esperes que esto sea inmediato (el cliente MQTT de la OPS hará una pausa entre los intentos de reconexión, siendo el intervalo más largo cuanto más espere, si no recuerdo mal).
Mostrando el estado en línea y el mensaje correspondiente (se sigue mostrando mientras desarrollo)
y este es el mensaje sobre la desconexión del cliente (nótese que es JSON):
{"onlineState": "online", "$uuid": “4817713e-b9f6-11e9-9321-b827ebaefc47”, “$client”: “pi/000000007eaefc47”, “$ts”: 1565273103.409718}
Estoy muy contento de cómo está resultando la decisión de ir con Vue.js para el webfrontend - es muy bueno para estos cambios de estado.