Programmation de l’ESP32 – Application au routeur Photovoltaïque


L’ESP32 est un microcontrôleur très intéressant Il regroupe des entrées sorties analogiques et numériques ainsi qu’un accès WIFI et Bluetooth. Pour sa programmation, il existe différents outils. Ici, nous allons utiliser l’outil très connu dédié aux microcontrôleurs de la famille des Arduino qui peut être adapté à l’ESP32.

IDE Arduino «Integrated Development Environment» 

IDE Arduino

Allez sur le site d’Arduino https://www.arduino.cc/ et choisissez l’onglet ‘Software’. Téléchargez et installez la dernière version de l’environnement de développement (IDE). Allez dans le menu « File » et « Preferences » et choisissez la langue française.

L’ESP32 ne faisant pas partie de la famille des cartes Arduino, il faut rajouter à l’IDE une bibliothèque complémentaire fournie par le fabricant « 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

Choix de la carte ESP32

Il existe de nombreuses cartes sur le marché à base d’ESP32. Cela peut-être difficile parfois de trouver la définition des broches de sorties (GPIO). Ici on utilise une carte de développement avec un ESP32-Wroom et 2×19 broches. Achat possible chez Amazon, uPesy ou chez Aliexpress en Chine directement.

Chargement d’un programme et compilation

Dans le menu fichier vous pouvez:
– créer un nouveau programme ,
– utiliser un des nombreux exemples fournis ou ,
– charger un programme que vous avez téléchargé. Par exemple le programme du routeur photovoltaïque de F1ATB

Connectez via le port USB la carte ESP32 à votre PC. Sélectionnez la carte ESP32 DEV Module et le port série (COM) de Windows sur laquelle elle s’est connectée.

En haut, le premier bouton permet de compiler uniquement le programme afin de vérifier qu’il n’y a pas d’erreur. La flèche permet de compiler le programme source, générer le binaire et le télécharger dans la carte ESP32. Il sera lancé en fin de téléchargement.

Bibliothèques complémentaires

De nombreux programmes font appel à des bibliothèques de programmes assurant différentes fonctions. Il est fréquent, lors des compilations d’avoir un message d’erreur car il manque une bibliothèque. On retrouve la liste des bibliothèques incluses dans votre installation de l’IDE Arduino sur la partie gauche de l’écran.

En cas de manque, faite une recherche avec le gestionnaire de bibliothèque et rajoutez la bibliothèque manquante.

Problème de driver

Il peut arriver que votre carte ESP32 ne soit pas reconnue par Windows lors du branchement sur USB.

Sur la carte ESP32 un composant fait l’interface série/USB, le WCH340 très fréquent ou le CP2102 ou CP2104. Regardez sur la carte. Windows ne sait pas gérer tout seuls ces drivers..

C’est peut-être l’absence de driver sur le PC fixe qui est responsable de la non-reconnaissance.

Localisation du CP1202

S’il s’agit d’un WCH340 , le driver se trouve ici sur le site de son fabricant :
http://www.wch-ic.com/downloads/CH341SER_EXE.html 733

S’il s’agit d’un CP2102 ou CP2104 idem :

https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads

Choississez la version correspondant à votre OS; Windows…

Un lien d’aide à l’installation : https://tropratik.fr/installer-un-convertisseur-usb-ttl-cp2102

Un autre exemple : https://techexplorations.com/guides/esp32/begin/cp21xxx/

Problème de Boot

Certaines cartes avec un ESP32 n’acceptent pas le téléversement du code binaire. Dans ce cas avant le téléversement :

  • Appuyez sur Boot
  • Appuyez sur Reset (EN/RST)
  • Relachez Reset
  • Relachez Boot

Migration bibliothèque ESP32 V2.x vers 3.X

Espressif a apporté une migration importante de sa bibliothèque gérant l’ESP32 en passant à la version 3.0.0. Laquelle est buguée, il faut passer immédiatement à la version 3.0.1. Pour les détails des changements :

https://docs.espressif.com/projects/arduino-esp32/en/latest/migration_guides/2.x_to_3.0.html

Moniteur Série

