Réalisez un Routeur Solaire avec un Linky (DIY)

Version V3.11 Linky remplacé par la version V4.00_RMS
Pilotage depuis un SmartPhone ou un PC (navigateur Web)

Avec les panneaux solaires, dans une installation en autoconsommation, il est fréquent d’avoir de la surproduction d’énergie dont on ne sait que faire et qui est envoyée sur le réseau public. Une solution pour ne pas gaspiller cet excédent est de l’envoyer à un chauffe-eau électrique, un chauffage, une pompe de piscine…

Mais, pour un chauffe-eau ou un chauffage, gros consommateur d’énergie, il arrive de ne pas avoir assez d’excédent disponible pour couvrir à 100% leurs besoins.

Ici, nous allons réaliser un système qui envoi uniquement la puissance excédentaire au chauffe-eau ou chauffage en surveillant la puissance qui entre ou sort de la maison afin qu’elle soit nulle en exploitant les informations du compteur Linky installé dans les foyers français. 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.

Le système de routeur proposé fonctionne avec une installation en monophasé ou en triphasé.

Tableau des Versions

Différentes versions de routeur ont été décrites :

VersionMesure courant / puissanceActionneursModulaireDomoticzMQTT / Home AssistantDescription
1Sonde Ampèremétrique
Monophasé
RelaisNonOuiNonRouteur Solaire. Mesure de Puissance avec un ESP32
2Sonde Ampèremétrique
Monophasé
Triac + RelaisNonOuiNonRéalisez un Routeur Solaire pour gérer la surproduction
3.04_UxISonde Ampèremétrique
Monophasé
Triac + RelaisOuiOuiOuiU x I : Routeur Solaire pour gérer la surproduction photovoltaïque
3.11 LinkyLinky
Monophasé ou Triphasé
Triac + RelaisOuiOuiOuiRéalisez un Routeur Solaire avec un Linky
Voir à présent la version V4.00_RMS



Schéma du routage de l’énergie excédentaire vers un chauffe-Eau ou un chauffage

Le routeur solaire, à l’aide d’un Triac, agit comme une vanne qui s’ouvre pour laisser passer la surproduction en surveillant le courant en entrée de la maison afin qu’il soit nul.

Modularité

Le système se décompose en trois fonctions :
– la mesure de puissance au niveau du Linky,
– le traitement à l’aide d’un microcontrôleur ESP32,
– les actionneurs avec un triac et des relais pour alimenter différentes charges.

Il peut s’éclater en différents modules pour s’adapter à des distances élevées entre le Linky et les équipements à alimenter. De simples relais pilotables par Wifi peuvent être contrôlés.

Système modulaire éclaté dans différents lieux de la maison.

Pour les détenteurs de serveurs de domotique comme Home Assistant ou Domoticz, les informations principales du Linky peuvent être envoyées pour y être traitées.


Vidéo explicative

Réalisation

Branchement à la prise TIC

Le branchement à la prise TIC (Terminal Information Client) est détaillé sur la page https://f1atb.fr/capteur-linky-pour-routeur-photovoltaique/

ESP32

La lecture de la trame série reçue du Linky se fait par le micro-calculateur ESP32 sur la broche GPIO26. L’ESP32 est un micro-calculateur très puissant. Il dispose de 2 cœurs de calcul que nous utiliserons dans ce projet, de la mémoire RAM, ROM ainsi que du WiFi.

2 Leds vertes et rouges, sur les GPIO 18 et 19 renseignent sur le fonctionnement. Un clignotement simultané indique la recherche d’une connection WiFi. La verte clignote seule à chaque arrivée de trame du Linky en cas d’injection. La rouge ou jaune clignote en cas de consommation à chaque arrivée de trame du Linky.

Actionneur Gradateur / Triac

Gradateur/Triac modifié
Gradateur/Triac d’origine

Pour ajuster le courant à injecter vers un chauffe-eau ou un chauffage, on utilise un gradateur de chez RobotDyn composé d’un Triac et d’un système de détection du passage à zéro de la tension qui permet d’envoyer à l’ESP32 un signal de synchronisation avec le secteur pour caler en temps l’instant d’ouverture du Triac. Il existe en 16A ou 24A et est disponible chez Aliexpress.


Attention, le refroidisseur d’origine du Triac est largement sous-dimensionné si vous avez une charge de plus de 1000W, sachant qu’il devra fonctionner pendant plusieurs heures. Remplacez-le par un plus-grand. Vous dessoudez le Triac et le montez sur un gros refroidisseur. Pensez à raccorder le refroidisseur à la terre du secteur pour la sécurité.

Pour en savoir plus sur le gradateur : https://f1atb.fr/triac-gradateur-pour-routeur-photovoltaique/

Attention, ce système, permettant d’ajuster finement la puissance disponible, ne fonctionne que pour les chauffe-eaux électriques ou chauffages classiques dans lesquels se trouvent une résistance électrique et un thermostat électro-mécanique pour contrôler la température. Pour les autres, il faudra utiliser un relais en tout ou rien comme décrit ci-dessous.

Schéma d’un système collectant les données du Linky par Wifi et non optocoupleur, et commande des actionneurs Triac et Relais.

Actionneur Relais

Ce projet permet l’ajout de relais sur les GPIOs libres de votre choix (sauf le 27) pour commander un ou plusieurs dispositifs suivant l’état de consommation ou injection de puissance au niveau de la maison. Sur le schéma plus haut, ils sont en GPIO17 et GPIO2.

Vous pouvez connecter un relais solide (SSR) ou un relais mécanique. Il en existe de nombreux de 10, 25 ou 40A. Ils doivent être commandables en 3.3V.


