Note de ce sujet :
  • Moyenne : 4.5 (2 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Nouvelle version 11.17 compilée avec ESP32 en V3.03
#21
Bonsoir André,
Pour résoudre mon problème de plantage du serveur UxIx3, j'ai réalisé deux modifs :

1/ j'ai modifié le code UxIx3 à nouveau, car l'interrogation du module suivie immédiatement de la lecture de la réponse ne me paraissait pas "optimum".

Maintenant,après l'init module, je lance une demande de lecture.

Puis ensuite, une seconde plus tard, dans la boucle infinie, je viens lire les data et dans la foulée, je relance une demande de lecture, que je viendrai donc lire lors de la prochaine boucle. Avec cette méthode de dissociation de la requête, et de sa lecture, la réponse du module est toujours présente dans le buffer de réception lorsque je viens lire. Résultat : pas de plantage en 24h. Un hasard ? A suivre.

2/ j'ai depuis aussi connecté un de mes trois ESPs client à mon serveur Linky pour décharger le serveur UxIx3.

3/ et j'ai passé la récurrence de lecture de l'ESP "externe" à 1s, car ni le Linky ni le module UxIx3 ne font mieux.

Et maintenant, je vais laisser tourner et observer dans les jours qui viennent.
V12.03 modifiée. 1 serveur UxIx3, 1 Linky, 1 client Triac CE tampon + 1 client SSR CE tampon + 1 client SSR sur CE tri + 2 SSR sur radiateurs bain d'huile d'appoint. Variateurs de fréquence Piscine.
8 panneaux (4 SO 2 S, 2 SE ) 425Wc sur 4 HM800 produisent 13kWh par jour ensoleillé à fin Novembre.
Répondre
#22
40h sans plantage de mon serveur UxIx3. Pas non plus d'erreur de connexion des deux clients sur ce serveur UxIx3.

Par contre, je note quelques erreurs de connexion de l'unique ESP client Linky sur le serveur Linky.

La bonne nouvelle pour moi, c'est que je n'ai pas eu de reboot de mon serveur UxIx3 depuis 40h (en V11.17/ V3.03), mais je me suis un petit peu éloigné de la baseline d'André pour y arriver.
V12.03 modifiée. 1 serveur UxIx3, 1 Linky, 1 client Triac CE tampon + 1 client SSR CE tampon + 1 client SSR sur CE tri + 2 SSR sur radiateurs bain d'huile d'appoint. Variateurs de fréquence Piscine.
8 panneaux (4 SO 2 S, 2 SE ) 425Wc sur 4 HM800 produisent 13kWh par jour ensoleillé à fin Novembre.
Répondre
#23
Comment pourrait on avoir ces améliorations intégrées pour nous tous? peut etre dans une 11.18 Smile

Merci
ESP32 (v12.05): 1 Source UxIx3, 3 routeurs avec 1 SSR sur le CE (ESP Externe) dont 2 avec Sonde température, 1 routeur avec 2 SSRs: Pompe Piscine et PAC
16 panneaux 445WC avec Enphase 7 tri-phasé avec une idée d'extension de qqs PVs plug&play sur le pool house sous HomeAssistant 
Répondre
#24
Pour l'instant, ce n'est pas encore parfait. donc prématuré je pense.
En revanche, ce que vous pouvez faire pour améliorer la stabilité et éviter les reboot, puisque vous êtes comme moi en tri-phasé avec un JSY-MK-333, c'est simplement modifier ces lignes dans le code principal :

lignes 797 à 800 :
if (Source == "UxIx3") {
Lecture_JSY333();
PeriodeProgMillis = 800;
}

lignes 827 - 831
if (Source == "Ext") {
CallESP32_Externe();
LastRMS_Millis = millis();
PeriodeProgMillis = 800;// + ralenti; //Après pour ne pas surchargé Wifi
}

Cela décharge un peu l'ESP serveur, et même s'il y a quelques erreurs de connexion des clients lorsqu'on affiche la page données brutes du serveur UxIx3, rien ne plante. C'est déjà un progrès, et cela permet de garder le reste du code "intouché", en espérant qu'une prochaine version de bibliothèque résoudra le problème.
V12.03 modifiée. 1 serveur UxIx3, 1 Linky, 1 client Triac CE tampon + 1 client SSR CE tampon + 1 client SSR sur CE tri + 2 SSR sur radiateurs bain d'huile d'appoint. Variateurs de fréquence Piscine.
8 panneaux (4 SO 2 S, 2 SE ) 425Wc sur 4 HM800 produisent 13kWh par jour ensoleillé à fin Novembre.
Répondre
#25
Je suis en tri avec un uxix3 et je n'ai aucun reboot Smile
Avec une lecture toutes les 400ms Smile

J'ai modifié le code pour simplifier les calculs (operations de bits plutot que multiplications, en entier et non en float) et j'en ai profité pour remonter en mqtt les vraies valeurs de conso / injection

Code :
// *************************************************
// * Client lecture JSY-MK-333 * Triphasé *
// * Développement initial de Pierre F (Mars 2024) *
// * update PhDV61 Juin 2024 *
// *************************************************


void Setup_JSY333() {
  MySerial.setRxBufferSize(SER_BUF_SIZE);
  MySerial.begin(19200, SERIAL_8N1, RXD2, TXD2);  //PORT DE CONNEXION AVEC LE CAPTEUR JSY-MK-333
}

void Lecture_JSY333() {
  float Tension_M1, Tension_M2, Tension_M3;
  float Intensite_M1, Intensite_M2, Intensite_M3;
  float PVA_M_inst1, PVA_M_inst2, PVA_M_inst3;
  float PW_inst1, PW_inst2, PW_inst3;

  byte Lecture333[200];
  bool injection;
  bool sens1, sens2, sens3;
  long delta_temps = 0;

  int i;
  byte msg_send[] = { 0x01, 0x03, 0x01, 0x09, 0x00, 0x30, 0x94, 0x20 };
  for (i = 0; i < 8; i++) {
    MySerial.write(msg_send[i]);
  }

  int a = 0;
  while (MySerial.available()) {
    Lecture333[a] = MySerial.read();
    a++;
  }

  if (a == 101) {                                               //message complet reçu
    delta_temps = (unsigned long)(millis() - Temps_precedent);  // temps écoulé depuis le dernier appel
    Temps_precedent = millis();                                 // on conserve la valeur du temps actuel pour le calcul précédent

    injection = (Lecture333[86] >> 3) & 0x01;  //si sens est true, injection

    if (injection) {
      PuissanceS_M_inst = 0;
      PuissanceI_M_inst = float((Lecture333[3] << 24) + (Lecture333[4] << 16) + (Lecture333[5] << 8) + Lecture333[6]);
      // PhDV61 : on considère que cette puissance active "globale" a duré "delta_temps", et on l'intègre donc pour obtenir une énergie en Wh
      Energie_jour_Injectee += ((float)delta_temps / 1000) * (PuissanceI_M_inst / 3600.0);
      Energie_M_Injectee = Energie_jour_Injectee;

    } else {  // soutirage
      PuissanceI_M_inst = 0;
      PuissanceS_M_inst = float((Lecture333[3] << 24) + (Lecture333[4] << 16) + (Lecture333[5] << 8) + Lecture333[6]);
      // PhDV61 : on considère que cette puissance active "globale" a duré "delta_temps", et on l'intègre donc pour obtenir pour obtenir une énergie en Wh
      Energie_jour_Soutiree += ((float)delta_temps / 1000) * (PuissanceS_M_inst / 3600.0);
      Energie_M_Soutiree = Energie_jour_Soutiree;
    }


    MK333_dataBrute = "<br>Puissance active soutirée : " + String(PuissanceS_M_inst) + "W</br>";
    MK333_dataBrute += "<br>Puissance active injectée : " + String(PuissanceI_M_inst) + "W</br>";
    MK333_dataBrute += "<br>Energie jour nette soutirée (Linky): " + String(Energie_jour_Soutiree) + "Wh</br>";
    MK333_dataBrute += "<br>Energie jour nette injectée (Linky): " + String(Energie_jour_Injectee) + "Wh</br>";
    MK333_dataBrute += "<br>Données reçues : " + String(a) + "</br>";
    MK333_dataBrute += "<br>Number of bytes : " + String(Lecture333[2]) + "</br>";

    Pva_valide = true;
    filtre_puissance();
    PuissanceRecue = true;  //Reset du Watchdog à chaque trame du JSY reçue
    esp_task_wdt_reset();   //Reset du Watchdog à chaque trame du JSY reçue
    EnergieActiveValide = true;
    if (cptLEDyellow > 30) {
      cptLEDyellow = 4;
      //StockMessage(" heure d'arrivée message complet "+String( millis()/1000) );
    }
  } else {
    StockMessage("Pas tout reçu, pas traité... nombre de données : " + String(a));
  }
}
Répondre
#26
Tu as modifié la vitesse de transmission à 19200, et tu lis un peu moins de data (101 contre 141).
d'où le facteur 2 x 1.4 gagné je suppose sur le temps de réception des data du module.

Je ne pense pas que ce soit la petite charge de calcul qui soit pénalisante, mais toujours et encore les pages web et diverses connexions wifi.

Combien as-tu de clients différents (tous en V11.17 ? , et que se passe t'il sur ces clients lorsque tu ouvres une page web en mode "données brutes" sur ton EPS32 "maitre" relié au module JSY-MK-333 ?
V12.03 modifiée. 1 serveur UxIx3, 1 Linky, 1 client Triac CE tampon + 1 client SSR CE tampon + 1 client SSR sur CE tri + 2 SSR sur radiateurs bain d'huile d'appoint. Variateurs de fréquence Piscine.
8 panneaux (4 SO 2 S, 2 SE ) 425Wc sur 4 HM800 produisent 13kWh par jour ensoleillé à fin Novembre.
Répondre
#27
(16-08-2024, 02:18 PM)PhDV61 a écrit : Tu as modifié la vitesse de transmission à 19200, et tu lis un peu moins de data (101 contre 141).
d'où le facteur 2 x 1.4  gagné je suppose sur le temps de réception des data du module.

Je ne pense pas que ce soit la petite charge de calcul qui soit pénalisante, mais toujours et encore les pages web et diverses connexions wifi.

Combien as-tu de clients différents (tous en V11.17 ? , et que se passe t'il sur ces clients lorsque tu ouvres une page web en mode "données brutes" sur ton EPS32 "maitre" relié au module JSY-MK-333 ?

dans tous les cas c'est plus satisfaisant de faire les calculs comme ça plutôt que des calculs gourmands en float Wink

1 client aussi en 11.17, pas de problèmes. sur l'esp maitre:
Charge coeur 0 (Lecture Puissance) Min, Moy, Max :
1, 2, 4 ms
Charge coeur 1 (Calcul + Wifi) Min, Moy, Max :
1, 1, 2 ms
Répondre
#28
Oui, c'est sûr. Je viens d'ouvrir un nouveau sujet à l'instant.
Je viens de faire un grand pas sur ma compréhension du problème, et de sa solution !
V12.03 modifiée. 1 serveur UxIx3, 1 Linky, 1 client Triac CE tampon + 1 client SSR CE tampon + 1 client SSR sur CE tri + 2 SSR sur radiateurs bain d'huile d'appoint. Variateurs de fréquence Piscine.
8 panneaux (4 SO 2 S, 2 SE ) 425Wc sur 4 HM800 produisent 13kWh par jour ensoleillé à fin Novembre.
Répondre
#29
J'ai fait joujou avec la nouvelle donnée d'ouverture du triac en minutes: en multipliant par la puissance du chauffe eau dans HA, on obtient la puissance routee au chauffe eau avec une belle précision, j'ai des valeurs identiques à ma pince de mesure dédiée !
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 7 visiteur(s)