Affichage à distance consommation ou surproduction électrique

Un petit afficheur, un nano processeur et une connexion WIFI permettent de collecter à distance la consommation électrique ou la surproduction due à une installation photovoltaïque et l’afficher localement. Un capteur de présence infrarouge permet d’activer le dispositif uniquement lorsqu’une personne se trouve à proximité. La source des mesures est le routeur Photovoltaïque F1ATB.

Affichage distant de la puissance

Matériel

Seulement 2 cartes sont nécessaires pour le système :
– LILYGO® TTGO T-Display 1.14 pouces ESP 32 (4MB CH9102F )
– Un détecteur de mouvement à infrarouge.

Si vous souhaitez des détails sur la carte ESP32/TFT : Info carte: Https://github.com/Xinyuan-LilyGO/TTGO-T-Display

Les éléments sont disponibles chez Aliexpress en chine ou Amazon

Pour l’alimentation, il est possible d’utiliser un chargeur de téléphone avec un cable USB-C ou connecter une alimentation à la broche 5V de l’ESP32. La consommation est d’environ 150mA au maximum et 8mA en veille.

Installation rapide du Logiciel

Comme pour le routeur, il existe à présent une procédure d’installation rapide depuis le navigateur web, Chrome ou Edge. Cette procédure efface toute la mémoire Flash pour l’installation du code.

La version VERSION V9.xx_DISP permet de se connecter à un routeur V9.xx_RMS , V10.xx ou V11.xx
La version VERSION V8.00_DISP permet de se connecter à un routeur V8.xx_RMS

Installation manuelle du Logiciel

Pour toutes ces versions de logiciel, il faut la bibliothèque ESP32 version 2.0.17.

La dernière version du logiciel qui se connecte au routeur version V9.xx_RMS et version V10.xx ou V11.xx est disponible ici :

Routeur Solaire ou autre source de mesure de puissance et affichage distant

Il faut télécharger et dezipper le fichier pour reconstruire le dossier source contenant 7 fichiers. C’est le fichier « Power_Remote_Display_V9_DISP.ino » qu’il faut ouvrir dans l’outil de développement « IDE Arduino » et compiler. On y retrouve les mêmes bibliothèques que dans le routeur. Cela ne devrait pas poser de problème à la compilation.

Il existe d’anciennes versions :

Il faut dans les préférences 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

Dans le gestionnaire de cartes, choisissez la carte TTGO Lora32-OLED

Installer la bibliothèque TFT_eSPI . Comme cette librairie peut traiter différents afficheurs, il faut lui préciser le modèle utiliser dans ce projet.

Dans Arduino/librairies/TFT_eSPI ouvrir User_Setup_Select.h avec un éditeur de texte comme Bloc-Note ou Notepad++. Le dossier Arduino se trouve en général dans le dossier document.

commenter ligne //#include <User_Setup.h> autour de la ligne 27 en rajoutant // en début de ligne

decommenter include <User_Setups/Setup25_TTGO_T_Display.h> autour de la ligne 58 en enlevant les // en début de ligne

Pour un premier essai d’affichage, essayez l’exemple TFT_eSPI /160*128/TFT_Print_Test.ino. Il n’est pas adapté à la taille d’écran, mais permet de vérifier le système.

Premier lancement du programme

Configuration par le port série (depuis la version 9.01_DISP)

Si vous êtes connecté par le port série à la carte ESP32, après l’installation, il faut indiquer le nom du réseau Wifi et son mot de passe. Cette connexion peut être faite avec le moniteur de l’IDE Arduino ou depuis votre navigateur web. Il y a 3 commandes clés à entrer :

  • ssid: nom_du_reseau
  • password: mot de passe
  • restart

Configuration par le web

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 (déconnectez votre accès mobile) ou PC portable, regardez la liste des WiFi disponibles. Connectez-vous à celui qui porte le nom DISP-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 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. Allez sur la page « Paramètres » pour définir l’adresse IP à laquelle l’afficheur doit se connecter.

Affichage

La résolution de l’écran est de 240*135 pixels pour le modèle choisi. Il existe d’autres versions avec une meilleure résolution, mais cela n’est pas nécessaire pour ce projet.

L’affichage par défaut donne la puissance en W. Une bande orange visualise l’amplitude. Cette bande passe à droite en vert en cas de surproduction due à des panneaux photovoltaïques.

Affichage Température, Tempo du jour (ici en blanc) et Tempo du lendemain (ici en bleu)

Un appui sur le bouton du bas ou du haut permet de faire défiler les pages de détails

