U x I : Routeur Solaire pour gérer la surproduction photovoltaïque (DIY)
Modulaire — Flexible — Réactif
Version V3.04_UxI , remplacé par version V4.00_RMS
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…
Un rapide calcul, pour un chauffe-eau de 200l, équipé d’une résistance chauffante de 2400W, montre qu’il faut près d’une heure de chauffe, soit 2.3 kWh pour monter l’eau de seulement 10°.
200l*1000gr*4.18Joule*10°/3600s=2322 Wh = 2.3kWh
Chaque jour, c’est plusieurs kWh qu’il faut fournir au chauffe-eau. Pour un système classique, on effectue cela de nuit à un tarif réduit. En cas de surproduction dans la journée des panneaux photovoltaïques, il faut envoyer cette énergie au chauffe-eau. C’est une superbe batterie de stockage d’énergie. Mais, comme il est fréquent de n’avoir que quelques centaines de watts disponibles et non pas la puissance de 2400 w que demande la résistance du chauffe-eau en branchement classique, le routeur proposé ici ne fournit que cette puissance disponible.
Tableau des Versions
Différentes versions de routeur ont été décrites. La version 3.00_UxI remplace la version 2 devenue obsolète. Le hardware est inchangé, mais l’exploitation est plus simple et plus flexible.
Version | Mesure courant / puissance | Actionneurs | Modulaire | Domoticz | MQTT / Home Assistant | Description |
---|---|---|---|---|---|---|
1 | Sonde Ampèremétrique Monophasé | Relais | Non | Oui | Non | Routeur Solaire. Mesure de Puissance avec un ESP32 |
2 | Sonde Ampèremétrique Monophasé | Triac + Relais | Non | Oui | Non | Réalisez un Routeur Solaire pour gérer la surproduction |
3.04_UxI | Sonde Ampèremétrique Monophasé | Triac + Relais | Oui | Oui | Oui | U x I : Routeur Solaire pour gérer la surproduction photovoltaïque |
3.11_Linky | Linky Monophasé ou triphasé | Triac + Relais | Oui | Oui | Oui | Réalisez un Routeur Solaire avec un Linky |
Ce routeur propose deux types de contrôle de la puissance excédentaire :
- à l’aide d’un Triac, agissant comme une vanne qui s’ouvre pour laisser passer la surproduction disponible en surveillant la puissance qui entre ou sort de la maison afin qu’elle soit nulle à l’aide d’une sonde de courant branchée derrière le compteur.
- à l’aide de relais pour enclencher un moteur, une pompe
La régulation fine au Watt près, par Triac, ne fonctionne que pour les chauffe-eaux électriques ou les chauffages classiques dans lesquels se trouve une résistance électrique et un thermostat électro-mécanique pour contrôler la température. Les dispositifs à base d’électronique de contrôle doivent être alimentés en tout ou rien à l’aide de relais.
Modularité
Le système se décompose en trois fonctions :
– la mesure de puissance au niveau du disjoncteur principal ou 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 disjoncteur et les équipements à alimenter. De simples relais pilotables par Wifi peuvent également être contrôlés.
Pour les détenteurs de serveurs de domotique comme Home Assistant ou Domoticz, les informations de puissance et d’état des actionneurs peuvent être envoyées pour y être traitées.
Matériels
Pour réaliser l’ensemble, il faut les matériels suivants:
Capteur du Courant
Pour mesurer le courant en entrée de la maison, on utilise un capteur de courant dans lequel on fait passer le fil de phase du secteur. En sortie, agissant comme un transformateur, il fournit un courant identique, mais 2000 fois plus faible. Ce courant est envoyé aux bornes d’une résistance et dont on mesure la tension générée.
Capteur de la tension
Pour mesurer la tension, on utilise un transformateur bobiné classique abaisseur de tension qui nous isole du secteur. Par exemple un 230v/6v. Il faut un modèle le plus petit possible, on ne prélève aucune puissance. Cela n’est plus très facile à trouver. Un transformateur, dit de sonnette, peut faire l’affaire.
Pour les détails de montage se référer à cet article.
Micro-Calculateur ou Microcontrôleur
Pour effectuer les mesures de tension et les calculs, L’ESP32 est un microcontrôleur 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.
Gradateur – Triac
Pour ajuster le courant à injecter vers le chauffe-eau, 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. Il existe en 16A ou 24A et est disponible chez Aliexpress.
Attention, le refroidisseur d’origine du Triac est largement sous-dimensionné sachant qu’il devra fonctionner pendant plusieurs heures. Remplacez-le par un plus-grand en dessoudant et déplaçant le Triac. Pensez à raccorder le refroidisseur au fil de terre pour la sécurité.
Pour en savoir plus : https://f1atb.fr/triac-gradateur-pour-routeur-photovoltaique/
Raccordement à l’ESP32
Mesure
La mesure des 2 valeurs représentant la tension et le courant prend environ 150uS. En pratique, on prévoit sur une période de 20ms (1/50Hz) de prélever 100 couples de valeurs, ce qui donnera une bonne description de la tension à priori sinusoidale et du courant souvent chahuté par les alimentations à découpage.
Pour bien caler dans le temps chaque mesure, on utilise le compteur des micro-secondes de l’ESP32.
Toutes les 40 ms, on effectue :
– la mesure des tensions et courants durant 20ms
– une moyenne sur les dernières mesures pour lisser et réduire le bruit de mesure
– le calcul du courant efficace Ieff
– le calcul de la tension efficace Ueff
– le calcul de la puissance apparente Pva en kVA
– le calcul de la puissance active Pw en kW
– le cosinus φ
Configuration modulaire
Si une grande distance sépare le disjoncteur général pour la mesure de puissance et les appareils à piloter, il est possible d’éclater la structure entre plusieurs modules ESP32 qui échangeront les données par le WIFI.
En premier, on implante un module de mesure près du disjoncteur principal. Le Triac ou des relais ne sont pas nécessaires a priori, mais on peut en mettre si besoin de commander quelque chose à côté.
Près des dispositifs à piloter, on implante un ou des modules ESP32 avec un Triac ou des relais si besoin. Ils iront chercher les informations de puissance à l’entrée de la maison auprès de l’ESP32 chargé de la mesure.
Le même logiciel est à implanter dans les différents ESP32. Ils seront configurés à la mise en route.
Page Web
Le code installé sur l’ESP32 comprend un serveur Web qui permet d’afficher sur une page, les différentes mesures ainsi que les courbes de la tension et du courant durant une période de 20 ms. 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 – Accueil
En haut, une zone de menus pour choisir la page.
En dessous, l’heure (de France) fournie par le réseau.
Un tableau donne différentes valeurs mesurées ou calculées :
- la tension efficace Ueff en Volts
- le courant efficace Ieffen Ampère
- la puissance apparente en VA, produit Ueff*Ieff
- la puissance active Pw en Watt. C’est elle que vous payez. Pw>0 vous consommez sur le réseau. Pw<0 vous injectez sur le réseau
- le cosinus(Phi), rapport entre la puissance active et la puissance apparente
- l’énergie active soutirée depuis 0h en Wh
- l’énergie active injectée depuis 0h en Wh
Un deuxième tableau, donne l’état courant des actionneurs. Ici, l’ouverture du Triac à 38% du temps. La régulation est en cours pour ajuster la puissance consommée/injectée de la maison autour de 0W. Un relais de chauffage est Off et une commande vers un relais externe de moteur de piscine est On.
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 -1mn ) et (-4 et -10mn) on est en phase de régulation, la puissance active est proche de zéro. Entre -1 et -4mn on est en surproduction. 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 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 des données brutes de mesures collectées par le système.
Le graphe en rouge et vert donne la forme de la tension et du courant sur une période de 20ms. C’est le résultat de la mesure par l’ESP des entrées analogiques. Dans le cas de mesures effectuées par un ESP distant, ce sont les données distantes représentées ici.
Un tableau fourni des informations sur l’ESP32, pour suivre son fonctionnement. En particulier on surveille le niveau du WIFI afin qu’il ne passe pas en dessous des -80 dBm.
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 de puissance, vous n’avez pas la sonde ampèremétrique et le transformateur 6V branchés sur cet ESP, mais un autre distant, cochez la case ESP UxI 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. Domoticz 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 precédés d’un prefix. Exemple :
– « UxI/pva » la puissance apparente en VA
– « UxI/pw » la puissance active en W signée
– « UxI/pws » la puissance active soutirée en W
– « UxI/pwi» la puissance active injectée en W
– « UxI/easj » l’energie active soutirée du jour en Wh
– « UxI/eaij » l’energie active injectée du jour en Wh
Et en option s’ils sont activés :
– « UxI/triac » l’ouverture du Triac entre 0 et 100%
– « UxI/action1 » état binaire 0 ou 1 de l’action1 ,action2 etc..
Extrait fichier mqtt.yaml avec un prefixe "UxI/" - state_topic: "UxI/pva" name: "UxI PVA" unique_id: uxi_pva unit_of_measurement: VA device_class: apparent_power - state_topic: "UxI/easj" name: "UxI E Soutirée " unique_id: uxi_easj unit_of_measurement: Wh state_class: total_increasing device_class: energy - state_topic: "UxI/eaij" name: "UxI E Injectée " unique_id: uxi_eaij unit_of_measurement: Wh state_class: total_increasing device_class: energy - state_topic: "UxI/pw" name: "UxI PW" unique_id: uxi_pw unit_of_measurement: W device_class: power - state_topic: "UxI/pws" name: "UxI PW Soutirée" unique_id: uxi_pws unit_of_measurement: W device_class: power - state_topic: "UxI/pwi" name: "UxI PW Injectée" unique_id: uxi_pwi unit_of_measurement: W device_class: power - state_topic: "UxI/triac" name: "UxI Triac" unique_id: uxi_triac unit_of_measurement: '%' - state_topic: "UxI/action1" name: "UxI Action1 Relais" unique_id: uxi_action1
Calibration
L’ESP en charge de la mesure de tension et du courant nécessite une calibration des valeurs mesurées pour s’adapter aux disparités des transformateurs, résistances etc. Commencer par la tension en mesurant votre tension secteur avec un voltmètre ou l’affichage du Linky et adapter le coefficient multiplicateur pour avoir la même valeur affichée sur la page d’Accueil. Un coefficient de 1000, correspond au schéma avec un transformateur de 6V. Baisser ce coefficient si la tension affichée est trop haute, montez-le si elle est trop basse.
Pour la calibration du courant, il est préférable de le faire lorsque la consommation de la maison est forte. On utilise la puissance apparente instantanée affichée en VA au niveau du Linky. On ajuste le coefficient pour avoir sur la page d’accueil des valeurs similaires à celle du Linky.
Sauvegarde
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 ouvert entre 0 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.
Toutes les 200 ms, le logiciel augmente ou diminue la durée de conduction du Triac en comparant la puissance mesurée Pw au seuil fixé. 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).
Les autres actions permettent de piloter des relais branchés sur les sorties GPIO disponibles (sauf les GPIO32, GPIO33, GPIO35) 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 On/Off.
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.
Remarque CACSI
Attention, si vous avez signé un CACSI (Convention d’Autoconsommation Sans Injection), votre système interdit les injections de puissance sur le réseau public. Cela se traduit à un bridage par moment pour ne pas avoir de valeur de puissance négative (=injection) à l’entrée de la maison.
Il est impératif dans ce cas avec CACSI, d’utiliser le routeur avec un seuil de réglage des W 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.
Montage
Dans une boite d’électricien, on installe :
- 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 transformateur basse tension 230V – 6V AC pour mesurer la tension (Aliexpress)
- Un gradateur 16A ou 24A de RobotDyn suivant la puissance du chauffe-eau (Aliexpress)
- Sonde de courant 100A/50ma (Aliexpress)
- Résistances R1 et R2 : entre 470 et 820 Ω 1/4 ou 1/8W
- R3 : 24 Ω 1/4W
- R4 : 24000 Ω 1/4 ou 1/8 W (À ajuster suivant transformateur)
- R5 : 4700 Ω 1/4 ou 1/8W (À ajuster suivant transformateur)
- R6 et R7 : 4700 Ω 1/4 ou 1/8W
- Condensateur C1 : 10μF ou plus en 12V ou plus
- Condensateur C2 : 220μF à 470μF en 12V ou plus
- 2 LEDS en face avant
- Du fil de câblage et une plaque à trou pour le montage
- Un fusible (option) pour protéger l’arrivée 230V
- Un ou des relais (option) solides ou électromécanique pilotable 3.3V
Raccordé à cette boite, on a la sonde de courant à placer autour du fil de phase du secteur à mesurer. Relier le blindage à la masse (Gnd) pour éviter de capter du bruit électrique.
Longue distance
Pour ceux qui sont sur une grande habitation avec le disjoncteur ou les actionneurs 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é.
Implantation
Code Source
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 (voir les explications 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 à installer dans le même dossier.
Il est disponible ici sous forme d’un .zip:
Dezipper l’ensemble et ouvrez dans l’IDE Arduino (version 2.xx) le fichier RouteurSolaire_V_3_04_UxI.ino.
Vérifiez que vous avez les bibliothèques installées sur votre IDE Arduino :
– RemoteDebug
– PubSubClient
Pour la compilation du fichier RouteurSolaire_V_3_04_UxI.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 reset 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 créer son propre réseau Wifi et passer 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 UxI-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 de votre habitation auquel se connecter à l’avenir et le mot de passe.
Regardez, le moniteur série de l’Arduino, vous trouverez l’adresse IP sur votre réseau Wifi qui a été attribuée automatiquement 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.
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 editeur 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.
Remarque
Si vous regardez les premières lignes du programme, il y a 2 constantes :
#define HOSTNAME « UxI-ESP32-«
#define CLE_Rom_Init 1234567892
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 envoyés par les Debug.print() ou Debug.println(…) .
Watchdog
Le fonctionnement de l’ESP32 est surveillé par un watchdog (chien de garde). Si l’ESP32 se bloque 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 esp_task_wdt…..
De même, un test sur la présence du Wifi est effectué. En l’absence de WIFI, au bout de 10mn, l’ESP32 se reset.
Diagramme fonctionnel
Ici, nous exploitons les capacités double cœur de l’ESP32.
Le « Cœur 0 » effectue le prélèvement des mesures de tension et courant pendant 20ms ainsi que le calcul des puissances. Il répète l’opération toutes les 40ms.
Le « Cœur 1 » gère les surproductions et communique par WIFI.
Le gradateur avec le signal Zero Crossing toute les 10ms, permet de synchroniser l’ensemble en activant une interruption sur l’ESP32. Un timer fourni une interruption interne toute les 100μs permettant de générer un retard de 0 à 10ms par pas de 100μs pour déclencher l’ouverture du triac à l’instant défini par le logiciel.
Exemple de routage et régulation à Zéro 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. La somme des 100 mesures du produit U*I sur la période de 20 ms donne un résultat proche de zéro en Watt. Par contre, pour le calcul de la puissance apparente qui est le produit de la tension et du courant efficaces qui ne tient pas compte du signe (voir formules ci-dessus), 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).
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
- Routeur photovoltaïque V12 – Affichage et paramétrage
- Routeur Photovoltaïque – Raccordement à un chauffe-eau
- Routeur Photovoltaïque – Installation rapide du logiciel
- Routeur photovoltaïque piloté via MQTT
- Capteur SmartGateways / Siconia pour routeur photovoltaïque
- Routeur photovoltaïque – Modes de régulation
- Routeur photovoltaïque – Affichage et paramétrage
- Routeur photovoltaïque – Réalisation matérielle
- Réalisation d’un Routeur photovoltaïque Multi-Sources Multi-Modes et Modulaire
- Routeur photovoltaïque – Installation manuelle du logiciel
- Capteur Shelly Em™ – Shelly Pro Em™ pour routeur photovoltaïque
- Exemples Montage Routeur Photovoltaïque F1ATB
- Capteur Enphase – Envoy-S Metered™ pour routeur photovoltaïque
- Routeur photovoltaïque simple à réaliser
- Capteur UxIx2 ou UxIx3 pour routeur photovoltaïque
- Triacs gradateurs pour routeur photovoltaïque
- Capteur Linky pour routeur photovoltaïque
- Capteur UxI pour routeur photovoltaïque
- Programmation de l’ESP32 – Application au routeur Photovoltaïque
- Chauffer votre piscine avec l’excédent d’énergie Photovoltaïque
- U x I : Routeur Solaire pour gérer la surproduction photovoltaïque (DIY)
- Panneaux Photovoltaïques Intégrés Au Bâti (IAB) d’un abri voiture
- Réalisez un Routeur Solaire avec un Linky (DIY)
- Câblage de panneaux Photovoltaïques à des Micro-Onduleurs en Autoconsommation (DIY)
- Démarches Administratives pour le Photovoltaïque
- Affichage à distance consommation ou surproduction électrique
- Réalisez un Routeur Solaire pour gérer la surproduction
- Câblage de panneaux Photovoltaïques à un onduleur en Autoconsommation (DIY)
- Panneaux Photovoltaïques Intégrés Au Bâti (IAB)
- Routeur Solaire. Mesure de Puissance avec un ESP32
Bonjour,
Pour moi impossible de compiler avec l’IDE V2.1.1 j’obtiens le message suivant:
e:\Arduino\Arduino_croquis V2\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
même message pour la version Linky que pour UxI
merci de votre aide.
Lisez le chapître Bugs Soft sur la page. C’est expliqué.
Bonjour André,
Tout d’abord félicitations pour ce superbe travail et le partage.
Je suis très intéressé et j’ai passé commande du matériel pour la réalisation de celui-ci.
Mais je pense que je vais avoir besoin de quelques conseils pour l’adapter à mon cas.
Je suis utilisateur de Jeedom et espère l’intégrer dans ce système via MQTT.
J’ai 6 kWc de PV en triphasé qui sont raccordés sur chacune des 3 phases équilibrées.
J’ai installé un shelly 3EM sur l’arrivée triphasée ( et d’autres encore sur le PV et TD que j’ai dans cette maison) et je me demande s’il serait possible de me servir de cette valeur injectée sur le réseau plutôt que de la pince ampèremétrique (car il m’en faudrait 3 au final à ajouter).
Il s’agit pour moi de gérer le surplus pour alimenter mon ballon ECS monophasé.
En vous remerciant
Chris64
Il faudrait modifier le programme pour extraire les données du shelly, ou prenez la version Linky du routeur qui fonctionne en triphasé. Cdlt
Bonsoir André, une fois que j’aurai réuni et assemblé la partie hardware, j’essaierai l version Linky tri. Je me permettrais éventuellement de vous demander conseil si besoin.
En effet, la solution de modifier le programme est hors de mes compétences, en tout cas pour le moment.
Bien à vous André
Chris64
Bonjour André
existe il une version avec 2 (voir 3) triacs et 1 relais ?
merci
Disponible 1 seul Triac et plusieurs relais que vous pouvez commuter à la sortie du Triac.
merci pour la réponse.
en fait la puissance de mon champ photovoltaïque est plus importante que la résistance du chauffe eau, je dois donc faire varier le chauffe eau, et quand celui ci est a fond , continuer sur le chauffage piscine ou un radiateur.
je vais déjà faire le montage pour le chauffe eau
Tous ces équipements n’étant pas au même endroit ou sur le même disjoncteur, faite un ESP32 + Triac pour chacun. Ils se connecteront au maître qui fait la lecture de puissance par Wifi.
Cdlt
bonjour André
je consrate qu il n’est pas facile de trouver un transfo 6 volts
un transfo de téléphone portable 5 volts peut il faire l affaire?
bonne journée
Cordialement
Philippe
Non, les transformateurs 5v de téléphone sortent en courant continu. Il faut un transfo basique. Enroulement primaire 230v et secondaire entre 1 et 24v. Si on a pas du 6v comme dans le schéma,il faut reprendre le pont diviseur de tension R4,R5 pour avoir 1v efficace en sortie. Voir les transformateurs dit de sonnette. En général ils ont du 6v.
Les chinois, Aliexpress, en proposent pas chers.
Bonjour André
comment calculer les valeurs de R3 et R4 pour un transfo qui délivre 12.3 volts?
Merci
Il faut 12.3*R5/(R4 + R5)=1volt
C’est un pont diviseur de tension.
Par exemple en prenant R5=820ohm et R4=10000ohm on obtient 0,93v efficace. Ce qui est acceptable. Le logiciel recadre ensuite. De préférence prendre des résistances au dessus de 500 ohm pour ne pas consommer et en dessous de 100000 ohm pour ne pas être impacté par la résistance d’entrée de l’Esp32.
Cdlt
Bonjour André
Merci pour votre réponse, en attente de ce transfo chez aliexpress
bonne journée
Bonjour André,
tout d’abord, bravo pour ton travail, la clarté des explications.
Je suis nul en code mais J »utilise le V2 depuis 2 semaines qui fonctionne parfaitement.
J’ai décidé de m’attaquer à la version V3.01_UxI mais je suis coincé à la compilation:
C:\Users\Eliot\Documents\routeur solaire\RouteurSolaire_V_3_01_UxI\RouteurSolaire_V_3_01_UxI\RouteurSolaire_V_3_01_UxI.ino:28:10: fatal error: PubSubClient.h: No such file or directory
#include //Librairie pour la gestion Mqtt
^~~~~~~~~~~~~~~~
exit status 1
Compilation error: PubSubClient.h: No such file or directory
merci d’avance André.
cordialement
Dans l’ide Arduino, allez en haut à gauche et ouvrez l’onglet bibliothèque/librairies, tapez pubsubclient et faites rajouter cette bibliothèque. Cela va résoudre votre problème de bibliothèque manquante.
Cdlt
Merci beaucoup pour votre réponse expresse et dominicale pour le coup.
Bonsoir,
J’ai survolé votre site, beau projet… mais certaines choses me font tiquer ! Genre, se fournir chez AliExpress pour des élements « critiques » comme le gradateur Triac, et même des transfo… A part être sûr à 200% du revendeur (comme pour les pinces), c’est tout simplement à fuire !!
J’ai déjà soudé des embases de connecteurs AliExpress qu’on m’avait fourni… juste en laissant le fer à souder un peu trop longtemps, elle a fondu !!! En comparaison, j’ai eu une fois une seul une carte triac avec connecteur Weidmüller qui a pris feu (suite à une erreur de fabrication)… le connecteur est noirci, il n’y a pas le début du commencement d’un morceau qui a fondu!
Ces connecteurs beaucoup, beaucoup plus chers… mais entre une maison qui brûle ou pas, je ne chipotte pas pour quelques dizaines d’€.
Je commande depuis des années chez Aliexpress. Je suis globalement satisfait. L’ ESP32 a été développé par les Chinois d’Expressif, alors difficile de faire autrement.
Ok pour l’ESP, tant que c’est du 3.3V, 5V, … pas de souci, on ne risque rien, au pire cela ne fonctionne pas ! Mais pour le gradateur triac… franchement, j’hésiterais à prendre AliExpress… tout comme pour des disjoncteurs et ce genre de matériel !
Bonjour,
Si l’on ne veut prendre aucun risque, il faut se tourner vers les routeurs du marché et ne pas se le fabriquer soit-même mais je suis d’accord avec vous.
Ce serait d’ailleurs une excellente idée de trouver des éléments « haut de gamme » ou plus « safe » et d’avoir une personne qui sache nous faire un beau PCB pour intégrer tout cela au mieux.
Un travail d’équipe qui sait… Ce sera peut-être l’aboutissement du projet d’André dans la version 4 !
Bonjour André, Merci encore pour votre remarquable travail, j’ai monté la v3 UxI en attendant d’être passé producteur (Encours) et je suis très satisfait du fonctionnement du routeur (cf : https://e.pcloud.link/publink/show?code=XZKYQBZ3HeTLj7IyEYUWdn65N5XYh4eImsk ) ou l’on voit en jaune ce qui est consommé de 10h à 11h30 et qui suit exactement la courbe production, jusqu’à ce que le chauffe-eau ait atteint sa température maxi) en orange ce qui est réinjecté dans le réseau. Les pics à partir de 13h sont le chauffage de ma piscine et plus tard lave linge et lave vaisselle)
J’aimerai pourvoir suivre sur Domoticz mais je n’ai pu configurer correctement et mon capteur est toujours inactif, avez vous un exemple de configuration?
Bonjour André vous faites vraiment du super boulot. J’ai commencé avec votre version 2 qui fonctionnait à merveille pendant quelques mois. J’ai ensuite eu des plantage de l’ESP32 (plus possible d’accéder au serveur web) et le triac reste ouvert même si PW et positif.
Si je débranche et rebranche l’ESP32 tout revient dans l’ordre mais que pour quelques heures.
J’ai essayé un autre ESP32 et remplacer l’alim 5v de l’ESP mais le problème cela reste identique (pas de soucis lors du téléversement)
J’ai le même soucis depuis la nouvelle version UxI. Qu’en pensez vous ?
Vous avez peut être un problème avec le niveau du signal Wifi. Il vaut mieux avoir un niveau supérieur à -70dbm.
Si le wifi ne capte pas assez, cela peut figer l’ouverture du triac ?
Au bout de plusieurs minutes si pas de wifi, le système se reset. Regardez dans la page des données brutes si la durée ESPOn est juste ou s’il y a eu un reset récent.
Cdlt
Bonjour André. Je me joins à tous pour vous féliciter et vous remercier pour votre travail et votre partage d’expérience.
Je viens de terminer la réalisation de mon router V3 et je fais les premiers tests. Tout à l’air de fonctionner mais j’ai un souci avec la commande du triac. La variable ‘retard’ évolue bien de 0 à 100 mais lorsque je désactive le routage sur le triac dans la page ‘Actions’, la variable est bien remise à 100 mais le triac envoie encore environ 1,5A dans mon chauffe-eau, soit à peu près 28% de la puissance de celui-ci.
Serait-ce dû à un décalage du zero-crossing ? Je ne vois à priori pas d’autre explication mais je me trompe peut-être. Quelqu’un a t’il déjà rencontré ce problème ?
Si le retard est à 100. Il n’y a pas de signal envoyé au Triac. Donc même un décalage du Zc n’a aucun effet.
Je ne vois pas pourquoi vous avez ce problème. Mettez le Triac sur Off dans les Actions et vérifiez que rien ne passe.
Débranchez le temps d’un essai si vous le pouvez, la sortie de la commande du Triac Gpio22, pour vérifier que rien ne passe.
Cdlt
Merci André pour vos conseils. J’ai essayé de mettre le triac sur OFF dans les Actions mais le triac conduit toujours. J’ai affiché le retard et j’ai bien 100.
Par contre en débranchant GPIO22, la petite LED du dimmer Robotdyn s’éteint et le triac ne conduit plus. Je ne comprends vraiment pas ce qui se passe. J’ai vérifié mon câblage et ça parait bon.
Vérifiez que les masses (Gnd) sont bien reliées. On m’a rapporté que certaines cartes n’ont pas les Gnd reliées entre elles.
Je viens de vérifier. Les 3 pins GND de la carte ESP sont bien reliées. Pour information j’avais testé le dimmer complètement à part en le connectant à une ampoule et en faisant varier la luminosité de 0 à 100 % et tout fonctionnait parfaitement.
J’ai utilisé la librairie RBDdimmer pour ce test.
J’ai trouvé.
Une petite limaille pontait GPIO22 avec sa voisine GPIO1 sur le PCB. Je l’ai nettoyé et remonté et tout fonctionne normalement et même à merveille !
Comme quoi il vaut mieux tout vérifier plutôt 2 fois qu’une … Ca m’apprendra à faire plus attention. La bonne nouvelle est que l’ESP32 n’a pas souffert.
Encore merci André pour ce fabuleux projet
Parfait, bon routage.
Bonjour André, j’ai la version 2 qui tourne depuis plusieurs mois sans aucun soucis. J’ai refait un montage pour implanter la version V3.00_Ux tous fonctionnait bien depuis 1 semaine mais depuis aujourd’hui l’ESP mesure des tensions de 2220V à 380V sans explication le montage de la V2 lui fonctionne toujours parfaitement. Avez vous une idée?? j’ai changer le transfo 6V mais cela ne résous pas le problème. Un composant qui faibli ou l’ESP32 qui déraille? J’ai aujourd’hui ajouté un ESP en WIFI avec un SSR est ce que cela peut être la cause??
Pour compléter mon post plus haut concernant les pics de mesures hors échelle, je confirme que depuis environ une demi-heure je n’ai aucun allumage d’appareil chez moi avec une consommation moyenne de 150w et que des pics de tension ou de puissance sont enregistrés. J’avais auparavant mis à la masse la gaine des fils de la sonde de courant au cas où. Mais ça n’a rien changé sauf que maintenant j’ai une magnifique sinusoïde parfaite avec des beaux arrondis 😍.
Peut être que le Wifi est la cause des pics. A la lecture des constations retranscrites plus haut. A investiguer.
Cdlt
A vous lire, vous venez peut-être de trouver le pourquoi que certains constatent des pics de courant ou tension. Le WiFi perturberait les mesures? A creuser, essayer de votre côté.
Cdlt
Bonjour André.
Je ne suis pas un spécialiste de la programmation, et encore moins de l’électronique. Mais ce que j’ai pu observer me pousse à avoir le raisonnement suivant. Si c’était un problème physique, lors d’une lecture, comme un parasite ou autre chose (wi-fi, ou autre), nous aurions certainement un impact sur le résultat de tous les calculs en même temps. Par exemple lorsque la tension ou le courant augmente, nous devrions avoir le résultat de PW et de PWs/PWi qui augmentent aussi. Hors au vu de ce que je constate, ce n’est pas le cas. Il semble que ce soit quelque chose qui se passe après la prise des mesures de tension et de courant, (voir après le calcul des moyennes des 100 mesures ?) Peut-être, entre le moment où le résultat est fini d’être calculé et le moment où il est affiché. Peut-être dans le choix des types de variables (float, etc… ?)
Cdlt.
Merci pour vos remarques. J’avais déjà pensé à une erreur de calcul du à un mauvais cadrage. A mon retour de Vacances, j’essaierai de tracker ce phénomène .
Cdlt
J’ai remarqué que lorsque j’avais un pic hors échelle, il disparaissait simplement en rafraichissant la page (F5 ou « Actualiser » du navigateur).
Dés fois que ce soit utile.
Bien à vous
J’ai remarqué que l’affichage des pages du serveur était parfois lente, aussi j’ai fait quelques rechercheset j’ai trouvé une fonction du serveur de l’ESP pour otpimiser l’affichage en indiquant au serveur la longueur de la page à afficher. (j’espère que je ne me suis pas planté pour insérer les exemples de code dans mon commentaire…)
Par exemple :
void handleMainJS() {
server.send(200, "text/html", String(MainJS));
}
devient :
void handleMainJS() {
server.setContentLength(String(MainJS).length());
server.send(200, "text/html", String(MainJS));
}
Autre exemple :
server.send(200, "text/html", S);
devient :
server.setContentLength(S.length());
server.send(200, "text/html", S);
Si ça peut être utile, tant mieux. En tout cas, l’affichage chez moi est maintenant plus rapide.
Bonne journée à tous !
Bonjour,
N’étant pas un expert en électronique, quand je regarde le schéma de branchement, je vois que vous envoyer le GND, vers une flèche GND en bas de schéma. Pour mois c’est la terre, mais est ce que vous reliez le GND au fil de terre du 220V ?
Merci d’avance pour vos réponse,
Ce n’est pas nécessaire, vous pouvez le faire pour améliorer la sécurité. Les électroniciens mettent terre pour l’ensemble des circuits et le boîtier s’il est métallique.
Cdlt
Bonjour et merci pour ce travail.
avant de me lancer …
je n’ai qu’un réseau wifi limité et aléatoire via le partage de mon smartphone (pas de box)
Peut on quand même faire fonctionner cette belle mécanique ?
Merci !
Le routeur à besoin de l’heure pour pouvoir programmer des actions en fonction de l’heure. Cette heure arrive par internet. Il faut modifier, simplifier le programme si on ne dispose pas du Wifi.
ok merci beaucoup pour la réponse rapide.
je vais regarder cela de près
encore merci pour le partage
Bonjour Ablion,
Avez vous réussi à simplifier le programme pour vous passer du wifi?
Je suis intéressé par cette option!
Mathieu
Le WIFI est le moyen le plus pratique pour communiquer avec l’ESP32.
L’USB oblige d’avoir un PC à côté.
Mettre un afficheur, c’est un projet bien différent.
Pour l’instant je reste en WIFI uniquement.
Cdlt
Bonjour André,
Doit-on faire quelque chose de spécifique pour que ça enregistre les données cumulé dans la rom ? , car à chaque fois que je coupe L’ESP, les infos enregistrées ne sont plus là, et ça réenregistre à partir de la remise sous tension de L’esp (V3.01 sur compteur normal)
Merci
Dans la Rom ne sont enregistrés que le bilan total en wh de la journée à 24h. On n’enregistre pas le reste car il ne faut pas écrire trop souvent dans la Rom de l’Esp32 suivant la recommandation constructeur.
Cdlt
Bonjour André,
En premier lieu, merci pour vos publications toutes plus géniales les unes que les autres.
Je viens de terminer l’installation du routeur V3 ainsi que l’affichage distant.
Tout fonctionne très bien.
Je n’étais pas flambart quand j’ai décidé de construire ce routeur, malgré une bonne connaissance en bricolage et électricité domestique, je suis à peu près au niveau 0 pour l’électronique et le codage informatique.
J’avais toute confiance dans votre système et la pédagogie dont vous faites preuve, c’est clair, complet, précis et finalement simple. Cela m’a permis d’arriver au bout sans trop de prises de tête.
J’ai commencé avec la version 2 et je trouve que la version 3 est un grand bond en avant.
Bravo pour cette amélioration continue.
Portez vous bien et longtemps.
Jean-Michel
Merci et content que des non électroniciens y arrivent. Cela peu encourager d’autres.
Cdlt