Capteur Linky pour routeur photovoltaïque

Un routeur Photovoltaïque a besoin de connaitre avec précision la puissance échangée avec le réseau public en entrée de maison. Nous avons deux situations :

  • de la consommation avec de la puissance ou énergie soutirée
  • de la surproduction avec de la puissance ou énergie injectée

Pour mesurer le niveau de puissance et connaitre son sens de transfert, il faut connaitre à tout instant la tension électrique et le courant électrique derrière le disjoncteur principal.

Le compteur Linky installé dans les foyers français fait cela très bien en monophasé et triphasé. Il 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.


Branchement à la prise TIC du Linky

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.

Le Linky à 2 modes de fonctionnement :
– historique : liaison à 1200 bauds, équivalent à d’anciens compteurs
– standard : 9600 bauds, plus riche en informations.

Le mode standard est impératif pour ce projet. Vous pouvez afficher le mode en cours sur votre Linky. Pour en changer, appelez votre fournisseur d’électricité, le changement est gratuit et prend 1 ou 2 jours.

Le signal fourni est de 0V pour un 1, et une sinusoïde à 50kHz 25Vmax pour un 0.

Format des données en mode standard

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.

Le routeur proposé permet de visualiser toutes les données du Linky en monophasé ou triphasé. Nous nous intéresserons principalement aux 4 données ci-après qui sont des valeurs entières :

Messages LinkySoutiréInjecté
Puissance Apparente : SSINSTS
VA
SINSTI
VA
Puissance Active PNON fourni
W
NON fourni
W
Energie Totale : EEAST
Wh
EAIT
Wh
Nom variable / Unité

Le Linky donne toute les 2s, la puissance instantanée apparente soutirée SINSTS, la puissance instantanée apparente injectée SINSTI, mais ce qui nous intéresse le plus, c’est la puissance active en W qui n’est pas fournie. Néanmoins, en analysant l’énergie en Wh, EAST et EAIT, on a une mesure de la puissance active moyenne sur une longue période.

Avec SINSTS et SINSTI, on voit immédiatement si on consomme ou injecte de la puissance, ce qui est le plus important pour le routeur même si on ne connait pas la puissance active avec exactitude. Il y a également un paradoxe avec SINSTS et SINSTI, car une puissance apparente est le produit de la tension efficace par le courant efficace qui ne tient pas compte de la phase ou du sens de transfert (soutiré ou injecté). Cette distinction faite par le Linky nous sera utile.

Par la suite, pour le pilotage des actions, on utilise la variable Pw qui correspond à la Puissance Active Moyenne Soutirée – Puissance Active Moyenne Injectée.
Pw > 0 on soutire de l’énergie en provenance dEnedis
Pw < 0 on injecte de l’énergie vers le réseau public Enedis

Remarque CACSI

Attention, si vous avez signé un CACSI (Convention d’Autoconsommation Sans Injection) ou vous nêtes pas déclaré producteur auprès d’ENEDIS, vous n’aurez pas les valeurs injectées (SINSTI et EAIT). La nouvelle version du programme V3.10_Linky détecte ce cas et 8s après la mise en route vous fournit les valeurs de consommation (soutirée) uniquement.

Il est impératif dans ce cas avec CACSI, d’utiliser le routeur avec un seuil de réglage au-dessus de zéro, par exemple la consommation talon de votre maison : 200W. Si vous passez en dessous de ce seuil et à condition que le système qui bride la sortie d’énergie vers ENEDIS ne soit pas encore actif, les W commenceront à être envoyés à votre chauffe-eau ou tout autre dispositif.

Micro-Calculateur ou Microcontrôleur

Pour lire la trame de données en sortie du Linky, un microcontrôleur ESP32 est adapté à notre besoin. Il comprend :

  • des entrées analogiques pour mesurer des tensions,
  • des entrées/sorties numériques pour actionner un relais ou un triac si besoin,
  • une bonne capacité de calcul
  • une liaison WIFI pour faire du reporting à distance sur une page web ou un système de domotique.

