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:
15
HANDOFF.md
15
HANDOFF.md
@@ -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*
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 —
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
Reference in New Issue
Block a user