Sequence d ouverture : baisser le courant avant que le reseau parte
Le plafond majore (28 A en BOOST) n est legitime que tant que le reseau alimente AC-IN : sinon les deux MultiPlus portent seuls la voiture plus la maison, le mecanisme du W-105. Personne ne baissait avant l ouverture -- c est l hysteresis qui ouvre, l EVCS l apprenait apres coup -- et quand il l apprenait, la reduction attendait le cooldown de courant et descendait d un pas a la fois. Correctif sans poignee de main ni helper nouveau : le plafond majore exige que l EVCS DEMANDE lui-meme le reseau. Sa demande tombe au cycle ou la fenetre se ferme (30 s), l hysteresis ne peut ouvrir qu ensuite (override disparu PUIS min_on, cycle 1 min) : l EVCS baisse toujours avant, mecaniquement. Second volet : un plafond n est pas une cible qu on approche. Reduction immediate et directe au plafond, sans cooldown. Le calcul du plafond a ete deplace apres sourceMode dans WINDOWS_SOURCEV2 ; rien entre les deux ne le lisait, verifie avant de bouger. Helper a 20 A par defaut : comportement inchange. Le correctif ne mord que sur le BOOST 28 A, le cas dangereux. Golden 48 -> 51, chaque cas apparie a son contrefactuel. Mutations des deux volets separement : 1 puis 2 echecs cibles, restauration 51/51. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -1203,4 +1203,107 @@ export const scenarios = [
|
||||
takeoverHelperService: "turn_off",
|
||||
},
|
||||
},
|
||||
// ======= SÉQUENCE D'OUVERTURE DU CONTACTEUR (31/08/2026) =======
|
||||
// Le plafond majoré (28 A en BOOST) n'est légitime que tant que le réseau est
|
||||
// là. C'est l'hystérésis qui ouvre, une minute après que la demande réseau de
|
||||
// l'EVCS a disparu : l'EVCS doit donc baisser AVANT, de lui-même.
|
||||
{
|
||||
id: 'ouverture-plafond-tombe-hors-demande-reseau',
|
||||
label: "Matin solaire, AC-IN encore présent mais l'EVCS ne demande plus le réseau : le plafond retombe à 20 A et la voiture est réduite IMMÉDIATEMENT",
|
||||
time: MORNING,
|
||||
overrides: {
|
||||
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
|
||||
evcs_charging_switch: 'on', control_latch: 'on', charge_permission_now: 'on',
|
||||
last_start_at: '2026-08-08 08:00:00',
|
||||
// BOOST EDF : plafond réseau 28 A, voiture effectivement à 28 A.
|
||||
grid_current_max_a: '28', current_max_auto_a: '22',
|
||||
evcs_current_a: '28', evcs_set_current_a: '28', evcs_command_current_a: '28',
|
||||
evcs_ac_power_w: '6440',
|
||||
house_ac_power_w: '8440', vebus_ac_out_l1_power_w: '8440',
|
||||
grid_state: 'on', victron_acin1_available: '1', grid_power_w: '2000',
|
||||
soc_percent: '60', pv_power_w: '4500', pv_power_10m_avg_w: '4200',
|
||||
battery_current_a: '10',
|
||||
// Cooldown de courant NON écoulé : la réduction ne doit pas l'attendre.
|
||||
last_current_change_at: '2026-08-08 08:59:50',
|
||||
acin1_last_changed_ts: String(MORNING_TS - 4000),
|
||||
grid_switch_last_changed_ts: String(MORNING_TS - 4000),
|
||||
},
|
||||
expect: {
|
||||
profile: "morning_solar",
|
||||
sourceMode: "solar_only",
|
||||
state: "charging_step_down_system_cap",
|
||||
decision: "step_down_fast",
|
||||
desiredCharging: true,
|
||||
currentA: 20,
|
||||
takeoverNeeded: false,
|
||||
edfOnAction: false,
|
||||
takeoverHelperService: "turn_off",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'ouverture-plafond-maintenu-en-demande-reseau',
|
||||
label: "CONTREFACTUEL : force_grid_now, l'EVCS demande le réseau → le plafond BOOST 28 A est conservé, aucune réduction",
|
||||
time: MORNING,
|
||||
overrides: {
|
||||
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
|
||||
evcs_charging_switch: 'on', control_latch: 'on', charge_permission_now: 'on',
|
||||
last_start_at: '2026-08-08 08:00:00',
|
||||
// BOOST EDF : plafond réseau 28 A, voiture effectivement à 28 A.
|
||||
grid_current_max_a: '28', current_max_auto_a: '22',
|
||||
evcs_current_a: '28', evcs_set_current_a: '28', evcs_command_current_a: '28',
|
||||
evcs_ac_power_w: '6440',
|
||||
house_ac_power_w: '8440', vebus_ac_out_l1_power_w: '8440',
|
||||
grid_state: 'on', victron_acin1_available: '1', grid_power_w: '2000',
|
||||
victron_evcs_strategy: 'force_grid_now',
|
||||
soc_percent: '60', pv_power_w: '4500', pv_power_10m_avg_w: '4200',
|
||||
battery_current_a: '10',
|
||||
last_current_change_at: '2026-08-08 08:59:50',
|
||||
acin1_last_changed_ts: String(MORNING_TS - 4000),
|
||||
grid_switch_last_changed_ts: String(MORNING_TS - 4000),
|
||||
},
|
||||
expect: {
|
||||
profile: "morning_solar",
|
||||
sourceMode: "grid_forced",
|
||||
state: "charging_hold_grid",
|
||||
decision: "hold",
|
||||
desiredCharging: true,
|
||||
currentA: 28,
|
||||
takeoverNeeded: false,
|
||||
edfOnAction: false,
|
||||
takeoverHelperService: "turn_off",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'ouverture-reseau-disparu-reduction-immediate',
|
||||
label: 'Réseau DISPARU : plafond câblé 20 A, voiture encore à 28 A, cooldown non écoulé → réduction immédiate, sans attendre le compteur de confort',
|
||||
time: MORNING,
|
||||
overrides: {
|
||||
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
|
||||
evcs_charging_switch: 'on', control_latch: 'on', charge_permission_now: 'on',
|
||||
last_start_at: '2026-08-08 08:00:00',
|
||||
// BOOST EDF : plafond réseau 28 A, voiture effectivement à 28 A.
|
||||
grid_current_max_a: '28', current_max_auto_a: '22',
|
||||
evcs_current_a: '28', evcs_set_current_a: '28', evcs_command_current_a: '28',
|
||||
evcs_ac_power_w: '6440',
|
||||
house_ac_power_w: '8440', vebus_ac_out_l1_power_w: '8440',
|
||||
grid_state: 'on', victron_acin1_available: '1', grid_power_w: '2000',
|
||||
grid_state: 'off', victron_acin1_available: '0', grid_power_w: '0',
|
||||
soc_percent: '60', pv_power_w: '4500', pv_power_10m_avg_w: '4200',
|
||||
battery_current_a: '10',
|
||||
last_current_change_at: '2026-08-08 08:59:50',
|
||||
acin1_last_changed_ts: String(MORNING_TS - 20),
|
||||
grid_switch_last_changed_ts: String(MORNING_TS - 20),
|
||||
},
|
||||
expect: {
|
||||
profile: "morning_solar",
|
||||
sourceMode: "solar_only",
|
||||
state: "charging_step_down_system_cap",
|
||||
decision: "step_down_fast",
|
||||
desiredCharging: true,
|
||||
currentA: 20,
|
||||
takeoverNeeded: false,
|
||||
edfOnAction: false,
|
||||
takeoverHelperService: "turn_off",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user