Depart du matin : jours de depart par vehicule (JEEP mar mer ven sam dim), plus d'urgence de depart les autres jours

This commit is contained in:
Tallagrand Thierry
2026-10-01 07:32:44 +02:00
parent eeaa7636b2
commit 677a0388d7
8 changed files with 89 additions and 6 deletions

View File

@@ -1341,8 +1341,19 @@ ferme **06:00 -> 06:38** (2,15 kWh importes, HC). Mode sans_edf, budget publie 5
>= 30 = « urgent », alors qu'il manquait **0 kWh** (SOC 37 > cible 35). `grid_forced` : >= 30 = « urgent », alors qu'il manquait **0 kWh** (SOC 37 > cible 35). `grid_forced` :
maison ET voiture sur EDF. **Recurrent** : fermeture vers 06:00 les 21, 22, 25, 27/09 et maison ET voiture sur EDF. **Recurrent** : fermeture vers 06:00 les 21, 22, 25, 27/09 et
01/10. Mon exception « EDF deja engage pour la batterie » l'a laisse passer en sans_edf. 01/10. Mon exception « EDF deja engage pour la batterie » l'a laisse passer en sans_edf.
Correctif propose (exiger un manque > 0), **decision du proprietaire en attente**, ainsi **Cause premiere, donnee par le proprietaire** : l'heure de depart du matin ne tenait pas
que la realite du depart de la JEEP a 06:30. compte du JOUR. La JEEP part a 06:30 **mar mer ven sam dim**, jamais lun ni jeu — le
jeudi 01/10 il n'y avait aucun depart. **Corrige (deploye 07:32)** :
`input_text.victron_evcs_{jeep,vw,zero}_morning_departure_days` (JEEP « mar mer ven sam
dim », VW et ZERO tous les jours, vide = tous) ; le gabarit publie `departure_day_ok` (le
PROCHAIN passage de l'heure de depart tombe-t-il un jour de depart ?), INPUT_PARSE met
`departureTimeMin` a null sinon -> ni urgence de depart ni fenetre P9. Rendu verifie par
`/api/template` : prochain depart JEEP « Fri 02 06:30 », ok. Golden **134/134** (+2 : jour
de depart = comportement historique ; jeudi = EDF reste ouvert), mutation qui mord.
Carte EVCS Master (trois lignes de jours). MANUEL §0.
⚠️ **Reste ouvert** : un jour de depart, la marge declenche encore l'« urgence » a 06:00
meme quand il ne manque RIEN a la batterie (0 kWh + 30 min >= 30 min). Correctif propose :
exiger un manque > 0 ; decision du proprietaire.
--- ---
*Document mis a jour le : 01/10/2026 (~07:35) — premiere nuit du budget : ecritures perdues et verrou P12 corriges, faux positif de depart a 06:00 ; commande vocale du mode de nuit validee, premiere nuit budget a suivre ; budget voiture de la nuit sans EDF (bilan + controleur) ; fiche de l'agent allegee (25 831 car.), concierge sans silence, calendrier JEEP mar/sam ; nuit du 28-29 verifiee, achat EDF annonce = maison en HC + manque batterie ; regle HC active, vehicule branche a midi (JEEP/VW/ZERO), prevision de nuit a trois verdicts, nuits superposees et bilan recale sur la soiree* *Document mis a jour le : 01/10/2026 (~07:35) — premiere nuit du budget : ecritures perdues et verrou P12 corriges, faux positif de depart a 06:00 ; commande vocale du mode de nuit validee, premiere nuit budget a suivre ; budget voiture de la nuit sans EDF (bilan + controleur) ; fiche de l'agent allegee (25 831 car.), concierge sans silence, calendrier JEEP mar/sam ; nuit du 28-29 verifiee, achat EDF annonce = maison en HC + manque batterie ; regle HC active, vehicule branche a midi (JEEP/VW/ZERO), prevision de nuit a trois verdicts, nuits superposees et bilan recale sur la soiree*

View File

@@ -221,6 +221,12 @@ views:
name: Heure départ JEEP name: Heure départ JEEP
- entity: input_datetime.victron_evcs_departure_time_zero - entity: input_datetime.victron_evcs_departure_time_zero
name: Heure départ ZERO name: Heure départ ZERO
- entity: input_text.victron_evcs_jeep_morning_departure_days
name: Jours où la JEEP part le matin (vide = tous)
- entity: input_text.victron_evcs_vw_morning_departure_days
name: Jours où la VW part le matin (vide = tous)
- entity: input_text.victron_evcs_zero_morning_departure_days
name: Jours où la ZERO part le matin (vide = tous)
- entity: input_number.victron_evcs_vehicle_level_pct - entity: input_number.victron_evcs_vehicle_level_pct
name: 🔋 Niveau du véhicule branché (à saisir au branchement) name: 🔋 Niveau du véhicule branché (à saisir au branchement)
- entity: input_datetime.victron_evcs_departure_ponctuel - entity: input_datetime.victron_evcs_departure_ponctuel

View File

@@ -203,6 +203,13 @@ HA (`input_text.victron_evcs_jeep_midday_departure_days`,
que la JEEP n'a pas pris avant 15:30 ne pourra pas l'etre en HC la nuit — c'est que la JEEP n'a pas pris avant 15:30 ne pourra pas l'etre en HC la nuit — c'est
ce qui peut justifier le reseau en HC de midi (HANDOFF §81). ce qui peut justifier le reseau en HC de midi (HANDOFF §81).
**Depart de la JEEP le MATIN (donne le 01/10/2026)** : elle part a **06:30 le mardi, le
mercredi, le vendredi, le samedi et le dimanche** ; **pas de depart le lundi ni le
jeudi**. Jusqu'au 01/10, l'heure de depart du matin s'appliquait TOUS les jours : le jeudi
01/10, la marge de 30 min avant ce faux depart a ferme EDF a 06:00 (HANDOFF §81). Les jours
vivent dans HA (`input_text.victron_evcs_jeep_morning_departure_days`, idem `_vw_` et
`_zero_`, vides = tous les jours ; VW et ZERO : tous les jours pour l'instant).
**LE WEEK-END, LA ROUTINE S'INVERSE.** Sa femme travaille le samedi matin et le **LE WEEK-END, LA ROUTINE S'INVERSE.** Sa femme travaille le samedi matin et le
dimanche matin, retour a midi : la **JEEP** charge donc le midi ET la nuit du dimanche matin, retour a midi : la **JEEP** charge donc le midi ET la nuit du
samedi au dimanche. La **VW** ne bouge pas du week-end — sauf sortie plongee — samedi au dimanche. La **VW** ne bouge pas du week-end — sauf sortie plongee —

View File

@@ -172,6 +172,21 @@ input_number:
icon: mdi:ev-station icon: mdi:ev-station
input_text: input_text:
# Jours de depart du MATIN (01/10/2026) : l'heure de depart du matin
# (victron_evcs_departure_time*) ne vaut que ces jours-la (lun mar mer jeu ven
# sam dim). Vide = tous les jours. JEEP : mar mer ven sam dim (proprietaire).
victron_evcs_jeep_morning_departure_days:
name: EVCS - Jours de départ JEEP le matin
max: 60
icon: mdi:calendar-week
victron_evcs_vw_morning_departure_days:
name: EVCS - Jours de départ VW le matin
max: 60
icon: mdi:calendar-week
victron_evcs_zero_morning_departure_days:
name: EVCS - Jours de départ ZERO le matin
max: 60
icon: mdi:calendar-week
# Budget fige par le controleur a l'ouverture de la session de nuit : # Budget fige par le controleur a l'ouverture de la session de nuit :
# « budget_kWh|index_compteur_borne », vide hors session. Ne pas ecrire. # « budget_kWh|index_compteur_borne », vide hors session. Ne pas ecrire.
victron_evcs_night_budget: victron_evcs_night_budget:

View File

@@ -1,3 +1,18 @@
{#- Jours de depart du MATIN (01/10/2026, proprietaire) : l'heure de depart du
vehicule selectionne ne valait que l'heure, tous les jours. La JEEP part a
06:30 mar mer ven sam dim, jamais lun ni jeu : le jeudi 01/10, la marge de
30 min avant ce faux depart a ferme EDF a 06:00. Le gabarit dit si le
PROCHAIN passage de l'heure de depart tombe un jour de depart. Jours
absents ou illisibles = tous les jours (comportement d'avant). -#}
{%- set jm = ['lun', 'mar', 'mer', 'jeu', 'ven', 'sam', 'dim'] -%}
{%- set vm = {'JEEP': 'jeep', 'VW': 'vw', 'ZERO': 'zero'}.get(states('input_select.victron_evcs_vehicle'), 'vw') -%}
{%- set hm = states('input_datetime.' ~ {'vw': 'victron_evcs_departure_time', 'jeep': 'victron_evcs_departure_time_jeep', 'zero': 'victron_evcs_departure_time_zero'}[vm]) -%}
{%- set joursm = states('input_text.victron_evcs_' ~ vm ~ '_morning_departure_days') | lower -%}
{%- set dm = namespace(ok=true) -%}
{%- if hm not in ['unknown', 'unavailable', ''] and joursm not in ['unknown', 'unavailable', ''] -%}
{%- set prochain = today_at(hm) if today_at(hm) > now() else today_at(hm) + timedelta(days=1) -%}
{%- set dm.ok = jm[prochain.weekday()] in joursm.split() -%}
{%- endif -%}
{{ { {{ {
"soc_percent": states("sensor.victron_battery_soc"), "soc_percent": states("sensor.victron_battery_soc"),
"battery_current_a": states("sensor.victron_battery_current"), "battery_current_a": states("sensor.victron_battery_current"),
@@ -101,6 +116,7 @@
"departure_time": states("input_datetime.victron_evcs_departure_time"), "departure_time": states("input_datetime.victron_evcs_departure_time"),
"departure_time_jeep": states("input_datetime.victron_evcs_departure_time_jeep"), "departure_time_jeep": states("input_datetime.victron_evcs_departure_time_jeep"),
"departure_time_zero": states("input_datetime.victron_evcs_departure_time_zero"), "departure_time_zero": states("input_datetime.victron_evcs_departure_time_zero"),
"departure_day_ok": "on" if dm.ok else "off",
"evcs_vehicle": states("input_select.victron_evcs_vehicle"), "evcs_vehicle": states("input_select.victron_evcs_vehicle"),
"allow_grid_departure_urgent": states("input_boolean.victron_evcs_allow_grid_departure_urgent"), "allow_grid_departure_urgent": states("input_boolean.victron_evcs_allow_grid_departure_urgent"),
"last_start_at": states("input_datetime.victron_evcs_last_start_at"), "last_start_at": states("input_datetime.victron_evcs_last_start_at"),

View File

@@ -448,8 +448,12 @@ const params = {
// ZERO (moto, 28/09/2026) = victron_evcs_departure_time_zero. Heure absente // ZERO (moto, 28/09/2026) = victron_evcs_departure_time_zero. Heure absente
// ou illisible -> repli sur celle de la VW, comme la JEEP. // ou illisible -> repli sur celle de la VW, comme la JEEP.
selectedVehicle: cleanText(input.evcs_vehicle, 'VW'), selectedVehicle: cleanText(input.evcs_vehicle, 'VW'),
departureTimeMin: // Jours de depart du matin (01/10/2026) : si le prochain passage de l'heure
low(input.evcs_vehicle || 'vw') === 'jeep' // ne tombe pas un jour de depart du vehicule, il n'y a PAS de depart (null) —
// aucune urgence, aucune fenetre P9. Absent = 'on' (comportement d'avant).
departureTimeMin: low(input.departure_day_ok || 'on') === 'off'
? null
: low(input.evcs_vehicle || 'vw') === 'jeep'
? parseTimeToMinutes( ? parseTimeToMinutes(
input.departure_time_jeep, input.departure_time_jeep,
parseTimeToMinutes(input.departure_time, null) parseTimeToMinutes(input.departure_time, null)

View File

@@ -3147,6 +3147,30 @@ export const scenarios = [
overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 07:55', night_battery_done_prev: 'on' }, overrides: { ...BUDGET_NUIT, balance_last_run: '30/09 07:55', night_battery_done_prev: 'on' },
expect: { nightBatteryDoneService: 'turn_off' }, expect: { nightBatteryDoneService: 'turn_off' },
}, },
// Jours de depart du matin (01/10/2026) : releve reel du jeudi 01/10 06:00,
// JEEP pleine a 95 %, SOC 37 pour une cible de 35, depart JEEP 06:30. La marge
// de 30 min declenchait la « recharge urgente avant depart » (0 kWh manquant)
// et fermait EDF. Le jeudi, la JEEP ne part pas.
{
id: 'depart-matin-jour-de-depart-urgence-historique',
label: 'Depart JEEP 06:30 un jour de depart : la marge de 30 min engage le reseau a 06:00 (comportement historique)',
time: '2026-10-01T06:00:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '01/10 05:55', soc_percent: '37',
balance_required_soc: '28.6', balance_required_soc_prudent: '29.7',
evcs_vehicle: 'JEEP', departure_time_jeep: '06:30:00', departure_day_ok: 'on',
night_charge_mode: 'sans_edf', night_budget_prev: '5.93|4010', evcs_total_energy_kwh: '4015' },
expect: { sourceMode: 'grid_forced', edfOnAction: true },
},
{
id: 'depart-matin-pas-un-jour-de-depart',
label: 'Jeudi : la JEEP ne part pas, aucune urgence de depart, EDF reste ouvert',
time: '2026-10-01T06:00:00+02:00',
overrides: { ...BUDGET_NUIT, balance_last_run: '01/10 05:55', soc_percent: '37',
balance_required_soc: '28.6', balance_required_soc_prudent: '29.7',
evcs_vehicle: 'JEEP', departure_time_jeep: '06:30:00', departure_day_ok: 'off',
night_charge_mode: 'sans_edf', night_budget_prev: '5.93|4010', evcs_total_energy_kwh: '4015' },
expect: { edfOnAction: false, takeoverNeeded: false },
},
{ {
id: 'budget-efface-en-fin-de-session', id: 'budget-efface-en-fin-de-session',
label: 'Fin de fenetre HC (08:00) : le budget fige est efface', label: 'Fin de fenetre HC (08:00) : le budget fige est efface',

File diff suppressed because one or more lines are too long