Schéma électrique global

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. On peut même de n’importe quel ESP32 commander des interrupteurs/relais pilotables par Wifi. Voir le chapitre du logiciel plus bas.

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

Pages Web

Le code installé sur l’ESP32 comprend un serveur Web qui permet d’afficher sur plusieurs pages, les différentes mesures et les paramètres de configuration. Il suffit de rentrer l’adresse IP ou le ‘hostname.local ‘ de l’ESP32 dans le champ d’adresse de votre navigateur web.

Page principale

En haut, une zone de menus pour choisir la page.

En dessous l’heure fournie par le Linky, précédée d’un E en été et d’un H en hiver.

Un tableau donne les valeurs Soutirées et Injectées :
– la puissance apparente instantanée en VA
– une estimation par calcul de la puissance active en W
– l’énergie active depuis 0h en Wh
– le compteur d’énergie active cumulée en Wh

Un deuxième tableau, donne l’état courant des actionneurs. Ici l’ouverture du Triac à 37% du temps. La régulation est en cours pour ajuster la puissance consommée/injectée de la maison autour de 0W. Un relais connecté à l’ESP pour piloter un chauffage est Off. Un relais distant piloté par Wifi a enclenché la filtration de la piscine.

Un premier graphe donne la puissance active en rouge et la puissance apparente en bleu-vert durant les 10 dernières minutes. Entre 0 et -2mn on est en phase de régulation, la puissance active est proche de zéro. Entre -2 et -8mn on est en surproduction malgré une ouverture de Triac à 100%. Entre -8 et -10mn, on est en régulation avec une puissance active proche de zéro. On remarque que durant les phases de régulation, la puissance apparente est très importante et chahutée. C’est un comportement normal. Durant une demi-sinusoïde de 10ms, on consomme et on injecte de la puissance pour avoir un bilan nul de puissance active. Cela se traduit par de la puissance apparente élevée. Il n’y a pas de somme algébrique signée, c’est une somme de carrée. Voir la vidéo sur les unités électriques https://youtu.be/xHhURisycmA

Plus bas sur la page, deux autres graphes donnent la puissance active (Soutirée-Injectée) sur 48H et l’énergie quotidienne (Soutirée-Injectée) en Wh sur un an. Ce dernier est stocké en mémoire ROM de l’ESP32 pour ne pas être perdu en cas de coupure de courant.

Page données brutes

Cette page, regroupe les données brutes sans traitement, telles que fournies par le Linky.

Un premier tableau, donne les principales valeurs pouvant vous intéresser pour le suivi de votre consommation. Il donne, par exemple, les pointes de consommation et d’injection des derniers jours. Ce tableau est plus fourni en triphasé, il donne certaines valeurs par phase.

Un deuxième tableau est la recopie du dernier message série reçu du Linky. Se reporter à la documentation d’Enedis, téléchargeable plus haut, pour décoder le message.

Un dernier tableau, fourni des informations sur l’ESP32, pour suivre son fonctionnement.



Page paramètres

Une page est dédiée principalement aux paramètres réseau.

L’adresse IP de l’ESP32 est définie par votre box internet (cocher la case DHCP) ou elle est fixée par vous-même.

Si pour obtenir les données du Linky, vous n’avez pas le coupleur optique branché sur cet ESP, mais un autre distant, cochez la case ESP Linky Externe et rentrez l’adresse IP de ce dernier.

Si vous souhaitez envoyer des données à Domoticz, mettez une période de répétition autre que 0 et remplissez les champs. Domotiz recevra la dernière puissance Active Pw (Soutirée – Injectée) connue.

Si vous souhaitez envoyer des données à Home Assistant via un broker MQTT, mettez une période de répétition autre 0 et remplissez les champs. MQTT recevra plusieurs topics :
– « linky/pva » la puissance apparente en VA
– « linky/pw » la puissance active en W signée
– « linky/pws » la puissance active soutirée en W
– « linky/pwi » la puissance active injectée en W
– « linky/easj » l’energie active soutirée du jour en Wh
– « linky/eaij » l’energie active injectée du jour en Wh

Et en option s’ils sont activés :

– « linky/triac  » l’ouverture du Triac entre 0 et 100%

–  » linky/action1″ état binaire 0 ou 1 de l’action1 ,action2 etc..


Extrait fichier mqtt.yaml
- state_topic: "linky/pva"
  name: "Linky PVA"
  unique_id: linky_pva
  unit_of_measurement: VA
  device_class: apparent_power
- state_topic: "linky/easj"
  name: "Linky E Soutirée Q"
  unique_id: linky_easj
  unit_of_measurement: Wh
  state_class: total_increasing
  device_class: energy
- state_topic: "linky/eaij"
  name: "Linky E Injectée Q"
  unique_id: linky_eaij
  unit_of_measurement: Wh
  state_class: total_increasing
  device_class: energy
- state_topic: "linky/pw"
  name: "Linky Power"
  unique_id: linky_pw
  unit_of_measurement: W
  device_class: power
- state_topic: "linky/pws"
  name: "Linky PW Soutirée"
  unique_id: linky_pws
  unit_of_measurement: W
  device_class: power
- state_topic: "linky/pwi"
  name: "Linky PW Injectée"
  unique_id: linky_pwi
  unit_of_measurement: W
  device_class: power
- state_topic: "linky/triac"
  name: "Linky Triac"
  unique_id: linky_triac
  unit_of_measurement: '%'
- state_topic: "linky/action1"
  name: "Linky Action1 Relais"
  unique_id: linky_action1