Après une opération de téléchargement, ouvrez le moniteur série de l’Arduino en allant sur le menu Outils. Vérifiez à droite de la fenêtre qui s’est ouverte que vous êtes à 115200 baud. L’ESP32 vous fournira de nombreuses informations comme l’adresse IP qu’on lui a attribuée etc.

Arrivé à ce stade pour le routeur photovoltaïque, allez au chapitre premier lancement ici : https://f1atb.fr/fr/routeur-photovoltaique-realisation-logicielle/

Chargement d’un programme via OTA

En général, on installe un programme sur un Arduino ou un ESP32 via le port série USB. Comme l’ESP32 dispose du Wifi, on peut intégrer au code de l’application un module logiciel « OTA » (On The Air) ou par Radio. Cela permet de télécharger et mettre à jour un programme via le WIFI et non le câble USB.

Le routeur photovoltaïque (F1ATB) intègre cette fonctionnalité afin de faire les mises à jour à distance. Il n’y a rien à faire.

Si vous souhaitez tester un exemple d’OTA, de nombreux sont proposés dans l’IDE Arduino. Dans les exemples, sélectionnez le programme « Basic OTA ».

Modifiez légèrement le programme en précisant l’adresse IP pour votre ESP, le SSID (nom du Wifi)…

#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

const char* ssid = "YOUR SSID";
const char* password = "THE PASSWORD";

// Set your Static IP address
IPAddress local_IP(192, 168, 0, 208); //HERE DEFINE YOUR IP ADRESS
// Set your Gateway IP address
IPAddress gateway(192, 168, 0, 254);  //DEFINE THE GATEWAY

IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8);   //optional
IPAddress secondaryDNS(8, 8, 4, 4); //optional


Téléchargez le code la première fois par la liaison série. Un appui sur le bouton RST permet de bien tester l’ensemble. À ce stade, il vous sera possible de mettre à jour la programmation via le web en choisissant non plus le port série dans l’IDE Arduino, mais le port réseau, dans notre cas 192.168.0.208. Dans votre code, il faudra intégrer la partie ArduinoOTA afin de conserver cette possibilité. Au chargement, l’IDE vous demandera un mot de passe. Répondez une lettre quelconque.

Remote Debug par Telnet. Logiciel Putty

Remote « Debug »

En passant par le Wifi vous allez perdre la possibilité de debug par le port série. La biblothèque « RemoteDebug » va vous permettre de retrouver cette possibilité suivant 2 possibilités :

  • – une écoute Telnet sur le port 23.

Pour utilisez cette fonctionalité de debug, il faut auparavent installer la bibliothèque RemoteDebug de Joao Lopes dans l’IDE Arduino, qui installera également des exemples d’utilisation.

OTA et Remote Debug sont 2 fonctionnalités implantées dans le logiciel du routeur Photovoltaïque de F1ATB. Il n’y a rien à faire sauf installer la bibliothèque RemoteDebug dans l’IDE.

Bugs Soft

hwcrypto/sha.h

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.

Récupération de l’heure internet

Dans une application, il peut être intéressant d’afficher l’heure. La bibliothèque esp-sntp.h permet l’acquisition de l’heure,t la gestion de la zone horaire et le décalage horaire.

Allez dans Arduino voir l’exemple ESP32/Time/Simple Time. Vous verrez qu’il faut placer la synchronisation de l’heure avant l’accès au Wifi.

Affectation des GPIO (entrées / sorties)

L’ESP32 à des GPIOs offrant de multiples fonctionnalités. Mais tous les GPIO n’ont pas les mêmes possibilités. Certains, il est même recommandé de ne pas les utiliser.

Il y a un très bon article sur le sujet ici : https://www.upesy.fr/blogs/tutorials/esp32-pinout-reference-gpio-pins-ultimate-guide

ESP32 pinout

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

