Jour faible : charge maximale en HC de midi (bilan vise 100 %, plafond ACM = abonnement - maison + solaire)
This commit is contained in:
@@ -105,6 +105,8 @@ const SUMMARIZE = {
|
||||
// Tenir jusqu'a la prochaine fenetre HC (28/09).
|
||||
hcReachActive: o.hcReach ? o.hcReach.active : false,
|
||||
hcFloorPct: o.hcReach ? o.hcReach.floorPct : null,
|
||||
hcFloorReachPct: o.hcReach ? o.hcReach.floorReachPct : null,
|
||||
hcMaxCharge: o.hcReach ? o.hcReach.maxCharge : null,
|
||||
hcNightFloorPrudentPct: o.hcReach ? o.hcReach.nightFloorPrudentPct : null,
|
||||
// Nuit prevue par la soiree (28/09).
|
||||
nightModelActive: o.nightModel ? o.nightModel.active : false,
|
||||
|
||||
@@ -570,7 +570,35 @@ export const balanceScenarios = [
|
||||
snapshot: Object.assign(snap2709('2026-09-27T12:30:00+02:00', 31, MIDI_2709, SOMBRE),
|
||||
{ ecs_nuit_jour: '2026-09-27|on|x', ecs_reprise_soir_kwh: '2.1' }),
|
||||
// Verifie a la main : 2,1 kWh / 0,30 kWh par point = +7,0 points (38,1 -> 45,1).
|
||||
expect: { usable: true, hcReachActive: true, ecsRepriseKwh: 2.1, hcFloorPct: 45.1 },
|
||||
// Depuis le 08/10, un jour faible a midi vise la charge maximale (100 %) ;
|
||||
// le plancher « tenir jusqu'a 01:24 » reste calcule et publie a cote.
|
||||
expect: { usable: true, hcReachActive: true, ecsRepriseKwh: 2.1, hcFloorReachPct: 45.1,
|
||||
hcMaxCharge: true, hcFloorPct: 100 },
|
||||
},
|
||||
{
|
||||
node: 'BALANCE',
|
||||
id: 'bilan-hc-midi-jour-normal-pas-de-charge-max',
|
||||
label: 'Meme midi, jour NON faible : la cible reste « tenir jusqu a 01:24 », pas de charge maximale',
|
||||
snapshot: Object.assign(snap2709('2026-09-27T12:30:00+02:00', 31, MIDI_2709, SOMBRE),
|
||||
{ ecs_nuit_jour: '2026-09-27|off|x' }),
|
||||
expect: { usable: true, hcReachActive: true, hcMaxCharge: false, hcFloorPct: 38.1 },
|
||||
},
|
||||
{
|
||||
node: 'BALANCE',
|
||||
id: 'bilan-hc-midi-jour-faible-charge-max-engage-et-finance',
|
||||
label: 'Jour faible a midi, SOC 31 : cible 100 % -> session engagee ET manque chiffre (69 points x 0,30)',
|
||||
snapshot: Object.assign(snap2709('2026-09-27T12:30:00+02:00', 31, MIDI_2709, SOMBRE),
|
||||
{ ecs_nuit_jour: '2026-09-27|on|x' }),
|
||||
// Verifie a la main : (100 - 31) x 0,30 = 20,7 kWh.
|
||||
expect: { usable: true, hcMaxCharge: true, requiredSocPct: 100, gridNeeded: true, gridEnergyNeededKwh: 20.7 },
|
||||
},
|
||||
{
|
||||
node: 'BALANCE',
|
||||
id: 'bilan-hc-nuit-jour-faible-pas-de-charge-max',
|
||||
label: 'Fenetre HC de NUIT, decision jour faible du jour : la nuit garde « tenir jusqu a midi »',
|
||||
snapshot: Object.assign(snap2709('2026-09-27T01:20:00+02:00', 72, NUIT_2709),
|
||||
{ ecs_nuit_jour: '2026-09-27|on|x' }),
|
||||
expect: { usable: true, hcReachActive: true, hcMaxCharge: false, hcFloorPct: 25.3 },
|
||||
},
|
||||
{
|
||||
node: 'BALANCE',
|
||||
|
||||
@@ -71,18 +71,38 @@ export const scenarios = [
|
||||
time: h(ETE, '12:30'),
|
||||
overrides: { ...parcNeuf, soc_percent: '31', night_takeover: 'on', edf_switch: 'on',
|
||||
night_target_soc: '44.1', grid_energy_needed_kwh: '3.91', house_ac_power_w: '5300',
|
||||
grid_subscription_va: '12000', battery_voltage_v: '51' },
|
||||
grid_subscription_va: '12000', battery_voltage_v: '51', pv_power_w: '1550' },
|
||||
expect: { mode: 'evcs_takeover_recover', courantA: 50 },
|
||||
},
|
||||
{
|
||||
id: 'acm-takeover-midi-borne-par-l-abonnement',
|
||||
label: 'Meme midi, maison a 9,5 kW : il ne reste que 1,3 kW sous les 90 % des 12 kVA -> 25,5 A',
|
||||
label: 'Meme midi, maison a 9,5 kW, pas de solaire : il ne reste que 1,3 kW sous les 90 % des 12 kVA -> 25,5 A',
|
||||
time: h(ETE, '12:30'),
|
||||
overrides: { ...parcNeuf, soc_percent: '31', night_takeover: 'on', edf_switch: 'on',
|
||||
night_target_soc: '44.1', grid_energy_needed_kwh: '3.91', house_ac_power_w: '9500',
|
||||
grid_subscription_va: '12000', battery_voltage_v: '51' },
|
||||
grid_subscription_va: '12000', battery_voltage_v: '51', pv_power_w: '0' },
|
||||
expect: { mode: 'evcs_takeover_recover', courantA: 25.5 },
|
||||
},
|
||||
// CHARGE MAXIMALE (08/10/2026) : jour faible, le bilan vise 100 % a midi ; le
|
||||
// courant n'est plus fixe par la cible mais par la physique.
|
||||
{
|
||||
id: 'acm-takeover-midi-jour-faible-charge-max-solaire-compte',
|
||||
label: 'Jour faible 12:30, SOC 31 -> 100 % (20,7 kWh), maison 5,8 kW, PV 1,55 kW : (10 800 - 5 800 + 1 550) / 51 = 128,4 A',
|
||||
time: h(ETE, '12:30'),
|
||||
overrides: { ...parcNeuf, soc_percent: '31', night_takeover: 'on', edf_switch: 'on',
|
||||
night_target_soc: '100', grid_energy_needed_kwh: '20.7', house_ac_power_w: '5800',
|
||||
grid_subscription_va: '12000', battery_voltage_v: '51', pv_power_w: '1550' },
|
||||
expect: { mode: 'evcs_takeover_recover', courantA: 128.4 },
|
||||
},
|
||||
{
|
||||
id: 'acm-takeover-midi-jour-faible-charge-max-chargeurs',
|
||||
label: 'Meme midi, maison 2 kW : 202 A possibles, borne aux 140 A des deux MultiPlus',
|
||||
time: h(ETE, '12:30'),
|
||||
overrides: { ...parcNeuf, soc_percent: '31', night_takeover: 'on', edf_switch: 'on',
|
||||
night_target_soc: '100', grid_energy_needed_kwh: '20.7', house_ac_power_w: '2000',
|
||||
grid_subscription_va: '12000', battery_voltage_v: '51', pv_power_w: '1500' },
|
||||
expect: { mode: 'evcs_takeover_recover', courantA: 140 },
|
||||
},
|
||||
{
|
||||
id: 'acm-takeover-nuit-petit-besoin-plancher-10a',
|
||||
label: 'Nuit 01:30, 1 kWh a reprendre en 5,9 h : 3,8 A calcules -> plancher 10 A (la batterie est menagee)',
|
||||
|
||||
Reference in New Issue
Block a user