# ===================================================================== # 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_night_vehicle_budget_kwh: name: "Bilan — voiture : budget batterie de la nuit sans EDF" min: 0 max: 50 step: 0.01 unit_of_measurement: "kWh" mode: box icon: mdi:car-electric evcs_balance_night_hc_house_kwh: name: "Bilan — maison sur le réseau en HC de nuit (si session)" min: 0 max: 50 step: 0.01 unit_of_measurement: "kWh" mode: box icon: mdi:transmission-tower-import 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