Afficheur de consommation électrique

September 10, 2024

Mon projet a consisté à exploiter la borne de télé-information du compteur électrique Linky.

J'ai utilisé un afficheur OLED, connecté à un Raspberry Pi, pour visualiser la consommation d'électricité instantanée et des sept derniers jours. Puis, l'outil open-source Grafana m'a permis de visualiser la consommation sur des échelles de temps plus flexibles, de quelques secondes, à plusieurs mois.

Je crois que rendre l'électricité plus visible crée un levier utile pour faire évoluer ma consommation.

Origines du projet

Après avoir lu Le Monde Sans Fin et regarder des vidéos des Cours des Mines de Jean-Marc Jancovici, j'ai commencé à m'interroger sur la consommation énergétique de mes activités quotidiennes. Se préparer un thé, prendre une douche, laver le linge. Il n'est pas facile d'avoir une idée de l'énergie demandée pour ces activités et de les comparer.

Faire bouillir 1 litre d'eau consomme-t-il plus ou moins qu'un cycle de lavage à 40°C ? Une douche chaude de 10 min consomme-t-elle plus ou moins qu'un écran de télévision allumé pendant 6 heures ? La facture d'électricité est reçue bien après sa consommation et ne permet pas de répondre à ces questions.

À l'inverse, on a généralement conscience de l'énergie requise pour les activités où l'électricité n'est pas utilisée. Pour rouler 100 km en voiture, il faudra porter attention au niveau d'essence de la voiture. Pour marcher 5 jours dans le Vercors en autonomie totale, il faudra planifier méticuleusement les rations alimentaires. Pour préparer un examen, il faudra manger, boire et dormir, pour pouvoir se concentrer, réfléchir, mémoriser.

Nos sens nous permettent de savoir que de l'énergie est en jeu.

Le mouvement de la voiture, le son du moteur, l'aiguille du niveau du réservoir d'essence. L'augmentation du rythme de la respiration ou la fatigue sont des indicateurs de notre dépense d'énergie lors d'une activité physique. Le manque de concentration invite à aller se reposer.

Pour l'électricité, c'est différent.

Elle n'a pas d'odeur, ne fait pas de bruit, ne fait pas de fumée, ne chauffe pas. Bien souvent complètement indétectable à nos sens, l'électricité ne devient concrète que lorsqu'on est facturé.

Et si la consommation d'électricité devenait visible, palpable, accessible à un ou plusieurs de nos sens ? Peut-être que cela changerait notre rapport à l'électricité et l'acte de consommer.

Le compteur Linky

Après une demande sur le site d'Enedis, on peut obtenir les informations de consommation à la journée, à l'heure et même jusqu'à la demi-heure.

On peut ainsi connaître le nombre de kWh consommé toutes les 30 minutes, mais cette information ne sera disponible que le lendemain. Le compteur Linky stocke les données de consommation au fil de la journée et les transmet par courant porteur en ligne toutes les nuits à son concentrateur. Du concentrateur, les données sont acheminées jusqu'au consommateur. Le compteur Linky envoie ses données qu'une seule fois par jour, il n'a pas été conçu pour envoyer ses données en temps réel.

Le compteur Linky a cependant un atout majeur : une borne de télé-information client (ou TIC). Il est possible, légalement, de se brancher physiquement pour récupérer la consommation instantanée, les index de consommation (en heures creuses et en heures pleines), le type de contrat souscrit, etc.

La télé-information client

Les bornes de télé-information du compteur Linky sont accessibles en retirant le capot du compteur Linky.

Bornes Les bornes encadrées en rouge, notées I1 et I2.

En se branchant sur ces bornes et en suivant les indications d'Enedis, fournies dans ce document, on peut décoder la trame d'information.

La procédure est simplifiée avec des adaptateurs prêts à l'emploi comme celui-ci. Il se connecte au compteur d'un côté et au port GPIO d'un Raspberry Pi de l'autre. Avec quelques lignes de code, on peut lire la trame de données envoyée par le compteur Linky.

On peut aussi s'affranchir d'un Raspberry Pi avec une carte Wimos.