Attention, Domoticz et MQTT ne recevront des messages que si des données valides ont été reçues du Linky.

Lorsque l’on apporte des modifications à ces paramètres. Il ne faut pas oublier de les sauvegarder dans la mémoire ROM de l’ESP32 puis faire un ESP32 Reset pour que le système soit relancé avec les nouveaux paramètres.


Page actions

Cette page permet de configurer les actionneurs et de définir un planning de routage. Elle offre une grande flexibilité de configuration pour s’adapter aux divers besoins.

La première des actions est réservée au pilotage du Triac. Cocher la case pour l’activer. En cliquant sur + ou – on peut ajouter ou enlever des plages horaires. En déplaçant la souris horizontalement, on peut modifier les heures. Pour une plage horaire donnée, il y a 3 types d’action possible :

  • Triac forcé à Off
  • Triac forcé à On (100%)
  • Triac s’ouvre entre et 100% si Pw (puissance active en entrée de maison) < Seuil à définir, Off si supérieure au Seuil. Seuil en général à 0.

Après chaque mesure reçue du Linky, le logiciel augmente ou diminue la durée de conduction du Triac. Cela permet après plusieurs mesures de s’approcher de l’équilibre pour avoir une consommation/injection au niveau de la maison proche du Seuil (en général 0W) que l’on a fixé. Quand on augmente de 10% la durée d’ouverture, l’effet ne sera pas le même si vous avez une charge de 500W max connectée ou une charge de 3000W. Un curseur permet d’augmenter ou de réduire le gain de l’asservissement ou la réactivité de l’ensemble. En regardant l’historique de 10mn, on voit si la réaction à toute variation de consommation est lente ou trop rapide, engendrant une oscillation de la puissance active (courbe rouge).

SonOff Mini R2

Les autres actions permettent de piloter des relais branchés sur les sorties GPIO disponibles (sauf le GPIO27) ou de piloter un relais distant comme le SonOff Mini R2 https://f1atb.fr/sonoff-mini-installer-son-firmware-simplement-par-le-wifi/

Il faut remplir les différents champs :

  • Host: mettre « localhost » sans les «  » si le relais est connecté à cet ESP32 ou l’adresse IP du relais distant
  • Port: en général 80 pour une communication suivant le protocole http
  • On : pour un relais local mettre « gpio=17&out=1 » si l’on souhaite mettre à 1 la sortie GPIO 17. Pour un relais externe distant, mettre la commande demandée par le constructeur
  • Off: pour un relais local mettre « gpio=17&out=0&init=0 » si l’on souhaite mettre à 0 la sortie GPIO 17 et l’inialiser à 0 à la mise en route
  • Répet: répétition périodique en s si besoin de la commande. Avec 0 la commande est envoyée une seule fois au franchissement du seuil.

Pour chaque plage horaire, il y a 4 types d’action de routage :

  • Pas de contrôle: il ne se passe rien.
  • Off : on force l’état Off du relais
  • On: on force l’état On du relais
  • Pw< et Pw> : si la puissance active est inférieure à un seuil, le relais passe à On. Si la puissance active est supérieure à un autre seuil, le relais passe à Off. Attention, il faut que le seuil(off) – seuil(on) soit supérieur à la consommation de l’équipement connecté pour éviter un risque d’oscillation toutes les 2s.

En fin de configuration, ne pas oublier de sauvegarder.

Chaque fois que vous sauvegardez, une nouvelle action vierge est proposée. Pour enlever une action, videz les champs.

Réalisation

La réalisation est très simple, à la portée d’un bricoleur, il y a peu de composants à interconnecter.

Si vous souhaitez mettre uniquement la partie mesure et le traitement près du Linky, une boite d’électricien fait l’affaire pour y implanter :
– un coupleur Optique LTV-814
– 2 résistances
– un ESP32 – Development Board
– une alimentation 5V/1A ou 0.5A avec une sortie micro-USB ou USB-C
– 2 LEDs de couleur

ESP 32 – Development Board
Maquette complète avec le capteur optique, un ESP32, 2 LEDs, un Triac, un relais solide et une alimentation 5V/1A.
Gradateur Triac 16A ou 24A de chez Robotdyn

Exemples

Configuration complète regroupant Linky et chauffe-eau

Configuration avec Linky séparé du chauffe-eau et liaison Wifi entre les ESP32. Le même programme est implanté dans les 2 ESP32.

Configuration avec Le linky, le chauffe-eau et un moteur de piscine piloté par un relais/Wifi séparé. Le même programme est implanté dans les 2 ESP32. L’ESP32 du Linky pilote le relais/Wifi du moteur.

Le relais/Wifi du moteur peut être remplacé par un troisième ESP32 avec le même programme et un relais mécanique ou SSR (relais solide).

Longue distance

Pour ceux qui sont sur un grand terrain avec le Linky loin du routeur WIFI, l’utilisation d’un ESP32 avec une antenne déportée permet de doubler la portée du WIFI. On peut typiquement faire du 50m, là où votre smartphone ne captera plus le Wifi.

La sortie antenne sur connecteur SMA permet d’y rajouter une rallonge coaxiale pour placer l’antenne dans un endroit dégagé.

ESP32 avec antenne déportée et Triac. Refroidisseur remplacé permettant de piloter des charges de maximum 1500W.
Important refroidisseur pour gérer une charge de 3000W.

