Featured image of post Flasher vos thermomètres Xiaomi Mijia pour prolonger la batterie d'un an

Flasher vos thermomètres Xiaomi Mijia pour prolonger la batterie d'un an

Ecrit par ~ zwindler ~

Des thermomètres à 2€ qui deviennent un gouffre financier

De temps en temps je me dis que je devrais faire de la domotique. Après un essai il y a maintenant 4 ans (avec du Jeedom, finalement je n’ai pas accroché), je me suis relancé sur du HomeAssistant il y a un peu plus d’un an.

Je détaillerai le setup dans un autre article (spoiler : c’est une VM sur mon NAS homemade de 2024, avec une carte bluetooth avec une antenne en USB passthrough). Pour l’instant, sachez que j’ai commencé simple avec juste des thermomètres dans chaque chambre.

Note : on voit qu’une chambre n’a plus de piles, et que le homeassistant était planté depuis 10 jours sans que je ne m’en rend compte ahah.

Comme beaucoup de gens qui veulent grapher à peu près tout, même leur maison (je plaide coupable), j’ai commencé par acheter un pack de thermomètres-hygromètres Xiaomi Mijia (référence LYWSD03MMC pour les intimes).

L’avantage principal de ces petits thermomètres connectés est qu’ils sont très peu chers : entre 1€ et 4€ selon les promos sur AliExpress. Majoritairement parce qu’il s’agit de thermomètres bluetooth, beaucoup plus répandu (et donc moins coûteux) que les équivalents zigbee, z-wave, etc.

On peut très facilement les appairer à un smartphone (Xiaomi fournit une application pour faciliter la tâche) ou les intégrer à une plateforme domotique quelconque. Mais l’application smartphone est très limitée et nécessite d’être à très courte portée (of course).

Du coup, comme tout bon hobbyiste de la domotique qui se respecte, je les ai branchés sur mon Home Assistant.

Et là, c’est le drame.

Dès qu’on active le Bluetooth pour les intégrer à Home Assistant, la pile CR2032 (pile bouton classique) tient environ 3 mois. On en a très vite plus cher en piles qu’en thermomètres…

PVVX à la rescousse

Heureusement, la communauté open source a trouvé la solution !

Il existe deux projets principaux :

  • Le projet ATC de atc1441
  • Le fork PVVX (qui améliore le projet ATC)

En flashant le firmware de vos capteurs avec la version PVVX, vous pouvez passer de quelques semaines à plus d’un an d’autonomie.

Je peux le confirmer : ça fait maintenant environ un an (en aout dernier) que j’ai migré tous mes capteurs et je n’ai pas encore changé une seule pile ! C’est assez dingue quand on y pense.

Bonus non négligeable : le nouveau firmware utilise le protocole BTHome v2, ce qui simplifie drastiquement l’intégration avec Home Assistant (fini les bidouilles avec HACS et compagnie ; ceux qui savent, savent).

Matériel nécessaire

Ce qui est cool avec ce tuto, c’est que vous n’avez pas besoin de grand-chose :

  • Un smartphone (Android ou iOS) avec Bluetooth
  • Vos thermomètres Xiaomi (LYWSD03MMC)
  • Une connexion Internet

C’est tout ! Pas besoin d’ordinateur, de câble USB-UART, de pince à souder, ni d’équipement spécialisé. On est vraiment dans le “flashage pour les nuls” (moi le premier).

Procédure de flash : plus simple qu’il n’y paraît

Étape 1 : Ouvrir le flasher web

Rendez-vous sur le site du flasher PVVX avec votre smartphone :

Le flasher fonctionne entièrement dans le navigateur (pas ouf sur Firefox de mémoire, mais 100% OK sur Chrome) grâce à la Web Bluetooth API. Pas d’application à installer, tout se passe dans le navigateur. C’est assez magique quand on y pense 🤔.

Étape 2 : Connecter le capteur

Cliquez sur le bouton “Connect”.

Petite confusion possible : on pourrait croire qu’il faut d’abord sélectionner le capteur dans une liste déroulante ou je ne sais quoi, mais non ! C’est après avoir cliqué sur “Connect” qu’une popup s’ouvre.

Une fenêtre de sélection Bluetooth s’ouvre avec la liste des appareils détectés à proximité.

