Affichage Linky en temps réel

Compteur Linky
Nouvelle Version V1.10

Sur Smartphone, PC, Home Assistant ou Domoticz (DIY)

Le compteur Linky, installé dans les foyers français, est équipé d’une sortie d’informations numériques, couramment appelée TIC (Télé-Information Client). Celle-ci donne au client la possibilité de se renseigner en temps réel sur sa consommation électrique.

Nous allons lire ces informations et les envoyer à la demande vers un smartphone ou un système de domotique comme Home Assistant ou Domoticz.

Domoticz
Home Assistant

Le projet technique est simple à réaliser avec très peu de composants.

Branchement à la TIC

Il faut retirer le boitier jaune et la prise TIC se trouve dans la partie inférieure droite. 3 sorties la composent : A pour alimentation que nous n’utiliserons pas et I1 et I2 qui fournissent une sortie série asynchrone.

Linky Standard

Le Linky à 2 modes de fonctionnement :
– historique : liaison à 1200 bauds, équivalent à d’anciens compteurs qui fait l’objet de cet article
– standard : 9600 bauds, plus riche en informations qui est décrit sous forme plus complète de routeur ici. Dans sa version minimum avec le même harware qu’ici, il fournit toutes les informations en temps réel.

Le mode de votre Linky s’affiche sur l’écran. Le passage d’un mode à l’autre se fait par demande auprès du service client de votre fournisseur d’électricité et non pas Enedis. C’est gratuit.

Le Linky fourni un signal sinusoidal à 50kHz pour transmettre un zéro, et pas de signal pour un 1 (courbe bleu).

Un coupleur optique LTV-814 permet de s’isoler électriquement du Linky et démoduler le signal en une suite de 0 et 1 envoyée sur l’entrée GPIO 26 (courbe verte) d’un micro-contrôleur ESP-32. Le format de la liaison série est :
– 7 bits de données
– parité paire
– 1 stop bit

Un logiciel de serveur Web permet de transmettre par Wifi sur le réseau de la maison les données, lisibles sur une page Web depuis un Smartphone ou un PC.

Schéma de câblage

Au niveau du Linky connectez 2 fils sur les broches I1, I2. Fils assez gros pour rester coincé. Si vous avez une longueur de plusieurs mètres ver l’ESP32, utilisé du fil torsadé de téléphone ou mieux du fil de réseau informatique torsadé et blindé.

Cablage Linky vers ESP-32

En entrée du système, une résistance de 1.5kΩ permet de respecter la charge recommandée par ENEDIS > 1kΩ et le courant nécessaire au coupleur optique pour bien démoduler en 0 le signal à 50kHz. Après quelques essais avec un oscilloscope, c’est cette valeur qui me fournit un bon signal en sortie du coupleur vers l’ESP32 dont une résistance de 10kΩ rappel le signal au +3.3V quand le coupleur ne conduit plus. Sur internet, vous trouverez d’autres schémas avec un transistor MosFet en sortie du coupleur. Je n’en ai pas eu besoin. Ce schéma d’entrée simple fonctionne pour une liaison à 1200 bauds ou 9600 bauds.

Hardware très réduit

Une LED et une résistance en série branchées sur le GPIO19 clignote à chaque arrivée de trame du Linky. Cela fourni un contrôle visuel de bon fonctionnement.

Le nombre de composants est réduit au minimum :

  • ESP32, 2*19 broches (<10€ chez Aliexpress en chine)
  • R1 : 470Ω à 1kΩ, 1/4W ou 1/8W
  • D1 : LED de la couleur de votre choix
  • R2 : 10 kΩ, 1/4W ou 1/8W
  • R3 : 1.5kΩ, 1/4W ou 1/8W
  • Coupleur optique LTV-814 (1€ les 10 chez Aliexpress)
  • Alimentation (type pour smartphone) 230V 5VDC 0.5A ou 1A sortie USB

Format des données en mode Historique

Message reçu toutes les 2s sans le check-somme.

Pour chaque donnée envoyée par le Linky, il y a un formatage facile à comprendre et décoder. Il y a un nom, la valeur, et un check-somme. La séquence démarre par le caractère ‘STX’ et termine par ‘ETX’. Le document ENEDIS décrit parfaitement les messages.

Tout n’est pas intéressant, comme ADCO, l’adresse du compteur. On s’intéresse principalement à:
– HCHC : la consommation heure en Wh
– HCHP : la consommation heure pleine en Wh
– IINST : le courant efficace instantané en A
– PAPP : la puissance apparente en VA

Affichage du Mode Historique sur le Linky

On note que les valeurs sont des entiers et la puissance apparente PAPP est un multiple de 10. De plus, on n’a pas la puissance active instantanée en W. En prenant la variation de consommation sur 5 min, on peut calculer la moyenne de la puissance active sur la période.

