Statistiques du Forum
» Membres : 2,654,   » Dernier membre : mickey,   » Sujets du forum : 2,265,   » Messages du forum : 21,053,  
Statistiques complètes

  Petit bug entre les 2 graphiques énergie mensuel/annuel.
Posté par : xum - 03-03-2026, 07:47 PM - Forum : Routeur Photovoltaïque - Réponses (3)

Bonjour, 

J'ai une différence entre le graphique sur l’énergie mensuel et le graphique annuel. 
Les données du CSV sont justes (elles correspondent au mensuel). La modification du CSV impacte uniquement le mensuel.
Il y aurait une autre astuce pour l'annuel ?

Merci d'avance.



Pièces jointes Miniature(s)
       
Imprimer cet élément

  Un ESP32-S3 en afficheur routeur en attendant la version routeur compatible ...
Posté par : Sgb31 - 03-03-2026, 02:57 PM - Forum : Evolutions faites, à faire, dont vous rêvez... - Pas de réponse

Tout est dans le titre (ou presque) , 

voila un lien vers mon afficheur de routage et++ basé sur un ESP32-S3...

https://f1atb.fr/forum_f1atb/thread-2361...l#pid21309

Imprimer cet élément

  Afficheur ESP32-S3 sous ESPHOME
Posté par : Sgb31 - 03-03-2026, 12:43 PM - Forum : Affichage Routeur Distant - Réponses (23)

Hello la communauté F1ATB !

Après pas mal d’investigations, je viens enfin vous présenter mon afficheur "routage solaire",  développé à partir d’un modèle ESP32-S3 JC3248W535 (écran tactile 480*320).
J’ai choisit volontaire de développer cet afficheur sous ESPHome / Home Assistant
L’avantage est de pouvoir récupérer directement pas mal d’infos routage et domotique gérés par HA, l’inconvénient étant d’être tributaire d’un Home Assistant chez soi…

Une barre inférieure horizontale d’icônes permet une navigation sur 4 pages :

-  Accueil :  infos principales de gestion solaire : routage tps réel, flux dynamiques, cumuls journaliers, couleur tempo J et J+1, météo, températures, gestion batterie (à venir)
-  Graphe : graphique de comparaison sur 24h glissant de la conso et de la prod solaire ( par pas de 30 minutes ).
-  Pilotage : Boutons d’actions pour forcer des éléments gérés via HA très divers. Ce sont des raccourcis simplifiés d’automatismes utilisables par tous les membres de la famille en un click.
-  Paramètres : gestion des paramètres météo ( choix du lieu ), système et divers …
 
Des évolutions sont prévues et restent à venir notamment sur la gestion batterie, le paramétrage, la gestion de thèmes, la gestion des températures, les notifications …

Je vous joint également les copies écrans des différentes pages et reste à dispo pour toute question sur le sujet , Gilles.  

PS : le rendu des photos n'est pas terrible par rapport au rendu réel de cet écran hyper lumineux et magnifique !!!



Pièces jointes Miniature(s)
                   
Imprimer cet élément

  Lecture des 2 voies simultanées sur Shelly3EM
Posté par : H3rv3 - 03-03-2026, 12:13 PM - Forum : Routeur Photovoltaïque - Pas de réponse

