PiCockpit: estados online / offline, e MQTT

No próximo lançamento do PiCockpit, teremos um rastreamento online do status dos Pi's conectados via picockpit-cliente.

imagem

A função online é realizada pela função Last Will & Testament do MQTT.

Você pode testá-lo desligando o seu Pi da rede.

Eu desliguei o Pi: 17:59:10

Em aproximadamente 18:00:05 foi mostrado como offline:

imagem

Porquê?

Isto porque o MQTT tem um ping keep-alive após um intervalo de tempo acordado entre o MQTT Broker e o cliente.

Para poupar largura de banda de rede, assumimos que o cliente continua lá - até o próximo ping falhar.

Se o cliente não responder como deveria, a última mensagem de vontade & testamento do cliente será enviada para os assinantes certos.

Em outras palavras: se o seu Pi se desconecta, você saberá após cerca de um minuto em tempo real no PiCockpit!

Para o futuro também estamos a planear introduzir mensagens push, para que você possa ser notificado de um cliente que vai ficar offline, mesmo que não esteja logado no PiCockpit.

E se a rede voltar?

Se a rede voltar, o cliente picockpit (se ainda estiver a funcionar - ou seja, se o Pi estiver num estado normal) voltará a ligar-se ao cliente MQTT, após um determinado tempo limite.

O seu Raspberry Pi será mostrado como estando online novamente!

Por favor não espere que isto seja imediato (o cliente PAHO MQTT fará uma pausa entre as tentativas de reconexão, com o intervalo ficando mais longo quanto mais tempo ele espera se eu me lembrar corretamente).

imagem

Mostrando o estado online e a mensagem correspondente (ainda sendo mostrada enquanto eu desenvolvo)

e esta é a mensagem sobre o cliente estar offline (note que é JSON):

{\i1}"onlineState".{\i} "online", "$uid": “4817713e-b9f6-11e9-9321-b827ebaefc47”, “$client”: “pi/000000007eaefc47”, “$ts”: 1565273103.409718}

Estou muito feliz como está a correr a decisão de ir com o Vue.js para o webfrontend - é muito bom para estas mudanças de estado.