209 réponses

  1. Bonjour André
    J’ai uploadé la v6.0 RMS dans mon « ESP-WrooM-32U » que je viens de recevoir.
    La bonne nouvelle c’est que ça a l’air pas mal, j’accède aux pages html du serveur et là je remarque que l’heure n’apparait pas…
    Après recherche je ne comprends pas …

    Les seuls indices que j’ai trouvé sur votre site sont ceux-là :
    « Bug matériel
    Dans de rare cas, l’horloge interne de l’ESP32 ne démarre pas. Pour vérifier qu’elle tourne correctement, sur la page d’accueil vous devez avoir l’heure. Un peu plus d’explication ici : https://f1atb.fr/index.php/fr/2023/09/20/programmation-de-lesp32-application-au-routeur-photovoltaique/
    Dans une application, il peut être intéressant d’afficher l’heure. La bibliothèque esp-sntp.h permet l’acquisition de l’heure, et la gestion de la zone horaire et le décalage horaire.
    Allez dans Arduino voir l’exemple ESP32/Time/Simple Time. Vous verrez qu’il faut placer la synchronisation de l’heure avant l’accès au Wifi. »

    J’ai donc uploadé « ESP32/Time/Simple Time » dans mon Esp et il me donne bien l’heure en mode « moniteur série »
    Évidement j’ai du ensuite re uploader la V6.0 RMS
    Je ne comprends pas ce que je dois faire, pourriez-vous éclairer ma lanterne?
    Merci d’avance

    • Nutta dit :

      En attendant une réponse et au cas où le souci serait le même que j’ai eu hier : https://f1atb.fr/index.php/fr/2023/10/06/routeur-photovoltaique-simple-a-realiser/comment-page-5/#comment-23806

    • F1ATB André dit :

      Quelqu’un d’autre m’a parlé ces jours-ci de ce problème. En passant l’ESP32 de l’IP fixe en DHCP, cela n’arrive plus. 2 tests à faire :
      – Essayez de mettre une adresse DNS externe et non votre box
      – Laisser DHCP et imposer l’adresse de l’ESP32 par la box si vous restez en IP fixe.
      Tenez moi au courant.
      Cdlt

      • J’ai préféré vous envoyer un mail plus détaillé.
        en gros système ok en mode « UxI »
        IP fixe ou pas, DNS différent ou pas les autres modes font perdre la date.
        Cordialement
        Patrick

        • Bonjour,
          Problème résolu de mon coté
          A priori cela viendrait du fait que je n’avais effectué aucun câblage sur l’ESP32, je m’étais juste occupé de la partie informatique.
          A partir du moment où j’ai câblé le compteur d’énergie bidirectionnel JSY-MK-194T sur l’ESP32 la date c’est mise à jour.
          Merci André pour votre réactivité à mon problème.
          Cordialement
          F4AME – Patrick

  2. François dit :

    Bonjour André,

    Je vous remercie pour votre blog qui est juste incroyable.
    Je rencontre néanmoins un soucis lorsque je téléverse le programme basic OTA.
    En effet le téléversement se fait bien mais lorsque je lance le moniteur série j’obtiens l’erreur « Brownout detector trigered » et du coup ma connexion wifi ne se réalise pas.
    Avez vous une idée de l’erreur?

  3. Arno dit :

    Bonjour André
    Est ce qu il serait possible de faire une évolution du routeur pour une utilisation en site isolé.
    J ai une maison qui n’est pas relié à EDF. Donc depuis 10 ans j ai installé 300 W de panneaux solaire. Cette année, au vu du prix des panneaux, je vais refaire mon installation en mettant 1200 W et je voudrais mettre un chauffe eau électrique. Le problème c’est qu il faut privilégier la charge de la batterie pour avoir des batteries pleines le soir (pour l’eau chaude j’ai aussi un chauffe eau à gaz).
    Une idée de contrôle serait de chauffer le ballon tant que la tension de batterie est supérieure à 13V et l’heure comprise entre 10 h et 18 h.
    Penses tu que ce serait difficile à programmer?
    J ai regarder ton programme et bien que j ai fait de nombreux programmes en VB j avoue que je nage.

    • F1ATB André dit :

      Il faut faire avec l’ESP32
      – Lire sur une entrée analogique (comme pour la version UxI) la tension électrique de la batterie en mettant un pont de 2 resistances pour avoir la tension ramenée entre 0 et 3.3V
      Cdlt

  4. Arno dit :

    merci pour pour ta réponse
    j ai bien pensé à cette solution pour le contrôle de la tension mais l idée était d interfacer avec la partie triac de ton programme pour gérer l’énergie envoyée au chauffe eau et de profiter de la partie wifi pour avoir les infos .
    cldt

  5. oldjo26 dit :

    Bonjour André
    Je bloque à la vérification ligne56 #include
    Le gestionnaire de bibliothèque me propose 2 versions mais aucune ne peut s’installer.
    Message d’erreur :Failed to install library: ‘Arduino_JSON:0.2.0’. No connection established
    Merci d’avance pour votre réponse.
    Je tiens à préciser que je suis un novice et que certainement j’aurais encore besoin de vos précieux conseils.
    En tous cas un grand merci pour tout ce que vous faites.
    Cordialement. Jean-Luc.

  6. oldjo26 dit :

    Bonjour André
    Merci de ne pas tenir compte de ma demande précédente , ce matin j’ai réussi à trouver le bon fichier, par contre j’ai ce message qui s’affiche :c:\Users\oldjo\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

    Je ne comprends pas ce qu’il faut faire.
    Cordialement.

  7. oldjo26 dit :

    Désolé, je viens de m’apercevoir que vous aviez répondu précédemment.
    Par contre à la ligne 42 , il n’y a rien d’écrit du coup, j’ai bien insérer :#include
    Mais ça me renvoie le même message d’erreur que précédemment.
    De plus en ligne 41 il me semble que j’ai effacé la fin de la ligne, voici ce que j’ai :
    #define CLE_Rom_Init 605567866 //Valeur pour tester si ROM vierge ou pas. Un changement de valeur remet à zéro toutes les données. / Value to test whether blank ROM or

    • F1ATB André dit :

      Retéléchargez le code pour comparer.

      • oldjo26 dit :

        Bonjour André,
        Merci pour vos réponses précédentes, J’ai bien avancé, j’en suis au stade de la compilation sur la carte Esp32 , j’ai cherché dans les différents commentaires si je ne trouvais pas la réponse avant de vous déranger à nouveau je n’ai pas trouvé la réponse à mon problème, voici le message d’erreur:
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_Linky.ino: In function ‘void Setup_Linky()’:
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_Linky.ino:8:3: error: ‘Serial2’ was not declared in this scope
        Serial2.begin(9600, SERIAL_7E1, RXD2, TXD2); // 7-bit Even parity 1 stop bit pour le Linky
        ^~~~~~~
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_Linky.ino:8:3: note: suggested alternative: ‘Serial1’
        Serial2.begin(9600, SERIAL_7E1, RXD2, TXD2); // 7-bit Even parity 1 stop bit pour le Linky
        ^~~~~~~
        Serial1
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_Linky.ino: In function ‘void LectureLinky()’:
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_Linky.ino:19:10: error: ‘Serial2’ was not declared in this scope
        while (Serial2.available() > 0) {
        ^~~~~~~
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_Linky.ino:19:10: note: suggested alternative: ‘Serial1’
        while (Serial2.available() > 0) {
        ^~~~~~~
        Serial1
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino: In function ‘void Setup_UxIx2()’:
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino:7:3: error: ‘Serial2’ was not declared in this scope
        Serial2.begin(4800, SERIAL_8N1, RXD2, TXD2); //PORT DE CONNEXION AVEC LE CAPTEUR JSY-MK-194
        ^~~~~~~
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino:7:3: note: suggested alternative: ‘Serial1’
        Serial2.begin(4800, SERIAL_8N1, RXD2, TXD2); //PORT DE CONNEXION AVEC LE CAPTEUR JSY-MK-194
        ^~~~~~~
        Serial1
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino: In function ‘void LectureUxIx2()’:
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino:15:5: error: ‘Serial2’ was not declared in this scope
        Serial2.write(msg_send[i]);
        ^~~~~~~
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino:15:5: note: suggested alternative: ‘Serial1’
        Serial2.write(msg_send[i]);
        ^~~~~~~
        Serial1
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino:20:10: error: ‘Serial2’ was not declared in this scope
        while (Serial2.available()) {
        ^~~~~~~
        C:\Users\oldjo\Downloads\Solar_Router_V6_02_RMS\Solar_Router_V6_02_RMS\Source_UI2.ino:20:10: note: suggested alternative: ‘Serial1’
        while (Serial2.available()) {
        ^~~~~~~
        Serial1

        exit status 1

        Compilation error: ‘Serial2’ was not declared in this scope

        Cdt.
        Jean-Luc.

  8. jouhierph dit :

    Bonjour André
    Problème, j ai le message en permanence au niveau de la vérification de la compilation du programme. J’ai besoin d aide merci d’avance.
    voici le défaut « Compilation error: ‘previousMqttMillis’ was not declared in this scope »

    • F1ATB André dit :

      Est ce que vous lancez bien la compilation de Solar_Router_V6_02_RMS.ino l semblerait que vous cherchez à compilez un autre .ino .
      Cdlt

  9. jouhierph dit :

    Bonjour André

    ne pas tenir compte des messages precedents.

    j ai le message en permanence au niveau de la vérification de la compilation du programme. J’ai besoin d aide merci d’avance.

    /Program routines
    #include « pageHtmlBrute.h »
    exit status 1

    Compilation error: pageHtmlBrute.h: No such file or directory

  10. Arno dit :

    bonjour juste un message pour un grand merci . Je viens de mettre en route mon routeur solaire et ça marche super. En plus je pensais qu il ne serait pas utile l hiver. Mais si,et même essentiel, car en regardant les graphiques de conso je me suis aperçu que les radiateurs regulaient en mode proportionnel, donc il y a des trous dans la consommation et le routeur renvoie l energie dans le ballon. Encore merci et bravo pour le boulot ton patron a du pleurer le jour où t es parti en retraite.
    cordialement Arnaud

  11. oldjo26 dit :

    Bonjour André
    A propos de mon message de ce matin  » 29 décembre 2023 à 8 h 43 min »
    Je me demande si tous ces messages d’erreur ne sont pas dus au fait que mon esp32 est simplement branché au PC sans que le reste du montage soit fini ?
    Il doit falloir finir entièrement le câblage du routeur pour téléverser le programme Arduino sur la carte Esp 32, N’est ce Pas ?
    Cdt.

  12. Arno dit :

    Bonjour
    J ai crié victoire trop vite pour le routeur tout roule ça marche super m

  13. Arno dit :

    Bonjour
    J ai crié victoire trop vite pour le routeur tout roule ça marche super mais dès que le chauffe s’allume le jus saute.
    Pourtant j ai bien vérifié mes phases et mes neutre j ai un testeur qui détecte ça .
    mon cap d électronique remontant à 40 ans je ne sais plus si c’est normal d avoir du 220 sur la gate quand le chauffe eau est branché et que donc la A1 du triac est alimentée ?
    j ai du faire une boulette mais j arrive pas à mettre le doigt dessus.
    merci pour les idées
    cldt

  14. Alain Hermitte dit :

    Bonjour
    et merci encore
    mon problème est le suivant sur la ligne 60 lors de la vérification apparait erreur suivante #include « pageHtmlBrute.h » je suis sur la version V06 02
    Que dois je faire ?
    j’ai vu sur une discusssion qu’ilfallait changer ligne 32 pageHtmlBrute.h PageHtmlBrute.h » or ligne 32 il est écrit F1ATB Novembre 2023 .
    je pense que j’aurais le même problème avec les lignes :
    #include « pageHtmlMain.h »
    #include « pageHtmlConnect.h »
    #include « pageHtmlPara.h »
    #include « pageHtmlActions.h »
    #include « Actions.h »

    Merci d’avance

    • F1ATB André dit :

      Je ne comprends pas cette erreur. Il faut la même syntaxe que le fichier dans le dossier. Cette erreur pageHtmlBrute était dans une ancienne version il y a plusieurs mois et non la V6.02_RMS.
      Cdlt

  15. Oldjo 26 dit :

    Bonjour André
    Vous avez sans doute zappé mes messages précédents je vois vos réponses aux autres demandes. Si vous avez 5 mn merci de penser à moi.
    Bonne journée.

    • F1ATB André dit :

      Je pense que vous ne compilez pas le bon fichier : Solar_Router_V6_02_RMS.ino
      Vous avez lancé un autre .ino
      Cdlt

      • oldjo26 dit :

        Bonjour André
        Voilà ce qui se passe précisément : je lance la vérification en sélectionnant le fichier : Solar_Router_V6_02_RMS.ino , quelques instants après la série de messages d’erreur dont je vous ai envoyé la copie dans le message du 29 décembre 2023 à 8 h 43 min s’affiche sans le cadre « sortie » et là c’est le fichier source_Linky.ino qui semble ouvert.
        Merci d’avance pour votre réponse.
        Cdt
        Jean-Luc.

        • F1ATB André dit :

          Désolé, je ne comprends pas cette avalanche d’erreurs.
          Cdlt

          • oldjo26 dit :

            Bonjour André
            j’ai compris mon erreur, au départ j’avais bien choisi la carte »ESP32 Dev Module » et dans mes diverses manipulations je me suis retrouvé avec la carte « ESP32 C3 Dev Module » et donc c’est pour ça que ça coinçait !!!
            Si, ça peut servir à quelqu’un voilà l’explication.
            Permettez moi , André de vous souhaiter une bonne année 2024.
            Cdt.

  16. Bonjour Andre.Novice total je me suis lance dans conception de votre routeur,mais malheureusement je bloque au niveau de la compilation.
    Arduino : 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Carte : « ESP32 Dev Module, Disabled, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None, Disabled »

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void setup()’:

    RouteurSolaire_V_3_11_Linky:240:3: error: ‘INIT_EEPROM’ was not declared in this scope

    INIT_EEPROM();

    ^~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino:240:3: note: suggested alternative: ‘EEPROM’

    INIT_EEPROM();

    ^~~~~~~~~~~

    EEPROM

    RouteurSolaire_V_3_11_Linky:243:24: error: ‘LectureCle’ was not declared in this scope

    unsigned long Rcle = LectureCle();

    ^~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino:243:24: note: suggested alternative: ‘LectureLinky’

    unsigned long Rcle = LectureCle();

    ^~~~~~~~~~

    LectureLinky

    RouteurSolaire_V_3_11_Linky:246:5: error: ‘LectureEnROM’ was not declared in this scope

    LectureEnROM();

    ^~~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino:246:5: note: suggested alternative: ‘LectureLinky’

    LectureEnROM();

    ^~~~~~~~~~~~

    LectureLinky

    RouteurSolaire_V_3_11_Linky:247:5: error: ‘LectureConsoMatinJour’ was not declared in this scope

    LectureConsoMatinJour();

    ^~~~~~~~~~~~~~~~~~~~~

    RouteurSolaire_V_3_11_Linky:250:5: error: ‘RAZ_Histo_Conso’ was not declared in this scope

    RAZ_Histo_Conso();

    ^~~~~~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void LectureLinky()’:

    RouteurSolaire_V_3_11_Linky:529:13: error: ‘JourHeureChange’ was not declared in this scope

    JourHeureChange();

    ^~~~~~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void CallESP32_Linky()’:

    RouteurSolaire_V_3_11_Linky:591:13: error: ‘JourHeureChange’ was not declared in this scope

    JourHeureChange();

    ^~~~~~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void GestionOverproduction()’:

    RouteurSolaire_V_3_11_Linky:743:48: error: no matching function for call to ‘Action::Activer(float&, int&)’

    LesActions[i].Activer(Pw, HeureCouranteDeci);

    ^

    In file included from C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino:41:

    C:\Users\truff\Documents\Arduino\libraries\Solar_Router_V6_01_RMS/Actions.h:24:8: note: candidate: ‘void Action::Activer(float, int, float)’

    void Activer(float Pw, int Heure, float Temperature);

    ^~~~~~~

    C:\Users\truff\Documents\Arduino\libraries\Solar_Router_V6_01_RMS/Actions.h:24:8: note: candidate expects 3 arguments, 2 provided

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void handleRoot()’:

    RouteurSolaire_V_3_11_Linky:773:7: error: ‘EcritureEnROM’ was not declared in this scope

    EcritureEnROM();

    ^~~~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void handleAjaxHisto1an()’:

    RouteurSolaire_V_3_11_Linky:852:33: error: ‘HistoriqueEnergie1An’ was not declared in this scope

    server.send(200, « text/html », HistoriqueEnergie1An());

    ^~~~~~~~~~~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void handleActionsUpdate()’:

    RouteurSolaire_V_3_11_Linky:913:21: error: ‘EcritureEnROM’ was not declared in this scope

    int adresse_max = EcritureEnROM();

    ^~~~~~~~~~~~~

    C:\Users\truff\AppData\Local\Temp\668e488b-4940-468e-8443-16386e1d49b6_RouteurSolaire_V_3_11_Linky (2).zip.9b6\RouteurSolaire_V_3_11_Linky\RouteurSolaire_V_3_11_Linky.ino: In function ‘void handleParaUpdate()’:

    RouteurSolaire_V_3_11_Linky:942:21: error: ‘EcritureEnROM’ was not declared in this scope

    int adresse_max = EcritureEnROM();

    ^~~~~~~~~~~~~

    Plusieurs bibliothèque trouvées pour « WiFi.h »

    Utilisé : C:\Users\truff\Documents\ArduinoData\packages\esp32\hardware\esp32\2.0.11\libraries\WiFi

    Non utilisé : C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries\WiFi

    exit status 1

    ‘INIT_EEPROM’ was not declared in this scope

    Ce rapport pourrait être plus détaillé avec
    l’option « Afficher les résultats détaillés de la compilation »
    activée dans Fichier -> Préférences.
    voici tout mes code erreur.avez vous une idee.merci par avance et bonne annee .cordialement

    • F1ATB André dit :

      Avez vous les bibliothèques d’installé.
      Compilez vous bien le bon fichier .ino
      ex : Solar_Router_V6_02_RMS.ino

      Cdlt

      • bonjour et merci beaucoup de prendre du temp pour me repondre.je pense avoir mis toute les bibliotheques et avoir compile le bon fichier ,j ai juste un doute sur la bibliotheque EEPROM,ou je ne suis pas sure d avoir trouve la bonne.si vous pouvez me la preciser ,par avance merci cdlt

        • F1ATB André dit :

          Pour la bibliothèque EEPROM, il n’y a rien à faire, elle est inclue dans le package ESP32 d’espressif.
          Cdlt

  17. Philippe Cassagne dit :

    Bonjour André et bonne année
    j’ai découvert votre site très récemment, il est super, et je vais le plus vite possible mettre en place un triac automatisé (la commande est passée)
    car en plus des panneaux sur le toit en vente totale, j’ai deux panneaux sur la cabane au fond du jardin, qui quand il veut bien faire beau produisent jusqu’à 700W
    pour l’instant avec un shellypro, un raspberry, domoticz et quelques modules, quand la maison est en injection, et en fonction de la puissance injectée, j’allume différents appareils
    pour finir par une partie du cumulus, 2 fils en tout ou rien, et un fil avec un triac manuel (avec bouton) réglé à 500W (à fond c’est 625W)
    je l’allume y compris en heure pleine (hors rouge, pas de risque !) quand l’injection dépasse 215W « 500 * ( 1 – tarifHC / tarifHP) * marge »
    en attendant d’avoir un ESP32, sur un ESP8266, j’ai implémenté la gestion d’un futur triac, pas de problème pour le codage, à part quelques bibliothèques et le timer tout est très proche
    j’ai donc quelques questions sur GestionOverproduction car j’avais en tête peut-être par erreur que le retard dépendait de la puissance de ce que l’on voulait mettre en marche, et de la puissance désirée
    et je pensais faire un petit tableau pour trouver le retard en fonction de la puissance désirée : un aperçu en ms
    watt : 625.000 — 0.0ms –> 625.000 = 100.0%
    watt : 625.000 — 1.0ms –> 620.974 = 99.4%
    watt : 625.000 — 2.0ms –> 594.625 = 95.1%
    watt : 625.000 — 3.0ms –> 532.144 = 85.1%
    watt : 625.000 — 4.0ms –> 433.525 = 69.36%
    watt : 625.000 — 5.0ms –> 312.562 = 50.01%

    donc voici mes questions :
    que représente TriacSeuilPw car la puissance injectée étant négative , on va diminuer le retard donc augmenter la puissance appelée (un peu comme mon cas en HP ?)
    j’ai plus de soucis avec GainBoucle et « // Gain de boucle de l’asservissement » n’a aucune signification pour moi et quelle valeur faudrait-il mettre ?
    quant au 4000 encore moins d’idée !
    j’aimerais bien trouver un retard de 0 quand il y a une injection de 200W et que je lance un appareil de 200W et un MaxTriac à 100

    J’en profite comme vous êtes calés en électricité, …
    on m’a installé des compteurs linky, à par la téléinformation à 9600 bauds, plus rapide et plus stable, il ne m’apporte rien si ce n’est peut-être des futures coupures (c’était pour passer en tarif ZEN-FLEX)
    sur le compteur en injection totale, la puissance de coupure est paramétrée à 2600VA alors que j’ai 3000Wc et en 15 ans de téléinfo, j’ai 150 périodes de 5mn où j’ai dépassé les 2600W (delta des relevés sur la période * 12)
    donc cet été le compteur linky va-t-il disjoncter ?
    enedis essaye de m’embrouiller avec les VA et si le compteur disjoncte je n’aurais cas le ré-enclencher dixit enedis!
    je ne connais pas le cosphi de l’onduleur principal, mais le shelly pour ceux de la cabane me dit -0.92

    cdt

    • F1ATB André dit :

      Le retard et l’ouverture du triac =100-retard ne sont pas calculés par rapport à la puissance en absolue. C’est par différence. Toutes les 200ms, si la puissance est positive on augmente légèrement (suivant la réactivité) le retard (variable retardF) pour baisser l’ouverture du triac légèrement. Si la puissance est négative(injection), on diminue le retard.

      Si vous dépassez la valeur en VA du Linky, il disjoncte. Il faut le reamorcer à la main.

      Cdlt

  18. Bonjour Andre.apres quelques peripeties j ai reussi a compiler ce code ,mais maintenant j ai un autre message d erreur au televersement qui est celui ci Le croquis utilise 1169245 octets (89%) de l’espace de stockage de programmes. Le maximum est de 1310720 octets.
    Les variables globales utilisent 84148 octets (25%) de mémoire dynamique, ce qui laisse 243532 octets pour les variables locales. Le maximum est de 327680 octets.
    esptool.py v4.5.1
    Serial port COM9
    Connecting………………………………..

    A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.
    For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
    Failed uploading: uploading error: exit status 2. que puis je faire d apres vous .en vous remerciant encore ube fois .cdlt

  19. Van den Bussche Romain dit :

    Bonjour André, je regarde depuis quelques temps votre forum et vidéo, D’abord merci pour ce partage très intéressant.
    Je n’y connais pas grand chose en revanche en programmation.
    Je ne trouve pas dans le programme (dernière version) la partie sur la sonde de température. Cette sonde sert elle à gérer l’énergie envoyer dans le triac ?
    Egalement si nous souhaitons mettre 2 triac qu’elle serait la modification du programme à réaliser ?
    Je demande car le premier Triac serait pour un radiateur et le second un ballon ECS.
    Comme indiqué par certaine personne Le Prof solaire à fait un programme avec plusieurs Triac, cependant il utilise la sonde uniquement pour déclencher un relay ce que je ne veux pas je veux utiliser un Triac.

    D’avance merci pour votre réponse
    Cordialement

    • F1ATB André dit :

      La température permet de lancer ou d’arrêter le triac suivant des seuils définis dans la page Actions.

      2 Triac, c’est un peu compliqué mais faisable.

      Cdlt

  20. metivier dit :

    Bonjour
    Je me lance aussi.
    Je réalise le routeur avec deux esp32 avec une mesure sur le premier par un capteur ulxlx2.
    J’ai bien chargé le programme,câblé et paramétrer le wifi.
    Mon problème sur le serveur Web du routeur, dans les données brut, j’ai bien l’image de ma tension mais hélas tout est a zéro sur l’intensité et donc les puissance.
    Pourtant, sur le connecteur de la pince ampermetrique ma tension varie bien en fonction de ma consommation.
    est ce une defaillance materiel?
    merci pour votre reponse

    • F1ATB André dit :

      Si la tension s’affiche, cela confirme que la liaison entre l’ESP32 et le JSY se fait bien.
      Soit un problème de cablage ou un JSY mort.

      Cdlt