Le pack recent est parfait sur ses soixante cellules : l'inventaire est clos
Quatre modules, ecart median de 2 mV chacun, et soixante cellules dont les amplitudes tiennent toutes entre 168 et 191 mV. Il n'y a rien a chercher ailleurs que dans les trois modules deja nommes. Trois des quatre extractions sont sorties sans horloge ni code-barres : une extraction precedente se deversait encore sur la ligne, et la premiere commande lisait ces restes - qui contiennent un 168143 - en croyant avoir sa reponse. La ligne est desormais purgee avant le reveil, et l'outil refuse de partir sans savoir de qui ni de quand il parle plutot que de rendre douze minutes inexploitables. Les trois fichiers ont ete repares : meme chaine, donc meme decalage de 373 minutes, verifie sur le module dont le dernier enregistrement tombe a la fin de son extraction. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -6,7 +6,7 @@ en dessous. Mettre a jour une mesure, relancer, republier.
|
||||
"""
|
||||
import pathlib, datetime
|
||||
|
||||
MAJ = "5 septembre 2026, 16 h 30"
|
||||
MAJ = "5 septembre 2026, 17 h"
|
||||
|
||||
# Amplitude min->max de chaque cellule, relevee sur l'historique du BMS.
|
||||
# C'est LA grandeur qui separe une cellule saine d'une cellule morte : une
|
||||
@@ -24,14 +24,14 @@ MODULES = [
|
||||
]
|
||||
|
||||
PARC = [
|
||||
("K220803C30160322", "ancien", "1", "4", "6 · 7 · 12 · 14", 498, 86, "en service"),
|
||||
("K220803C30160323", "ancien", "2", "0", "—", 0, 0, "en service"),
|
||||
("K220803C30160319", "ancien", "3", "5", "2 · 6 · 10 · 12 · 15", 416, 179, "en service"),
|
||||
("K220803C30160324", "ancien", "4", "1", "15", 29, 59, "isolée"),
|
||||
("Y230202C30371426", "récent", "1", "0", "—", 1, 1, "en service"),
|
||||
("Y230202C30371425", "récent", "2", "0", "—", 1, 1, "en service"),
|
||||
("Y230202C30371431", "récent", "3", "0", "—", 1, 1, "en service"),
|
||||
("Y230202C30371427", "récent", "4", "0", "—", 1, 0, "en service"),
|
||||
("K220803C30160322", "ancien", "1", "4", "6 · 7 · 12 · 14", 498, 86, 108, "en service"),
|
||||
("K220803C30160323", "ancien", "2", "0", "—", 0, 0, 6, "en service"),
|
||||
("K220803C30160319", "ancien", "3", "5", "2 · 6 · 10 · 12 · 15", 416, 179, 45, "en service"),
|
||||
("K220803C30160324", "ancien", "4", "1", "15", 29, 59, 57, "isolée"),
|
||||
("Y230202C30371426", "récent", "1", "0", "—", 1, 1, 2, "en service"),
|
||||
("Y230202C30371425", "récent", "2", "0", "—", 1, 1, 2, "en service"),
|
||||
("Y230202C30371431", "récent", "3", "0", "—", 1, 1, 2, "en service"),
|
||||
("Y230202C30371427", "récent", "4", "0", "—", 1, 0, 2, "en service"),
|
||||
]
|
||||
|
||||
CHRONO = [
|
||||
@@ -81,8 +81,9 @@ def figure():
|
||||
lignes_parc = "".join(
|
||||
f'<tr class="{"mal" if int(n) else ""}"><td class="mono">{c}</td><td>{p}</td>'
|
||||
f'<td class="num">{a}</td><td class="num gros">{n}</td><td class="cel">{d}</td>'
|
||||
f'<td class="num">{hv}</td><td class="num">{ov}</td><td class="etat">{e}</td></tr>'
|
||||
for c, p, a, n, d, hv, ov, e in PARC)
|
||||
f'<td class="num">{med}</td><td class="num">{hv}</td><td class="num">{ov}</td>'
|
||||
f'<td class="etat">{e}</td></tr>'
|
||||
for c, p, a, n, d, hv, ov, med, e in PARC)
|
||||
|
||||
lignes_chrono = "".join(
|
||||
f'<tr><td class="mono h">{h}</td><td>{q}</td><td class="note">{n}</td></tr>'
|
||||
@@ -249,14 +250,19 @@ chaîne renumérote ses modules à partir de 1, il existe donc deux « modu
|
||||
|
||||
<div class="tabl"><table>
|
||||
<thead><tr><th>Code-barres</th><th>Pack</th><th>Adr.</th><th>Cellules atteintes</th>
|
||||
<th>Lesquelles</th><th>Surtensions</th><th>Sous-tensions</th><th></th></tr></thead>
|
||||
<th>Lesquelles</th><th>Écart médian</th><th>Surtensions</th><th>Sous-tensions</th><th></th></tr></thead>
|
||||
<tbody>{lignes_parc}</tbody>
|
||||
</table></div>
|
||||
|
||||
<div class="mesure">
|
||||
<p>Le contraste est net : <strong>498 surtensions</strong> pour le premier
|
||||
module contre <strong>1</strong> pour chacun des quatre modules du pack récent,
|
||||
qui ont pourtant encaissé dix fois plus de cycles.</p>
|
||||
<p>Lisez la colonne des écarts médians. Les cinq modules sains tiennent entre
|
||||
<strong>2 et 6 millivolts</strong> ; les trois autres sont à 45, 57 et 108.
|
||||
Le même contraste apparaît sur les surtensions : <strong>498</strong> pour
|
||||
le premier module contre <strong>une seule</strong> pour chacun des quatre du
|
||||
pack récent, qui ont pourtant encaissé dix fois plus de cycles.</p>
|
||||
<p>Les soixante cellules du pack récent balayent toutes entre 168 et 191 mV
|
||||
d’amplitude, sans exception. L’inventaire est clos : il n’y a rien à
|
||||
chercher ailleurs que dans les trois modules déjà nommés.</p>
|
||||
|
||||
<h2><span class="num">3</span>Le déclenchement, chronométré</h2>
|
||||
<p>Le 5 septembre, la console a été branchée sur les trois modules du pack ancien
|
||||
|
||||
@@ -178,6 +178,14 @@ async function main() {
|
||||
const l = new Ligne(dev, VITESSE);
|
||||
process.on('exit', () => l.fermer());
|
||||
|
||||
// Purge : une extraction precedente peut encore etre en train de se deverser
|
||||
// sur la ligne. Sans cela, la premiere commande lit ces restes — qui
|
||||
// contiennent un `$$` — croit avoir sa reponse, et rend n'importe quoi. C'est
|
||||
// ce qui a fait perdre l'horloge ET le code-barres de trois modules sur
|
||||
// quatre le 05/09 : seul le premier appel de la serie etait propre.
|
||||
await l.lireJusqua([], 1200, 400);
|
||||
l.vider();
|
||||
|
||||
// Reveil : on envoie une entree et on regarde ce qui revient.
|
||||
// On ne suppose rien - si l'invite n'apparait pas, on montre l'octet brut.
|
||||
l.ecrire('\r');
|
||||
@@ -261,7 +269,15 @@ async function main() {
|
||||
}
|
||||
|
||||
const info = await commande(l, `info ${ad}`, 8000);
|
||||
const bc = (info.match(/Barcode\s*:\s*(\S+)/) || [])[1] || `adresse${ad}`;
|
||||
const bc = (info.match(/Barcode\s*:\s*(\S+)/) || [])[1];
|
||||
// Sans code-barres on ne sait pas de QUI on parle, et sans horloge on ne
|
||||
// sait pas QUAND. Douze minutes d'extraction inexploitable valent moins
|
||||
// qu'un arret immediat.
|
||||
if (!bc || !mr) {
|
||||
console.log('Code-barres ou horloge illisible : on n\'extrait pas a l\'aveugle.');
|
||||
console.log('Relancer la commande — la ligne aura eu le temps de se vider.');
|
||||
process.exit(1);
|
||||
}
|
||||
const f = path.join(DOSSIER, `${tampon()}-histo-distant-${bc}.csv`);
|
||||
fs.mkdirSync(DOSSIER, { recursive: true });
|
||||
fs.writeFileSync(f, 'heure_reelle,module,etat,courant_mA,soc,' +
|
||||
|
||||
Reference in New Issue
Block a user