Les tensions de cellule entrent dans la base, avec leur decalage d'horloge
Nouvelle table cellule, indexee par CODE-BARRES et non par adresse : chaque chaine renumerote ses modules a partir de 1, il existe donc deux « module 1 » dans ce parc. L'importeur lit les exports d'historique et les CSV de suivi. Deux pieges corriges en le construisant : le tampon du BMS est circulaire, donc le plus grand index n'est pas le plus recent - trier par index donnait un decalage deduit de -865 h ; et les fichiers d'evenements portent les memes colonnes sans decrire un echantillonnage regulier, ils sont ecartes. La deduction du decalage d'horloge reste approximative : sur BAT3 elle donne huit heures la ou le chronometre en donne six. La console inscrit desormais le decalage en tete de chaque export, mesure a la seconde ou il commence ; l'importeur le prefere toujours a sa propre deduction. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -208,6 +208,25 @@ async function main() {
|
||||
console.log(`Extraction de l'historique a partir de l'enregistrement ${depuis}.`);
|
||||
console.log('Le module en garde 1798, un toutes les 30 minutes : comptez plusieurs minutes.');
|
||||
const f = journal(nom, `# releve du ${horodate()} sur ${dev}\n`);
|
||||
// L'horloge du module derive de plusieurs heures et chaque module a la
|
||||
// sienne. On la CAPTURE ici, a la seconde ou l'export commence, plutot que
|
||||
// de la deduire ensuite : le tampon d'historique est circulaire et contient
|
||||
// des enregistrements anterieurs a des remises a l'heure, ce qui rend toute
|
||||
// deduction a posteriori fausse de plusieurs heures.
|
||||
const rtc = await commande(l, 'time', 8000);
|
||||
const m = rtc.match(/RTC\s+(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/);
|
||||
if (m) {
|
||||
const reel = new Date();
|
||||
const mod = new Date(m[1].replace(' ', 'T') + 'Z');
|
||||
const decMin = Math.round((mod.getTime() -
|
||||
(reel.getTime() - reel.getTimezoneOffset() * 60000)) / 60000);
|
||||
journal(nom, `# RTC module : ${m[1]}\n# heure reelle : ${reel.toISOString()}\n`
|
||||
+ `# decalage_minutes : ${decMin}\n`);
|
||||
console.log(`Horloge du module : ${m[1]} — decalage ${decMin} min sur l'heure reelle.`);
|
||||
} else {
|
||||
journal(nom, '# RTC module : non lu\n');
|
||||
console.log('Horloge du module non lue : le decalage devra etre donne a l\'import.');
|
||||
}
|
||||
journal(nom, await commande(l, 'info', 8000));
|
||||
// UNE seule commande suffit : le module pagine lui-meme jusqu'au dernier
|
||||
// enregistrement, `commande` tourne les pages. Boucler sur des index
|
||||
|
||||
Reference in New Issue
Block a user