Approvisionnements pour une configuration complète

  • La carte ESP32 (Development Board 2*19 pins) chez Aliexpress ou plus rapidement une carte 2*16 broches ESP 32 Wroom chez uPesy.fr)
  • Une alimentation 230V – 5V 1A DC pour l’ESP32
  • Un gradateur 16A ou 24A de RobotDyn suivant la puissance du chauffe-eau (Aliexpress)
  • Résistance R1 1500 Ω 1/4 ou 1/8W
  • Résistance R2 10000 Ω 1/4 ou 1/8W
  • Résistances R4 et R5, 330Ω à 820Ω 1/4 ou 1/8W
  • 2 LEDS en face avant
  • 1 coupleur optique LTV-814 (Chine ou demandez à Google)
  • Du fil de câblage et une plaque à trou pour le montage
  • Un ou plusieurs relais SSR (solide) ou mécanique pilotable en 3.3V et supportant le courant demandé par la charge connectée

Exemple 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. Le soleil est très changeant. Un autres routeur est connecté simultanément pour alimenter un chauffe-eau derrière un Triac et une pompe de piscine derrière un relais.

Diode rouge clignotante = Consommation sur le réseau public
Diode verte clignotante = Injection vers le réseau public
Lampe du haut en tout ou rien avec un relais
Lampe du bas (100W) alimenté par le Triac. Regardez le filament.

Code Source

L’ensemble du code est écrit en utilisant l’IDE Arduino. C’est le même code quelle que soit la configuration modulaire choisie. 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 (voir le détail ici). Il faut, dans les préférences de l’IDE, 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

Le code source est composé de 9 fichiers installés dans le même dossier :
– Actions.cpp
– Actions.h
– pageHtmlActions.h
– page HtmlBrute.h
– pageHtmlMain.h
– page HtmlPara.h
– RouteurSolaire_V_3.10_Linky.ino (le programme principal)
– Stockage.ino

Le code source est disponible ici:

Dézipper l’ensemble et ouvrez dans l’IDE Arduino (version 2.xx) le fichier RouteurSolaire_V_3.10_Linky.ino.
Vérifiez que vous avez les bibliothèques installées sur votre IDE Arduino :
– RemoteDebug
– NTPClient
– PubSubClient
Pour la compilation du fichier RouteurSolaire_V_3.10_Linky.ino, veuillez sélectionner la carte ESP32 Dev Module ainsi que le port de COM de Windows sur lequel est branchée la carte par le port série. Avec certaines cartes, si le téléversement du code dans l’ESP32 ne se fait pas, il faut presser sur le bouton boot au début de la tentative de téléversement.

Premier lancement du programme

Au premier lancement du programme dans l’ESP32, le logiciel ne connait pas le nom et le mot de passe de votre réseau Wifi. Il va passer le WiFi en mode point d’accès. Sur votre Smartphone ou PC portable, regardez la liste des WiFi disponibles. Connectez-vous à celui qui porte le nom Linky-ESP32….., il n’y a pas de mot de passe. Ouvrez un navigateur web et rentrez l’adresse 192.168.4.1 qui correspond à l’ESP32. Il va vous renvoyez une page vous demandant le nom du WiFi auquel se connecter à l’avenir et le mot de passe.

Page permettant d’indiquer le réseau Wifi auquel doit se connecter l’ESP32 à l’avenir.

Regardez, le moniteur série de l’Arduino, vous trouverez l’adresse IP sur votre réseau Wifi qui a été attribuée par la box (DHCP) qui gère le réseau. Appuyez sur Reset si besoin pour relancer le démarrage de l’ESP32 et sa connexion au réseau WIFI que vous lui avez indiqué. Rentrez cette adresse IP dans un navigateur Web connecté à votre réseau et vous serez connecté à l’ESP32. Il n’y a rien à modifier dans le code comme dans la version V2.

Au démarrage ou après un « Reset », les 2 LEDs clignotent simultanément lorsque l’ESP32 cherche à se connecter au réseau WIFI.

Adresse IP Fixe

Si vous souhaitez fixer vous-même l’adresse IP, allez faire un tour auprès de votre box à la rubrique réseau / DHCP, vous trouverez le champ des adresses dynamiques. Par exemple, souvent les Livebox d’Orange attribuent des adresses dynamiques DHCP entre 192.168.1.10 et 192.168.1.150. Il vous reste alors un champ libre pour attribuer vos propres adresses entre 192.168.1.151 et 192.168.1.253. Fréquemment, les .254 et .255 sont réservés à autre chose. Vous pouvez ainsi donner comme adresse 192.168.1.200 à l’ESP32 si aucune autre machine sur le réseau occupe déjà cette adresse.

IPAddress gateway correspond à l’adresse IP de votre box. C’est elle qui fait la passerelle (gateway) avec le monde extérieur. Chez Orange, c’est en général 192.168.1.1. Chez Free, c’est plutôt 192.168.0.254. Les trois premiers chiffres 192.168.0 ou 192.168.1 doivent être les mêmes pour la box et votre ESP.

Arduino OTA

Le code inclut la possibilité de le mettre à jour non pas par la liaison série entre le PC et l’ESP mais via le Wifi. C’est la fonction Arduino OTA (On The Air). Dans l’IDE Arduino, allez à Outils/Port/Réseau Port vous y trouverez mentionné la carte ESP32 du routeur. Sélectionnez là et le téléchargement se fera via le Wifi et non plus le port série. L’IDE Arduino vous demande un mot de passe lors de la compilation. Répondez n’importe quoi, 1 lettre minimum. Cette fonctionnalité est bien utile, une fois le routeur implanté probablement loin de votre PC.

Remarques

Si vous regardez les premières lignes du programme, il y a 2 constantes :

#define HOSTNAME « Linky-ESP32-« 

#define CLE_Rom_Init 1234567890

