Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
stockage eeprom
#7
(06-09-2024, 11:26 AM)PhDV61 a écrit : Bonjour et merci du tuyau!.
Faut il faire un EEPRIOM.commit  pour stocker en dur dans l'EEPROM?
sinon les valeurs ne sont pas réellement stockées dans l'EEPROM, si on relit , les valeurs ne sont pas modifiées, on ne modifie que l'affichage!!
Bonne journée.



voilà ce que j'ai fait pour corriger les "valeurs erronées".

1/ instrumenter le code pour afficher dans la page web "données brutes" les données stockées qui posent problème.
2/ définir une logique de correction
3/ implémenter la correction des données en EEPROM, chez moi en stockant simplement la valeur de la veille + 15000W dans la valeur erronée.

la fonction a modifier dans stockage.ino pour faire apparaitre les données "erronées" ( chez moi > 50000 ou <-50000 ),
puis, une fois sûr de mon coup, en écrivant le correctif dans l'EEPROM.

String HistoriqueEnergie1An(void) {
  String S = "";
  int Adr_SoutInjec = 0;
  long EnergieJour = 0;
  long DeltaEnergieJour = 0;
  int iS = 0;
  long lastDay = 0;
  int index=0;

  for (int i = 0; i < NbJour; i++) {
    iS = (idxPromDuJour + i + 1) % NbJour;
    Adr_SoutInjec = adr_HistoAn + iS * 4;
    EnergieJour = EEPROM.readLong(Adr_SoutInjec);
    // if (EnergieJour<0) EnergieJour = 0;
    if (lastDay == 0) { lastDay = EnergieJour; }
    DeltaEnergieJour = EnergieJour - lastDay;


    // ici, on affiche les problèmes détectés dans la page "données brutes". Bien analyser et comprendre avant de définir la logique de correction
    if ( (DeltaEnergieJour<0) )
      {
        StockMessage(" erreur stockage  E_Jour, lastDay, Delta : " +  String(i) + "," + String(index++) + "," +
            String(EnergieJour) + "," + String(lastDay) );

      EnergieJour = lastDay + 15000;                // mise à jour du compteur stocké erroné. C'est chez moi "Energie jour" qui est "faussée".
      EEPROM.writeLong(Adr_SoutInjec, EnergieJour);  // et on remplace la valeur en EEPROM
      EnergieJour = EEPROM.readLong (Adr_SoutInjec); // puis on relit pour vérifier. On ne sait jamais. Mieux vaut être sûr.
      DeltaEnergieJour = EnergieJour - lastDay;      // on recalcule DeltaEnergieJour qui doit maintenant valoir 15000 (valeur moyenne chez moi)

      StockMessage(" Correction : E_Jour, lastDay, Delta : " +  String(i) + "," + String(index) + "," +
                String(EnergieJour) + "," + String(lastDay) );
    }

    lastDay = EnergieJour;
    S += String(DeltaEnergieJour) + ",";
  }
  return S;
}

et voilà , les erreurs détectées, l'affichage avant la correction, et après. Tout rentre dans l'ordre.
Répondre


Messages dans ce sujet
stockage eeprom - par dltrainou - 06-09-2024, 08:00 AM
RE: stockage eeprom - par PhDV61 - 06-09-2024, 09:57 AM
RE: stockage eeprom - par PhDV61 - 06-09-2024, 11:26 AM
RE: stockage eeprom - par dltrainou - 15-10-2024, 09:19 AM
RE: stockage eeprom - par F1ATB - 06-09-2024, 02:03 PM
RE: stockage eeprom - par PhDV61 - 06-09-2024, 02:22 PM
RE: stockage eeprom - par F1ATB - 06-09-2024, 06:22 PM
RE: stockage eeprom - par F1ATB - 15-10-2024, 09:46 AM
RE: stockage eeprom - par dltrainou - 16-10-2024, 09:57 AM
RE: stockage eeprom - par F1ATB - 16-10-2024, 10:09 AM
RE: stockage eeprom - par dltrainou - 19-10-2024, 08:48 AM
RE: stockage eeprom - par PhDV61 - 19-10-2024, 11:37 AM

Atteindre :


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