P9: charge réseau avant départ (hors HC) + sélecteur véhicule VW/JEEP

- helpers: input_select.victron_evcs_vehicle, departure_time_jeep (06:30),
  toggle allow_grid_departure_urgent (OFF) — package victron_evcs_vehicles.yaml
- INPUT_PARSE: departureTimeMin par véhicule sélectionné
- WINDOWS: fenêtre départ ≤120min hors HC → grid_hc_allowed (solar_only prioritaire),
  état collant departure_done_idle à la fin de charge
- BCL: gridAllowedBySoc += departureUrgentActive
- DECISION: branche collante departure_done_idle au-dessus des gardes
- HA_SERVICE_CALLS: takeover helper tenu pendant P9 (ACM + hystérésis)
- hystérésis: cut immédiat étendu à departure_done_idle (patch rejouable)
- golden 29→33, HANDOFF §21
This commit is contained in:
Tallagrand Thierry
2026-08-09 08:27:24 +02:00
parent 98c9202bad
commit 0419c741de
11 changed files with 312 additions and 9 deletions

View File

@@ -341,7 +341,19 @@ const params = {
cloudDebtMaxKwh: Math.max(0.05, num(input.cloud_debt_max_kwh, 1.2)),
cloudToleranceMinutes: Math.max(1, num(input.cloud_tolerance_minutes, 20)),
departureTimeMin: parseTimeToMinutes(input.departure_time, null),
// P9 (09/08/2026) : deux véhicules alternent sur la borne.
// Le sélecteur input_select.victron_evcs_vehicle choisit l'heure de départ
// effective : VW = victron_evcs_departure_time (~08:50),
// JEEP = victron_evcs_departure_time_jeep (~06:30).
selectedVehicle: cleanText(input.evcs_vehicle, 'VW'),
departureTimeMin:
low(input.evcs_vehicle || 'vw') === 'jeep'
? parseTimeToMinutes(
input.departure_time_jeep,
parseTimeToMinutes(input.departure_time, null)
)
: parseTimeToMinutes(input.departure_time, null),
allowGridDepartureUrgent: low(input.allow_grid_departure_urgent || 'off') === 'on',
dayStartTimeMin: parseTimeToMinutes(input.day_start_time, 7 * 60 + 30),
dayStopTimeMin: parseTimeToMinutes(input.day_stop_time, 20 * 60 + 30),