Le plafond a 93 % n etait pas une protection : le BMS autorisait 53,2 V, nous imposions 51,3, et la cellule la plus haute du pack recent etait 57 mV sous la premiere alarme. Le garde-fou datait des cellules faibles du pack ancien, hors service depuis hier — il protegeait un parc qui n est plus la, au prix de 0,68 kWh, soit 12 % de la reserve utile. Le helper de tension et ses paliers ne sont lus par personne : les valeurs sont une table codee en dur dans l Auto Charge Manager, qui entre au passage dans le depot. Seul le profil de la tranche 90-95 % passe a 52,4 V, soit 3,493 V par cellule, sous la tension nominale que Pylontech annonce. Verifie dans la minute : parc de 51,12 a 52,33 V, courant de -5,3 a +16,1 A, aucune alarme. Et le rapport de nuit part par courriel a 6 h 47. Il ne vit pas dans une session Claude, qui s arrete avec l ecran, mais dans le service d historisation, seul composant allume en permanence — il n y avait rien a surveiller, tout est deja enregistre, il manquait une lecture. Le texte est ecrit pour etre entendu : pas de tableau, des phrases courtes, des virgules decimales. Canal : le webhook n8n qui existait deja, teste de bout en bout. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
61 lines
3.1 KiB
JavaScript
61 lines
3.1 KiB
JavaScript
#!/usr/bin/env node
|
|
// Le parc plafonnait a 93 % de SOC, et ce n'etait pas une protection.
|
|
//
|
|
// Mesure du 06/09 a 15:01, quatre modules du pack recent :
|
|
// ce que le BMS AUTORISE : 53,2 V (`maximum_allowed_charging_voltage`)
|
|
// ce que nous IMPOSIONS : 51,3 V, soit 3,42 V par cellule
|
|
// cellules : 3 386 a 3 423 mV, ecart 25-30 mV par module
|
|
// premiere alarme haute : 3 480 mV — la cellule la plus haute est 57 mV en dessous
|
|
// Aucune alarme, le BMS autorisait encore 40 A de charge : c'est la consigne de
|
|
// tension qui plafonnait le SOC, pas la batterie.
|
|
//
|
|
// Origine : la gestion « tension de cellule elevee » posee pour proteger les
|
|
// cellules faibles du pack ANCIEN (cellule 12 du module ...0322 a 3 649 mV,
|
|
// cellule 15 du ...0324). Ces modules sont hors service depuis le 05/09. Le
|
|
// garde-fou protegeait un parc qui n'est plus la, au prix du haut de la
|
|
// reserve : de 93 a ~100 % sur quatre modules, environ 0,68 kWh, soit 12 % de
|
|
// l'energie utile — precisement ce qui manque en fin de nuit.
|
|
//
|
|
// ⚠️ LE HELPER `input_number.victron_battery_charge_voltage_normal_v` (51,3) ET
|
|
// SES PALIERS hcv_step1/step2 NE SONT LUS PAR PERSONNE. Verifie : le nom
|
|
// n'apparait nulle part dans l'Auto Charge Manager. Les tensions sont une table
|
|
// codee en dur dans le node « Compute Charge Targets ». Meme famille que le
|
|
// toggle `allow_grid_hc_night`, parse mais cable nulle part jusqu'a P7.
|
|
// La VRAIE protection est le BMS lui-meme, qui a demontre le 05/09 une reaction
|
|
// en CINQ SECONDES : cellule au-dessus de 3 550 mV -> plafond de courant
|
|
// effondre. Elle reste entiere.
|
|
//
|
|
// 52,4 V = 3,493 V par cellule, SOUS la tension de charge nominale que
|
|
// Pylontech annonce pour l'US2000C (52,5 V) et bien sous les 53,2 V que ce BMS
|
|
// autorise. Avec 30 mV d'ecart entre cellules, la plus haute atteindra ~3,51 V,
|
|
// encore 40 mV sous le seuil qui declenche la reduction de courant.
|
|
//
|
|
// Seul `pv_topoff` est touche : c'est le profil de la tranche 90-95 % de SOC,
|
|
// exactement la ou ca plafonnait. `pv_boost` (SOC < 80) et `pv_mid` (80-90)
|
|
// sont limites par le courant, pas par la tension. `pv_hold` (SOC >= 95, 50,6 V)
|
|
// n'est PAS touche : redescendre une fois le haut atteint est le bon
|
|
// comportement pour du LiFePO4, on ne veut pas y sejourner.
|
|
//
|
|
// node tools/patch-20260906c-tension-de-charge-52v4.mjs
|
|
|
|
import fs from 'node:fs';
|
|
|
|
const F = 'workflows/victron-auto-charge-manager-v1.2.json';
|
|
const wf = JSON.parse(fs.readFileSync(F, 'utf8'));
|
|
const calc = wf.nodes.find((n) => n.name === 'Compute Charge Targets');
|
|
if (!calc) throw new Error('noeud "Compute Charge Targets" introuvable');
|
|
|
|
let c = calc.parameters.jsCode;
|
|
const avant = ' pv_topoff: { current_a: 80, voltage_v: 51.3 },';
|
|
const apres = ' pv_topoff: { current_a: 80, voltage_v: 52.4 },';
|
|
|
|
if (c.includes(apres)) {
|
|
console.log(' deja fait');
|
|
} else {
|
|
if (!c.includes(avant)) throw new Error('ancre pv_topoff introuvable');
|
|
c = c.replace(avant, apres);
|
|
calc.parameters.jsCode = c;
|
|
fs.writeFileSync(F, JSON.stringify(wf, null, 2) + '\n');
|
|
console.log(' pv_topoff : 51.3 -> 52.4 V (3,493 V/cellule)');
|
|
}
|