Carte Wimos

Une carte Wimos est un mini-ordinateur de la taille d'un timbre-poste. Vendu entre 3 et 5 €, elle a une connectivité Wifi et Bluetooth, 12 ports GPIO et un port USB-C pour l'alimentation et le flashage.

Moins puissant qu'un Raspberry Pi, c'est suffisant pour lire les informations de la borne de télé-information et les envoyer sur un serveur.

Wimos Un Wimos S2 Mini.

Un shield est une carte qui se soude directement sur les ports GPIO pour ajouter des fonctionnalités.

Ce shield permet de se connecter à la borne de télé-information du compteur Linky. L'ensemble forme un circuit compact et qui fait parfaitement le job. Il lit les informations puis les transmet via la connexion Wifi.

Shield Le shield soudé sur un Wimos S2 Mini.

Il est possible de créer soi-même ce shield grâce aux circuits librement fournis par le créateur de ces adaptateurs, Charles Hallard. Je me suis dit que ça pourrait être ludique, tout en économisant quelques euros.

Pour cela, j'ai utilisé ce matériel :

Et quelques centimes pour le reste. Cela fait un shield pour environ 1,70 €.

Custom shield Le shield maison soudé sur un Wimos S2 Mini.

Setup La carte et son shield connectés sur le compteur Linky.

Les informations fournies par le compteur sont envoyées dans le format JSON via MQTT.

{
  "TIC": {
    "ADCO": "123456789123",
    "OPTARIF": "BASE",
    "ISOUSC": 30,
    "BASE": 4614642,
    "PTEC": "TH..",
    "IINST": 1,
    "IMAX": 90,
    "HHPHC": "A",
    "MOTDETAT": 0,
    "PAPP": 338
  }
}
  • BASE : Index de consommation, à diviser par 1000, en kWh
  • PAPP : Puissance instantanée, en Watts

Ces informations sont les mêmes que celles fournies par l'afficheur du compteur Linky.

Display Base La valeur de l'index

Display Consumption La puissance instantanée, mise à jour toutes les secondes

Les données du compteur sont publiées en temps réel sur MQTT. Les implémentations de clients MQTT sont nombreuses et permettent d'exploiter facilement cette source d'information.

Tasmota

Tasmota est un projet open-source qui permet de créer un firmware pour les cartes équipées d'un microcontrôleur ESP32, comme les cartes Wimos. Le firmware peut être complètement personnalisé pour répondre à des besoins très variés.

La fonctionnalité Teleinfo permet d'exploiter le shield présentée précédemment et de publier les données d'un compteur Linky sur MQTT. Le firmware peut être compilé à l'aide du projet PlatformIO.

PlatformIO permet de construire des firmwares pour les systèmes embarqués, tout en gérant automatiquement les toolchains. L'architecture du poste de développement n'étant généralement pas celle utilisée dans le système embarqué. La gestion des dépendances est aussi complètement automatisée.

Voici la liste des commandes utilisées pour construire et flasher le firmware sur la carte Wemos.

Installation de platformio

$ brew install platformio

Récupération des sources de Tasmota

$ git clone git@github.com:arendst/Tasmota.git Tasmota
$ cd Tasmota

Configuration pour activer la fonctionnalité Teleinfo, se connecter au réseau Wifi et au broker MQTT

$ cat tasmota/user_config_override.h
#ifndef _USER_CONFIG_OVERRIDE_H_
#define _USER_CONFIG_OVERRIDE_H_

#undef CFG_HOLDER
#define CFG_HOLDER 1234

#undef STA_SSID1
#define STA_SSID1 "LiveboxXXXX"

#undef STA_PASS1
#define STA_PASS1 "XXXXXXXX"

#undef MQTT_HOST
#define MQTT_HOST "mosquito"

#undef MQTT_PORT
#define MQTT_PORT 1883

#ifndef USE_TELEINFO
#define USE_TELEINFO
#endif

#endif

Construction du firmware et flashage sur une carte Wemos S2 mini, connectée sur le port USB-C et disponible sur /dev/cu.usbmodem01

