Où sommes nous ?

Retour

MQTT et QoS

Pour alimenter nos montages par batterie, il faut que l'ESP reste le plus longtemps et le plus souvent possible en DeepSleep et/ou déconnecté du WiFi. Si l'on souhaite de plus commander le tout par MQTT, on se heurte rapidement à une limitation très gênante de la librairie PubSubClient standard ...

QoS > 1 pour recevoir les commandes envoyées pendant que l'ESP était en DeepSleep

Pour recevoir un message envoyé pendant que l'ESP n'est pas connecté, il faut souscrire au topic avec une Quality Of Service >= 1 ... et que la session soit ouverte sans que le drapeau CleanSession ne soit mis.

Malheureusement, si une telle souscription est possible avec la librairie actuelle, cette dernière se reconnecte systématiquement avec

CleanSession=1

ce qui efface tous les documents qui n'ont pas été remis. D'après l'auteur, c'est parce qu'il faudrait conserver l'état des documents non acquittés, mais il n'y a pas de façon "fiable" de le faire. Ce n'est que partiellement vrai :

Heureusement, des forks existent pour corriger cette lacune ...

Installation du fork

Désinstallation de la version précédente

Actuellement, il semblerait que la seule façon soit d'effacer le répertoire correspondant dans celui des bibliothèques, généralement

~/Arduino/libraries/PubSubClient

installation

cd ~/Arduino/libraries
git clone https://github.com/destroyedlolo/pubsubclient.git

ou inclure le ZIP correspondant dans l'IDE.
IDE qu'il faudra évidemment redémarrer.

Utilisation

Un booléen a été ajouté aux fonctions connect(...) :

Le niveau de QoS est le moins disant entre le client et l'émetteur. Ainsi sur le client demande un QoS de 1 mais que l'émetteur n'envoie qu'un QoS 0, le résultat sera un QoS de 0 et donc non transmis à un ESP endormi.


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2018
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.