Le Shelly3EM peut lire les 3 voies simultanément (c'est utilisé pour le triphasé) et donc aussi les 2 voies qui peuvent être utilisées dans le routeur.
Avec cette formule, pas besoin de faire des appels sur la voie 0 ou la voie 1.

Dans les paramètres, il faut choisir le ShellyEM et la voie 60 (cela donne lecture simultanée, voie de la puissance maison sur canal 0. Le cas où la puissance maison est sur le canal 1 n'est traité).

Le code de Source_ShellyEm.ino modifié est là:

Code :
// ****************************************************
// * Client d'un Shelly Em sur voie 0 ou 1 ou triphasé*
// ****************************************************

String ReadStringMulti(WiFiClient &client, const String &terminator, uint32_t timeout = 1000) {
  String result = "";
  unsigned long start = millis();

  while (millis() - start < timeout) {
    while (client.available()) {
      char c = client.read();
      result += c;

      // Vérifie si la fin correspond au terminateur
      if (result.endsWith(terminator)) {
        // Supprime le terminateur si tu ne veux pas le garder
        result.remove(result.length() - terminator.length());
        return result;
      }
      start = millis();  // reset du timeout à chaque caractère reçu
    }
  }
  return result;  // timeout atteint
}


void LectureShellyEm() {
  String S = "";
  String Shelly_Data = "";
  float Pw = 0;
  float voltage = 0;
  float pf = 0;
  float Pva;
  int p = 0;
  // Use WiFiClient class to create TCP connections
  WiFiClient clientESP_RMS;
  String host = IP2String(RMSextIP);
  if (!clientESP_RMS.connect(host.c_str(), 80, 3000)) {
    delay(500);
    if (!clientESP_RMS.connect(host.c_str(), 80, 3000)) {
      delay(100);
      clientESP_RMS.stop();
      StockMessage("connection to Shelly Em failed : " + host);
      return;
    }
  }
  int voie = EnphaseSerial.toInt();
  int Voie = voie % 2;

  if (ShEm_comptage_appels == 1) {
    Voie = (Voie + 1) % 2;
  }
 
  String url = "/emeter/" + String(Voie);
  if (voie == 3)  url = "/status";  //Triphasé Shelly 3Em
  if (voie >= 30) url = "/rpc/Shelly.GetStatus";
  if (voie == 60) url = "/status";  // HP11 Triphasé Shelly 3Em pour lire les données monophasées
 
  ShEm_comptage_appels = (ShEm_comptage_appels + 1) % 5;  // 1 appel sur 6 vers la deuxième voie qui ne sert pas au routeur
  clientESP_RMS.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
  unsigned long timeout = millis();
  while (clientESP_RMS.available() == 0) {
    if (millis() - timeout > 5000) {
      StockMessage("client Shelly Em Timeout ! : " + host);
      clientESP_RMS.stop();
      delay(100);
      return;
    }
  }
  if (voie ==3 || voie == 60) {   // HP11 Triphasé ou  lecture des troies voies monphasées en même temps
    Shelly_Data = ReadStringMulti(clientESP_RMS, "fs_mounted");
  } else {
    timeout = millis();
    // Lecture des données brutes distantes jusqu'à Fin (Defini d'après ChatGPT et à verifier pour tous les Shelly)
    while (clientESP_RMS.available() && (millis() - timeout < 5000)) {
      Shelly_Data += clientESP_RMS.readStringUntil('}');
    }
    Shelly_Data +="}";
  }
  clientESP_RMS.stop();
  p = Shelly_Data.indexOf("{");
  Shelly_Data = Shelly_Data.substring(p) ;
  if (voie == 3) {  //Triphasé
    ShEm_dataBrute = "<strong>Triphasé</strong><br>" + Shelly_Data;
    p = Shelly_Data.indexOf("emeters");
    Shelly_Data = Shelly_Data.substring(p + 10);
    Pw = PfloatMax(ValJson("power", Shelly_Data));  //Phase 1
    pf = ValJson("pf", Shelly_Data);
    pf = abs(pf);
    float total_Pw = Pw;
    float total_Pva = 0;
    if (pf > 0) {
      total_Pva = abs(Pw) / pf;
    }
    float total_E_soutire = ValJson("total", Shelly_Data);
    float total_E_injecte = ValJson("total_returned", Shelly_Data);
    p = Shelly_Data.indexOf("}");
    Shelly_Data = Shelly_Data.substring(p + 1);
    Pw = PfloatMax(ValJson("power", Shelly_Data));  //Phase 2
    pf = ValJson("pf", Shelly_Data);
    pf = abs(pf);
    total_Pw += Pw;
    if (pf > 0) {
      total_Pva += abs(Pw) / pf;
    }
    total_E_soutire += ValJson("total", Shelly_Data);
    total_E_injecte += ValJson("total_returned", Shelly_Data);
    p = Shelly_Data.indexOf("}");
    Shelly_Data = Shelly_Data.substring(p + 1);
    Pw = PfloatMax(ValJson("power", Shelly_Data));  //Phase 3
    pf = ValJson("pf", Shelly_Data);
    pf = abs(pf);
    total_Pw += Pw;
    if (pf > 0) {
      total_Pva += abs(Pw) / pf;
    }
    total_E_soutire += ValJson("total", Shelly_Data);
    total_E_injecte += ValJson("total_returned", Shelly_Data);
    Energie_M_Soutiree = int(total_E_soutire);
    Energie_M_Injectee = int(total_E_injecte);
    if (total_Pw == 0) {
      total_Pva = 0;
    }
    if (total_Pw > 0) {
      PuissanceS_M_inst = total_Pw;
      PuissanceI_M_inst = 0;
      PVAS_M_inst = total_Pva;
      PVAI_M_inst = 0;
    } else {
      PuissanceS_M_inst = 0;
      PuissanceI_M_inst = -total_Pw;
      PVAI_M_inst = total_Pva;
      PVAS_M_inst = 0;
    }
  } else if (voie == 60){ // HP11 Lecture des données sur les 2 premières sondes
    ShEm_dataBrute = "<strong>Shelly 3em</strong><br>" + Shelly_Data;
    //******* SONDE 1 *****************
    p = Shelly_Data.indexOf("emeters");
    Shelly_Data = Shelly_Data.substring(p + 10);
    Pw = PfloatMax(ValJson("power", Shelly_Data));  //Phase 1
    pf = ValJson("pf", Shelly_Data);
    pf = abs(pf);
    voltage = ValJson("voltage", Shelly_Data); // HP11 on recupère aussi le voltage
    Energie_M_Soutiree = ValJson("total", Shelly_Data);
    Energie_M_Injectee = ValJson("total_returned", Shelly_Data);

    if (Pw >= 0) {
      PuissanceS_M_inst = Pw;
      PuissanceI_M_inst = 0;
      if (pf > 0.01) {
        PVAS_M_inst = PfloatMax(Pw / pf);
      } else {
        PVAS_M_inst = 0;
      }
      PVAI_M_inst = 0;
    } else {
      PuissanceS_M_inst = 0;
      PuissanceI_M_inst = -Pw;
      if (pf > 0.01) {
        PVAI_M_inst = PfloatMax(-Pw / pf);
      } else {
        PVAI_M_inst = 0;
      }
      PVAS_M_inst = 0;
    }
    PowerFactor_M = pf;
    Tension_M = voltage;  // HP11 mise à jour Tension_M
    Pva_valide = true;
//******* SONDE 2 *****************
    p = Shelly_Data.indexOf("}");
    Shelly_Data = Shelly_Data.substring(p + 1);
    Pw = PfloatMax(ValJson("power", Shelly_Data));  //Phase 2
    pf = ValJson("pf", Shelly_Data);
    pf = abs(pf);
    voltage = ValJson("voltage", Shelly_Data); // HP11 on recupère aussi le voltage
    Energie_T_Soutiree = ValJson("total", Shelly_Data);
    Energie_T_Injectee = ValJson("total_returned", Shelly_Data);
  if (Pw >= 0) {
      PuissanceS_T_inst = Pw;
      PuissanceI_T_inst = 0;
      if (pf > 0.01) {
        PVAS_T_inst = PfloatMax(Pw / pf);
      } else {
        PVAS_T_inst = 0;
      }
      PVAI_T_inst = 0;
    } else {
      PuissanceS_T_inst = 0;
      PuissanceI_T_inst = -Pw;
      if (pf > 0.01) {
        PVAI_T_inst = PfloatMax(-Pw / pf);
      } else {
        PVAI_T_inst = 0;
      }
      PVAS_T_inst = 0;
    }
    PowerFactor_T = pf;
    Tension_T = voltage; // HP11 mise à jour Tension_T
  } else if (voie < 3) {  //Monophasé Shelly Em de base
    ShEm_dataBrute = "<strong>Voie : " + String(Voie) + "</strong><br>" + Shelly_Data;
    Shelly_Data = Shelly_Data + ",";
    if (Shelly_Data.indexOf("true") > 0) {  // Donnée valide
      Pw = PfloatMax(ValJson("power", Shelly_Data));
      voltage = ValJson("voltage", Shelly_Data);
      pf = ValJson("pf", Shelly_Data);
      pf = abs(pf);
      if (pf > 1) pf = 1;
      if (Voie == voie) {  //voie du routeur
        if (Pw >= 0) {
          PuissanceS_M_inst = Pw;
          PuissanceI_M_inst = 0;
          if (pf > 0.01) {
            PVAS_M_inst = PfloatMax(Pw / pf);
          } else {
            PVAS_M_inst = 0;
          }
          PVAI_M_inst = 0;
        } else {
          PuissanceS_M_inst = 0;
          PuissanceI_M_inst = -Pw;
          if (pf > 0.01) {
            PVAI_M_inst = PfloatMax(-Pw / pf);
          } else {
            PVAI_M_inst = 0;
          }
          PVAS_M_inst = 0;
        }
        Energie_M_Soutiree = int(ValJson("total", Shelly_Data));
        Energie_M_Injectee = int(ValJson("total_returned", Shelly_Data));
        PowerFactor_M = pf;
        Tension_M = voltage;
        Pva_valide = true;
      } else {  // voie secondaire
        if (LissageLong) {
          PwMoy2 = 0.2 * Pw + 0.8 * PwMoy2;  //Lissage car moins de mesure sur voie secondaire
          pfMoy2 = 0.2 * pf + 0.8 * pfMoy2;
          Pw = PwMoy2;
          pf = pfMoy2;
        }
        if (Pw >= 0) {
          PuissanceS_T_inst = Pw;
          PuissanceI_T_inst = 0;
          if (pf > 0.01) {
            PVAS_T_inst = PfloatMax(Pw / pf);
          } else {
            PVAS_T_inst = 0;
          }
          PVAI_T_inst = 0;
        } else {
          PuissanceS_T_inst = 0;
          PuissanceI_T_inst = -Pw;
          if (pf > 0.01) {
            PVAI_T_inst = PfloatMax(-Pw / pf);
          } else {
            PVAI_T_inst = 0;
          }
          PVAS_T_inst = 0;
        }
        Energie_T_Soutiree = int(ValJson("total", Shelly_Data));
        Energie_T_Injectee = int(ValJson("total_returned", Shelly_Data));
        PowerFactor_T = pf;
        Tension_T = voltage;
      }
    }

  } else {  //Shelly Em Gen3  . On recupere les 2 voies à chaque message
    Voie = voie % 2;
    ShEm_dataBrute = "<strong>Shelly Em Gen3 Voie : " + String(Voie) + "</strong><br>" + Shelly_Data;
    if (Shelly_Data.indexOf("ssid") > 0) {  // Donnée valide
      Shelly_Data = SubJson("em1:" + String(Voie), "}", Shelly_Data);
      Pw = PfloatMax(ValJson("act_power", Shelly_Data));
      pf = ValJson("pf", Shelly_Data);
      voltage = ValJson("voltage", Shelly_Data);
      if (Pw >= 0) {
        PuissanceS_M_inst = Pw;
        PuissanceI_M_inst = 0;
        if (pf > 0.01) {
          PVAS_M_inst = PfloatMax(Pw / pf);
        } else {
          PVAS_M_inst = 0;
        }
        PVAI_M_inst = 0;
      } else {
        PuissanceS_M_inst = 0;
        PuissanceI_M_inst = -Pw;
        if (pf > 0.01) {
          PVAI_M_inst = PfloatMax(-Pw / pf);
        } else {
          PVAI_M_inst = 0;
        }
        PVAS_M_inst = 0;
      }
      Shelly_Data = SubJson("em1data:" + String(Voie), "}", ShEm_dataBrute);
      Energie_M_Soutiree = int(ValJson("total_act_energy", Shelly_Data));
      Energie_M_Injectee = int(ValJson("total_act_ret_energy", Shelly_Data));
      PowerFactor_M = pf;
      Tension_M = voltage;
      Pva_valide = true;
      Voie = (Voie + 1) % 2;
      Shelly_Data = SubJson("em1:" + String(Voie), "}", ShEm_dataBrute);
      Pw = PfloatMax(ValJson("act_power", Shelly_Data));
      pf = ValJson("pf", Shelly_Data);
      if (Pw >= 0) {
        PuissanceS_T_inst = Pw;
        PuissanceI_T_inst = 0;
        if (pf > 0.01) {
          PVAS_T_inst = PfloatMax(Pw / pf);
        } else {
          PVAS_T_inst = 0;
        }
        PVAI_T_inst = 0;
      } else {
        PuissanceS_T_inst = 0;
        PuissanceI_T_inst = -Pw;
        if (pf > 0.01) {
          PVAI_T_inst = PfloatMax(-Pw / pf);
        } else {
          PVAI_T_inst = 0;
        }
        PVAS_T_inst = 0;
      }
      Shelly_Data = SubJson("em1data:" + String(Voie), "}", ShEm_dataBrute);
      Energie_T_Soutiree = int(ValJson("total_act_energy", Shelly_Data));
      Energie_T_Injectee = int(ValJson("total_act_ret_energy", Shelly_Data));
      PowerFactor_T = pf;
      Tension_T = voltage;
    }
  }
  filtre_puissance();
  PuissanceRecue = true;  //Reset du Watchdog à chaque trame du Shelly reçue
  if (ShEm_comptage_appels > 1) EnergieActiveValide = true;
  if (cptLEDyellow > 30) {
    cptLEDyellow = 4;
  }
}

Imprimer cet élément

  SSR ou Triac et connexion avec contacteur HC/HP
Posté par : dicky34 - 02-03-2026, 11:37 PM - Forum : Routeur Photovoltaïque - Réponses (6)

Bonjour,

J'ai parcouru toutes les pages du site et lu le forum afin de me familiariser avec le montage, j'ai fait de nombreux projets IOT avec des ESP (8266 puis 32) et je suis à l'aise en électronique et je cherche à optimiser mon autoconsommation.

Après cette intro, voici les questions que je me pose :

1. SSR ou Dimmer (Triac)
En ayant parcouru le site je ne suis pas sûr de voir quels sont les avantages ou inconvénients de ces 2 modules (je souhaite piloter un simple CE à résistance), câbler un SSR me paraît plus simple, et j'ai cru comprendre que les trias pouvaient provoquer plus d'interférences electro-magnétiques.

Dans mon cas d'usage, pour un CE résistant, est-ce un bon choix de partir sur un SSR ?

2. Intégration du routeur solaire au tableau électrique.
Je me pose la question de la connexion du routeur au circuit de puissance, le CE est actuellement piloté avec un contacteur HC/HP (donc il chauffe principalement la nuit). Mon but avec le routeur est bien entendu d'utiliser le surplus solaire en journée et éviter un conso la nuit en HC.

J'ai vu ce schéma de câblage sur une des pages du site :

[Image: contacteur.png]

Si j'ai bien compris, en connectant le routeur en // de la sortie du contacteur HC/HP, le routeur envoie la puissance modulée par le SSR ou le Dimmer vers le CE s'il y a du surplus et cela permet également, les jours sans surplus ou sans soleil, de conserver une alimentation du CE la nuit en HC ?

Question supplémentaire : pour éviter de tirer des câbles vers le CE, peut-on connecter la sortie du routeur (puissance) directement en // du contacteur jour/nuit dans le tableau électrique ?

Merci à André et aux différents intervenants sur le forum pour toute les informations que j'y ai trouvé.

Imprimer cet élément

  recherche version Solar_Router_V15_11
Posté par : fazer31 - 02-03-2026, 10:58 PM - Forum : Routeur Photovoltaïque - Réponses (5)

Bonjour,

Suite à un soucis sur un de mes ESP32 sur lequel je dois re-téléverser la version et comme celle-ci n'est plus en téléchargement sur le site d’André, du coup je suis à la rechercher de la version  Solar_Router_V15_11.

C'est version convient et fonctionne très bien pour mon installation, si quelqu'un avait la gentillesse de me la faire passer svp.

@+

Imprimer cet élément

  V17.7 et mqtt , problème publication
Posté par : cddu33 - 02-03-2026, 09:42 PM - Forum : Routeur Photovoltaïque - Réponses (11)

Bonsoir, j'ai installé ce matin la version 17.07 et depuis plus de publication de l'ouverture, temps estimé...
J'ai downgrade en 17.05 et c'est revenu.

J'ai bien sûr reset l'esp32 après la mise a jour.

Sinon le reste fonctionne très bien.

Imprimer cet élément

  spectrum center frequency alignment
Posté par : Scandio I2WQ - 02-03-2026, 06:41 PM - Forum : Remote SDR - Pas de réponse

the frequency of the central beacon on the spectrum is not in the center and does not coincide
with that indicated in the strip below
if I align the two frequencies with manual correction the correction comes eliminated by enabling self-correction
how to center the spectrum?

Imprimer cet élément

  Erreur compilation arduino ide
Posté par : cupriste - 01-03-2026, 09:16 PM - Forum : Routeur Photovoltaïque - Réponses (5)

Bonsoir,

Je tente de téléverser la version 17.07 et j'ai cette erreur . En version 15 ça fonctionnait du coup j'ai mis à jour les bibliothéques .

Il n'y a pas de nouvelles librairies à télécharger juste celles ci dessous ? 

[*]PubSubClient
[*]OneWire
[*]DallasTemperature
[*]UrlEncode
[*]LovyanGFX
[*]EthernetESP32

[*]Merci pour votre aide



Pièces jointes Miniature(s)
   
Imprimer cet élément

  V17.7
Posté par : David51 - 01-03-2026, 06:15 PM - Forum : Routeur Photovoltaïque - Réponses (8)

Je viens de voir une nouvelle version pas encore essayé pour moi.

C est quoi les changements que notre amis André a fait, suis toujours en v17.5 sur mes différente routeur.
Car la 17.6 première version bug sur mon tactile

Imprimer cet élément


Utilisateurs en ligne
Il y a actuellement 254 utilisateurs connectés. » 7 Membre(s) | 242 Visiteur(s)
Applebot, Baidu, Bing, Google, Yandex, bernyb12000, Martinjp, mickey, patrick66200, Sgb31

Moteur MyBB, © 2002-2026 Melroy van den Berg.