Bienvenue, Visiteur
Vous devez vous enregistrer avant de pouvoir poster.

Nom d’utilisateur
  

Mot de passe
  





Rechercher dans les forums

(Recherche avancée)

Derniers sujets
V17.06 - Probleme connexi...
Dernier message : mickmari
Il y a 3 minutes
historique des graphiques
Dernier message : José Rod
Il y a 50 minutes
DS18B20 Précision du capt...
Dernier message : Yves911
Il y a 1 heure
Pince amperemetrique pour...
Dernier message : mchlbgs
Il y a 2 heures
V17.06 plante esp tactile
Dernier message : David51
Il y a 3 heures
GPIO ESP32 ETH01
Dernier message : Jonas48
Il y a 3 heures
injection/soutirage depui...
Dernier message : piamp
Il y a 4 heures
Un newbe qui cherche comm...
Dernier message : Patson
Il y a 9 heures
internet KO
Dernier message : filipe.ferreira
Il y a 9 heures
Routeur f1atb et Batterie...
Dernier message : Charmusien
Il y a 9 heures

Statistiques du Forum
» Membres : 2,479,   » Dernier membre : José Rod,   » Sujets du forum : 2,066,   » Messages du forum : 18,832,  
Statistiques complètes

  Problème valeurs puissances et energies routeur
Posté par : Jérémie - 25-01-2026, 11:39 AM - Forum : Routeur Photovoltaïque - Réponses (3)

Bonjour,

J'ai réalisé mon routeur avec ESP32-WROOM et sonde JSY-MK-194T en mars 2024 et ça fonctionne parfaitement depuis bientôt 2 ans mais depuis une semaine je me retrouve avec des valeurs de puissances max, energie active démesurées (des milliers de KWh par jour...) et même des consommations sur BECS alors que je le coupe tout l'hiver... J'ai tenté une mise à jour du routeur sur la dernière version 16.10 mais aucun changement y compris le redémarrage et reset...
Est-ce que quelqu'un a une idée hormis le remplacement de la sonde???

Merci par avance.

   

Imprimer cet élément

  Installation Espressif ESP32 librairie cartes 3.3.6 : Success.
Posté par : PhDV61 - 25-01-2026, 10:41 AM - Forum : Routeur Photovoltaïque - Réponses (2)

Bonjour,

J'ai mis à jour la librairie carte avec la dernière version disponible sur github ici ( 3.3.6) : https://github.com/espressif/arduino-esp32/releases/
Pour réussir à réaliser la mise à jour, j'ai du modifier un fichier comme indiqué ici :  https://forum.arduino.cc/t/downloading-e.../1420739/7 car il y a un bug dans la version du CLI ( sur Arduino IDE 2.3.7 ).
Une fois mis à jour le fichier  "arduino-cli.yaml"  en ajoutant en ce qui me concerne les lignes suivantes 

Code :
network:
  connection_timeout: 60000s

1/ on peut réaliser l'update de la librairie de carte ( plus de 2 GB  : sans cette modif de timeout réseau, cela ne marche pas ).
2/ on peut compiler, même s'il y a quelques "warning"
3/ le téléchargement via OTA du binaire fonctionne à distance, même avec un liaison internet lente.

Et le routeur fonctionne de manière nominale.
Mon routeur Linky de référence tourne avec la 16.10 compilée avec toutes les librairies à jour dont la version cartes 3.3.6

Imprimer cet élément

  Que signifie le message " client ESP_RMS Timeout
Posté par : daniel - 24-01-2026, 10:04 PM - Forum : Routeur Photovoltaïque - Réponses (4)

Bonjour,

Tout est dans le titre.

Imprimer cet élément

  Chargeur simple vehicule électrique
Posté par : ghoudart - 24-01-2026, 08:15 PM - Forum : Evolutions faites, à faire, dont vous rêvez... - Réponses (9)

J'ai installé le routeur solaire qui marche parfaitement pour chauffer le ballon d'eau chaude avec le surplus solaire depuis plus d'un an. Merci André !

