Budget voiture de la nuit : ce que la batterie peut donner sans EDF, arret au compteur, choix sans EDF / complete

This commit is contained in:
Tallagrand Thierry
2026-09-30 13:26:45 +02:00
parent fb98a8cbb8
commit e0d855f33f
16 changed files with 370 additions and 10 deletions

View File

@@ -122,6 +122,8 @@ function summarize(out) {
sessionCommittedService: calls.helper_night_grid_session_committed?.execute
? calls.helper_night_grid_session_committed.service
: null,
// Budget voiture de la nuit (30/09) : valeur ecrite ce cycle, null sinon.
nightBudgetWrite: calls.helper_night_budget?.execute ? calls.helper_night_budget.data.value : null,
// Consigne de puissance reseau ecrite ce cycle (null = aucune ecriture).
gridSetpointW: calls.grid_power_setpoint?.execute
? calls.grid_power_setpoint.data.value

View File

@@ -19,7 +19,28 @@ const EVENING = '2026-08-08T18:00:00+02:00';
// donc on exprime l'âge de la transition par rapport à cet instant simulé.
const MORNING_TS = Date.parse(MORNING) / 1000;
// Budget voiture de la nuit (30/09) : releve du 30/09 01:25.
const BUDGET_NUIT_BASE = {
soc_percent: '57', allow_grid_hc_night: 'on',
night_battery_charge_enabled: 'on', night_battery_done_prev: 'off',
grid_state: 'off', victron_acin1_available: '0',
battery_current_a: '-16', evcs_charging_switch: 'off',
balance_status: 'ok', balance_last_run: '30/09 01:20',
balance_required_soc: '39.2', balance_required_soc_prudent: '44.7',
balance_energy_to_cover_kwh: '5.2', balance_night_vehicle_budget_kwh: '3.7',
};
const EN_CHARGE_BATTERIE = {
evcs_charging_switch: 'on', charge_permission_now: 'on', control_latch: 'on',
// P12 charge doucement : 6 A, batterie a -25 A (le garde dur de la bande
// 40-60 % est a -30 A).
evcs_current_a: '6', evcs_ac_power_w: '1400', battery_current_a: '-25',
prev_surplus_state: 'charging_hold_battery_assist_night',
};
const VEHICLE_NIGHT = {
// 30/09 : les scenarios de nuit historiques decrivent le mode « charge
// complete » (EDF finit la charge). Le mode par defaut « sans EDF » a ses
// propres scenarios (budget-*).
night_charge_mode: 'complete',
evcs_vehicle_connected: 'on',
evcs_device_connected: 'on',
pv_power_w: '0',
@@ -29,6 +50,7 @@ const VEHICLE_NIGHT = {
vebus_ac_out_l1_power_w: '700',
battery_current_a: '-14',
};
const BUDGET_NUIT = { ...VEHICLE_NIGHT, ...BUDGET_NUIT_BASE };
export const scenarios = [
@@ -406,7 +428,7 @@ export const scenarios = [
overrides: {
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
night_session_active: 'on',
allow_grid_hc_night: 'on',
allow_grid_hc_night: 'on', night_charge_mode: 'complete',
soc_percent: '55', pv_power_w: '0', pv_power_10m_avg_w: '0',
pv_trend_w: '0', battery_current_a: '0',
house_ac_power_w: '800', vebus_ac_out_l1_power_w: '800',
@@ -3051,6 +3073,73 @@ export const scenarios = [
},
},
// =====================================================
// BUDGET VOITURE DE LA NUIT (30/09/2026, decisions du proprietaire)
// =====================================================
// « Definir combien la voiture peut prendre sans utiliser EDF, et brider la
// charge a cette valeur ou autoriser une charge complete avec EDF. » Par
// defaut « sans EDF » ; « complete » = budget batterie puis EDF. Budget fige
// a l'ouverture avec l'index du compteur de la borne ; arret au compteur.
// Releve de reference : 30/09 01:25, SOC 57, requis 39,2, prudent 44,7.
{
id: 'budget-fige-a-l-ouverture',
label: 'Nuit HC, sans EDF, budget 3,7 kWh publie : fige avec l index 4000, la voiture part sur la batterie',
time: '2026-09-30T01:25:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 01:20', night_charge_mode: 'sans_edf', night_budget_prev: '', evcs_total_energy_kwh: '4000' },
expect: { profile: 'night_hc', sourceMode: 'battery_assist_night',
state: 'start_battery_assist_night_min_current', desiredCharging: true,
nightBudgetWrite: '3.7|4000', takeoverNeeded: false, edfOnAction: false },
},
{
id: 'budget-pas-atteint-la-charge-continue',
label: 'Budget 3,7, 2 kWh delivres, SOC 52 au-dessus du prudent : la voiture continue sur la batterie',
time: '2026-09-30T02:10:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 02:05', ...EN_CHARGE_BATTERIE, soc_percent: '52', night_charge_mode: 'sans_edf',
night_budget_prev: '3.7|4000', evcs_total_energy_kwh: '4002' },
expect: { sourceMode: 'battery_assist_night', desiredCharging: true, nightBudgetWrite: null,
takeoverNeeded: false, edfOnAction: false },
},
{
id: 'budget-atteint-sans-edf-la-voiture-attend',
label: 'Budget 3,7 atteint (3,75 delivres), SOC 50 encore au-dessus du prudent, sans EDF : arret, pas de reseau',
time: '2026-09-30T02:30:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 02:25', ...EN_CHARGE_BATTERIE, soc_percent: '50', night_charge_mode: 'sans_edf',
night_budget_prev: '3.7|4000', evcs_total_energy_kwh: '4003.75' },
expect: { sourceMode: 'blocked', desiredCharging: false, takeoverNeeded: false, edfOnAction: false },
},
{
id: 'budget-atteint-complete-edf-finit',
label: 'CONTREFACTUEL — meme nuit en charge complete : EDF prend le relais en HC',
time: '2026-09-30T02:30:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 02:25', ...EN_CHARGE_BATTERIE, soc_percent: '50', night_charge_mode: 'complete',
night_budget_prev: '3.7|4000', evcs_total_energy_kwh: '4003.75' },
expect: { sourceMode: 'grid_hc_allowed', takeoverNeeded: true, edfOnAction: true },
},
{
id: 'budget-sans-edf-plancher-dur-edf-protege',
label: 'Sans EDF mais SOC 20 sous le plancher dur : EDF se ferme quand meme pour la batterie',
time: '2026-09-30T04:00:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 03:55', soc_percent: '20', night_charge_mode: 'sans_edf',
night_budget_prev: '3.7|4000', evcs_total_energy_kwh: '4003.75' },
expect: { sourceMode: 'grid_forced', edfOnAction: true },
},
{
id: 'budget-bilan-perime-sans-edf-rien',
label: 'Sans EDF, bilan vieux de 3 h : aucun budget fige, la voiture attend, pas de reseau',
time: '2026-09-30T01:25:00+02:00',
overrides: { ...BUDGET_NUIT, night_charge_mode: 'sans_edf', balance_last_run: '29/09 22:20',
night_budget_prev: '', evcs_total_energy_kwh: '4000' },
expect: { sourceMode: 'blocked', desiredCharging: false, nightBudgetWrite: null,
takeoverNeeded: false, edfOnAction: false },
},
{
id: 'budget-efface-en-fin-de-session',
label: 'Fin de fenetre HC (08:00) : le budget fige est efface',
time: '2026-09-30T08:00:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 07:55', night_budget_prev: '3.7|4000', evcs_total_energy_kwh: '4003.75' },
expect: { nightBudgetWrite: '' },
},
// ===================================================================
// BOOST 28 A du 18/09/2026 — le verrou survivait a sa cause (HANDOFF)
// Releve reel : clic BOOST 13:08:50, contacteur ferme 13:09:53, garde