Détails

Un appui sur la cheminée, « Reset » le processeur.

Si vous ne branchez pas de détecteur de mouvement infrarouge, l’affichage restera allumé en permanence.

Accès WEB

Avec un navigateur, vous pouvez accéder à l’ESP par le web si l’ESP est réveillé. Pour le réveiller, passez devant, faite tourner les pages affichées, cela augmentera la durée d’affichage avant mise en veille. Ensuite, dans un navigateur, rentrez l’adresse IP de l’ESP et vous aurez accès à 2 pages : Accueil et Paramètres.

Montage

L’ensemble est monté dans une petite maison réalisée avec une imprimante 3D à résine. Le fichier du modèle .stl est téléchargeable ici :

Boitier (maison) avec face arrière vissable au mur.

Une autre version adaptée à une imprimante à filament et retravaillée par un réalisateur du projet est disponible sur Cults3D.

Pour le détecteur de mouvement, choisissez un modèle avec un diamètre de 10mm du capteur qu’il faudra probablement tourner de 90° pour rentrer dans la boite.

OTA (On The Air)

Les mises à jour du logiciel se font par le port USB ou à distance par Wifi en utilisant la fonction OTA comme pour le routeur. Si votre afficheur est éteint, ce n’est pas possible. Appuyer sur l’un des boutons pour l’allumer au moins 3 mn, le temps de faire la mise à jour.

Bugs Soft

NOM SSID

Après plusieurs téléchargements, modifications du code, je me suis trouvé dans la situation où l’ESP32 cherchait bien à se connecter à mon réseau WIFI de la maison, comme d’habitude. Mais, le moniteur série m’affichait un échec et passage en mode point d’accès (AP) à l’adresse 192.168.4.1. En remettant le nom du réseau WIFI (SSID) c’était toujours un échec. La solution a été de nommer un nouveau nom de réseau en modifiant le SSID de la box locale, de s’y connecter sans problème, et finalement de remettre le SSID d’origine. Je n’ai pas l’explication, mais au moins le remède.

Parasites HF

Si votre afficheur s’allume même en votre absence, probablement que votre capteur IR déclenche sur les émissions du WIFI. J’ai déjà noté ce phénomène. Ce n’est pas la chaleur d’un être humain qui le déclenche, mais les signaux radioélectriques captés par les fils du capteur IR qui se comportent en antennes. Il faut les raccourcir si possible. Les torsader entre eux, voir les blinder et ne pas les faire passer à côté de l’antenne Wifi.

Autre Montage

Boitier logeant 3 batteries 3 batteries Li-ion montées en parallèle et d’assurer ainsi une longue autonomie entre 2 charges. Il permet ainsi de laisser le boitier sur un plan de travail de cuisine par exemple sans « fil à la patte ». Crée par Maxime.

Articles sur le Photovoltaïque

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