Je souhaiterai savoir si je peux utiliser le relais 2 en mode ON/OFF pour charger mon véhicule électrique sur une prise domestique classique. 

J'ai bien conscience que ce serait un dispositif très simplifié: pas de variation de la charge, charge bloquée à 10A et 2200W. 

Mais je souhaiterais avoir confirmation que c'est possible et que le on/off est compatible avec une charge de vehicule electrique sur prise domestique (je me dis que oui puisque ca peut piloter une pompe de piscine).

merci bcp

Imprimer cet élément

  RMS et Shelly Pro 3EM 3CT 63 ?
Posté par : Rakibou - 24-01-2026, 08:06 PM - Forum : Routeur Photovoltaïque - Pas de réponse

Bonjour,

Je m'apprête à installer un RMS F1ATB chez un ami.
C'est une installation PV triphasée.

Le linky étant trop loin, et compte tenu de l'absence de place dans le tableau, on envisage d'installer un
Shelly Pro 3EM 3CT 63 sous le disjoncteur d'abonné (seul endroit où on peut installer le bloc 3CT).
https://www.shelly.com/fr/products/shelly-pro-3em-3ct63

Quelqu'un a-t-il déjà utilisé ce modèle avec le RMS ?

Merci d'avance de vos infos et de vos avis.

Imprimer cet élément

  lektrico
Posté par : Dann - 24-01-2026, 06:31 PM - Forum : Routeur Photovoltaïque - Réponses (2)

Bonjour j'ai un souci avec l'appli de chez lektrico mon shelly em ne s'intègre pas avez vous eu ce problème
merci pour vos retours

Imprimer cet élément

  Forçage MQTT via Jeedom et jmqtt (RÉSOLU)
Posté par : LuciusTerror - 24-01-2026, 02:41 AM - Forum : Routeur Photovoltaïque - Réponses (3)

Hello,

---------------------------------------------------------------------------
RÉSOLU : https://f1atb.fr/forum_f1atb/thread-2189...l#pid19349
---------------------------------------------------------------------------

Ca fait 5h que j'essaie de commander le forçage du triac F1ATB en v16.10 via une requête MQTT depuis jmqtt dans jeedom.
J'ai épongé des 10aines de topic sur le forum F1ATB et même sur celui de la commu jeedom ...
En désespoir j'ai même fait appel à GPT .... mais il m'a soulé, il est 1h30 passé du mat' et ses réponses changeantes m'agacent lol.


Voici ma config routeur :

   

Préfixe = f1atb
Device Name = routeur

Forçage MQTT = activé

   

Nom action = TRIAC


Et voici ma config jmqtt :

   

Equipement : Topic = f1atb/#

   

Commande : Topic = routeur/TRIAC
value = {"tOnOff":30}


Quand je teste, je vois vois bien le message passer sur MQTTX :
   

Mais rien ne se passe dans l'IHM du routeur, dans la page d'accueil au niveau de la zone de forçage....

Si vous pouvez m'aider et me dire ou j'ai bugé ?
J'ai des des 10aines de combinaisons différentes ....

Merci.

Imprimer cet élément

  Module JSY-MK-194G
Posté par : jeanmi58 - 23-01-2026, 01:06 PM - Forum : Routeur Photovoltaïque - Réponses (4)

Bonjour

Je ne sais pas si le sujet a déjà été évoquer mais voila ma constatation.
Sur ce type de module il faut croiser TX/RX : Le fil TX du module doit impérativement aller sur GPIO RX de l'ESP32, et le fil RX du module sur un GPIOl TX   de l'ESP32.
Exemple pour GPIO 16 et 17
TXGPIO 16 (RX2)Transmission vers Réception
RXGPIO 17 (TX2)Réception depuis Transmission

Sinon module parfait connectique sur bornier.

   

Imprimer cet élément

  Modification Graphe Puissances
Posté par : Lolo69 - 23-01-2026, 10:18 AM - Forum : Evolutions faites, à faire, dont vous rêvez... - Réponses (14)

