JEEP branchee a midi : reseau en HC seulement si le solaire ne suffit pas avant son depart
Regle du proprietaire (28/09). Le bilan compare le besoin saisi (niveau x capacite mesuree - deja delivre) au solaire disponible avant le depart de 15:30 (mar/mer/ ven/sam) sans descendre la batterie sous le plancher « tenir jusqu'a la prochaine HC ». Le controleur relaie le verdict sous les gardes du bilan ; session de midi engagee -> voiture sur le reseau avec la batterie. Bilan 61/61, golden 121/121. 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:
@@ -153,6 +153,7 @@
|
||||
"dvcc_max_charge_current_a": states("sensor.victron_max_charge_current_setting"),
|
||||
"balance_status": states("input_text.evcs_balance_status"),
|
||||
"balance_last_run": states("input_text.evcs_balance_last_run"),
|
||||
"balance_vehicle_grid_needed": states("input_boolean.evcs_balance_vehicle_grid_needed"),
|
||||
"allow_grid_hc_midday": states("input_boolean.victron_evcs_allow_grid_hc_midday"),
|
||||
"probe_enabled": states("input_boolean.victron_evcs_probe_enabled"),
|
||||
|
||||
|
||||
@@ -487,6 +487,9 @@ const params = {
|
||||
// BILAN ENERGETIQUE (03/09/2026). Meme format d'horodatage que l'advisor
|
||||
// ("DD/MM HH:mm"), d'ou la reutilisation du parseur.
|
||||
balanceRequiredSocPct: num(input.balance_required_soc, NaN),
|
||||
// Voiture branchee en HC avec un depart avant la prochaine HC (28/09) : le
|
||||
// bilan juge que le solaire ne lui donnera pas son besoin avant le depart.
|
||||
balanceVehicleGridNeeded: low(input.balance_vehicle_grid_needed || 'off') === 'on',
|
||||
// P12 — charge nuit sur batterie. Le plancher est le SOC requis PRUDENT (p80)
|
||||
// et non le p50 : la marge est mesuree, pas inventee. On descend la voiture
|
||||
// jusqu'a ce que la batterie n'ait plus que ce qu'il lui faut pour tenir
|
||||
|
||||
@@ -739,10 +739,24 @@ const nightGridSessionUncovered =
|
||||
// `required_soc` = 22,0 pour `energy_to_cover` = 0,0. Il ne remonte qu'un jour
|
||||
// sombre — ou quand le proprietaire pose un plancher manuel, ce qui est
|
||||
// exactement le cas d'usage.
|
||||
//
|
||||
// ET LA VOITURE (28/09/2026, strategie du proprietaire) : « JEEP branchee
|
||||
// engage le reseau en HC midi si l'analyse de production le justifie ». Le
|
||||
// bilan fait l'analyse (besoin saisi contre solaire disponible avant le depart,
|
||||
// batterie gardee pour tenir jusqu'a 01:24) et publie un verdict ; on le relaie,
|
||||
// sous les memes gardes de fraicheur et de statut que la cible.
|
||||
const middayVehicleGridNeeded =
|
||||
balanceMorningTargetApplied &&
|
||||
params.balanceVehicleGridNeeded &&
|
||||
parsed.evcsVehicleConnected;
|
||||
|
||||
const middayGridSessionUncovered =
|
||||
balanceMorningTargetApplied &&
|
||||
Number.isFinite(params.balanceRequiredSocPct) &&
|
||||
parsed.soc < params.balanceRequiredSocPct;
|
||||
(
|
||||
(Number.isFinite(params.balanceRequiredSocPct) &&
|
||||
parsed.soc < params.balanceRequiredSocPct) ||
|
||||
middayVehicleGridNeeded
|
||||
);
|
||||
|
||||
const gridSessionInHcWindow =
|
||||
profile === 'night_hc' || profile === 'midday_hc_or_solar';
|
||||
@@ -931,7 +945,15 @@ else if (profile === 'night_hc') {
|
||||
}
|
||||
|
||||
else if (profile === 'midday_hc_or_solar' || profile === 'morning_solar') {
|
||||
if (strongSolarSignal) {
|
||||
// Session de midi engagee et contacteur ferme : la voiture charge sur le
|
||||
// reseau avec la batterie (« batterie et voiture ensemble », 28/09), meme au
|
||||
// soleil. La consigne garde son credit solaire (HA_SERVICE_CALLS_OUTPUT) :
|
||||
// elle ne preleve au reseau que ce que les chargeurs ne donnent pas.
|
||||
if (profile === 'midday_hc_or_solar' && nightGridSessionCommitted && parsed.gridAvailable) {
|
||||
sourceMode = 'grid_hc_allowed';
|
||||
}
|
||||
|
||||
else if (strongSolarSignal) {
|
||||
sourceMode = 'solar_only';
|
||||
}
|
||||
|
||||
@@ -1168,6 +1190,7 @@ return [{
|
||||
nightBatterySurplusAvailable,
|
||||
nightBatterySurplusExhausted,
|
||||
nightGridSessionCommitted,
|
||||
middayVehicleGridNeeded,
|
||||
nightGridSessionUncovered,
|
||||
balanceTargetAgeMin:
|
||||
balanceTargetAgeMin === null ? null : Math.round(balanceTargetAgeMin * 10) / 10,
|
||||
|
||||
Reference in New Issue
Block a user