Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
stockage eeprom
#3
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.

   
   
   
V11.19+ et biblio carte 3.1.0-RC1, serveur RMS UxIx3, 1 client Triac CE + 1 client SSR CE + 1 client SSR sur CE tri. 1 serveur Linky réf. CACSI. Variateurs de fréquence sur Piscine et Spa.
6 panneaux (2 SO 2 S, 2 SE ) 425Wc produisent 13kWh de jour actuellement. 
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 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

Atteindre :


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