Pour observer le comportement du régulateur de puissance sur le RMS il est utile de pouvoir superposer la courbe Sortie ( Triac ou SSR) sur la courbe de puissance, sur un periode de 10 min plutot que quelques secondes.
j'ai donc mis cette courbe de sortie à la place de la puissance VA ( qui ne sert pas à grand chose) sur le premier graphe de la page d'accueil.
La problematique etant la différence d'echelle entre la puissance qui s'auto ajuste et la sortie qui est limitée entre 0 et 100%
J'ai donc mis deux echelles différentes pour les deux courbes , la courbe Sortie regulateur entre 0 et 100 qui est aussi possible de rendre auto ajustable en cochant la case auto pour "zoomer" si besoin
Le resultat ici
https://f1atb.fr/forum_f1atb/attachment.php?aid=4934

Pour ceux qui le souhaite je decris ci dessous ce qu'il faut faire sur la base d'une version 16.09 , par contre je ne peux pas vous mettre vraiement les numeros de lignes car j'ai fait d'autres modifications mais il vous suffira de faire les recherches avec les mots clés que je donne.


1) rajouter la variable globale pidout quelques part dans le fichier Solar_Router_V16_09.ino

Code :
int pidout=0;


2) dans le fichier JS_Accueil.h remplacer entierement la function Plot(SVG, Tab, couleur1... par celle ci-dessous. ne vous inquietez pas elle reste compatible par les différents appels car tout ce que j'ai rajouté est en optionnel
Code PHP :
function Plot(SVGTabcouleur1titre1couleur2titre2echelleAutoY2memeEchelle) {
  var Vmax 0;
  var Vmin 0;
  var Vmax2 0// Max pour la deuxième courbe
  var Vmin2 0// Min pour la deuxième courbe
  var TabY0 = [];
  var TabY1 = [];
  couleur1 "#" couleur1;
  couleur2 "#" couleur2;
  var dX 900 Tab.length;
  const = new Date();
  var dI 1;
  var label 'heure';
  var pixelTic 72;
  var dTextTic 4;
  var moduloText 24;
  var H0 d.getHours() + d.getMinutes() / 60;
  var H00 Math.floor(H0 4);
  var X0 18 * (H00 H0);
  var Y0 250;
  var Yamp 230;
  var dy 2;
  var dispVA false;
  var echellePID 100// Échelle fixe pour le PID par défaut
  
  
// Si echelleAutoY2 n'est pas défini, on utilise false par défaut (échelle fixe 0-100)
  if (echelleAutoY2 === undefined) {
    echelleAutoY2 false;
  }
  
  
// Si memeEchelle n'est pas défini, on utilise false par défaut
  if (memeEchelle === undefined) {
    memeEchelle false;
  }
  
  
switch (SVG) {
    case 'SVG_PW48hM':
      break;
    case 'SVG_PW48hT':
      break;
    case 'SVG_Temp48h':
      Y0 450;
      Yamp 430;
      dy 1;
      break;
    case 'SVG_PW2sM':
      label 'mn';
      pixelTic 90;
      X0 0;
      dTextTic 1;
      moduloText = -100;
      H00 0;
      dI 2//2 courbes PW et PVA
      GID(SVG '_L').style 'color:' couleur2 ';display:block;';
      dispVA GID(SVG '_C').checked//Plot courbe VA
      localStorage.setItem(SVG '_LS'dispVA);
      break;
    case 'SVG_PW2sT':
      label 'mn';
      pixelTic 90;
      X0 0;
      dTextTic 1;
      moduloText = -100;
      H00 0;
      dI 2//2 courbes PW et PVA
      GID(SVG '_L').style 'color:' couleur2 ';display:block;';
      dispVA GID(SVG '_C').checked//Plot courbe VA
      localStorage.setItem(SVG '_LS'dispVA);
      break;
    case 'SVG_Wh1an':
      label 'Mois';
      pixelTic dX 30.4375;//Mois moyen
      var dTextTic 1;
      moduloText 12;
      H00 d.getMonth();
      X0 dX * (d.getDate());
      var Mois = ['Jan''Fev''Mars''Avril''Mai''Juin''Juil''Août''Sept''Oct''Nov''Dec'];
      break;
  }
  
  
// Calcul du max pour la courbe principale (indices pairs)
  for (var 0Tab.lengthi++) {
    if (== || dI == 1) {
      Tab[i] = Math.min(Tab[i], 10000000);
      Tab[i] = Math.max(Tab[i], -10000000);
      Vmax Math.max(Math.abs(Tab[i]), Vmax);
    }
  }
  
  
// Si même échelle, calculer le max des DEUX courbes ensemble
  if (dI == && memeEchelle && dispVA) {
    for (var 1Tab.length2) {
      Tab[i] = Math.min(Tab[i], 10000000);
      Tab[i] = Math.max(Tab[i], -10000000);
      Vmax Math.max(Math.abs(Tab[i]), Vmax); // Utilise Vmax pour les deux courbes
    }
  }
  
  
// Calcul du max pour la deuxième courbe (indices impairs) si échelle auto demandée et pas même échelle
  if (dI == && echelleAutoY2 && !memeEchelle && dispVA) {
    for (var 1Tab.length2) {
      Tab[i] = Math.min(Tab[i], 10000000);
      Tab[i] = Math.max(Tab[i], -10000000);
      Vmax2 Math.max(Math.abs(Tab[i]), Vmax2);
    }
  }
  
  
var cadrageMax 1;
  var cadrage1 1000000;
  var cadrage2 = [1085421];
  for (var 07m++) {
    for (var 0cadrage2.lengthi++) {
      var cadrage1 cadrage2[i];
      if ((Vmax) <= XcadrageMax X;
    }
    cadrage1 cadrage1 10;
  }
  
  
// Calcul du cadrage pour la deuxième courbe
  var cadrageMax2 100// Par défaut échelle fixe 0-100
  
  
if (memeEchelle) {
    // Si même échelle demandée, utiliser la même que la courbe 1
    cadrageMax2 cadrageMax;
    echellePID cadrageMax;
  } else if (echelleAutoY2) {
    // Si échelle auto demandée (et pas même échelle)
    cadrageMax2 1;
    cadrage1 1000000;
    for (var 07m++) {
      for (var 0cadrage2.lengthi++) {
        var cadrage1 cadrage2[i];
        if ((Vmax2) <= XcadrageMax2 X;
      }
      cadrage1 cadrage1 10;
    }
    echellePID cadrageMax2// Utilise l'échelle calculée
  }

  var c1 '"' couleur1 '"';
  var c2 '"' couleur2 '"';
  var cT "#" Koul[Coul_Graphe][1];
  var style 'background:linear-gradient( #' Koul[Coul_Graphe][5] + ',#' Koul[Coul_Graphe][3] + ',#' Koul[Coul_Graphe][5] + ');border-color:#' Koul[Coul_Tab][5] + ';';
  var "<svg viewbox='0 0 1030 500' style='" style "' height='500' width='100%' id='S_" SVG "' onmousemove ='DispVal(this,event);' >";
  
  
// Axe vertical gauche (Puissance Active)
  S += "<line x1='100' y1='20' x2='100' y2='480' style='stroke:" cT ";stroke-width:2' />";
  S += "<line x1='100' y1='" Y0 "' x2='1000' y2='" Y0 "' style='stroke:" cT ";stroke-width:2' />";

  // Graduations horizontales (temps)
  for (var 1000 X0100pixelTic) {
    var x;
    var Y2 Y0 6;
    S += "<line x1='" "' y1='" Y0 "' x2='" "' y2='" Y2 "' style='stroke:" cT ";stroke-width:2' />";
    X 8;
    Y2 Y0 22;
    if (SVG == 'SVG_Wh1an') {
      X 8;
      S += "<text x='" "' y='" Y2 "' style='font-size:16px;fill:" cT ";'>" Mois[H00] + "</text>";
    } else {
      S += "<text x='" "' y='" Y2 "' style='font-size:16px;fill:" cT ";'>" H00 "</text>";
    }
    H00 = (H00 dTextTic moduloText) % moduloText;
  }
  Y2 Y0 3;
  S += "<text x='980' y='" Y2 "' style='font-size:14px;fill:" cT ";'>" label "</text>";
  
  
// Graduations verticales gauche (Puissance Active)
  for (var = -10<= 10dy) {
    Y2 Y0 Yamp 10;
    if (Y2 <= 480) {
      S += "<line x1='100' y1='" Y2 "' x2='1000' y2='" Y2 "' style='stroke:" cT ";stroke-width:1;stroke-dasharray:2 10;' />";
      Y2 Y2 7;
      var cadrageMax 10T.toString();
      var 90 T.length;
      S += "<text x='" "' y='" Y2 "' style='font-size:16px;fill:" cT ";'>" "</text>";
    }
  }
  
  
// Axe vertical pour PID (à côté de l'axe principal) seulement si pas même échelle
  if (dI == && Pva_valide && dispVA && !memeEchelle) {
    S += "<line x1='150' y1='20' x2='150' y2='480' style='stroke:" couleur2 ";stroke-width:2;stroke-dasharray:5 5;' />";
    
    
// Graduations verticales pour le PID
    for (var 0<= 10dy) {
      Y2 Y0 Yamp 10;
      if (Y2 <= 480) {
        var echellePID 10;
        T T.toString();
        S += "<text x='155' y='" + (Y2 7) + "' style='font-size:14px;fill:" couleur2 ";'>" "</text>";
      }
    }
  }
  
  
// Courbe PID
  if (dI == && Pva_valide && dispVA) {
    S += "<text x='450' y='40' style='font-size:18px;fill:" couleur2 ";'>" titre2 "</text>";
    S += "<polyline points='";
    var 0;
    for (var 1Tab.lengthdI) {
      var valeurPID Tab[i];
      if (!echelleAutoY2 && !memeEchelle) {
        // Échelle fixe : limiter entre 0 et 100
        valeurPID Math.max(0Math.min(100valeurPID));
      }
      var Y0 Yamp valeurPID echellePID;
      var 100 dX i;
      S += "," " ";
      TabY1[j] = parseFloat(Tab[i]);
      j++;
    }
    S += "' style='fill:none;stroke:" couleur2 ";stroke-width:2' />";
  }
  
  
// Courbe Puissance Active (avec échelle automatique)
  S += "<text x='450' y='18' style='font-size:18px;fill:" couleur1 ";'>" titre1 "</text>";
  S += "<polyline points='";
  var 0;
  for (var 0Tab.lengthdI) {
    var Y0 Yamp Tab[i] / cadrageMax;
    var 100 dX i;
    S += "," " ";
    TabY0[j] = parseFloat(Tab[i]);
    j++;
  }
  S += "' style='fill:none;stroke:" couleur1 ";stroke-width:2' />";
  S += "</svg>";
  
  GID
(SVG).innerHTML S;
  TabVal["S_" SVG] = [TabY0TabY1];
  TabCoul["S_" SVG] = [couleur1couleur2];


3) dans le fichier Server.ino remplacer la VA par pidout , pour simplifier les explication remplacer la void handleAjaxData() par celle ci-dessous
Code :
{ // Données page d'accueil
    String DateLast = "Attente d'une mise à l'heure par internet";
    if (Horloge == 1)
      DateLast = "Attente d'une mise à l'heure par le Linky";
    if (ModeReseau == 0 && WiFi.getMode() != WIFI_STA)
      DateLast = "Sélectionnez un réseau <a href='/Wifi'>Wifi</a>";
    if (Horloge > 1 && Horloge < 5)
      DateLast = "Attente d'une mise à l'heure  <a href='/Heure' >manuellement</a> ";
    if (Horloge == 5)
      DateLast = "Attente d'une mise à l'heure un ESP externe (maître)";
    if (HeureValide)
    {
      DateLast = DATE;
    }
    int pva_temps_reel =  pidout;  // LBE
    String S = LesTemperatures();
    S = "Deb" + RS + DateLast + RS + Source_data + RS + LTARF + RS + STGEt + RS + S + RS + String(Pva_valide);
    // LBE remplacée par la ligne suivante S += GS + String(PuissanceS_M) + RS + String(PuissanceI_M) + RS + String(PVAS_M) + RS + String(PVAI_M);
    S += GS + String(PuissanceS_M) + RS + String(PuissanceI_M) + RS + String(pva_temps_reel) + RS + "0";
    S += RS + String(EnergieJour_M_Soutiree) + RS + String(EnergieJour_M_Injectee) + RS + String(Energie_M_Soutiree) + RS + String(Energie_M_Injectee);
    if (Source_data == "UxIx2" || ((Source_data == "ShellyEm" || Source_data == "ShellyPro") && EnphaseSerial.toInt() != 3))
    { // UxIx2 ou Shelly monophasé avec 2 sondes
      S += GS + String(PuissanceS_T) + RS + String(PuissanceI_T) + RS + String(PVAS_T) + RS + String(PVAI_T);
      S += RS + String(EnergieJour_T_Soutiree) + RS + String(EnergieJour_T_Injectee) + RS + String(Energie_T_Soutiree) + RS + String(Energie_T_Injectee);
    }
    S += GS + "Fin\r";
    server.sendHeader("Connection", "close");
    server.send(200, "text/html", S);
}

4) retour sur  dans le fichier Solar_Router_V16_09.ino pour préremplir les tableau avec pidout à la place de la VA
rechercher les lignes 
if (tps - previousTimer2sMillis > 2000) {
      unsigned long dt = tps - previousTimer2sMillis;
      previousTimer2sMillis += 2000;  //Pou caler exactement à 2s
      tabPw_Maison_2s[IdxStock2s] = PuissanceS_M - PuissanceI_M;
      tabPw_Triac_2s[IdxStock2s] = PuissanceS_T - PuissanceI_T;

et juste apres modifier la ligne
      tabPva_Maison_2s[IdxStock2s] = PVAS_M - PVAI_M;
par
      tabPva_Maison_2s[IdxStock2s] = pidout;//PVAS_M - PVAI_M; //LBE

5) et pour finir toujour dans le fichier  Solar_Router_V16_09
chercher la ligne 
  Retard[i] = round(RetardF[i]);           //Valeure entiere pour piloter le Triac et les relais

et juste apres rajouter
pidout=1*(100-Retard[i]);

Voilà ca fait pas mal de petits endroits à modifier mais qui ne sera pas un obstacle vule niveau de compétence croisé ici 

Je vous proposerai prochainement de modifier l'algorithme PID d 'André pour le rendre beaucop plus réactif lors des changements brusques sans le passer en autooscillation. Le probleme du PID d'André est que pour anticiper il faudrait mettre de l action Dérivée, mais pour éviter les sauts brusques de la Dérivée provoqués par l’échantillonnage, André a été obligé de mettre un filtrage "fort" de cette action ce qui introduit un retard, et donc anticiper avec du retard ca fonctionne pas top.
Sans dérivée le régulateur ne bouge pas sa sortie tant que l erreur ne change pas de signe ( intégrale et proportionnel) ce qui conduit à de forts dépassements lors des changement de production ( Nuages) ou de consommation ( arrêt marche d'un gros consommateur) , je vous expliquerai le moment venu le principe du nouvel algorithme mis en place par la technique de l anti-windup avec back-calculation , qui permet de desaturer l intégrale avant le changement de signe de l erreur

Imprimer cet élément

  Nouveauté
Posté par : tupolev89 - 22-01-2026, 04:01 PM - Forum : Routeur Photovoltaïque - Réponses (1)

Bonjour, pour les développeurs avez vous entendu parler de cette nouveauté?

https://www.igen.fr/domotique/2026/01/le...261-154409

Cordialement 
Tupolev

Imprimer cet élément


Utilisateurs en ligne
Il y a actuellement 428 utilisateurs connectés. » 8 Membre(s) | 418 Visiteur(s)
Bing, Google, alexandeur, Bercoul, Danieljarod, H3rv3, Jacques13, mickmari, microfarad

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