La première définie le début du nom de votre ESP sur le réseau, le deuxième est une clé qui permet de tester si le programme a déjà tourné. Au premier lancement, la mémoire de stockage en ROM est virginisée, par la suite, elle contiendra tous les paramètres de configuration et l’état des compteurs d’énergie en Wh chaque jour à 0h. Si vous voulez, virginiser à nouveau la mémoire, changé la constante. Attention, votre ESP32 repartira en mode point d’accès, puis une fois le réseau WiFi connu, il aura une adresse IP obtenue par la box internet (DHCP).

Debug en ligne

Si vous êtes branché par le port série à l’ESP32, les messages de debug sous la forme Serial.print(…) ou Serial.println() sont disponibles sur le moniteur de l’IDE Arduino à 115200 bauds.

Si vous êtes branché uniquement en Wifi, le debugger de Joao Lopes est implanté dans le logiciel. Il est accessible par le navigateur web. Téléchargez le code ici: https://github.com/JoaoLopesF/RemoteDebugApp , décompressez le zip dans un dossier quelconque et cliquez sur index.html. Rentrez l’adresse IP de l’ESP32 pour obtenir les messages Debug.print() ou Debug.println(…) .

Bugs Soft

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/

Sur certaines configurations, lors de la compilation, il y a une erreur de librairie inexistante :…..include <hwcrypto/sha.h>
Avec un éditeur de texte, ouvrez le fichier dans vos bibliothèques Arduino C:/Users/Utilisateur/Documents/Arduino/libraries/RemoteDebug/src/utility/Websockets.cpp

Le début de l’adresse peut changer suivant l’utilisateur. Retrouvez le dossier Arduino pour localiser le fichier dans les sous-dossiers.

A la ligne 42, remplacez :
#include <hwcrypto/sha.h>
par
#include <esp32/sha.h>

Ne me demandez pas pourquoi, sur mon PC de bureau, je n’ai pas besoin de faire cette modification, sur mon PC portable, j’ai besoin.

Diagramme fonctionnel

L’ESP32 est un processeur bi-coeur. Le coeur 0,collecte les données du Linky. Le coeur 1 gère les communications Wifi.

Watchdog

Le fonctionnement de l’ESP32 est surveillé par un watchdog (chien de garde). Si aucun message n’est reçu du Linky local ou distant pendant 120s, l’ESP32 se reset. Si vous ne voulez pas être embêté par cela durant des essais, passez en commentaire //les lignes ou il y a ..wdt..

Comparaison Routeur à sonde ampèremétrique / Routeur avec un Linky

