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
266 lines
9.5 KiB
YAML
Executable File
266 lines
9.5 KiB
YAML
Executable File
# =====================================================================
|
|
# Bilan énergétique EVCS — helpers (chantier du 24/08/2026)
|
|
# MODE OMBRE : le workflow "EVCS Energy Balance V1" n'écrit QUE dans ces
|
|
# entités. Aucun switch, aucune consigne de borne, aucune stratégie.
|
|
# Voir docs/CHANTIER_BILAN_ENERGETIQUE.md dans le dépôt EVCS.
|
|
# =====================================================================
|
|
|
|
input_boolean:
|
|
evcs_balance_enabled:
|
|
name: "Bilan énergétique — actif (kill-switch)"
|
|
icon: mdi:scale-balance
|
|
initial: true
|
|
evcs_balance_grid_needed:
|
|
name: "Bilan — réseau nécessaire"
|
|
icon: mdi:transmission-tower
|
|
# Voiture branchee en HC avec un depart avant la prochaine HC (28/09) : le
|
|
# solaire ne suffit pas a lui donner son besoin avant le depart -> le
|
|
# controleur engage la session reseau de la fenetre HC.
|
|
evcs_balance_vehicle_grid_needed:
|
|
name: "Bilan — réseau justifié pour la voiture (départ avant la prochaine HC)"
|
|
icon: mdi:car-electric
|
|
evcs_balance_pv_censored:
|
|
name: "Bilan — production actuellement bridée"
|
|
icon: mdi:solar-power-variant-outline
|
|
# Vrai à partir de la vigilance ORANGE — le seuil est celui de Météo-France,
|
|
# pas un nombre choisi ici. N'agit sur rien : mode ombre.
|
|
evcs_balance_storm_active:
|
|
name: "Bilan — vigilance orage active"
|
|
icon: mdi:weather-lightning
|
|
|
|
input_number:
|
|
# Saisi par l'utilisateur : capacité réellement disponible du parc batterie.
|
|
# 7 modules US2000C actifs au 24/08/2026 (un isolé) -> ~15 kWh.
|
|
evcs_balance_usable_capacity_kwh:
|
|
name: "Bilan — capacité batterie utile"
|
|
min: 2
|
|
max: 60
|
|
step: 0.5
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:battery-high
|
|
# Nombre de modules US2000C REELLEMENT en service. La courbe energie/SOC a ete
|
|
# mesuree sur sept modules (HANDOFF §41) ; elle est mise a l'echelle de ce
|
|
# nombre par le bilan ET par le controleur EVCS, qui le lisent tous deux ici —
|
|
# les deux decrivent forcement le meme parc.
|
|
# Helper absent ou hors bornes => repli sur 7, la valeur de la mesure.
|
|
# 05/09/2026 : pack ancien isole et coupe au coupe-circuit -> 4.
|
|
# ⚠️ EN EQUIVALENTS US2000C, PAS EN MODULES PHYSIQUES.
|
|
# La courbe energie/SOC est mesuree par US2000C (0,091 kWh AC par point de
|
|
# SOC et par module). Un US5000 fait 100 Ah contre 50 : il en vaut DEUX.
|
|
# 4 US2000C ....................... 4
|
|
# 4 US2000C + 4 US5000 ............ 12
|
|
# Cette valeur alimente TROIS consommateurs a la fois : la capacite utile du
|
|
# controleur, la conversion energie/SOC du bilan, et l'echelle des bandes de
|
|
# politique batterie. Une erreur ici se propage aux trois.
|
|
evcs_balance_modules_en_service:
|
|
name: "Parc batterie — équivalents US2000C"
|
|
min: 1
|
|
max: 24
|
|
step: 1
|
|
unit_of_measurement: équiv.
|
|
mode: box
|
|
icon: mdi:battery-sync
|
|
|
|
# Calculés par le bilan.
|
|
evcs_balance_required_soc:
|
|
name: "Bilan — SOC requis (décision)"
|
|
min: 0
|
|
max: 100
|
|
step: 0.1
|
|
unit_of_measurement: "%"
|
|
mode: box
|
|
icon: mdi:battery-alert-variant-outline
|
|
evcs_balance_required_soc_prudent:
|
|
name: "Bilan — SOC requis (planification)"
|
|
min: 0
|
|
max: 100
|
|
step: 0.1
|
|
unit_of_measurement: "%"
|
|
mode: box
|
|
icon: mdi:battery-clock
|
|
# Regle « tenir jusqu'a la prochaine HC » (28/09) : SOC a avoir en fin de
|
|
# fenetre HC en cours. 0 = hors fenetre HC ou regle sans effet.
|
|
evcs_balance_vehicle_need_kwh:
|
|
name: "Bilan — besoin de la voiture avant son départ"
|
|
min: 0
|
|
max: 100
|
|
step: 0.01
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:car-arrow-left
|
|
evcs_balance_vehicle_solar_kwh:
|
|
name: "Bilan — solaire disponible pour la voiture avant son départ"
|
|
min: 0
|
|
max: 100
|
|
step: 0.01
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:solar-power-variant
|
|
evcs_balance_hc_floor_pct:
|
|
name: "Bilan — plancher HC (prochaine HC)"
|
|
min: 0
|
|
max: 100
|
|
step: 0.1
|
|
unit_of_measurement: "%"
|
|
mode: box
|
|
icon: mdi:clock-end
|
|
evcs_balance_hc_floor_prudent_pct:
|
|
name: "Bilan — plancher HC prudent (P12, nuit suivante)"
|
|
min: 0
|
|
max: 100
|
|
step: 0.1
|
|
unit_of_measurement: "%"
|
|
mode: box
|
|
icon: mdi:clock-alert-outline
|
|
evcs_balance_energy_to_cover_kwh:
|
|
name: "Bilan — énergie à couvrir"
|
|
min: 0
|
|
max: 100
|
|
step: 0.01
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:flash-outline
|
|
evcs_balance_grid_energy_needed_kwh:
|
|
name: "Bilan — énergie réseau nécessaire"
|
|
min: 0
|
|
max: 100
|
|
step: 0.01
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:transmission-tower-import
|
|
# Prochaine fenêtre de déficit (typiquement la nuit qui vient).
|
|
evcs_balance_next_deficit_kwh:
|
|
name: "Bilan — énergie de la prochaine traversée déficitaire"
|
|
min: 0
|
|
max: 200
|
|
step: 0.01
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:weather-night
|
|
evcs_balance_next_deficit_required_soc:
|
|
name: "Bilan — SOC requis avant la traversée"
|
|
min: 0
|
|
max: 300
|
|
step: 0.1
|
|
unit_of_measurement: "%"
|
|
mode: box
|
|
icon: mdi:battery-charging-100
|
|
# Au-dessus de 100 % de SOC requis : capacité utile manquante.
|
|
# C'est le chiffre du dimensionnement du stockage.
|
|
evcs_balance_storage_shortfall_kwh:
|
|
name: "Bilan — capacité de stockage manquante"
|
|
min: 0
|
|
max: 200
|
|
step: 0.01
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:battery-alert
|
|
evcs_balance_vehicle_surplus_kwh:
|
|
name: "Bilan — surplus disponible pour le véhicule"
|
|
min: 0
|
|
max: 200
|
|
step: 0.01
|
|
unit_of_measurement: kWh
|
|
mode: box
|
|
icon: mdi:car-electric
|
|
# --- Réserve d'orage (27/08/2026) ---------------------------------------
|
|
# Ce qu'il faut avoir en batterie pour traverser SANS réseau la fenêtre de
|
|
# déficit qui compte. C'est la couverture prudente (p80) du bilan, pas une
|
|
# nouvelle constante : une coupure n'arrête pas l'installation, elle retire
|
|
# seulement le filet de secours et la possibilité de rattraper.
|
|
evcs_balance_storm_reserve_kwh:
|
|
name: "Bilan — réserve d'orage (énergie)"
|
|
min: 0
|
|
max: 100
|
|
step: 0.01
|
|
unit_of_measurement: "kWh"
|
|
mode: box
|
|
icon: mdi:weather-lightning
|
|
evcs_balance_storm_reserve_soc:
|
|
name: "Bilan — réserve d'orage (SOC)"
|
|
min: 0
|
|
max: 100
|
|
step: 0.1
|
|
unit_of_measurement: "%"
|
|
mode: box
|
|
icon: mdi:battery-alert-variant-outline
|
|
|
|
input_text:
|
|
# Profils recalculés une fois par jour, en CSV compact (24 valeurs, <255 car.)
|
|
evcs_balance_consumption_p50:
|
|
name: "Bilan — profil conso typique (CSV 24 h)"
|
|
max: 255
|
|
evcs_balance_consumption_p80:
|
|
name: "Bilan — profil conso prudent (CSV 24 h)"
|
|
max: 255
|
|
evcs_balance_envelope:
|
|
name: "Bilan — enveloppe de production démontrée (CSV 24 h)"
|
|
max: 255
|
|
evcs_balance_censorship_rate:
|
|
name: "Bilan — taux de censure par heure (CSV 24 h)"
|
|
max: 255
|
|
# Sorties lisibles.
|
|
evcs_balance_crossing_hour:
|
|
name: "Bilan — heure de croisement PV/conso"
|
|
max: 32
|
|
evcs_balance_censor_reason:
|
|
name: "Bilan — motif du bridage"
|
|
max: 255
|
|
evcs_balance_next_deficit_window:
|
|
name: "Bilan — prochaine traversée déficitaire"
|
|
max: 64
|
|
# --- Prévision solaire horaire (Forecast.Solar, abonnement Professional) ---
|
|
# La clé vit ici et NON dans le dépôt : le workflow n8n la lit via le snapshot
|
|
# et construit l'URL lui-même. mode password pour la masquer dans l'interface.
|
|
evcs_balance_forecast_api_key:
|
|
name: "Bilan — clé API Forecast.Solar"
|
|
mode: password
|
|
max: 64
|
|
# Plans au format attendu par l'API : dec/az/kWc répétés.
|
|
# ⚠️ Azimut selon la convention de l'API : 0 = sud, -90 = est, +90 = ouest.
|
|
evcs_balance_forecast_planes:
|
|
name: "Bilan — plans photovoltaïques (format API)"
|
|
max: 128
|
|
# La DATE que decrit la courbe de prevision (AAAA-MM-JJ). Sans elle, « today »
|
|
# veut dire « le premier jour renvoye par l'API au moment de la publication »,
|
|
# ce qui devient faux des qu'on passe minuit sans rafraichir : nuit du 07 au
|
|
# 08/09/2026, 4 h 45 sans publication, courbe du 7 lue comme celle du 8, bilan
|
|
# degrade et cible du matin retombee sur les paliers pendant quatre heures.
|
|
# PAS de `initial:` — il desactiverait la restauration d'etat.
|
|
evcs_balance_forecast_day0:
|
|
name: "Bilan — date de la courbe de prévision"
|
|
max: 10
|
|
evcs_balance_forecast_today:
|
|
name: "Bilan — prévision horaire du jour (CSV 24 h, kWh)"
|
|
max: 255
|
|
evcs_balance_forecast_tomorrow:
|
|
name: "Bilan — prévision horaire de demain (CSV 24 h, kWh)"
|
|
max: 255
|
|
evcs_balance_forecast_updated:
|
|
name: "Bilan — prévision mise à jour"
|
|
# 128 et non 32 : ce champ porte soit un horodatage « JJ/MM HH:MM » (11
|
|
# caracteres), soit un message d'echec. « échec : réponse illisible ou sans
|
|
# résultat » en fait 43 — Home Assistant le REJETAIT, si bien qu'aucune
|
|
# panne de prevision n'a jamais ete publiee ici. Constate le 08/09/2026 en
|
|
# cherchant pourquoi les 4 h 45 d'interruption de la nuit precedente
|
|
# n'avaient laisse aucune trace : zero message d'echec en quatre jours.
|
|
max: 128
|
|
evcs_balance_status:
|
|
name: "Bilan — statut"
|
|
max: 64
|
|
evcs_balance_reason:
|
|
name: "Bilan — explication"
|
|
max: 255
|
|
evcs_balance_last_run:
|
|
name: "Bilan — dernière exécution"
|
|
max: 32
|
|
evcs_balance_storm_level:
|
|
name: "Bilan — vigilance météo"
|
|
max: 40
|
|
icon: mdi:weather-lightning-rainy
|
|
evcs_balance_storm_reason:
|
|
name: "Bilan — réserve d'orage (détail)"
|
|
max: 255
|
|
icon: mdi:text-long
|