La partie logicielle et le pilotage du Triac font l’objet d’un autre article sur ce blog.

Matériels

Raccordement au Linky

Suivant la longueur du câble vers le Linky, R1 =1200 ohm est plus adapté.

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 vers l’ESP32, utilisé du fil torsadé de téléphone ou mieux du fil de réseau informatique torsadé et blindé en reliant le blindage à la masse (Gnd). En entrée du système, une résistance R1 de 1.2kΩ à 1.5kΩ permet de respecter la charge recommandée par ENEDIS > 1kΩ et le courant nécessaire au coupleur optique (LTV-814) 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.

Schéma de Regis A. adapté à une très grande longueur de câble.

L’opto coupleur étant composé de 2 diodes en parallèle de sens opposé, il conduit sur la phase positive ou négative du signal d’entrée. Ainsi, durant toute la durée des oscillations à 50kHz on a un signal de sortie à zéro.

Schéma d’entrée alternatif, trouvé sur le Web

Certains réalisateurs avec une longue ligne capacitive vers le Linky ont descendu R1 jusqu’à 500Ω pour avoir des messages cohérents en entrée.

Personnellement après plusieurs mois avec une résistance R1 de 1500Ω, j’ai constaté quelques erreurs parfois. En decendant R1 à 1200Ω, ces erreurs semblent avoir disparu.

Van R. avec un câble ethernet CAT7 de 30m et une résistance d’entrée de 1000 Ω a fait fonctionner l’étage d’entrée.

Regis A, avec un câble long de 27m (type Ethernet CAT6) ont amélioré l’étage d’entrée en y incluant un Mosfet.

Si le Linky est chargé par d’autres appareils, on peut diminuer la charge imposée par notre interface en remontant la résistance R1 à 4.7kΩ et en rajoutant un Mosfet pour amplifier comme proposé sur différents schémas sur le web.

Raccordement à l’ESP32

La lecture de la trame série reçue du Linky se fait sur la broche GPIO26 de l’ESP32. La sortie TX est sur le GPIO27 mais n’est pas utilisée. A laisser libre.

Schéma pour collecter uniquement les données du Linky

2 Leds vertes et rouges, sur les GPIO 18 et 19 renseignent sur le fonctionnement du système.

Le schéma complet avec toutes les options se trouve ci-dessous. Il y a peu de composants.

Dans le cas d’une grande distance entre le Linky et les équipements, on peut couper par module. Un coupleur optique et un ESP32 uniquement près du Linky (comme dans le premier schéma plus haut), un ou plusieurs autres ESP32 avec un Triac et des relais près des équipements.

Schéma électrique complet. Entré du Linky et Actionneurs.

Liste de Courses

Code Source et installation du logiciel

Pour télécharger le code source, le compiler puis le transférer dans l’ESP32, allez sur la page : Routeur photovoltaïque simple à réaliser

Si vous utilisez également l’affichage distant de la « maisonnette », pensez à mettre à jour le logiciel :
https://f1atb.fr/affichage-a-distance-consommation-ou-surproduction-electrique/

Maquette Routage

Maquette complète d’un routeur avec le capteur optique, un ESP32, 2 LEDs, un Triac, un relais solide et une alimentation 5V/1A.

Données brutes du Linky

La page Web de l’ESP32 permet d’afficher l’ensemble de la trame de données envoyée par le Linky.

EAST : Enegie Active Soutirée Totale en Wh
EAIT : Energie Active Injectée Totale en Wh
SINSTS : Puissance apparente INSTantanée Soutirée Totale en VA
SINSTI : Puissance apparente INSTantanée Injectée Totale en VA

Si EAIT et SINSTI n’apparaissent pas dans le tableau, c’est que vous n’êtes pas producteur pour Enedis ou vous avez signé un CACSI.

