Garde batterie en charge reseau : voiture bridee au courant mini au lieu d'un arret + 20 min de verrou

This commit is contained in:
Tallagrand Thierry
2026-10-07 01:18:13 +02:00
parent c07b885bc9
commit 0e0c0a558d
5 changed files with 97 additions and 6 deletions

View File

@@ -1041,11 +1041,26 @@ const mustStopHard =
derived.vebusAcOutHardReached ||
batteryCurrentHardExceeded;
const gridBatteryProtectionStop =
// 07/10/2026 (proprietaire : « brider a 6 A au lieu de couper »). Le 06/10
// sous force_grid_now, deux pointes de la maison (7,1 et 7,7 kW, voiture
// comprise) ont fait passer la batterie a -41,9 / -47,3 A : la garde coupait la
// voiture puis posait 20 min de verrou — 2,0 kWh donnes au lieu de ~4 en
// 66 min. La voiture est la charge compressible : au-dessus du courant mini, on
// la RAMENE au mini tout de suite (sans attendre le cooldown) ; l'arret et son
// verrou ne restent que si la batterie est encore trop sollicitee AU MINI.
const gridBatteryHardBreach =
sessionObservedActive &&
isGridSource &&
parsed.batteryCurrentA < gridBatteryHardDynamicA;
const gridBatteryCutToMin =
gridBatteryHardBreach &&
derived.currentReferenceA > params.currentMinA;
const gridBatteryProtectionStop =
gridBatteryHardBreach &&
!gridBatteryCutToMin;
// =====================================================
// OUTPUT
// =====================================================
@@ -1192,6 +1207,7 @@ return [{
batteryCurrentHardExceeded,
mustStopHard,
gridBatteryProtectionStop,
gridBatteryCutToMin,
},
conditions: {

View File

@@ -607,6 +607,19 @@ else if (cloud.sessionObservedActive) {
});
}
else if (safeguards.gridBatteryCutToMin) {
// 07/10 : pointe de la maison en charge reseau -> voiture ramenee au
// courant mini, sans arret ni verrou (la remontee reprend au pas normal).
setOn({
stateName: 'charging_cut_to_min_grid_guard',
decisionName: 'step_down',
currentA: params.currentMinA,
reasonText: `Réseau : pointe de la maison, voiture bridée à ${params.currentMinA} A (batterie ${round1(parsed.batteryCurrentA)}A)`,
dynamic: true,
mustStopFlag: false,
});
}
else if (safeguards.gridBatteryProtectionStop) {
setOff({
stateName: 'stop_grid_battery_guard',