En faisant tourner les différents messages sur l’afficheur du Linky, il est possible de vérifier que ce dernier envoi sur la prise TIC les données au format Historique. Le mode standard n’est pas traité ici. Pour changer de mode, il faut le demander au service client de votre fournisseur d’électricité et non ENEDIS.

Code Source du mode Historique

L’ensemble du code est écrit en utilisant l’IDE Arduino. Il est injecté dans un premier temps par la liaison série, puis une fois en place, on peut le modifier si besoin par le WIFI comme décrit ici.

Dezipper l’ensemble et ouvrez dans l’IDE Arduino (version 2.xx) le fichier Lecture_Linky_Historique_v1.10.ino
Vérifiez que vous avez les bibliothèques installées sur votre IDE Arduino :
– RemoteDebug
– PubSubClient

La version V1.1 s’adapte aux contrats de « Base » ou « Heures creuses ou pleines »

La programmation de la carte se fait à l’aide de l’outil de développement IDE d’Arduino. Il faut dans les préférences faire appel au gestionnaire de carte de « Espressif » qui développe l’ESP32. Allez dans Fichier / Préférences et mettez l’adresse : https://dl.espressif.com/dl/package_esp32_index.json


Pour la compilation du fichier Lecture_Linky_Historique_v1.00.ino, veuillez sélectionner la carte ESP32 Dev Module.

Attention, si vous n’arrivez pas à communiquer entre votre PC et l’ESP32, c’est qu’il vous manque le driver pour l’interface USB. En général, c’est le CP2102 qui se trouve sur la carte ESP32. De nombreux Tutos sur internet expliquent comment l’installer. Exemple: https://techexplorations.com/guides/esp32/begin/cp21xxx/

Paramétrage du WIFI

Dans le code source, vers la ligne 30, rentrez le nom du réseau (SSID) ainsi que le mot de passe :

const char* ssid = "NomDuWifi";          // Nom du Wifi (SSID)

const char* password = "MotDePsse";  // WIFI password - Mot de passe

Si vous choisissez une adresse IP automatique, mettez IPfixe à false. Dans le cas contraire, remplissez les champs comme ci-dessous :

const bool IPfixe = true; 
IPAddress local_IP(192, 168, 0, 245);  //IP à donner à cet ESP
IPAddress gateway(192, 168, 0, 254);  //passerelle, adresse IP de la box réseau
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8);    //optional
IPAddress secondaryDNS(8, 8, 4, 4);  //optional

Paramétrage Domoticz

Si vous souhaitez envoyer à un système domotique comme Domoticz, le bilan de puissance Heure Pleine et Heure Creuse, remplissez les champs suivant autour de la ligne 45 du programme :

// -- A renseigner si  - Client of Domoticz --
const bool Domoticz_On = true;  //A mettre true ou false si on souhaite du reporting vers Domoticz
const char* host = "192.168.0.99";
const int httpPort = 8080;
const int idxPowerHP = 1015;  //Numéro Dispositif Domoticz
const int idxPowerHC = 1016;

Paramétrage Home Assistant – MQTT

Si vous souhaitez envoyer à un système domotique comme Homme Assistant via le broker MQTT, le bilan de puissance Heure Pleine et Heure Creuse, remplissez les champs suivant autour de la ligne 45 du programme :

// ** A renseigner si  - Client of Homeassistant - MQTT **
const bool MQTT_On = true;                 //A mettre true ou false si on souhaite du reporting vers Homeassistant ou autre via Broker MQTT
const char* mqtt_server = "192.168.0.98";  //Adresse IP du Broker Mqtt
const int mqttPort = 1883;                 //port utilisé par le Broker
const char* Mqtt_user = "UtilisateurMQTT";      //Utilisateur MQTT
const char* Mqtt_password = "MotDePasseMQTT";  //Mot de passe MQTT

Les messages envoyés sont au nombre de 4. Voir autour de la ligne 415 du programme.

mqtt_publish("linky/pva", Papp);  //Topic puissance apparente pour MQTT
mqtt_publish("linky/ieff", Iinst); //Topic courant instantané pour MQTT
mqtt_publish("linky/pwhp", PWHP); //Topic puissance active Heure Pleine pour MQTT
mqtt_publish("linky/pwhc", PWHC); //Topic puissance active Heure Creuse pour MQTT

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