244 réponses

  1. FabriceH dit :

    Merci,Merci….
    Apres différentes péripéties, ca marche🎉…. bon c’es moi qui me fait des problèmes aussi…
    j’ai le retour Linky, j’ai la lecture à distance, maintenant je vais attaquer le routeur pour le chauffe eau.
    – pour la visu à distance, j’ai souvent un message d’erreur wifi, il reboot et c’est bon…problème d’adresse avec la box?
    – je suis en Tempo, et je regarde à faire une case couleur en haut à droite de l’affichage principal.. genre une case pour le jour et une case pour le lendemain… vous savez si quelqu’un c’est déjà penché sur ce genre de modif?

    • F1ATB André dit :

      Pour le tempo, je ne l’ai pas et je cherche les codes envoyés par le Linky pour le lendemain afin de le rajouter à l’affichage.
      Cdlt

      • FabriceH dit :

        je suis dans le début de mes modif, là je me bats pour rajouter une ligne avec le tarif actuel ( LTARF) sur la page secondaire… mais je dois revoir car je ne dois pas déclarer correctement ma variable donc ca bloque à l’injection…
        pour le tarif du lendemain ca doit être la ligne : » NJOURF+1 00 B « , je vais surveiller les variations sur une semaine

        • F1ATB André dit :

          Si vous me donnez une copie des valeurs envoyées par le Linky suivant les tarifs, après je me charge du codage. Je n’ai pas le tarif Tempo chez moi pour essayer.
          Cdlt

  2. MATHIEU Jean dit :

    Bonjour,

    Besoin d’un petit coup de pouce pour le firmware lignes de 35 à 49, j’ai commenté dans le code du firmware.
    //WIFI
    const char* ssid = « Freebox-xxxxxx »; //Mettre le nom de la BOX – Je sais faire
    const char* password = « xxxxxxxxx »; //Mot de passe WIFI – OK, je sais aussi

    // Adresse IP Statique de l’ ESP32 – Là, je mets quel adresse IP, celle du maitre ou de l’esclave (je suis avec UxIx2 et deux ESP32)
    IPAddress local_IP(192, 168, 1, 163); – Ça c’est l’adresse IP de l’esclave
    // Set your Gateway/Passerelle IP address – Je présume que c’est l’IP de ma Freebox
    IPAddress gateway(192, 168, 1, x254);
    IPAddress subnet(255, 255, 255, 0);
    IPAddress primaryDNS(8, 8, 8, 8); //optional – Ici en principe on met 192.168.1.254
    IPAddress secondaryDNS(8, 8, 4, 4); //optional – Ici on met 0.0.0.0

    // Client of Power Router. Adresse source des données de puissance Routeur Solaire V4_RMS F1ATB 2023 – Ci-dessous, je ne sais pas si faut faire quelque chose.
    const char* hostSource = « 192.168.0.205 »;
    const int httpPort = 80;

    Avec mes remerciements.

    Jean

    • F1ATB André dit :

      // Adresse IP Statique de l’ ESP32 – Là, je mets quel adresse IP, celle du maitre ou de l’esclave
      Ni le maitre, ni l’esclave mais l’adresse IP que vous voulez donner à l’eSP32 afficheur

      // Client of Power Router. Adresse source des données de puissance Routeur Solaire V4_RMS F1ATB 2023 – Ci-dessous, je ne sais pas si faut faire quelque chose.
      const char* hostSource = « 192.168.0.205 »; LA VOUS METTEZ l’adresse IP du maitre ou de l’esclave celui qui fourni les données de puissance). De preference le maitre pour moins perdre de tems de transfert.
      const int httpPort = 80;

      • MATHIEU Jean dit :

        Merci André,

        J’étais en train d’y travailler, j’ai fait les modifs dans le fichier User_Setup_Select.h, tout se passe bien avec le téléversement, sauf que l’écran reste noir, avant de téléverser il y avait des motifs en couleur.

        Je n’ai pas compris se que vous dites ici, à propos de la définition de l’écran <>

        Je vous mets des copies d’écran ici
        https://uploadnow.io/files/fX25LKm

        Cordialement.

  3. Ferry dit :

    Bonjour André,
    Après avoir réalisé l’affichage et le routeur , je bute sur l’affichage a distance..
    Les modifications dans le fichier User_Setup_Select.h sont réalisées mais lors de la compilation du fichier de test
    du TFT il se termine par l’erreur  » fatal error hal/gpio_11.h directory non trouvée.
    Je n’ai pas pris la bonne librairie TFT_eSPI ?
    Merci pour votre aide
    Bravo pour toutes vos réalisations
    Serge

  4. Ferry dit :

    Bonjour André
    Désolé, J’ai du faire une fausse manip. J’ai de nouveau téléchargé la librairie depuis GitHub
    Plus de pb.
    Bonne fin d’année
    Cordialement,
    Serge

  5. MATHIEU Jean dit :

    Bonsoir André,

    Bon, moi je n’ai pas d’affichage après avoir téléversé, par contre si je remets le firmware d’origine l’afficheur fonctionne.
    J’ai fait les modifs dans le fichier User_Setup_Select.h (voir copie jointe)
    https://ibb.co/nR3qq6g
    Avec mes remerciements.

    Jean

  6. UHRICH dit :

    Bonjour André,
    Je viens de faire le montage, tout ceci fonctionne parfaitement du 1° coup sauf que l’affichage me montre une puissance active négative sur l’afficheur alors que la partie mesure avec sonde de courant montre le même chiffre mais en positif …
    Sur la 2° page
    – Soutire ce jour = 0
    – Injectée ce jour = 79 Wh

    Note: Il est minuit, donc je ne produis rien

    • F1ATB André dit :

      A priori, je ne vois pas pourquoi. Quelle version de routeur utilisez-vous, UxI, UxIx2 etc…?
      Cdlt

      • UHRICH dit :

        j’utilise la UxI –
        Pour la partie mesure je suis en « Solar_Router_V5_10_RMS » avec pince ampèremétrique –
        Pour la partie display « Power_Remote_Display_V4.1_RMS »

        Quand je produis rien, tout est inversé … j’ai la bande verte (au lieu de l’orange), la courbe rouge est en dessous du 0, Soutiré=0 mais injectée=xx VA…

  7. MATHIEU Jean dit :

    Bonsoir André,

    Pas de solution pour moi.
    Je viens de téléverser le fichier « TFT_Print_Test.ino » l’afficheur ne fonctionne pas, je lui remets le fichier d’origine « firmware.bin » il affiche TTGO

    Je dois dire que je suis dans l’impasse, je ne sais pas quoi faire, pour le MaxPV j’ai fait le « Companion » sans problème.

    Jean

  8. MATHIEU Jean dit :

    Oui André, comme suit:
    //#include
    #include
    Arduino 2.2.1, je choisis le carte TTGO LoRa32 OLED, le port com9 (pour moi) et ne touche à rien d’autres
    Le téléversement se passe nickel et donne ça:
    Leaving…
    Hard resetting via RTS pin…
    Le RST c’est bien le petit bouton sur le côté de la carte (j’ai essayé les trois boutons!!!…)

    Pour info. je n’ai pas le capteur IR, de mon point de vu ça ne devrait pas empêcher l’affichage.

    J’ai aussi téléversé le firmware du « Mesure de température » (sans le DS18B20) rien non plus

    J’ai commandé un autre TTGO ST7789V

    Faut que je me replonge dans Visual Studio, il me semble que l’on peut convertir iun *.ino en fichier *.bin

    J’ai des heures de galère avec IDE Arduino, en principe j’y arrive, mais là, je dois m’avouer vaincu!!!!…..

  9. MATHIEU Jean dit :

    Ça n’a pas pris le copier/coller de la ligne 69 ????… j’ai compris, ici ça n’aime pas le « inférieur » qui juste derrière Display.h, donc je l’enlève
    #include <User_Setups/Setup25_TTGO_T_Display.h

  10. MATHIEU Jean dit :

    Bonsoir,
    Cadeau de fin d’année, se n’est pas moi, mais une personne (Jean Claude) qui à mon adresse mail et qui vient de m’écrire sur le fait que lui aussi a galéré, après recherche, il c’est rendu compte qu’il avait plusieurs dossiers TFT_eSPI er du coup plusieurs fichiers User_Setup_Select.h
    Je viens de faire le ménage dans le dossier Documents/Arduino, bien sur ont ne touche pas celui qui est dans Arduino/libraries
    Comme avec toutes ses péripéties j’ai installé une sonde DS18B20 sur l’afficheur, alors je suis parti sur le firmware de l’Afficheur de température et voilà DINGO ça fonctionne, trop content.
    J’y ai passé presque toute la journée, mais je vais pouvoir bien dormir.

    Bon réveillons à tous (mon épouse et moi ça sera sans, je sors d’être malade et mon épouse à pris le relai)

  11. Titi21 dit :

    Hello, je suis sur la mise en place de l’affichage distant et en voulant utiliser l’OTA je me suis rendu compte que ça ne fonctionner pas.
    Il faut rajouter dans le global:

    //Créer objet AsyncWebServer sur le port 80 :
    AsyncWebServer server(80);

    et dans le setup:
    //démarrer serveur
    server.begin();
    //démarrer ElegantOTA
    AsyncElegantOTA.begin(&server);

  12. MATHIEU Jean dit :

    Bonjour André,
    Merci pour vos vœux, de même je vous souhaite le meilleurs pour cette nouvelle année, surtout la santé.
    Garder votre motivation pour vos réalisations actuelles et à venir, personnellement je suis très content d’avoir découvert votre routeur (en fait, c’est le fameux Jean Claude qui m’a mis sur la piste) facile à réaliser et à mettre en œuvre qui fait preuve de beaucoup d’intelligence.

    Pour ceux qui suivent, je viens de finir un tuto sur la réalisation du routeur qui dans mon cas est avec deux ESP32 et sur l’Afficheur à distance.
    Pour le tuto il faudra aller sur le forum-photovoltaique afin de prendre contact avec moi.

    Meilleur vœux à tous

    • Philippe BLONDEL dit :

      Bonjour, ou se trouve le forum photovoltaique et votre tuto .Merci d’avance pour votre réponse

  13. MATHIEU Jean dit :

    Bonjour Philippe, Il faut m’écrire en MP sur le forumphotovoltaique

    https://forum-photovoltaique.fr/viewtopic.php?f=110&t=67337&p=738235#p738235

    Mon tuto est un condensé de tout ce qu’explique André avec plus de détails pour ceux qui « pataugent » avec IDE Arduino, après loin de moins d’avoir la « science infuse », moi c’est mon « aide mémoire » car dans le temps et au regards de mon âge j’ai tendance à oublier.

    Jean

  14. Alain dit :

    Bonjour André
    Meilleurs vœux à tous pour 2024
    Je voulais vous remercier chaleureusement pour votre travail j’ai réaliser votre retour avec un shelly EM pour la mesure et un ESP32 pour l’actionneur avec sonde et afficheur tout fonctionne parfaitement depuis 2 semaines il me reste plus qu’a mettre tout dans un boitier alu qui me servira de radiateur pour le triac.
    je viens de faire un don pour contribuer à votre travail
    Cdlt
    Alain

  15. Yoann dit :

    Bonjour André,
    Magnifique boulot, je vous remercie pour tout ce que vous avez fait.
    Je bute sur la configuration hostsource, je ne sais pas quelle adresse ip mettre. Peu importe l’adresse que je met, moniteur série m’affiche connexion à échouée et je n’ai pas d’affichage
    // Client of Power Router. Adresse source des données de puissance Routeur Solaire V4_RMS F1ATB 2023
    const char* hostSource = « 192.168.0.205 »;const int httpPort = 80;
    J’ai fait votre système avec enphase.
    Merci par avance

    • F1ATB André dit :

      A la ligne
      const char* hostSource = « 192.168.0.205 »
      Il faut mettre l’adresse IP de l’ESP32 qui collecte les données de puissance (connecté à Enphase dans votre cas et non l’adresse IP d’enphase).

      PS: j’ai mis en ligne une version V6 du logiciel de l’afficheur. Cela ne change que des commentaires par rapport à la V5.

      Cdlt

  16. yoann dit :

    Merci André pour votre réponse rapide. Mon esp32 a comme IP 192.168.1.54. Je met donc celle ci const char* hostSource = « 192.168.1.54 ». Moniteur série me dit connexion échouée.

  17. yoann dit :

    Oui, je n’ai pas de message d’erreur quand au ip wifi et passerelle. C’est vraiment que cette adresse: const char* hostSource = « 192.168.1.54

  18. Titi21 dit :

    Hello,
    En attendent que le soleil arrive pour tester le routeur.
    Mon petit affichage modifier après un long parcours avant de comprendre comment modifier le code ( je suis très novice dans le domaine)
    Merci pour tout ce taf André
    https://drive.google.com/file/d/1yDp6iaRhAITP3UWRk2iaoqkUGY2VNdiH/view?usp=drive_link

  19. Alain dit :

    Bonsoir André,
    j’ai constaté un bug dans le moniteur série sur le code de l’afficheur, mon ESP32 version 6.02 afficheur TTGO version 6 RMS
    une idée ?
    DEBUT SEQUENCE TOUT VA BIEN :

    rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drWake up : 0
    IR at wake up : 0
    IP address: 192.10.1.42
    HostSource : 192.10.1.80
    IR at end setup : 0
    IR loop : 0
    720 W
    IR loop : 0
    728 W
    IR loop : 0
    726 W

    AU BOUT D’UN MOMENT IL PERD LA CONNEXION :

    IR loop : 0
    812 W
    IR loop : 0
    Connexion vers 192.10.1.80 échoué
    812 W
    IR loop : 0
    Connexion vers 192.10.1.80 échoué
    812 W
    IR loop : 0
    Connexion vers 192.10.1.80 échoué
    812 W
    IR loop : 0
    Connexion vers 192.10.1.80 échoué
    812 W
    IR loop : 0
    Connexion vers 192.10.1.80 échoué

    APRES PLUSIEURS TENTATIVES IL REPART :

    Connexion vers 192.10.1.80 échoué
    812 W
    IR loop : 0
    839 W
    IR loop : 1
    774 W
    IR loop : 0
    2610 W
    IR loop : 0
    887 W

    • F1ATB André dit :

      Je pense que c’est un problème de WIFI qui n’arrive pas bien là où se trouve l’afficheur.
      J’ai 2 systèmes d’affichage chez moi, qui fonctionnent bien.

      Cdlt
      André

  20. Alain dit :

    Bonjour André,
    j’ai trouvé j’utilise beaucoup de domotique chez moi et j’avais un doublon sur cette IP donc mon routeur wifi faisait la déconnexion détectant un conflit d’IP
    en tout cas encore merci pour tout je le dirai jamais assez