Bilan energetique : carte Cible du matin (source bilan ou repli, prochain depart, urgence)
This commit is contained in:
@@ -1366,6 +1366,13 @@ ferme **06:00 -> 06:38** (2,15 kWh importes, HC). Mode sans_edf, budget publie 5
|
||||
mutations qui mordent ; golden-acm 20/20, hysteresis 24/24. Deploye ~07:50.
|
||||
⚠️ A surveiller : le bilan p50 peut sous-estimer une nuit ; la batterie descend alors plus
|
||||
bas qu'avec le palier 35 %. Le filet reste l'hysteresis a 20 % et la session de nuit.
|
||||
**Carte « Cible du matin »** (Bilan energetique, onglet Bilan, a la place de la carte
|
||||
perimee « Seuil calcule contre seuil fixe ») : cible appliquee
|
||||
(`input_number.victron_evcs_night_target_soc`), source (bilan ou repli palier), marge,
|
||||
prochain depart du matin du vehicule selectionne (jours compris) et heure a partir de
|
||||
laquelle l'urgence avant depart peut agir. Carte vivante (Jinja), rendu verifie par
|
||||
`/api/template` : SOC 34, cible 26 (bilan), depart ven 02/10 06:30, aucune urgence.
|
||||
Sauvegarde `bilan_energetique.yaml.bak-20261001-cible`.
|
||||
|
||||
---
|
||||
*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*
|
||||
|
||||
@@ -39,33 +39,54 @@ views:
|
||||
|
||||
{{ states('input_text.evcs_balance_reason') }}
|
||||
|
||||
# --- LA comparaison qui décidera du câblage ---------------------
|
||||
# --- Cible du matin (01/10/2026) -----------------------------------
|
||||
# Remplace « Seuil calcule contre seuil fixe » (epoque du mode ombre).
|
||||
# Carte VIVANTE : elle se recalcule seule a chaque changement des
|
||||
# grandeurs lues (controleur toutes les 30 s, bilan toutes les 5 min).
|
||||
- type: markdown
|
||||
title: Seuil calculé contre seuil fixe
|
||||
title: Cible du matin
|
||||
content: |
|
||||
{% set req = states('input_number.evcs_balance_required_soc') | float(0) %}
|
||||
{% set fixe = states('input_number.victron_grid_soc_off') | float(0) %}
|
||||
{% set cible = states('input_number.victron_evcs_night_target_soc') | float(0) %}
|
||||
{% set req = states('input_number.evcs_balance_required_soc') | float(-1) %}
|
||||
{% set soc = states('sensor.victron_battery_soc') | float(0) %}
|
||||
{% set ecart = req - fixe %}
|
||||
{% set statut = states('input_text.evcs_balance_status') %}
|
||||
{% set du_bilan = statut == 'ok' and req >= 0 and (cible - [req, 22] | max) | abs < 0.15 %}
|
||||
{% set ecart = soc - cible %}
|
||||
| | |
|
||||
|---|---:|
|
||||
| SOC batterie **maintenant** | **{{ soc | round(0) }} %** |
|
||||
| Seuil **calculé** par le bilan | **{{ req | round(1) }} %** |
|
||||
| Seuil **fixe** encore en vigueur | {{ fixe | round(0) }} % |
|
||||
| Écart | {{ '+' if ecart >= 0 else '' }}{{ ecart | round(1) }} points |
|
||||
| **Cible du matin** appliquée par le contrôleur | **{{ cible | round(1) }} %** |
|
||||
| Source | {{ '**bilan** (SOC requis ' ~ (req | round(1)) ~ ' %)' if du_bilan else '⚠️ **repli** : palier de prévision (bilan ' ~ statut ~ ')' }} |
|
||||
| Marge | {{ '+' if ecart >= 0 else '' }}{{ ecart | round(1) }} points |
|
||||
|
||||
{% if req > fixe %}
|
||||
Le seuil fixe est aujourd'hui **trop bas** : il laisserait la batterie
|
||||
descendre sous ce qu'il faut pour tenir jusqu'au croisement.
|
||||
{% elif req < fixe %}
|
||||
Le seuil fixe est aujourd'hui **trop haut** : il fait importer du
|
||||
réseau au-delà du nécessaire.
|
||||
{% set vsel = {'JEEP': 'jeep', 'VW': 'vw', 'ZERO': 'zero'}.get(states('input_select.victron_evcs_vehicle'), 'vw') %}
|
||||
{% set heure = states('input_datetime.' ~ {'vw': 'victron_evcs_departure_time', 'jeep': 'victron_evcs_departure_time_jeep', 'zero': 'victron_evcs_departure_time_zero'}[vsel]) %}
|
||||
{% set jours = states('input_text.victron_evcs_' ~ vsel ~ '_morning_departure_days') | lower %}
|
||||
{% set noms = ['lun', 'mar', 'mer', 'jeu', 'ven', 'sam', 'dim'] %}
|
||||
{% set branche = is_state('binary_sensor.victron_evcs_vehicle_connected', 'on') %}
|
||||
{% if heure not in ['unknown', 'unavailable', ''] %}
|
||||
{% set d = today_at(heure) if today_at(heure) > now() else today_at(heure) + timedelta(days=1) %}
|
||||
{% set jour_ok = jours in ['unknown', 'unavailable', ''] or noms[d.weekday()] in jours.split() %}
|
||||
**Prochain départ du matin** ({{ states('input_select.victron_evcs_vehicle') }}{{ ', branchée' if branche else ', non branchée' }}) :
|
||||
{% if jour_ok %}
|
||||
{{ noms[d.weekday()] }} {{ d.strftime('%d/%m à %H:%M') }}.
|
||||
{% if ecart >= 0 %}
|
||||
Il ne manque rien à la batterie : **aucune urgence avant départ**.
|
||||
{% else %}
|
||||
Les deux coïncident.
|
||||
{% set manque = (cible - soc) * 0.30 %}
|
||||
{% set minutes = manque / 2.5 * 60 + 30 %}
|
||||
Il manque **{{ manque | round(1) }} kWh** : l'urgence avant départ peut fermer EDF
|
||||
à partir de **{{ (d - timedelta(minutes=minutes)).strftime('%H:%M') }}** si la batterie
|
||||
n'est pas remontée d'ici là (session de nuit en heures creuses).
|
||||
{% endif %}
|
||||
{% else %}
|
||||
pas de départ {{ noms[d.weekday()] }} ({{ jours }}) : **aucune urgence avant départ**.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
*C'est l'accumulation de cet écart, jour après jour, qui décidera si
|
||||
le bilan prend la main.*
|
||||
*La cible suit le besoin calculé par le bilan, dans les deux sens ; le
|
||||
palier de prévision (35/55/85 %) ne sert que si le bilan est absent ou
|
||||
périmé. Elle se recalcule en continu : il n'y a rien à mettre à jour.*
|
||||
|
||||
# --- Décision immédiate ----------------------------------------
|
||||
- type: entities
|
||||
|
||||
Reference in New Issue
Block a user