Commme j’aime souvent à le répéter “Si vous ne pouvez pas le mesurer, vous ne pouvez pas l’améliorer” (Lord Kelvin), et c’est particulièrement vrai pour notre consommation électrique. Je m’étais déjà intéressé au sujet il y a une dizaine d’années avec un compteur de consommation Energy Logger 3500 pour mesurer la consommation électrique d’un appareil en particulier. Avec la téléinformation du compteur Linky, il est possible de récupérer les données de consommation de son domicile pour les stocker (avec InfluxDB) et les exploiter (avec Grafana) pour avoir une vue d’ensemble de sa consommation.
Le compteur Linky est équipé d’une sortie de télé-information numérique, couramment appelée TIC (Télé-Information Client). Il s’agit d’une sortie série classique qui transmet en permanence les paramètres du compteur, c’est-à-dire l’équivalent des informations qui sont affichées sur l’écran LCD du Linky.
La télé-information est accessible en retirant la façade verte du Linky (simplement clipsée), puis en se branchant sur les bornes I1 et I2 (attention, ne pas utiliser la borne A qui est alimentée en 220V). Sur mon modèle de compteur Linky (il en existe plusieurs variantes), il s’agit d’un bornier pour connecteur rigide de type “Wago”, c’est pourquoi j’ai inséré un domino pour ensuite repartir sur un câble souple.
J’ai utilisé ensuite un module électronique pour assurer une isolation galvanique entre le Linky et le port GPIO de mon Rasperry Pi Zero. Pour les férus d’électronique, il existe de nombreux plans sur Internet pour réaliser soi-même ce module avec un optocoupleur. Pour ma part, j’ai préféré acheter le module PiTinfo qui fait parfaitement l’affaire pour 10€.
Pour la partie informatique, j’ai développé un script Python qui se lance en tant que service sur le Rasperry Pi. Il écoute en permanence la sortie série du Linky et envoie les données vers une base InfluxDB externe. En cas de panne réseau, les données sont conservées en mémoire puis envoyées dès que la connectivité Internet est rétablie.
Le code source est disponible sur Github : https://github.com/hleroy/teleinfo-linky. Lisez-bien le README pour le paramétrage préalable du Rasperry Pi.
La configuration se fait un fichier config.yml
:
debug: false # true permet de logger plus d'information en cas de problème
linky:
location: 'Votre ville'
legacy_mode: true # Mode TIC historique = true, sinon false
checksum_method: 1 # Mode de calcul du checksum (1 ou 2, se référer à la notice ENEDIS)
keys: [ISOUSC, BASE, IINST] # Liste des étiquettes à récupérer via la téléinfo
raspberry:
stty_port: '/dev/ttyAMA0' # Port série du Raspberry Pi
influxdb:
send_data: false # false permet de tester le script en local sans envoyer de données
url: https://url-serveur-influxdb
bucket: teleinfo
token:
org:
# Liste des étiquettes transmises par la Téléinfo Client (TIC)
# ADCO : Adresse du compteur
# OPTARIF : Option tarifaire choisie
# ISOUSC : Intensité souscrite
# BASE : Index option Base
# HCHC : Index Heures Creuses
# HCHP : Index Heures Pleines
# EJPHN : Index option EJP Heures Normales
# EJPHPM : Index option EJP Heures de Pointe Mobile
# BBRHCJB : Index option Tempo Heures Creuses Jours Bleus
# BBRHPJB : Index option Tempo Heures Pleines Jours Bleus
# BBRHCJW : Index option Tempo Heures Creuses Jours Blancs
# BBRHPJW : Index option Tempo Heures Pleines Jours Blancs
# BBRHCJR : Index option Tempo Heures Creuses Jours Rouges
# BBRHPJR : Index option Tempo Heures Pleines Jours Rouges
# PEJP : Préavis Début EJP
# PTEC : Période Tarifaire en cours
# DEMAIN : Couleur du lendemain
# IINST : Intensité Instantanée
# ADPS : Avertissement de Dépassement De Puissance Souscrite
# IMAX : Intensité maximale appelée
# PAPP : Puissance apparente
# HHPHC : Horaire Heures Pleines Heures Creuses
# MOTDETAT : Mot d'état du compteur
Le dépôt Github contient également un modèle de dashboard Grafana dashboard_grafana.json
pour afficher l’intensité instantanée, l’index du compteur, un historique mensuel et annuel.
Je vous recommande également la lecture d’autres articles et d’autres implémentations en Python qui m’ont aidé pour réaliser cet article :
- https://sebastienreuiller.fr/blog/monitorer-son-compteur-linky-avec-grafana-cest-possible-et-ca-tourne-sur-un-raspberry-pi/
- https://www.jonathandupre.fr/articles/24-logiciel-scripts/208-suivi-consommation-electrique-compteur-edf-linky-avec-raspberry-pi-zero-w/
- https://www.magdiblog.fr/gpio/teleinfo-edf-suivi-conso-de-votre-compteur-electrique/
- https://github.com/Ailothaen/linky/
- https://github.com/JordanMartin/linky-teleinfo/blob/master/teleinfo.py
- https://github.com/SebastienReuiller/teleinfo-linky-with-raspberry
- https://www.framboisier.com/blog/2019/08/24/relever-sa-consommation-delectricite-sur-home-assistant/
Et enfin, si le GPIO header n’est pas soudé sur votre Raspberry Pi comme c’était mon cas, une petite révision s’impose quand on ne soude pas souvent :
Bon bricolage 😄