Voiture a midi : la batterie au-dessus du plancher n'est plus comptee comme du solaire (seul le surplus net, plus l'assistance >= 90 %)
This commit is contained in:
@@ -483,10 +483,18 @@ if (nightHcActive && Number.isFinite(socPct)) {
|
||||
// meme tarif — fermer le contacteur a midi n'y gagnerait rien et etoufferait le
|
||||
// solaire (installation sans injection).
|
||||
//
|
||||
// Ce que le solaire peut donner a la voiture avant son depart SANS toucher a
|
||||
// la reserve de la nuit : l'energie de la batterie au-dessus du plancher
|
||||
// « tenir jusqu'a la prochaine HC » evalue AU DEPART, plus le bilan net prevu
|
||||
// (production - maison) d'ici le depart. Profil p50, comme required_soc.
|
||||
// Ce que le solaire peut donner a la voiture avant son depart : le bilan net
|
||||
// prevu (production - maison) d'ici le depart, profil p50 comme required_soc.
|
||||
// Une batterie SOUS son plancher « tenir jusqu'a la prochaine HC » (evalue AU
|
||||
// DEPART) est d'abord remontee par ce surplus.
|
||||
// ⚠️ 06/10/2026 (proprietaire : « bascule automatique sur force_grid_now sauf si
|
||||
// le solaire donne la charge ce midi ») : la batterie au-dessus de ce plancher
|
||||
// n'est PLUS comptee. Le controleur ne donne pas la batterie a la voiture en
|
||||
// journee (demarrage sur excedent, §36) sauf par l'assistance batterie, a partir
|
||||
// de VEHICLE_BATTERY_ASSIST_SOC_PCT : seule la part au-dessus est comptee. Le
|
||||
// 06/10 a 13:12, 4,08 kWh de batterie comptes donnaient « solaire suffisant »
|
||||
// (5,86 pour 4,4) alors que le controleur attendait un excedent qui n'est pas
|
||||
// venu : la JEEP serait partie a 15:30 sans charge.
|
||||
// Le reseau est justifie quand le besoin de la voiture, borne par ce que son
|
||||
// chargeur peut absorber avant le depart, depasse ce solaire.
|
||||
//
|
||||
@@ -504,6 +512,9 @@ if (nightHcActive && Number.isFinite(socPct)) {
|
||||
// du contacteur coute 50 a 150 Wh de transitoire (§57), on exige un gain d'au
|
||||
// moins trois fois ce cout.
|
||||
const VEHICLE_GRID_MIN_SHORTFALL_KWH = 0.5;
|
||||
// = batteryAssistSolarStartSocMin de BATTERY_CLOUD_LOCKS.js (verifie par un
|
||||
// test qui lit le controleur : les deux valeurs ne peuvent pas diverger).
|
||||
const VEHICLE_BATTERY_ASSIST_SOC_PCT = 90;
|
||||
const vehicleChargerKw = num(input.vehicle_charger_kw, NaN);
|
||||
const nowMsBalance = num(input.nowMs, Date.now());
|
||||
const vehicleConnected = input.vehicle_connected === true || input.vehicle_connected === 'true';
|
||||
@@ -538,10 +549,10 @@ if (vehicleRuleActive) {
|
||||
// Difference SIGNEE : une batterie SOUS son plancher doit d'abord etre
|
||||
// remontee par ce meme surplus avant que la voiture n'en voie un kWh.
|
||||
const plancherDepart = Math.max(socFloorPct, vehicleFloorAtDeparturePct);
|
||||
const batterieAuDessusKwh = socPct >= plancherDepart
|
||||
? energyBetweenSoc(plancherDepart, socPct)
|
||||
: -energyBetweenSoc(socPct, plancherDepart);
|
||||
vehicleSolarKwh = Math.max(0, batterieAuDessusKwh + netKwh);
|
||||
const manqueBatterieKwh = socPct >= plancherDepart ? 0 : energyBetweenSoc(socPct, plancherDepart);
|
||||
const seuilAssist = Math.max(plancherDepart, VEHICLE_BATTERY_ASSIST_SOC_PCT);
|
||||
const batterieAssistKwh = socPct > seuilAssist ? energyBetweenSoc(seuilAssist, socPct) : 0;
|
||||
vehicleSolarKwh = Math.max(0, netKwh - manqueBatterieKwh) + batterieAssistKwh;
|
||||
vehicleReachableKwh = Number.isFinite(vehicleChargerKw) && vehicleChargerKw > 0
|
||||
? Math.min(vehicleNeedKwh, vehicleChargerKw * (vehicleDepartureMs - nowMsBalance) / 3600000)
|
||||
: vehicleNeedKwh;
|
||||
|
||||
Reference in New Issue
Block a user