Sélectionnez votre thermomètre (il devrait s’appeler LYWSD03MMC ou quelque chose de similaire avec des chiffres) puis cliquez sur “Associer”.

Étape 3 : Attendre la connexion

Une fois associé, les informations du capteur vont s’afficher dans la page web.

D’expérience, ça peut prendre quelques secondes, voire nécessiter quelques tentatives. Surveillez les logs en bas de page pour voir l’avancement. Le Bluetooth, c’est capricieux parfois (euphémisme).

Note : Je n’ai pas trop compris s’il fallait cliquer sur “Login” et/ou “Activation”. Dans le doute, j’ai fait les deux 🤡. Ça a l’air de marcher dans tous les cas, donc bon…

Étape 4 : Flasher le firmware

Une fois connecté, la liste des firmwares disponibles apparaît.

Laissez le choix par défaut : ATC_v47.bin (ou la version la plus récente affichée, au moment où j’écris le brouillon de cet article, c’était la version v47).

Cliquez sur “Start Flashing” et… attendez en croisant les doigts.

Chez moi, le flash a pris entre 45 et 65 secondes selon les capteurs. Ne touchez à rien pendant ce temps ! Surtout ne quittez pas la page web, sinon il faut tout recommencer.

Étape 5 : Vérification

Une fois le flash terminé, le device va se déconnecter temporairement (quelques secondes) puis réapparaître avec un nouveau nom.

Au lieu de LYWSD03MMC, il s’appellera maintenant ATC_XXXXXX (où XXXXXX est un identifiant unique basé sur l’adresse MAC).

Configuration du firmware

Une fois le capteur reconnecté avec son nouveau firmware, vous pouvez modifier des paramètres avancés si vous le souhaitez.

Les valeurs par défaut sont probablement optimale dans la majorité des cas et vous pouvez laisser comme ça. Mais si vous êtes comme moi et que vous aimez bidouiller, voici ce que j’ai personnellement modifié.

Advertising Interval : économiser encore plus

J’ai réduit la fréquence à laquelle le device fait son “advertising” (diffusion des données en Bluetooth).

  • Valeur par défaut : ~2,5 secondes
  • Ma valeur : ~7.5 secondes

Advertising Type : BTHome v2 (NE PAS TOUCHER)

Laissez l’Advertising Type sur BTHome v2 avec la case AdFlags cochée.

C’est le protocole standard poussé par Home Assistant qui simplifie énormément la communication. Avec BTHome v2, vos capteurs seront auto-découverts dans Home Assistant sans configuration supplémentaire.

Ce n’était pas pour ça que j’ai flashé les capteurs à la base, mais c’est vraiment la killer feature !

Attention aux paramètres Bluetooth avancés

Ne touchez pas aux options BT5+ et LE Long Range sauf si vous savez vraiment ce que vous faites.

Vous risquez de rendre votre capteur incompatible avec votre installation existante, et vous devrez reflasher en mode recovery… Pas drôle.

Intégration avec Home Assistant

Avec le firmware PVVX et BTHome v2, l’intégration dans Home Assistant est triviale (pour une fois qu’on peut le dire) :

  1. Assurez-vous d’avoir l’intégration BTHome activée (elle est native depuis 2023)
  2. Activez le Bluetooth sur votre serveur Home Assistant
  3. Vos capteurs apparaîtront automatiquement dans les appareils détectés

Voilà vous pouvez grapher la température dans votre maison, c’est cool, on est contents :). Comme promis, je ferai aussi (un jour) un article sur la configuration un peu plus complète côté HomeAsisstant (installation de la VM, USB passthrough, création de la jolie “carte”).

En attendant. Have fun

Licensed under CC BY-SA 4.0

Vous aimez ce blog ou cet article ? Partagez-le avec vos amis !   Twitter Linkedin email Facebook

Vous pouvez également vous abonner à la mailing list des articles ici

L'intégralité du contenu appartenant à Denis Germain (alias zwindler) présent sur ce blog, incluant les textes, le code, les images, les schémas et les supports de talks de conf, sont distribués sous la licence CC BY-SA 4.0.

Les autres contenus (thème du blog, police de caractères, logos d'entreprises, articles invités...) restent soumis à leur propre licence ou à défaut, au droit d'auteur. Plus d'informations dans les Mentions Légales

Généré avec Hugo
Thème Stack conçu par Jimmy