182 réponses

  1. Chris dit :

    Bonjour André
    Bravo pour votre travail. J’ai adapté votre soft pour le faire fonctionner avec une carte LOLIN (WIMOS) pro équipée d’un ESP8266 et sa marche nickel sur un navigateur.
    Par contre je n’ai pas réussi à connecter ces données à Domoticz pouvez vous expliquer la marche à suivre.

    • F1ATB André dit :

      Difficile de répondre. Je ne connais pas votre soft. Mettez des points de sortie sur le port Serie dans la partie domoticz pour comprendre ce qui se passe.
      Cdlt

      • Chris dit :

        La fonction void EnvoiaDomoticz() est la votre. Je n’ai rien touché. Voici ce qui est envoyé à DOMOTICZ: (trame récupérées avec Debug.Serial())
        (D) GET /json.htm?type=command&param=udevice&idx=273&nvalue=0&svalue=26048418;23214768;0;0;0;0 HTTP/1.1
        (D) Host: 192.168.0.41
        (D) Connection: close
        (D)
        (D)
        (D) GET /json.htm?type=command&param=udevice&idx=273&nvalue=0&svalue=26048418;23214768;0;0;0;0 HTTP/1.1
        (D) Host: 192.168.0.41
        (D) Connection: close
        (D)
        (D)
        (D) GET /json.htm?type=command&param=udevice&idx=273&nvalue=0&svalue=26048418;23214768;0;0;0;0 HTTP/1.1
        (D) Host: 192.168.0.41
        (D) Connection: close

  2. Raphael SOMMET dit :

    Bonjour,
    Merci pour ce partage. Je dispose d’un compteur triphasé. Est ce que votre soft fonctionne directement pour du triphasé ou doit il etre adapté
    Cordialement
    Raph

    • F1ATB André dit :

      Lisez bien les différents articles. Il y a 2 aspects à regarder.
      – la lecture de la puissance en triphasé. 3 sources possibles
      – la charge connectée, mono ou tri, c’est pas la même solution.

      Cdlt

      • Raphael SOMMET dit :

        Pour l’instant, je ne regarde que la partie que vous avez appelé « affichage Linky en temps réel » version 1.1 issue de votre article du 8 mai 2023.
        Je n’en suis pas encore à la partie routage. Est elle capable de lire un Linky en triphasé.
        Cdlt

  3. Paco dit :

    Bonjour et un grand merci pour votre partage d’infos sur ce montage, parfaitement expliqué, et très ingénieux.
    J’ai pour ma part un forfait TEMPO qui doit donc indiquer quelques infos supplémentaires, par exemple HP/HC pour les 3 couleurs.
    Pensez vous qu’une adaptation du code est nécessaire pour ce besoin ?
    D’avance merci !

    • F1ATB André dit :

      Si j’ai bien compris le Tempo, les 3 couleurs changent suivant le jour mais le passage HC/HP est à heure fixe.
      L’info HC/HP n’apparait pas dans l’information de couleur retournée par EDF au routeur. Mais comme c’est à heure fixe, on peut programmer le routeur suivant l’heure et la couleur.

      Cdlt

      • Paco dit :

        Bonjour et merci encore pour votre travail sur ce sujet 👍👍👍
        Cdlt

      • JC dit :

        Bonjour,
        Tout d’abord, un grand merci pour ce partage ! je l’ai implémenté et ( lourdement ) modifié en passant sur une collecte à 15s et une historisation en base influxDB pour exploitation par divers canaux (home assistant, module déporté d’affchage ), tout en conservant le serveur web local pour avoir le retour immédiat de la sortie en temps réelle et les données des dernières heures et en ajoutant les placeholder pour la ventilation par couleur de l’abonnement tempo dont je bénéficie.
        Par défaut les linky déployés n’exposent pas les index par couleur mais uniquement le HCHP et HCHC, ce n’est cependant pas ce qui est prévu dans la norme, et renseignement pris auprès de mon opérateur d’énergie locale, une fois le compteur mis à jour par le réseau ( délais variable … ) , il devrait fournir ces informations sur les étiquettes BBRHPJ[BWR]H[CP] soit 6 lignes distinctes .
        à date mon compteur n’est pas encore mis à jour, mais le code est déjà prêt pour collecter ces données ( que je collectais déjà sur la TIC de mon compteur de génération précédente ), je viendrai poster ici les adaptation nécessaires pour la bonne collecte de ces données quand ce sera fonctionnel

  4. Gaëtan dit :

    Bonjour,
    Je cherche à réaliser un projet similaire pour sensibiliser la famille à la consommation électrique mais je n’ai pas encore trouvé.
    Je souhaite pouvoir utiliser les infos de linky et de les afficher en direct avec un historique sur 12h sur un petit écran OLED que je brancherais sur n’importe quelle prise électrique dans la maison (un lieu de passage). Cet écran pourrait afficher la consommation en kW, en €, heures pleines et creuses. Et pourquoi pas un changement de couleur quand in dépasse un seuil pré-défini. Mon compteur linky est à l’extrémité de la maison et impossible de rajouter un câble. Donc il faudrait que ce soir par Wifi.
    Je ne me vois pas devoir monter un système de type Domoticz rien que pour ça. N’y a t’il pas un autre moyen ?
    Bravo pour votre site.

  5. Alain dit :

    Bonjour André,
    Je trouve ça génial ce que vous faites et surtout que vous en fassiez profiter la communauté.
    Personnellement j’ai une installation solaire de type « balcon » à 800Wc et un chauffage par PAC.
    Nous sommes en février et déjà maintenant j’ai de la sur-production (surtout entre 11h et 12h) quand les appareils énergivores sont à l’arrêt.
    Dans ce cas comment faire pour utiliser cette sur-production, surtout en été quand on n’aura pas besoin de chauffer?

    Je suis tombé la dessus: https://www.youtube.com/watch?v=A3vaPTg7LwE (désolé c’est en allemand).
    On présente un système qui se branche sur n’importe prise 220v dans la maison, et qui charge une batterie en cas de sur-production et qui produit de l’électricité depuis la batterie en cas de sur-consommation. Bien sur ça a des avantages et des inconvénients.
    Peut-être que cela peut donner des idées

    A bientôt
    Alain

    • F1ATB André dit :

      Pour l’instant, je ne travaille pas avec des batteries. Elles sont encore chères et il faut de nombreuses années pour avoir un retour sur investissement.

      Cdlt

  6. Alexandre Fusiller dit :

    Je découvre avec intérêt et admiration ce que vous avez partagé. D’abord merci, me voilà avec un petit projet à reproduire qui va me plaire.
    Pour information serait-il compliqué d’utiliser la broche d’alimentation fournie par le compteur ?
    Bonne journée
    Alexandre

    • F1ATB André dit :

      Le Linky ne fourni pas assez de puissance pour alimenter l’ESP32.

      Cdlt

      • Alexandre Fusiller dit :

        Compris, donc cela voudrait dire d’autres choix, et un autre projet en fait.
        Je m’interrogeais en ayant regardé de que la startup eeSmart avait tenté de faire (avant de fermer finalement).

  7. cohiba dit :

    Merci beaucoup pour le tutoriel, ça fonctionne très bien chez moi avec un linky Sagemcom.

  8. Pierre dit :

    Bonjour André,
    Moi Pierre retraité de 64 ans
    D’abord un grand bravo et merci pour ta contribution en open source, je reconnais bien l’esprit radio amateur (mon père en était un)
    Je vais me lancer dans ton projet ayant déjà de bonnes bases Arduino ESP, mais nul en électronique.
    Saurais tu me dire si l’opto coupleur LTV814 pourrait convenir au lieu du EL817 ?
    J’ai lu datasheet mais trop nul pour l’interpréter (désolé)
    Encore merci, je me délecte tes vidéos cela change des décérébrés
    Cordialement Pierre

  9. Pierre dit :

    Erreur sur mon commentaire précédent
    J’ai des optos EL817, peuvent ils remplacer LTV814 ?
    Merci d’avance

  10. François dit :

    Bonjour André,
    bravo et merci pour votre site.
    Comment un onduleur, alors qu’il est émetteur, peut-il recevoir en permanence les informations du réseau (fréquence, tension, phase) ?
    Merci pour votre réponse.

  11. François dit :

    Bonsoir André, merci pour votre réponse.
    j’avais déjà consulté votre simulateur, mais :
    Quand la tension onduleur est inférieure au réseau, il devient récepteur, comment son électronique accepte le courant engendré par cette DDP ?
    Comment l’onduleur peut-il mesurer tension, fréquence et phase du réseau, pour se synchroniser quand il est émetteur ?
    La réponse se trouve-t-elle dans l’électronique de l’onduleur ?
    Si oui, quelle est-elle ?
    Je suis désolé, mais je ne comprends pas comment cela peut fonctionner, et pourtant cela fonctionne !
    Cordialement

    • F1ATB André dit :

      L’électronique de l’onduleur en partant de la tension continue fabrique une tension alternative, à tout instant légèrement supérieure à celle du secteur. Ainsi son courant de sortie va dans le bon sens, il n’est jamais récepteur.
      CDlt

  12. François dit :

    D’accord.
    Comment fait-il pour maintenir sa tension toujours légèrement supérieure au secteur et synchronisée ?
    Pour ajuster tension – fréquence – phase, il faut bien qu’il reçoive ces informations du secteur.?
    Cordialement

  13. yannblanc dit :

    Bonjour,
    Je souhaiterais savoir si une personne a essayé récupérer les données de ce montage sur un box JEEDOM ?
    Si oui, quelle est la manipe ?
    cordialement

  14. Ronnie dit :

    Bonjour,
    Très bon site, très technique (un peu trop pour moi 😄)
    Existe t’il un affichage en temps réel avec le mode standard ?
    Cordialement

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *