Routeur photovoltaïque – Réalisation logicielle

Routeur Multi Source
Version V8.08_RMS

Code Source

L’ensemble du code est installable en utilisant l’outil de développement IDE Arduino. Il n’y a pas de code à écrire, uniquement une compilation faite par l’IDE et un téléchargement du binaire dans l’ESP32. C’est le même code quelle que soit la configuration modulaire choisie et quel que soit le capteur de mesure. 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. Si vous n’êtes pas familier de l’IDE Arduino, voir les détails 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 disponible ici:

Dézipper l’ensemble et ouvrez dans l’IDE Arduino (version 2.xx) le fichier Solar_Router_V8_08_RMS.ino.

Vérifiez que vous avez les bibliothèques installées sur votre IDE Arduino :

  • PubSubClient
  • OneWire
  • DallasTemperature
  • ArduinoJson
  • UrlEncode

Ensuite vous devez compiler le logiciel en précisant à l’IDE Arduino que vous avez une carte ESP32.
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 puis lancez la compilation et le téléchargement. 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.

Historique des versions V5.x , V6.x , V7.x, V8.x

  • version V6.00_RMS
    • Corrige un bug sur le nom du capteur de température et retire les mauvaises mesure de température
    • Introduit la source Smart Gateways (en phase de test) des compteurs belge, holladais etc.
    • Introduit la source Shelly Em
    • Introduit un code tarifaire numérique en plus de LTARF dans les messages MQTT si Linky
    • Encode les URL vers Enphase pour passer les mots de passe
  • version V6.01_RMS
    • Recadre la courbe des températures sur 48h
    • Affiche les valeurs des courbes suivant la postion du curseur en X
    • Corrige un bug d’ocillation d’un relais externe pendant 1mn au début de l’action
  • version V6.02_RMS
    • Corrige un bug pour le Shelly en triphasé et en injection
  • version V7.00_RMS
    • Affiche la couleur du jour de la tarification Tempo et permet sa prise en compte dans les actions
  • version V7.01_RMS
    • Corrige un bug sur l’affichage de l’energie quotidienne dans le cas ESP externe
  • version V7.02_RMS
    • Prend en compe les caratères non alphabétiques dans le mot de passe réseau
  • version V7.03_RMS
    • Corrige un bug d’accès wifi vers Envoy et EDF
  • version V8.00_RMS
    • Introduit les modes multi-sinus et train de sinus
    • Change la bibliothèque pour la liaison série vers Linky ou UxIx2
  • version V8.01_RMS Corrige un bug sur l’envoi MQTT du Triac
  • version V8.02_RMS Modifie les libellés des relais On/Off dans la page d’accueil
  • version V8.03_RMS Lissage voie secondaire pour le capteur Shelly
  • version V8.04_RMS Rajoute un lissage sur les puissances uniquement si multi-sinus ou train de sinus avec une mesure de puissance courte
  • version V8.05_RMS Rajoute un lissage sur les puissances voie secondaire Shelly
  • version V8.06_RMS
    • Rajout device[« name »] = nomRouteur; dans DeviceTextToDiscover
    • Début couleur Tempo du jour à 6h00 du matin et non Oh
    • Modification loi de lissage pour les mesures courtes. Pour les multi-sinus et train-sinus.
    • Correction bug sur régulation On/Off
  • version V8.07_RMS
    • Rajout de la source JSY-MK-333 pour du triphasé. Mode appelé UxIx3
    • MQTT : Rajout des puissances produites et consommées dans le cas d’une source Enphase.
    • Réduction à 10 le nombre maximum d’actions ou relais pilotables pour réduire l’encombrement mémoire
    • Historique sur 48h de l’ouverture du Triac et des Relais
    • Conservation des paramètres d’une action même si inactive
    • Forçage à On ou Off des actions par pas de 30mn
  • V8.08_RMS
    • Modification demande vers EDF pour tarif Tempo
    • Correction bug de signe Shelly 2eme voie
    • Suppression RemoteDebug

Mise à jour des anciennes versions

Dans le cas d’une mise à jour des anciennes versions V3.04_UxI ou V3.11_Linky, V4, V5, V6, V7 vers la V8, notez bien sur une feuille de papier les paramètres et réglages. La nouvelle version V8, virginise la mémoire ROM au premier lancement. Il faudra faire comme un premier lancement en se connectant au point d’accès Wifi de l’ESP32 à l’adresse IP 192.168.4.1

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

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.

Premier lancement du programme

Au premier lancement du programme dans l’ESP32, le logiciel ne connaît pas le nom et le mot de passe de votre réseau Wifi à la maison. Il va créer son propre Wifi en passant en mode point d’accès pour que vous vous y connectiez. Sur votre Smartphone (deconnectez votre accès mobile) ou PC portable, regardez la liste des WiFi disponibles. Connectez-vous à celui qui porte le nom ESP-RMS….., 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 renvoyer une page vous demandant le nom du WiFi de la maison auquel se connecter à l’avenir et le mot de passe.

Votre box internet va attribuer à l’ESP32 une adresse IP sur votre réseau maison.

Reconnectez vous au Wifi de la maison avec votre smartphone ou PC. Rentrez l’adresse IP attribuée à l’ESP32 dans un navigateur Web.

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. Ce forçage de l’adresse IP, se fait dans la page « Paramètres » de l’ESP32.

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

Clignotement des LEDs

Les 2 LEDs clignotent en phase toutes les 300ms. L’ESP32 cherche à se connecter au WIFI de la maison que vous lui avez défini.

Les 2 LEDS clignotent en opposition de phase. L’ESP32 ne trouve pas le WIFI, il est en mode Point d’Accès. (AP) en créant son propre réseau . Ouvrez votre smartphone et connectez-vous comme pour un premier lancement de programme.

La LED jaune clignote toutes les 2s environ. C’est bon signe, l’ESP32 reçoit des mesures de tension, puissance etc.
La LED verte clignote, le Triac est ouvert. Plus elle clignote, plus l’ouverture est importante.

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.

Watchdog

Le fonctionnement de l’ESP32 est surveillé par un watchdog (chien de garde). Si l’ESP32 se bloque, ne reçoit pas de données de puissance pendant 180s, ou n’est plus connecté en Wifi il se reset.

Remarques

Si vous regardez les premières lignes du programme (Solar_Router_V8_08_RMS.ino), il y a 2 constantes :

#define HOSTNAME « RMS-ESP32-« 

#define CLE_Rom_Init 812567808

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, l’ESP ayant peu de chance de trouver cette clé en mémoire, la mémoire de stockage en ROM est virginisée. Par la suite, elle contiendra cette clé et 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, changez la clé. 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. Pour plus d’explications, allez sur la page : https://f1atb.fr/programmation-de-lesp32-application-au-routeur-photovoltaique/

RemoteDebug (non applicable à partir de la version V8.08 du routeur)

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.

Visualisation à distance

Certaines des données peuvent être affiché à distance sur un mini écran qui s’allume au passage d’une personne. Les détails de la construction sont disponibles ici : https://f1atb.fr/affichage-a-distance-consommation-ou-surproduction-electrique/

Si vous changez de version de routeur, il faut mettre à jour le logiciel de l’affichage distant.

Vidéo sur l’installation et le paramétrage

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

340 réponses

  1. Michel C dit :

    Bonjour André,
    J’ai toujours avec la version 8.07 le problème d’affichage de la page action, rien ne s’affiche, j’ai vidé le cache mais c’est toujours pareil, j’ai eu une fois ou 2 un affichage mais c’est difficile d’arriver à la faire afficher, parfois aussi sur la page accueil j’ai un affichage incomplet mais en faisant un réaffichage cela passe.
    Pourquoi ces difficulté d’affichage de page dans cette version alors qu’avant tout se passait bien ?

    • F1ATB André dit :

      Vous avez un problème de WIFI. Regardez sur la page données brutes si vous avez un niveau plus haut que -70dBm. Cela n’a rien à voir avec la version.

      Cdlt

      • Michel C dit :

        J’ai des variations de -72 dBm à -80 dBm. Par contre j’ai des Connection failed to Envoy-S server! : 192.168.1.91.
        Cdlt

        • F1ATB André dit :

          Entre -70 et – 80 dBm, il y a souvent des pertes de WIFI. Mettez un ESP32 avec antenne déportée, vous gagnerez 5 à 10dB.

          Cdlt

  2. Stéphane dit :

    Bonjour André
    Bravo pour ton travail, ce routeur est très complet.
    j’ai un problème avec l’esp32.
    J’avais programmé le gpio5 en multi-sinus et j’ai voulu programmer le gpio6 en on off.
    Des que j’ai appuyé sur sauvegarder l’esp32 qui avait une ip fixe a disparu de mon réseau.
    plus aucune led ne clignote, pourtant il y avait rien de branché sur le gpio6 , c’était juste pour faire des essais.
    Avant sur l’esp j’avais qu’une led rouge d’allumé maintenant j’ai une rouge et une bleu d’allumé.
    J’ai téléversé le programme dans l’esp mais sa ne change rien.
    Il n’apparait plus sur mon réseau ni en point d’accès .
    Je suis a cour d’idée
    Dans une future version serait-il possible d’ajouter une seconde sonde de température et de l’attribuer a une autre sortie ?
    Cordialement
    Stéphane

  3. Angelo dit :

    Bonjour André
    Bravo pour votre travail et merci pour tout ce partage.
    Je viens de faire mon 1er routeur solaire : ESP32 avec un relais SSR et capteur Enphase. Tout semple correct : wifi à -53 dbm et réception des données Enphase. Par contre lorsque je vais sur la page action, soit je n’ai rien, soit j’ai l’affichage du relais mais après avoir cliquer sur sauvegarde, les paramètres se réinitialise

    • F1ATB André dit :

      Je ne m’explique pas le problème si le reste est correct
      Faite un CTRL-F5 sur la page Action,en cas de problème de cash avec votre navigateur.

      Sans cela Ctrl+Maj+I pour ouvrir l’inspecteur si vous êtes sous chrome ou edge et onglet console. Mais ce sera difficile à comprendre.

      Cdlt

  4. Angelo dit :

    Bonjour André,
    Concernant la non prise en compte, après sauvegarde, de mes paramètres actions, cela venait du fait que j’avais oublié de remplir un champ : gpio=17&out=1. Mon erreur pourra au moins servir aux autres.
    Concernant le problème d’affichage des données de la page actions, il vient du fait que mon wifi n’est pas stable même si la mesure est correcte.
    Bien à vous

  5. Palermo dit :

    Bonjour
    tout dabord merci pour le partage de vos competences.
    J’ai une question certainement bête.
    je transfert le programme sans probleme de mon pc mais quand je la debranche esp32 pour le mettre sur secteur plus de programme cest normal ???
    merci davance pour votre reponse

    • F1ATB André dit :

      Je ne vois pas ce que vous appelez plus de programme. Vous pouvez appeler l’ESP32 à l’adresse IP qui a été attribuée.
      Sur l’Arduino IDE, il n’y a plus rien quand vous êtes débranché par le câble USB.

      Cdlt

      • palermo dit :

        justement c’est ça mon problème il ne répond plus à l’adresse ip quand je le débranche pour le mettre sur secteur, je suis obligé de retransférer le programme pour pouvoir réussir à me connecter à l’esp32.
        par contre ce qui m’interpelle c’est que je retrouve ma config.

        • palermo dit :

          je viens de voir que tt fonctionne bien dsl pour le dérangement.
          Par contre j’ai une autre question.
          je m’explique.
          J’ai une piscine avec une pompe qui doit tourner au moins 8h par jour et je voudrais savoir si avec votre système je peux le paramétrer quelle tourne max 8h si je suis en surplus de production et sinon le reste la nuit en heure creuse.
          merci

  6. Jos dit :

    Bonjour André, D’abord merci pour votre travail. J’ai le message d’erreur: fatal error: hwcrypto/sha.h: No such file or directory #include
    Il manquerait un fichier dans la librairie?
    Merci d’avance pour la réponse

  7. JF Collieux dit :

    Mr André, encore une grand merci. je triture, je teste, j’utilise votre routeur à toutes les sauces et dans toutes les positions, si je puis dire ainsi !!!
    Merci également de le faire évoluer dans un délais aussi rapide. Routeur, routeur à distance, maisonnette… c’est une compilation épatante de petits modules devenue indispensable tant en routage qu’en information. terminé pour moi les balais interminables ou je courrait à travers les garages pour lire les information du compteurs, et vérifier que le routage fonctionnait ou la centrale photovoltaique produisait correctement.
    Vraiment vous faites beaucoup d’heureux avec votre passion. Merci encore

  8. Gounet Eric dit :

    Bonjour, j’ai remarqué aujourd’hui que les informations Tempo ne remontaient pas. Il y a 2 messages d’erreur :
    -Pas de données edf valides
    – connection failed to edf server.particulier.edf.fr

    Bien cordialement

  9. Alain D. dit :

    Bonjour,
    J’ai le même soucis pas d’informations EDF depuis ce matin
    un soucis de serveur EDF ?
    Cdlt
    Alain

    • NUTTA dit :

      Certainement oui, j’ai ce message sur mon tableau de bord EDF & MOI : « Pour des raisons techniques, les données sont indisponibles. Merci de réessayer ultérieurement ».

      • F1ATB André dit :

        Depuis le Jeudi 26 Avril, la valeur Tempo d’EDF n’était plus disponible. J’ai modifié l’appel. Elle est à nouveau disponible.
        Installez la version 8.08 du routeur (ci-dessus) par le port série ou via OTA.
        Désolé du dérangement.

    • F1ATB André dit :

      Depuis le Jeudi 26 Avril, la valeur Tempo d’EDF n’était plus disponible. J’ai modifié l’appel. Elle est à nouveau disponible.
      Installez la version 8.08 du routeur (ci dessus) par le port série ou via OTA.
      Désolé du dérangement.

  10. F1ATB André dit :

    Depuis le Jeudi 26 Avril, la valeur Tempo d’EDF n’était plus disponible. J’ai modifié l’appel. Elle est à nouveau disponible.
    Installez la version 8.08 du routeur (ci dessus) par le port série ou via OTA.
    Désolé du dérangement.

Laisser un commentaire

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