Utiliser les piles plus longtemps et protéger activement l'environnement
Connecter Home Assistant à l'appareil de rafraîchissement
Après avoir découvert un appareil déjà pleinement fonctionnel dans le premier article, nous allons maintenant le connecter à Home Assistant. Cette fois encore, le protocole MQTT nous sera très utile.
L'un des avantages est que nous n'avons pas besoin de prendre en compte d'écran ou d'éléments de commande dans le programme. Le tableau de bord de Home Assistant se charge de ces tâches. Lorsque l'appareil de rafraîchissement est prêt, nous le voyons sur notre téléphone portable, notre tablette ou notre PC et pouvons même recevoir une notification.
Grâce à l'application Home Assistant sur notre téléphone portable, nous avons toujours l'état actuel à portée de main.
Voyons ce qui est nécessaire pour cela.
Le croquis comprend désormais cinq blocs fonctionnels. Le programme principal s'est considérablement développé.
Dans la partie 1, nous n'avions intégré aucune bibliothèque. Il y en a désormais trois au total, qui sont nécessaires pour la connexion WiFi et MQTT. Nous avons également besoin de
Vient ensuite la configuration utilisateur dans le croquis, dans laquelle vous devez saisir le SSID de votre réseau WiFi et le mot de passe correspondant. Cette fois encore, j'ai attribué une adresse IP statique.
Viennent ensuite les identifiants pour le serveur MQTT et le mot de passe MQTT.
Les sujets MQTT sont créés sous forme de variables de chaîne. Les tensions des batteries reçoivent les sujets « batt1 ... batt4 », l'état respectif d'une batterie se trouve dans « batt1stat ... batt4stat ». Ces statuts sont « Aucune batterie », « En cours de recharge » et « ***Terminé*** ».
Nous connaissons déjà l'initialisation qui suit depuis la première partie. Ici , le tableau « battstat[] » s'ajoute pour enregistrer l'état respectif de la batterie. Il est initialisé avec « Aucune batterie » sur les quatre positions.
void setup() suit avec l'initialisation du WiFi et du serveur MQTT. Aucune particularité.
void loop() ne présente que de légères modifications. Au début, la connexion MQTT est vérifiée et, si nécessaire, rétablie. Suit le processus déjà connu composé d'impulsions de charge et de mesures, désormais complété par les deux sous-programmes Statusmeldungen(); et WiFi_MQTT();
Le sous-programme pour les messages d'état
Les messages d'état nous permettent de voir si une batterie est insérée dans un compartiment, si la batterie est en cours de recharge ou si le processus de recharge est terminé.
p class="Text">La première requête IF vérifie si la tension de la batterie est égale à zéro. Cela signifie « aucune batterie n'est insérée ».
Pour votre propre programmation MQTT, il peut être intéressant de voir comment les chaînes de caractères sont transmises dans MQTT. Le contenu de battstat[] est défini comme des chaînes de caractères pouvant comporter jusqu'à 16 caractères, mais elles sont en réalité plus courtes. La raison en est le caractère de fin «\0 »requispar MQTT.
Le sous-programme WiFi_MQTT
J'ai regroupé ici les fonctions qui démarrent notre WiFi, définissent l'adresse IP statique, établissent la connexion au serveur MQTT et se chargent de la publication.
La publication est une fonction simple. Tout d'abord, le système vérifie si la connexion est toujours active. Si ce n'est pas le cas, une reconnexion est effectuée.
Ensuite, la valeur mesurée est transmise avec deux décimales pour chaque batterie. Dans le jargon MQTT, une telle valeur est appelée « payload » (littéralement : « cargaison payante »). La fonction
snprintf(payload, sizeof(payload), "%.2f", battU[0]);
assemble la payload, qui est publiée dans la ligne suivante sur le serveur MQTT dans le sujet approprié. (Malheureusement, il n'existe pas d'expression en allemand pour cela).
Dans la ligne suivante, l'état de la batterie correspondante est envoyé. Pour cela, nous avions déjà créé la composition correcte, y compris le caractère de terminaison, dans « Statusmeldungen.ino ».
Que faut-il faire dans Home Assistant ?
Comme MQTT est assez bien intégré dans Home Assistant et y fonctionne également, nous n'avons que peu de travail à faire sur cette page.
Comme vous le savez déjà grâce à mes précédents articles de blog, il suffit de compléter correctement le fichier configuration.yaml et de redémarrer Home Assistant. Les entités nécessaires sont alors générées et disponibles.
Vous vous souvenez certainement qu'il est impératif de respecter l'ordre des lignes et de n'utiliser que la barre d'espace pour les espaces, jamais la touche TAB !
Cela étant dit, notre entrée se présente comme suit :
Si vous avez déjà défini des capteurs MQTT, entrez-les ci-dessous. Sinon, vous recevrez un message d'erreur, car
mqtt:
. . sensor:
ne peut apparaître qu'une seule fois dans configuration.yaml. Cela s'applique également à tous les cas analogues.
Dans l'entrée MQTT, on remarque peut-être encore qu'un
expire_after: 30
. Cette fonction n'existe pas depuis très longtemps. Il est désormais possible de définir dans la définition du capteur que, par exemple, 30 secondes après la dernière valeur du capteur MQTT, sa valeur est réinitialisée. Cela évite de donner l'impression qu'une pile est encore insérée.
Lorsque l'appareil est éteint, les capteurs ne sont plus disponibles et un message correspondant s'affiche dans le tableau de bord.
Complément à l'article partie 1
Tout le monde ne dispose pas de résistances de mesure dans sa boîte à bricolage (1 % ou mieux). C'est pourquoi j'ai ajouté une variable dans le croquis de la partie 2
float corr[4] ={1.0, 1.0, 1.09, 1.0}; //Valeurs de correction
. Il s'agit d'un facteur par lequel la valeur mesurée doit être multipliée lorsque les résistances de mesure ne sont pas exactes. Le mieux est de mesurer cela à l'aide d'un multimètre approprié et de calculer le facteur de correction. Il me manquait une résistance et j'ai rapidement obtenu une erreur de mesure de 9 %, qui a été corrigée.
Si toutes les valeurs de correction sont égales à 1,0, vos résistances sont parfaites.
Si vous avez besoin ou souhaitez utiliser la nouvelle fonction, elle est déjà implémentée partout dans le nouveau croquis.
Utilisation pratique
Nous disposons désormais d'un excellent appareil de reconditionnement qui fait bien son travail. Comment l'utiliser ?
Comme je reconditionne des piles alcalines depuis des années, je prête attention à ce que font les autres. J'ai ainsi rencontré un monsieur âgé qui vendait une boîte à piles au marché aux puces :

Depuis, il ne me quitte plus. Il contient tout en haut un petit appareil de test qui donne une indication assez approximative de l'état d'une pile.
Mes piles sont classées de manière à ce que les piles AA testées et rechargées se trouvent à gauche. Elles couvrent les besoins de la maison, du laboratoire et de l'atelier.
Au milieu et à droite se trouvent les piles AA qui, à première vue, ne sont ni endommagées ni fuient, mais que je n'ai pas encore testées et/ou rechargées.
Tout cela m'a conduit à avoir un besoin annuel d'environ 60 piles alcalines. Je n'ai pas acheté une seule pile AA neuve en 2025 et tous mes appareils fonctionnent parfaitement. Il me reste encore un stock.
Je serais ravi que vous contribuiez vous aussi à la protection de l'environnement avec ce projet tout en faisant des économies.
À bientôt pour le prochain article de blog,
Votre
Michael Klein