$ platformio run                   \
  -e tasmota32s2                   \
  --target upload                  \
  --upload-port /dev/cu.usbmodem01

Afficheur OLED

J'utilise un afficheur OLED comme station météo, mais aussi pour afficher les informations de consommation.

Console Consumption La puissance instantanée encadrée en rouge

Ces données de consommation sont aussi stockées dans une base de données. Elles sont utilisées pour comparer la consommation d'un jour sur l'autre. Deux pages d'informations sont disponibles.

Console History Page de l'historique de consommation

Console Realtime Page comparant la consommation par rapport aux jours précédents, au même instant

Il est 16 heures le mardi 27 août 2024. On compare la consommation du jour depuis minuit avec la consommation des jours précédents, à la même heure. Samedi, dimanche et lundi, à 16h, la consommation était plus élevée que mercredi, jeudi et vendredi.

Aussi, l'affichage s'allume si la consommation dépasse 500 W et affiche une barre de consommation. Plus la consommation est importante, plus la barre est longue.

Cet affichage nous a plusieurs fois surpris. Il remplit l'objectif initial de rendre notre consommation disponible à nos sens, ici la vue.

Par exemple, on a pu apprendre que la machine à laver consomme plus au début du cycle qu'à la fin : la chauffe de l'eau est plus énergivore que le moteur du tambour.

Grafana

Les données de télé-information sont stockées dans une base de données InfluxDB puis lues dans Grafana. Cela permet d'avoir une courbe de consommation qui se met à jour en temps réel.

Code source

Plusieurs programmes ont été écrits.

mqtt-influxdb-push, en Python, lit les informations publiées sur MQTT par la carte Wemos et les injecte dans une base de données InfluxDB.

home-console-backend en Java, lit la consommation instantanée sur MQTT, requête InfluxDB et formate une page d'information. Cette page est envoyée sur l'afficheur OLED, via un autre message sur MQTT.

home-console-frontend en Python, s'occupe de recevoir les ordres d'affichage et de les afficher sur l'afficheur OLED.

Ces projets, la base de données InfluxDB et Grafana sont hébergés sur un Raspberry Pi.

Limites

La consommation de veille correspond à la consommation cumulée de tous les équipements qui ont besoin en permanence d'énergie électrique. Cela inclut généralement la VMC, la télévision en veille, la box Internet, le chauffe-eau ou le réfrigérateur.

La consommation de veille est rarement constante. Par exemple, le moteur d'un réfrigérateur se met en route périodiquement. Ainsi, la consommation de veille rend plus difficile l'identification des postes de dépenses énergétiques. Si je mesure la consommation au compteur de l'éclairage de chacune de mes pièces de vie une à une et que le moteur du réfrigérateur se déclenche, les données seront faussées.

Par conséquent, il peut être utile de couper un maximum de disjoncteurs du tableau électrique puis d'allumer un à un chaque équipement afin d'observer leur consommation et d'en conclure leur empreinte.

Bien qu'il soit possible d'utiliser cette technique, comment suivre la consommation de chaque équipement continuellement sans cette contrainte ?

Une possibilité est d'utiliser des prises connectées qui individuellement mesurent la puissance de ce qui est branché dessus. C'est plus précis, mais demande d'équiper chacune des prises. On peut aussi modifier l'installation électrique pour s'équiper avec des disjoncteurs intelligents.

La startup française Ecojoko a trouvé un moyen d'exploiter uniquement la courbe de consommation générale du compteur et d'y reconnaître, par un algorithme, la consommation de chaque équipement. Le moteur d'un frigo s'allume pendant un temps, s'arrête et reprend, cela crée une empreinte qui peut être reconnue. Chaque équipement ayant une empreinte, il est possible d'analyser la courbe de consommation globale pour trouver la consommation de chaque équipement.

J'ai testé Ecojoko et son afficheur. Il remplit également ce rôle de rendre l'électricité plus concrète. L'aiguille indique la consommation en temps réel du logement, tout en faisant un petit bruit.


Ma tête