La version V2 du routeur utilise une sonde ampèremétrique ( https://f1atb.fr/realisez-un-routeur-solaire-pour-gerer-la-surproduction/) . La principale différence entre les 2 versions vient de la vitesse de réponse de la boucle d’asservissement en cas de variation de consommation dans la maison. La sonde ampèremétrique permet une mesure du courant et de la puissance toute les 40ms. Le routeur avec le Linky, mesure la puissance toutes les 2 secondes. Il mettra plus de temps à rejoindre l’équilibre. Par contre il est un peu plus simple à réaliser et fonctionne en triphasé.

Exemple de routage et régulation à Zéro Watt

Courbes Tension (rouge) et Courant (vert) en entrée de maison lors d’une régulation autour de 0 Watt.

Dans cet exemple, l’ouverture du triac vers le chauffe-eau est d’environ 50% du temps (5ms). Le système se régule pour avoir une puissance échangée avec le réseau public autour de 0W . Sur une durée d’une demi sinusoïde de 10 ms, on a une première période où l’on injecte de l’énergie puis le Triac s’ouvre, on consomme de l’énergie sur le réseau.En faisant une centaine de mesures du produit U*I sur la période de 20 ms on a un résultat proche de zéro en Watt. Par contre, pour la puissance apparente qui est le produit de la tension et du courant efficaces qui ne tient pas compte du signe (voir vidéo ci-dessous), on a une valeur importante en VA.

Votre fournisseur d’électricité vous facture en fonction des W ou Wh et non pas sur le VA (puissance apparente).

Affichage distant

Si on souhaite afficher la puissance consommée ou injectée en temps réel dans un endroit de passage de la maison, il existe un afficheur très simple qui s’allume lorsque l’on passe à côté. https://f1atb.fr/affichage-a-distance-consommation-ou-surproduction-electrique/

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...

819 réponses

  1. ERIC RODRIGO dit :

    Bonjour, je reviens sur le fonctionnement du MQTT.
    Comme vous me l’avez préconisé, je me suis connecté sur le port série de l’ESP après avoir rajouté des Debug.print et des Serial.println et je n’ai aucune remontée d’info relative au MQTT. Les seules remontées que j’ai concernet le wifi. C’est comme si la partie MQTT du squetch n’était pas exécutée.

    • F1ATB André dit :

      Mettez la période à 5s. Vous devez avoir un message sur le port serie de l’ESP toutes les 5s.
      Mettez si vous le souhaitez un Debug.println (« OK »); ou Serial.println (« OK »); en dessous de la line 1016. void envoiAuMQTT(int Pw) {… pour vérifier l’execution

      • ERIC RODRIGO dit :

        La période était déja de 5s. J’ai rajouté Debug.println(« Ok »); en ligne 1017, soit la ligne après byte arr[4]; mais le Ok n’apparait pas. Rien de changé

        • F1ATB André dit :

          Attention je suppose que vous êtes à l’écoute du port Serie et non pas le debug par Wifi. Dans ce cas ce sont des Serial.print…

          Si vous êtes branché par le port série à l’ESP32, les messages de debug sous la forme Serial.print(…) ou Serial.println() sont disponibles sur le moniteur de l’IDE Arduino à 115200 bauds.

          Si vous êtes branché uniquement en Wifi, le debugger de Joao Lopes est implanté dans le logiciel. Il est accessible par le navigateur web. Téléchargez le code ici: https://github.com/JoaoLopesF/RemoteDebugApp , décompressez le zip dans un dossier quelconque et cliquez sur index.html. Rentrez l’adresse IP de l’ESP32 pour obtenir les messages Debug.print() ou Debug.println(…) .

          Cdlt

  2. ERIC RODRIGO dit :

    Bonjour André, j’ai bien manipé comme vous avez décrit. Cependant, j’ai installé le debugger de Joao et là miracle (si je peux dire) j’ai des erreurs qui remontent:
    (D) Erreur checksum code : EAST 51,34
    (D) Erreur checksum code : SINSTS 837,-1
    (D) Erreur checksum code : SINSTS 82,66
    (D) Erreur checksum code : EAST 34,51
    Est-ce que ma résistance R1 serait mal adaptée? (valeur actuelle 2080 Ohms pour une longueur de cable de 1 ml) ?

  3. André dit :

    Bonjour André et à tous,
    Nous n’avons plus l’habitude de lire les manuels de nos logiciels et cela m’a posé tous les problèmes rencontrés.
    Cette fois, j’ai pris la « peine » de tous lire calmement et de A à Z tout ce que André à bien voulu nous écrire et j’ai – enfin – tout compris et fonctionne merveilleusement bien.
    Encore merci pour tout et, avant de sortir, je ferai un don.
    Ce programme le mérite largement; c’est – de loin – le meilleur de tout ce que j’ai vu!!!!
    André.

  4. F1ATB André dit :

    Version V3.11_Linky publiée qui envoi plus d’infos au broker MQTT , le Triac et les puissances soutirées et injectées.

  5. jean dit :

    bonjour j ai fait la version v3.1 , j ai des probleme de connection , mauvaise valeur affichée qui changeaient tout le temps , parfois les bonnes en partie , ca varie tout le temps pas stable , petit fil telephonqiue 10M ??
    quelle pourrait etre le probleme ?
    merci

    • F1ATB André dit :

      Si les valeurs affichées dans la page Données Brutes sont incohérentes, c’est la liaison au Linky qu’il faut reprendre. Baissez la résistance R1 de 1500 ohms. Essayez 1000 ohms, ou même augmentez 2000 ohms.
      Cdlt

      • jean dit :

        j ai mis 2100 ohm , ca marche mieux , mais des fois ,c est stable 5-10 min et hop ca decroche 1-2min et ca revient

        j imagine la résistance doit etre précise pour bien choper les info.. on va chercher merci

        merci

        • F1ATB André dit :

          En général 1500ohm c’est OK, mais parfois il faut changer l’adaptation pour bien récupérer le signal du Linky.
          Cdlt

          • jean dit :

            bonjour , impossible d avoir quelque chose de stable , jai changer le fil , optocoupleur ( 814 y)? , resistances , je ne sais plus ??

          • F1ATB André dit :

            Il faut retoucher si besoin la résistance R1 de 1500ohm entre 1000ohm et 3000ohm

            Cdlt

          • jean dit :

            j ai mis un potentiomètre fai varier la resistance , 500 -3000 ohm , rien n est stable , qu est qui ppourrait brouiller le signal ou ??

          • jean dit :

            merci pour votre aide le probleme venait bien de la masse , 2 fils seuls ne fonctionnaient , mais 3 fils torsardés ensemble ,en mettant le troisième a la masse , ca foncti?onne parfaitement , peut etre a rajouter ce conseil au tuto.

          • F1ATB André dit :

            C’est écrit sur la page
            « Raccordement au Linky
            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é. »

            Cdlt

          • jean dit :

            oui c est ecrit lol , c est pas ecrit qu il faut mettre a la masse les fils restant torsardé , ou c est moi peut etre qui comprend mal ,je suis pas du métier electronique , et moi je pensais que c etait juste le type de fils qui convenaient , j en ai pris que 2
            merci pour votre patience et votre beau projet

        • jean dit :

          je crois avoir trouvé le probleme , la masse …comment expliquer ?? j ai brancher la patte 3 de l opto juste a la masse esp32…sur votre schema apres ca part vers gnd mais vers ou ?? moi j ai remis une masse sur esp 32, au connecteur usb , ca semble etre stable ?? a suivre ?

          • F1ATB André dit :

            On m’a déjà signalé que certaines cartes n’ont pas toutes les masses (Gnd) reliées entre elles. Ce qui explique votre problème. Reliez les entre elles et ce devrait être bon.Cdlt

          • jean dit :

            oas stable …c etait pâs ca.. vous pensez q u on peut avoir un signal linky pourri??

          • F1ATB André dit :

            Si vous avez un long câble vers le Linky, mettez un câble blindé (comme du câble réseau). Reliez la mase à la masse de l’Esp. .

  6. Adam dit :

    Bonjour André, Je vous remercie infiniment pour ce tuto, cependant je ne comprend ce qu’il faut que je fasse pour obtenir l’accès à la page web. Toute les étapes précédentes sont passées mais celle-ci me pose problème car je ne sais pas où trouver l’adresse IP de ma carte ESP32 ni ou trouver le hostname.local. Merci d’avance pour ta réponse

    • F1ATB André dit :

      L’adresse IP vous la trouvez dans le moniteur de l’IDE Arduino comme indiqué au chapitre « Premier lancement du programme »
      Vous pouvez la trouver également sur votre Box Internet, chapitre DHCP qui liste les adresses attribuées chez vous.
      Cdlt

  7. Patrick+L. dit :

    Bonsoir André,

    J’ai reçu tout le matériel (panneaux, onduleurs, composants électroniques).
    J’ai vérifié que mes panneaux produisent avant de les installer sur mon toit.
    Je bloque à la compilation du sketch de la version V_3.11_Linky avec le message :

    « \RouteurSolaire_V_3_11_Linky\bootloader.bin �tait inattendu.

    exit status 1

    Compilation error: exit status 1 »

    Une idée ?

    Merci !

    • F1ATB André dit :

      La vous me laissez perplexe.
      Avez-vous choisi la bonne carte et le bon port auquel est connectée la carte?
      Ou bien vous n’avez pas sur votre PC le bon driver USB. Voir chapitre Bugs Soft.

  8. Maxime.C dit :

    Bonjour André,
    Pour ce qui est de domoticz, peut-ton récupérer les données mesurées et calculées par l’esp (puissance, intensité, tension…)? pour le moment je n’arrive pas a recupérer quoique ce sois.
    je n’ai fais aucun montage sur mon linky, j’ai déja un module fourni par edf qui m’envoi les données en direct sur une appli (infowatt).

    merci d’avance

    merci

    • F1ATB André dit :

      Comme il est écrit dans la page de documentation, Domoticz recevra des données si l’on reçoit quelque chose du Linky.
      A ce jour le routeur n’envoi que la puissance active en W.

      Cdlt

  9. Pascal WAGNER dit :

    Bonjour André, j’ai réalisé la version V3.11 LINKY, je suis complètement novice dans le domaine mais tout c’est relativement bien passé, j’ai un cacsi donc pas de valeurs injectées et la diode verte ne clignote pas, donc j’ai utilisé l’emplacement pour une led de mise sous tension de l’esp et j’aurais donc une question est-ce que on pourrait rajouter un display oled pour afficher le nom du routeur, l’heure et la date peut être.
    Merci d’avance pour votre réponse et je compte faire une petite donation pour la réalisation de ce routeur.

    • F1ATB André dit :

      Avec un CACSI, comme dit dans de nombreux commentaires, mettez un seuil de déclenchement du Triac non pas0 mais à 100 ou 200 (W). Le routage se fera.
      Comme il y a le serveur web qui fourni tout, l’Oled est possible mais un peu superflu.

  10. Regis ARNAUD dit :

    Bonjour André
    Merci pour tes vidéos très intéressantes.

    je voudrais réaliser le montage pour ma maison, mais je suis en triphasé ainsi que mon chauffe eau.
    Pourrait t’on modifier le programme pour avoir 3 sorties de commande de trois relais statiques avec trois top de déclenchement au zéro.
    Merci d’avance pour ta réponse.
    Régis

    • F1ATB André dit :

      Il n’y a rien a modifier, c’est prévu. Soit vous mettez 3 relais branchéd sur le même gpio ( s’assurer que les 3 courants de pilotage sont compatibles du courant max de l’Esp32), sois vous mettez 3 relais sur 3 gpio de libre et vous mettez la même règle de déclenchement. Cdlt

      • Regis ARNAUD dit :

        Merci André,
        toutefois comme les phases sont décalées de 120°, il me semble qu’il va falloir trois Zc et trois pulses différents ainsi que les programmes d’interruption correspondants.

  11. André dit :

    Bonsoir André,
    Je suis avec la version 3.11. jusqu’à présent je n’utilisais que le Triac et c’est impec.
    Je suis en train d’essayer avec un relais type SSR raccordé en GPIO17.
    Dans les paramètres j’ai mis GPIO=17&out=1 et GPIO=17&out=0&init=0 repeat à 240.
    A l’instant je consomme +/- 550 w et j’a mis mes déclenchement (pour pouvoir tester) à 1250.
    Lorsque je reviens en Main l’indicateur GPIO7 reste désespérément sur OFF et bien sûr le relais n’enclenche pas.
    J’ai fait un erreur? Où??
    Merci

    • F1ATB André dit :

      Assurez vous que vous avez une différence entre les 2 seuils pilotant le gpio17 supérieure à la consommation du dispositif connecté. Mettez pour les essais 10 et bon 240s pour ne pas attendre et n’oubliez pas de sauvegarder. Cdlt

  12. André dit :

    Mis mes déclenchements à 1250 sorry

  13. André dit :

    Mis mes déclenchements a plus petit que 750 et plus grand que 1250.

    Les commentaires ne prennent pas les signes??

  14. André dit :

    Bonjour André,
    Ce matin je suis déjà en surproduction. J’ai mis les param à moins de 50 ON et plus de 250 OFF et toujours pareil; je ne comprends pas …
    Si il y a un piège, je ne le trouve pas.
    André C.

    • F1ATB André dit :

      Voyez vous sur la première page d’accueil l’état de la sortie sous le premier tableau, avant les graphiques.
      Si non vérifiez vos paramètres entrés dans la page Actions.
      Avez vous mis localhost ?
      Cdlt

  15. André dit :

    Re Bonjour,
    J’ai une piste: la routine Actions.cpp réagit comme si mon GPIO17 n’est pas valide mais je ne comprends pas pourquoi.
    J’utilise la GPIO17 comme dans l’exemple.
    Merci.

    • F1ATB André dit :

      retapez la ligne, il y a peut-être un caractère caché,non visible, suite à un copier coller.

      • André dit :

        Merci,
        Tapé la ligne à la main mais cela ne change rien.
        :-((

        • André dit :

          Je ne suis pas un spécialiste en Arduino mais pour essayer de comprendre d’où vient mon problème j’ai essayé d’implanter le Debug dans Actions.cpp sans résultat. Est-ce possible?
          Merci.
          DD.

          • F1ATB André dit :

            Les Debug.println(…) sont visibles si vous êtes connecté en Wifi avec le bout de code à installer sur votre PC comme décrit dans la doc.
            Si vous êtes connecté par le port Série, faite des Serial.println(…); pour voir les données.
            Après, je ne comprends pas bien vos soucis.

            Cdlt

          • André dit :

            Bonjour André,
            Moi non plus je n’ai rien compris.
            Je suis reparti de zéro avec un ESP32 neuf et …. c’est impeccable.
            En tout cas, dans mes soucis, le programme n’a jamais été la cause; c’est une merveille de réalisation!
            Merci pour tout!!

          • F1ATB André dit :

            Content pour vous.

  16. F1EYP Georges dit :

    Bonjour André,
    Merci pour le partage de ton travail.
    Je me suis lancé dans la construction de ton routeur Linky version 3.11.
    Je suis encore loin d’avoir tout terminé mais pour l’instant ça fonctionne sans le triac (step by step).
    Je reçois les infos du Linky mais je n’ai pas compris la manip pour publier ces infos dans le broker mqtt de home assistant.
    Je suis bloqué et j »ai besoin que tu éclaire ma lanterne de vieil OM.
    Merci d’avance

    • F1ATB André dit :

      Il faut remplir les champs au bas de la page paramètres. Côté brocker Mqtt, sur la page ci dessus il y a l’extrait de code à mettre dans le fichier de configuration si vous utilisez Mosquitto sur Home Assistant.

  17. Gilbert P dit :

    Bonjour André, je ne vois pas Pour le triphasé ce qui change au niveau du câblage et autre le principe qui est pris pour le triphasé.
    Merci

    • F1ATB André dit :

      Il n’y a aucun changement au niveau cablage pour le triphasé. Le Linky par contre envoi plus d’informations pour détailler chaque phase.
      Cdlt

  18. jerome korsan dit :

    bonsoir,
    je n’arrive pas as televerser le programme il marque:
    C:\Users\perso\AppData\Local\Temp\Temp3_RouteurSolaire_V_3_11_Linky.zip\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino:36:10: fatal error: pageHtmlBrute.h: No such file or directory
    #include « pageHtmlBrute.h »
    ^~~~~~~~~~~~~~~~~
    compilation terminated.

    exit status 1

    Compilation error: pageHtmlBrute.h: No such file or directory
    j’ai essayer de televerser le petit programme de base et cela fonctionne, c’est la premiere fois que je programe un esp32.
    j’ai bien suivi toutes les consigne mais la je bloque.
    j’ai même changer d’esp32 pour voir si cela pouvais venir de ça.
    par contre faut il avoir fait le cablage avant la programmation ou peut on programmer l’esp32 sans riende brancher dessus.
    cordialement

    • F1ATB André dit :

      Vous avez oublié de deziper (extraire) les données du fichier *.zip. On ne travaille jamais sur un fichier compressé.zip
      Cdlt

      • jerome korsan dit :

        Merci pour la réponse,
        j’ai dezipper et maintenant j’ai:
        c:\Users\perso\Documents\Arduino\libraries\RemoteDebug\src\utility\WebSockets.cpp:42:10: fatal error: hwcrypto/sha.h: No such file or directory
        #include
        ^~~~~~~~~~~~~~~~
        compilation terminated.

        exit status 1

        Compilation error: exit status 1

        • jerome korsan dit :

          J’ai essayer avec une autre version SolarRouter_v2.01
          et il s’affiche le m^me message.
          il doit me manquer qqchoses mais je ne voie pas ce que cela peut être.

          • jerome korsan dit :

            Bon en relisant tous et en faisant la modification indiqué dans les explications.
            j’ai réussi a televerser le programme et as parametrer le wifi.
            super travail que vous avez réalisé.
            avec un minimum de savoir pour moi c’est une réussite.
            au plaisir de continuer a vous suivre.

        • F1ATB André dit :

          c’est écrit sur la page au chapitre Bugs Soft. Il faut lire la doc…

  19. julien dit :

    bonjour
    jai fait le système avec esplinky et esp distant pour controler chauffe eau , on dirait qu il ne communique pas ensemble , mon eau ne chauffe pas ,sur le 2ieme esp distant triac , doit on recevoir les info du linky aussi ? faut il connecter l esp distant en wifi sur la box ou le laisser sans passer a la box (en local ?) ?
    derniere question peut se passer d une box wifi , utiliser juste les esp32 ? merci

    • F1ATB André dit :

      Un seul Esp est connecté au Linky. Dans le deuxième Esp, page des paramètres, il faut cocher la case Esp Linky externe et rentrer l’adresse IP du premier afin qu’il sache où aller chercher les informations. On passe toujours par le réseau et Wifi de la maison.
      Cdlt

      • julien dit :

        merci ca marche ca communique , encore une question mon esp linky remet toujours a zero compteur Energie active du jour ?

        • F1ATB André dit :

          Oui a minuit, l’énergie active du jour est stocké pour l’historique et est remise a zéro.

          • julien dit :

            euh moi il remet pas a zero a minuit , je dirai , toutes les heures ? ou plus , mais il ne garde pas le total , du jour ?

          • F1ATB André dit :

            Vous avez peut-être un niveau de Wifi faible et il fait un reset. Regardez dans les données Brutes, le tableau ESP32, depuis combien d’heures il tourne. A chaque reset il part de zéro.