Vehicule branche a midi : JEEP, VW et moto ZERO (calendrier, capacite et puissance par vehicule)

ZERO ajoutee au selecteur avec son heure de depart (P9). Le bilan lit la
capacite et la puissance de charge mesurees du vehicule selectionne ; 0 =
inconnue (regle muette / pas de borne). Bilan 64/64, golden 123/123.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011uJ47NxgfpGnuuMr3f2n7Z
This commit is contained in:
Tallagrand Thierry
2026-09-28 14:05:04 +02:00
parent 3b9b67268c
commit be1b12969e
13 changed files with 207 additions and 32 deletions

View File

@@ -349,7 +349,7 @@ const typical = coverage(slotsP50, hcFloorTypicalPct);
const prudent = coverage(slotsP80, hcFloorPrudentPct);
// ---------------------------------------------------------------------
// VOITURE BRANCHEE EN HC AVEC UN DEPART AVANT LA PROCHAINE HC (28/09/2026)
// VEHICULE BRANCHE EN HC AVEC UN DEPART AVANT LA PROCHAINE HC (28/09/2026)
//
// Regle du proprietaire : « JEEP branchee engage le reseau en HC midi si
// l'analyse de production le justifie ». La JEEP repart a 15:30 certains jours
@@ -369,14 +369,17 @@ const prudent = coverage(slotsP80, hcFloorPrudentPct);
// moins ce que la borne a deja delivre depuis la saisie. Aucun capteur ne donne
// le niveau de la voiture : sans saisie valable, la regle se tait.
//
// Deux constantes, justifiees :
// - 3,7 kW : plateau MESURE des deux vehicules du foyer (3 655 et 3 680 W a
// consigne pleine, MANUEL §0) ; au-dela la voiture n'absorbe rien de plus.
// - 0,5 kWh : seuil de manque en dessous duquel une session ne se justifie
// pas — une fermeture du contacteur coute 50 a 150 Wh de transitoire (§57),
// on exige un gain d'au moins trois fois ce cout.
const VEHICLE_CHARGER_KW = 3.7;
// Vaut pour les TROIS vehicules (JEEP, VW, moto ZERO) : capacite, puissance de
// charge et calendrier viennent de HA pour le vehicule selectionne.
// La puissance du chargeur EMBARQUE (plateau mesure : JEEP 3,66 kW, VW
// 3,68 kW) borne ce que le vehicule peut prendre avant son depart ; inconnue
// (0), on ne borne pas — l'erreur va alors vers « reseau justifie », c'est-a-
// dire vers le vehicule charge, jamais vers la batterie videe.
// Seuil de 0,5 kWh : en dessous une session ne se justifie pas — une fermeture
// 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;
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';
const vehicleDepartureMs = num(input.vehicle_departure_ms, NaN);
@@ -414,7 +417,9 @@ if (vehicleRuleActive) {
? energyBetweenSoc(plancherDepart, socPct)
: -energyBetweenSoc(socPct, plancherDepart);
vehicleSolarKwh = Math.max(0, batterieAuDessusKwh + netKwh);
vehicleReachableKwh = Math.min(vehicleNeedKwh, VEHICLE_CHARGER_KW * (vehicleDepartureMs - nowMsBalance) / 3600000);
vehicleReachableKwh = Number.isFinite(vehicleChargerKw) && vehicleChargerKw > 0
? Math.min(vehicleNeedKwh, vehicleChargerKw * (vehicleDepartureMs - nowMsBalance) / 3600000)
: vehicleNeedKwh;
vehicleShortfallKwh = Math.max(0, vehicleReachableKwh - vehicleSolarKwh);
}
const vehicleGridNeeded = vehicleRuleActive && vehicleShortfallKwh > VEHICLE_GRID_MIN_SHORTFALL_KWH;