Un temoin sain, et l'historique de toute une chaine par un seul branchement
datalist reste local, mais data <adresse> history <n> est adressable et rend l'enregistrement complet, quinze cellules comprises. Les trois modules de la chaine ancienne sont donc extraits d'un seul branchement, tous corriges du meme decalage lu au chronometre : 369 minutes. Les jeux sont enfin comparables entre eux, ce que les decalages deduits - divergents de deux heures et demie - ne permettaient pas. Le module d'adresse 2 donne le temoin qui manquait : meme chaine, memes courants, memes journees, et ses quinze cellules tiennent dans onze millivolts d'amplitude les unes des autres, ecart median 6 mV. Ce qui a tue les autres ne vient donc ni du regime de charge, ni du pilotage, ni de l'installation. Sur cette base commune la cellule 14 du module ...0322 passe a 273 mV et rejoint les atteintes : dix cellules, pas neuf. L'horloge se propage bien du maitre a sa chaine - j'avais conclu l'inverse en verifiant une seconde apres l'ecriture, il en faut vingt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -123,6 +123,28 @@ function lireHistorique(f) {
|
||||
return { module: bc[1], decalageMin, origine, lignes, nb: rangs.length };
|
||||
}
|
||||
|
||||
// ------------------------------------------------- historique distant (CSV)
|
||||
// Produit par `--historique-distant <adresse>` : deja horodate a l'heure
|
||||
// REELLE (le decalage est lu et applique a l'ecriture) et deja nomme par
|
||||
// code-barres. Rien a corriger, rien a deviner.
|
||||
function lireHistoDistant(f) {
|
||||
const lignes = [];
|
||||
const l = lireTexte(f).trim().split('\n');
|
||||
const cols = l[0].split(',');
|
||||
const iC = cols.indexOf('c1_mV');
|
||||
for (const ligne of l.slice(1)) {
|
||||
const c = ligne.split(',');
|
||||
if (c.length < iC + 15) continue;
|
||||
for (let k = 0; k < 15; k++) {
|
||||
const mv = +c[iC + k];
|
||||
if (!(mv > 1000)) continue;
|
||||
lignes.push([c[0], c[1], k + 1, mv, c[4] === '' ? null : +c[4],
|
||||
c[3] === '' ? null : +c[3], c[2] || null, 'historique']);
|
||||
}
|
||||
}
|
||||
return lignes.length ? { module: l[1].split(',')[1], lignes } : null;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------- suivi
|
||||
function lireSuivi(f) {
|
||||
const lignes = [];
|
||||
@@ -157,7 +179,10 @@ const paquets = [];
|
||||
for (const f of fichiers.sort()) {
|
||||
const n = path.basename(f);
|
||||
try {
|
||||
if (n.endsWith('-suivi.csv')) {
|
||||
if (n.includes('-histo-distant-')) {
|
||||
const r = lireHistoDistant(f);
|
||||
if (r) { paquets.push(r.lignes); console.log(` ${n}\n ${r.module}, ${r.lignes.length / 15} enregistrements, horodates a l'export`); }
|
||||
} else if (n.endsWith('-suivi.csv')) {
|
||||
const r = lireSuivi(f);
|
||||
if (r) { paquets.push(r.lignes); console.log(` ${n} suivi, ${r.lignes.length / 15} releves, modules ${r.modules.join(' ')}`); }
|
||||
} else if (/histor/i.test(n) && n.endsWith('.txt')) {
|
||||
|
||||
Reference in New Issue
Block a user