Unités en photovoltaïque

Si vous n’êtes pas à l’aise avec les Watt, Watt crête, Volt Ampère etc. , la vidéo ci-dessous peut vous aider à mieux comprendre.

Sécurité

En travaillant sur ce projet en 230V, vous acceptez d’assumer la responsabilité de votre propre sécurité et de prendre toutes les précautions nécessaires pour éviter les accidents électriques.

Responsabilité

Articles sur le photovoltaïque

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

98 réponses

  1. Mathieu NGUYEN dit :

    Bonjour, j’ai tenté également le montage en Linky avec une résistante de 1KOhm entre l’optocoupleur et le linky car environ 2 mètres de distance.
    Je n’ai rien qui remonte sur l’ESP32, et le message donné « Attente Linky 4000 boucles = 8s » je ne comprend pas d’où vient le problème.
    Merci d’avance.

    • F1ATB André dit :

      Avez vous le Linky en mode standard et non en mode historique. C’est affiché sur le Linky. Il faut le mode standard avec le logiciel du routeur.

      Cdlt

      • Mathieu NGUYEN dit :

        Oui je suis bien en mode Standard j’ai fais la demande hier et il a bien basculé à minuit j’ai vérifier ce matin.

      • Mathieu NGUYEN dit :

        Je n’ai réussi à tout copier car les lignes ont défilés trop vite… Mais à priori avant ces lignes il était écrit récupération en tête EDF puis ça :
        15/03/2024 11:12:10 : 2024-03-15 : {« couleurJourJ »: »TEMPO_BLEU », »couleurJourJ1″: »TEMPO_BLEU »}
        15/03/2024 13:37:52 : Réception de l’heure
        15/03/2024 13:48:07 : Attente Linky 4000 boucles = 8s

        Bizarre cette histoire d’heure, pourtant l’ESP est bien à la bonne heure.

        • F1ATB André dit :

          5/03/2024 13:37:52 : Réception de l’heure
          C’est normal. L’ESP est allé chercher l’heure sur internet pour synchroniser son horloge interne.
          Je vois qu’il reçoit les données Tempo. C’est bien.

          Il y a un problème car il ne reçoit rien du Linky. Il faut qu’il soit en mode standard.

          Cdlt

  2. Denis dit :

    Bonjour, Je viens de réaliser le début de votre projet. Vous avez fait un super boulot. Je reçois bien des info Linky ( suis en mode standard), mais comme Mathieu au dessus, j’ai « Attente Linky 4000 boucles = 8s »… je ne sais pas quoi faire

    • F1ATB André dit :

      Je reçois bien des info Linky
      Je ne comprends pas bien car votre message d’erreur indique que rien ne vient du Linky.
      Vous voyez quoi?

      Dans la page données brutes vous devez avir un grand tableau de données Linky.
      Si ce n’est pas le cas, baissez la résistance d’entrée R1 à 1200 ou 1000ohm.

      Cdlt

  3. Denis dit :

    Probleme résolu. j’avais inversé PIN 26 et 27, mon logiciel lisant les donnée brut de mon Linky était inversé…

  4. Denis dit :

    Votre travail est fantastique.
    Est il possible d’utiliser un PZEM-004-v3 pour recueillir les donnée de ses panneaux ?

    • F1ATB André dit :

      Sur la sortie 230V de l’onduleur vous pouvez utiliser un PZEM-004. Pour le routeur non car il ne donne pas le sens de transfert de la puissance.

      Cdlt

  5. Pierre dit :

    bonjour,
    je ne comprends pas pourquoi il faut regler le seuil a 100w et pas a 0w (ou 1w par ex) en cacsi?
    le risque est d’injecter un peu mais ce n’est pas un souci ?

    • F1ATB André dit :

      Si vous êtes en CACSI, normalement votre onduleur est bridé. Il n’injecte jamais.
      Le routeur à 0 ne verra jamais d’injection. A 100 il commencera il verra que l’on est proche de l’injection et commencera à ouvrir le Triac ou le relais.

      Cdlt

      • Pierre dit :

        en cacsi l’injection est tolérée par enedis (dans une certaine limite), en tout cas sur mon installation elle n’est pas bridée donc sans routage il y a bien injection. donc le micro onduleur n’arrête pas de produire.
        dans ce cas rien n’empêche de mettre le reglage a zéro ? étant en triphasé et mon montage avec le jsy333 donnant des valeurs bizarres j’essaierai bien la lecture linky !

        • Gilles B dit :

          Je suis également dans le même cas CASCI sans bridage injection / onduleur, j’ai mis le seuil à 0 et ca fonctionne plutôt bien.

  6. PhDV61 dit :

    Bonjour André,

    Quelques nouvelles. Le routeur est monté, connecté, et fonctionne. Une simple heure de boulot, grâce aux centaines que tu as du y passer toi-même.

    je suis en tri-phasé, mais tous mes micro-contrôleurs Hoymiles HM800 (2 voies) sont sur une seule phase car j’ai utilisé un câble 3×2.5mm2 que j’avais tiré lors de la construction et qui va dans un coin très ensoleillé du jardin. Pas bien grave, car le Linky fait la somme des conso des trois phases.

    Lorsque je produis, la phase 1 ( celle des uC) passe à zéro (jamais en négatif bien sûr), puis la somme des trois phases passe à zéro lorsque la production excède la consommation. Tout est bien normal. Et je ne vois pas la quantité injectée, même si elle peut parfois dépasser 1400W lors des dernières journées très ensoleillées que nous avons eues. ( 2200 W produits, 800 de talon de conso maison ). Il y a donc bien de la récup à réaliser.

    Je suis en CACSI, sans bridage de mes micro-contrôleurs, et c’est pour cela que je souhaitais consommer l’excédent de production solaire (et ne pas faire trop de cadeaux à Enedis). Le contrat Enedis stipule en effet qu’on ne doit pas injecter plus de 10W (!). Jusque là j’utilisais la domotique de la maison pour allumer / éteindre mon chauffe-eau thermodynamique, et mes deux petits chauffe-eau tampon pour une SdB éloignée ainsi que la cuisine et étaler ainsi la conso au cours de la journée pour profiter au mieux de la production. Mais c’était loin d’être optimal car en tout ou rien.

    Je vais dorénavant faire tourner le thermodynamique en priorité (en tout ou rien) aux heures les plus chaudes car c’est là qu’il a son meilleur rendement, et les deux ballons d’appoint le reste du temps avec un triac, car ils peuvent aussi tourner la nuit.

    Il me restera à développer un bout de code pour aller chercher dans le cloud toutes les infos de production de mes panneaux et uC, mises à jour toutes les 15′ il me semble. Mais il va falloir décoder (parser) les différentes pages HTML pour aller piocher les infos que je souhaite ajouter sur la page d’accueil de ton routeur. Je n’ai rien de trouvé tout fait même si beaucoup se sont posé la question. Certains ont bien développé un DTU « compatible et ouvert » hoymiles hard, + soft en Python.

    Mais trop compliqué pour ce dont j’ai juste besoin. Il me suffit d’aller sur le cloud hoymiles avec mon identifiant et mot de passe pour récupérer ce qui m’intéresse.

    NB : même si j’injecte zéro au global grâce au routeur et au triac en monophasé, il n’en reste pas moins que je continuerai de tout injecter sur la phase 1, et de consommer sur les phases 2 et 3. Même si la somme fait maintenant zéro, ou mois de 10W. Je ne serai donc pas en « phase » avec la demande d’Enedis si je puis dire… Vont-ils seulement s’en rendre compte ? car je ne vois aucune info TIC leur permettant de le voir (sauf s’ils ont un index d’injection par phase qu’ils n’envoient pas sur le TIC en cas de CACSI, et qu’ils se gardent pour eux… Tout est possible, tout est imaginable.

    A+
    Phil.

    • F1ATB André dit :

      Enedis voit, je pense uniquement la somme algébrique des 3 phases.
      Je vois que tu te passionnes aussi pour ce sujet et occupe ta retraite…
      André

  7. Mandrin dit :

    Bonjour André,
    Merci infiniment pour votre travail. j’utilise votre routeur depuis 4/5 mois, avec source Linky et relais statique en sortie et train de sinus. En parallèle d’un routeur Arsun. Je voulais vois la différence coté « pollution » réseau. votre solution me parait nettement plus saine.
    Merci pour votre implication et partage

  8. Tod Franck dit :

    Bonjour André, j’utilise actuellement votre routeur avec le mode de mesure UxI pour plus de réactivité et cela fonctionne tres bien !! Maintenant, je souhaiterais également connecté mon linky sur mon ESP32 pour avoir une mesure réelle de ma consommation(la mesure qui fait foi pour ma facture 🙂 ). A ce jour on ne peut sélectionner qu’ un mode de mesure. Est il possible dans une prochaine version soft d’avoir le choix d’intégrer une seconde mesure pour information uniquement . J’imagine que cette nouvelle fonctionnalité pourrait plaire à plusieurs utilisateurs de votre système open source. En vous remerciant par avance Cordialement Franck

    • F1ATB André dit :

      Vous avez raison de vous intéresser au Linky, c’est lui qui génère votre facture. Mettre plusieurs capteurs, cela amène des contraintes de puissance de traitement. UxI prend déjà juste pour la mesure 50% de la charge de calcul.

      Cdlt

  9. schilling dit :

    bonsoir André,
    tout d’abord merci pour ce travail phénoménal mis à la disposition de tous.
    j’ai acheté d’occas 2 panneaux de 270wc chacun(10 ans) avec un mo de 600w.
    Je souhaite donc construire un routeur pour optimiser ce système car je réinjecte 1kwh par jour en moyenne.
    j’essaye de faire tout ce que j’entreprends à base de récup ou d’occasion.
    La première question que je voudrais vous poser est savez vous dans quel genre d’appareil je pourrais récupérer un coupleur optique LTV-814 ?(j’ai cherché sur le net mais rien trouvé)(je m’y prends certainement mal,je suis totalement béotien en électronique)
    j’ai également récupéré une carte arduino uno.
    D’où ma 2iéme question,votre routeur est il transposable sur cette carte ?(c’est le seul routeur diy que j’ai trouvé qui utilise le linki comme base de mesure).

    Merci
    Laurent

    Ps :Je n’ai pas lu les 6600 pages donc excusez moi si j’ai manqué la réponse à mes questions.

    • F1ATB André dit :

      Le LTV 814, je ne sais pas ou le trouver. Il vaut quelques centimes. Il est difficile de le trouver en petite quantité.
      L’Arduino UNO, n’est pas du tout adapté à mon code.

      Cdlt

  10. VINCENT dit :

    Bonsoir André,

    J’ai réalisé le montage en Linky avec une résistante de 1KOhm entre l’optocoupleur et le linky (et pour en fonctionnement avec un relais).

    Le linky est bien en mode standard, cependant, le routeur ne fonctionne pas : il remonte le message « Attente Linky 4000 boucles = 8s ».

    L’EPC 32 que nous avons mis n’est pas exactement le même modèle que celui présent sur votre tuto, n’ayant pas de sortie GPIO17, nous avons utilisé la sortie TX2. Est-ce la raison du non fonctionnement du routeur ? (faut-il obligatoirement utiliser une sortie GPIO17 ou une autre sortie est elle possible (GPIO2 ?) ?

    Merci d’avance pour vos lumières 🙂
    Cordialement.

  11. RORO dit :

    Bonjour Andre
    Bravo pour le travail réalisé.
    je me demandai si cela était possible de renvoyer en MQTT directement les INEDX HP HC ver Home assistant car je ne les voit pas.

    • F1ATB André dit :

      Je l’ai noté pour une prochaine version. Sachant qu’il faudra le faire que pour les Linky.

      Cdlt

      • RORO dit :

        enutilisant ce bout de code dans le fichier source linky ;ino et utilisant la variable dans le MQTT çà peut marcher , ou il ya til d’autres fichier à modifiés ?
        }

        if (code.indexOf(« EASF01 ») == 0) {
        INDEX_HC = val.toFloat(); //
        }

        • F1ATB André dit :

          Après il faut dans le fichier MQTT.ino, faire la découverte de la variable, puis l’envoi.

          Cdlt

  12. RORO dit :

    rebonjour Andre J’ai modifie le code MQTT.ino et SOurce linky.ino et ajouter la déclaration variable cela fonctionne

  13. Damien dit :

    bonjour,
    j’ai terminé le routeur avec info linky, bien penser à le passer en TIC standard sinon ça fonctionne pas…
    Ayant un onduleur de stockage avec batterie, j’aimerais que le surplus de charge, qui n’arrive pas à aller en batterie , aille dans le chauffe eau . Tu crois que c’est possible ? actuellement la charge du chauffe eau s’emballe au max systématiquement en vidant les batteries, une fois vide , la régul se fait normalement même en ajustant côté action sauf si seuil a 0w la ça marche plus du tout.
    Je n’ai pas de valeur injection dans l’accueil principal c’est normal ?

    • F1ATB André dit :

      Je connais pas le détail de fonctionnement de votre système aveb batterie.
      Mettez un seuil à -50 ou -100W.

      Cdlt

      • Damien Siguret SARL SDC dit :

        Merci pour ta réponse ☺️
        j’ai fait des essais avec mon chargeur Sofar pour prioriser la charge batterie puis en surplus la charge chauffe eau, il faut régler le seuil a 5w et augmenter la réactivité a 80 au moins.
        seuil a 0w ou négatif pas de charge au chauffe eau.
        au top merci encore !

  14. Go dit :

    Bonjour André, j’ai réalisé ton routeur avec la mesure sur mon Linky consommation et il fonctionne à merveille depuis plusieurs mois. Je voulais savoir s’il était possible sur le même ESP32 d’ajouter une 2e entrée (GPIO25 ?) pour mesurer mon compteur Linky production ? L’avantage étant de visualiser mes deux compteurs sur un seul ESP et une seule page web. Quels seraient les modifications logicielles à apporter ? Merci d’avance pour ton aide et expertise.

    • F1ATB André dit :

      Oui c’est possible, il y a encore un port série de disponible. Mais il faut rajouter du code similaire au premier.

      Cdlt

  15. Benoit dit :

    Bonjour,

    J’ai déjà un ESP32-S2 mini avec un module WeMos Teleinfo de Charles. Il tourne sous Tasmota et remonte les données dans Home Assistant.
    Je comprends que je ne pourrai pas l’utiliser en source pour le routeur F1ATB.

    Pourrais-je remplacer le firmware Tasmota par le FA1TB ? Je crois que le module « WeMos » est connecté au GPIO11 du ESP32-S2 mini. Si je modifie le code de « Source_Linky.ino » ligne 92 :
    #define RXD2 26

    Ça pourrait fonctionner ? Mon câble Linky est déjà tiré vers mon tableau et mon ESP32-S2 proprement installé dans le tableau électrique. Mon routeur solaire sera à distance, au niveau de mon chauffe-eau.

    • F1ATB André dit :

      Le portage sur un autre micro sera compliqué. Attendez la version V9.00 du routeur, elle sera capable d’utiliser les données de puissance dans Home Assistant.

      Cdlt