Deep Sleep et OTA Update : réflexions…

Posted by

Aujourd’hui, j’ai 3 sondes domotiques DIY qui tournent comme des charmes dans la maison…

Basées sur du Wemos D1 Mini, une sonde DHT22, un shield batterie TP4056 et une Li-Ion 18650, le tout sur un firmware 100% fait maison, j’vous raconte pas comment qu’j’en suis fier de celles-là… 😀

Ceci dit, aujourd’hui, j’ai un soucis : y a bien longtemps, j’ai mis en place l’OTA dans le code ; comme je suis fainéant je vais pas me lancer dans un tuto sur le sujet, mais vous pouvez trouver pleins d’infos sur le sujet, par exemple ici… En gros, ça veut dire qu’en théorie, je pourrais envoyer un nouveau firmware par le wifi, au lieu de connecter mon Wemos en USB sur l’ordi. Super pratique, pour pas aller cavaler partout dans la maison quand il s’agit de mettre à jour les capteurs !

Sauf que maintenant, mon Wemos fonctionne selon une boucle qui fait :

  1. Wake Up feignasse !!
  2. Y a un update OTA ? non ? je continue…
  3. Mesure des données du sensor
  4. Connexion Wifi
  5. Connexion au serveur MQTT
  6. Publication MQTT des données
  7. Déconnexion du MQTT (on fait les choses proprement…)
  8. Deep Sleep !

Cette boucle, de 1 à 8, se passe en quelques secondes… toutes les minutes pour l’instant, et à terme toutes les 10 minutes.

Ca veut dire que pendant 9 minutes et des brouettes, sur 10 minutes, mon module, ben y roupille… pas de wifi, pas d’attente OTA… donc théoriquement, j’ai une fenêtre de quelques secondes (voire moins !!) pour lancer mon update dans les airs (OTA = Over The Air, hein… bon je sors). Impossible.

J’ai donc pensé à la solution suivante :

Mon module étant un publisher MQTT, pourquoi ne pas en faire un subscriber, qui écouterait un topic spécifique qui, quand il le choppe, se dit « ah ok, j’arrête ma boucle classique de deepsleep, et je me mets dans un mode « attente d’update » ?

Ni une ni, je prototype le truc.

Résultat : Ah oui. L’étape 7 : déconnexion du MQTT… accessoirement, ça arrête tout simplement la souscription au fameux topic… et un topic envoyé lorsque je n’y suis pas abonné, je ne le verrai jamais. Raté.

Du coup, je cherche une idée…

Et comme je la trouve pas, je poste cet article qui ressemble à un échec, mais qui me permet de verbaliser le truc et, peut-être, faire de ce blog un canard en plastique, pour une fois…

?

… non. ça vient pas.

Bon, ben je continue la réflexion, et si je trouve qqchose, je mettrai ce post à jour !

Stay safe…