From 4a9ad0bc655279825f0f07b9a78440fa79ea9a0d Mon Sep 17 00:00:00 2001 From: Tallagrand Thierry Date: Sun, 13 Sep 2026 11:59:24 +0200 Subject: [PATCH] Le conseiller ne lisait pas mal : on lui parlait mal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reprise de la campagne apres la specialisation en observateur. Le harnais affichait encore `strategy` et `night_target_soc`, deux champs que l observateur n emet plus : il mesurait des undefined. Reecrit pour noter ce qui compte chez un observateur — la gravite tombe-t-elle dans la fourchette attendue, et a-t-il NOMME la chose, par des mots-cles choisis hors du vocabulaire du prompt. Quatre defauts trouves, aucun n etant un defaut de raisonnement du modele : - « Contacteur FERME » : pour un relais, ferme veut dire qui laisse passer. Le modele l a lu comme coupe et a demande, reseau present, « pourquoi le contacteur reste FERME alors que le bilan juge le reseau necessaire ». - Le signe de l excedent : le prompt affichait « 14 W », il a ecrit « negatif (-14 W) » — et sur un autre cas « negatif » puis « positif » au passage suivant, sur le MEME prompt. - « day_vehicle_full_idle » ne veut rien dire pour lui : il signalait une ressource refusee sans voir que le vehicule est PLEIN. - Un excedent calcule sous censure ne veut rien dire : sur le BOOST du 11/09 il concluait « pas de soleil, donc le reseau est normal » alors que les 121 W de PV sont bas PARCE QUE la consigne de 8260 W les evince. Plus une grandeur derivee de plus, `consigne - maison`, parce qu il voyait la version flagrante du defaut (SOC 20, 0 A) et manquait la version discrete (SOC 45, +2 A). Elle a d abord fait TOMBER le cas du BOOST, en annoncant « il reste 7005 W pour recharger » comme une bonne nouvelle sur une batterie a 96 % : corrigee en lui faisant dire l inverse quand il n y a rien a recharger, la question ayant deja une reponse dans le bilan. Trois defauts etaient les miens : deux fixtures decrivaient un etat que l installation ne peut pas prendre — c est le conseiller qui l a signale — et un attendu exigeait « haute » la ou l echelle de gravite du prompt ancre elle-meme cet incident sur « moyenne ». Incidents 39/40 au final, contre 23/35 au depart. Les deux cas de vrai silence restent silencieux 5/5. ⚠️ Trouve en marge : cinq helpers du conseiller sont geles depuis la specialisation, et le cablage de la cible SOC matin les lit encore — ses quatre gardes passent toutes, la fraicheur datant le RUN et non la VALEUR. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01GwpFpy2aQ2rJok6tNQSbVj --- HANDOFF.md | 147 ++ .../campagne-conseiller-2026-09-12.json | 608 ++---- ...seiller-2026-09-13-apres-4-correctifs.json | 1665 ++++++++++++++++ ...nseiller-2026-09-13-apres-4-correctifs.log | 328 ++++ ...ler-2026-09-13-apres-censure-signalee.json | 1666 ++++++++++++++++ ...ller-2026-09-13-apres-censure-signalee.log | 343 ++++ ...iller-2026-09-13-apres-marge-recharge.json | 1666 ++++++++++++++++ ...eiller-2026-09-13-apres-marge-recharge.log | 343 ++++ ...onseiller-2026-09-13-avant-correctifs.json | 1673 +++++++++++++++++ ...conseiller-2026-09-13-avant-correctifs.log | 350 ++++ ...campagne-conseiller-2026-09-13-finale.json | 1662 ++++++++++++++++ .../campagne-conseiller-2026-09-13-finale.log | 345 ++++ .../campagne-conseiller-2026-09-13.json | 1662 ++++++++++++++++ src/advisor/BUILD_PROMPT.js | 54 +- tools/campagne-conseiller.mjs | 135 +- workflows/evcs-advisor-shadow-v1.json | 2 +- 16 files changed, 12179 insertions(+), 470 deletions(-) create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.json create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.log create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.json create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.log create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.json create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.log create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.json create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.log create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-finale.json create mode 100644 docs/mesures/campagne-conseiller-2026-09-13-finale.log create mode 100644 docs/mesures/campagne-conseiller-2026-09-13.json diff --git a/HANDOFF.md b/HANDOFF.md index c5c74d5..e6bc035 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -5823,3 +5823,150 @@ prouve rien tant qu'une mutation ciblee ne l'a pas fait tomber. --- *Document mis a jour le : 11/09/2026 (~17:45) — credit solaire sur la consigne reseau, golden 89/89, valide en production* + +## 63. Session du 13/09/2026 — Le conseiller ne lisait pas mal : on lui parlait mal + +### Le harnais n avait pas suivi la specialisation +`tools/campagne-conseiller.mjs` affichait encore `strategy` et `night_target_soc`, +deux champs que l observateur n emet plus depuis le 12/09. Il « mesurait » donc +des `undefined`. Reecrit : il note desormais deux choses, et deux seulement. + +1. **La gravite tombe-t-elle dans la fourchette attendue.** Un observateur ne se + juge pas a une valeur qu il propose mais a sa capacite a SEPARER un systeme + qui derape d un systeme qui va bien. D ou des cas « incident » et des + contrefactuels « systeme calme », notes separement : un modele qui repond + toujours « moyenne » reussit les premiers et echoue les seconds. +2. **A-t-il NOMME la chose**, par des mots-cles choisis HORS du vocabulaire du + prompt. Le premier jeu comptait « 45 » comme preuve que le cas 2 etait + compris — or 45 est le SOC, ecrit tel quel dans le prompt : le mot-cle etait + satisfait par la recopie. Remplace. + +Les cas ouverts ne sont pas notes : ils se lisent. + +### Quatre defauts du PROMPT, tous trouves par la campagne +Aucun n est un defaut de raisonnement du modele. On lui donnait des phrases +ambigues et des chiffres non interpretables. + +**1. « Contacteur FERME ».** Pour un relais, ferme veut dire *qui laisse +passer*. Le modele l a lu comme *coupe* et a ecrit, reseau present : « verifier +pourquoi le contacteur reste FERME alors que le bilan juge le reseau +necessaire » — l inverse exact de la situation. La ligne dit desormais ce qu +elle veut dire : « Reseau EDF : PRESENT, il peut alimenter la maison +(contacteur ferme, AC-IN present) ». + +**2. Le signe de l excedent.** Le prompt affichait « EXCEDENT SOLAIRE : 14 W ». +Le modele a ecrit « excedent negatif (-14 W) ». Sur le cas 8 il a ecrit +« negatif (-149 W) » a un passage et « positif de 149 W » au suivant, SUR LE +MEME PROMPT : erreur de lecture, pas convention. Le signe est desormais nomme +(« +149 W, il RESTE du solaire » / « -444 W, DEFICIT reel »). + +**3. Le vocabulaire interne.** « Controleur : day_vehicle_full_idle » ne veut +rien dire pour lui : il signalait « ressource refusee alors qu un vehicule est +branche » sans voir que ce vehicule est PLEIN. Une table de traduction rend les +etats lisibles en gardant l identifiant entre parentheses. Effet mesure sur ce +cas : 0/5 → 5/5 au run suivant. + +**4. Un excedent calcule sous CENSURE ne veut rien dire.** C est la doctrine de +l installation (PV mesuree = min(ressource, conso + absorption)), et le prompt +l ignorait : sur le BOOST du 11/09 il annoncait « -1134 W, DEFICIT : la +batterie porte deja la maison » et trois passages sur cinq en concluaient « pas +de soleil, donc le reseau est normal ». Les 121 W de PV sont bas PARCE QUE la +consigne de 8260 W les evince. Quand des chargeurs se declarent brides, la +ligne le dit et previent que la ressource reelle est plus haute. + +### Une grandeur derivee de plus, et le piege qu elle a cree +Cas 2 (SOC 45, requis 50,4, reseau present, consigne 700 W, maison 700 W) : le +modele repondait « aucune » en ecrivant « le reseau comble le manque » — alors +qu une consigne egale a la charge de la maison ne laisse **rien** pour remonter +la batterie. Meme mecanisme que le cas 1, ou il voit juste parce que le SOC est +a 20 et le courant a 0 : il voit la version flagrante et manque la version +discrete. On lui donne donc la soustraction, comme pour l excedent solaire : +`consigne − maison hors voiture`. Cas 2 : 0/5 → 5/5, deux runs de suite. + +⚠️ **Mais cette ligne a fait tomber le cas 7 de 5/5 a 2/5**, et c est +instructif. Sur le BOOST elle annoncait « il reste 7005 W pour RECHARGER la +batterie » — presente comme rassurant, sur le cas meme ou cette consigne est la +faute, et avec une batterie a 96 % qui n a rien a recharger. Corrige en faisant +dire a la meme grandeur l inverse quand il n y a rien a recharger, la question +« la batterie doit-elle monter ? » ayant deja une reponse calculee dans le +systeme — le SOC requis par le bilan, donc aucun seuil nouveau : +« la batterie n a PAS besoin de monter (SOC 96 %, bilan 62 %), donc ces 7005 W +de demande reseau n ont aucune destination : ils ne peuvent que remplacer du +solaire ». + +### TROIS defauts etaient les miens, pas ceux du modele +- **Deux fixtures incoherentes** : cas 5 et 6 portaient `vehicle_connected: on` + avec l etat controleur reste a `vehicle_not_connected`. C est le conseiller + qui l a signale, et il avait raison — mon scenario decrivait un etat que l + installation ne peut pas prendre. +- **Un attendu qui contredisait le prompt** : j exigeais « haute » sur le BOOST + alors que l echelle de gravite ancre elle-meme cet incident sur « moyenne ». + Le modele repondait moyenne 5 fois sur 5 : il appliquait ma consigne et je le + notais contre elle. +- **Un attendu « calme » sur le cas 6** (ressource refusee, vehicule branche a l + arret) : signaler est le bon comportement d un observateur. Mon attendu venait + de la decision du controleur, pas de ce qu il y a a voir. + +### ⚠️ NE PAS REGLER SUR UN SEUL RUN DE CINQ PASSAGES +J ai passe une partie de la session a poursuivre du bruit. Avec cinq tirages, un +3/5 et un 5/5 ne se distinguent pas (erreur type ~0,22). Trois runs consecutifs +partageant les memes attendus donnent quinze passages par cas et une image +stable — c est ce qu il faut lire. `scratchpad/agreger.mjs` fait le cumul. + +### Resultats +Cinq runs de cinq passages. Les runs 2 a 4 partagent les memes attendus et se +cumulent (quinze passages par cas) ; le run 5 mesure la configuration finale. + +| cas | avant | cumul r2-r4 | final | +|---|---|---|---| +| oscillation du contacteur (12/09) | 5/5 | **15/15** | 5/5 | +| pointe de cuisson, parc a 3 A de sa limite | 2/5 | 15/15 | **5/5** | +| nuit bloquee, reseau present sans recharge | 5/5 | 15/15 | 5/5 | +| bilan degrade | 5/5 | 15/15 | 5/5 | +| SOC sous le requis, session marquee terminee | 1/5 | 10/15 | **5/5** | +| BOOST qui evince le solaire (11/09) | 0/5 | 9/15 | **5/5** | +| vehicule plein, ne pas relancer | 0/5 | 10/15 | — | +| nuit couverte, rien a faire (SILENCE) | 5/5 | 15/15 | 5/5 | +| contacteur stable 90 min (SILENCE) | 5/5 | 14/15 | 5/5 | + +Final : **incidents 39/40**. Les deux cas de VRAI silence restent silencieux +5/5 tous runs confondus. + +### ⚠️ Ce que le score « systeme calme » mesurait vraiment +Deux cas y sont tombes a 0/5 en fin de campagne — le soir en deficit et le +vehicule plein — et il ne faut PAS les lire comme des fausses alertes. Leurs +textes sont defendables : « le bilan dit reseau necessaire OUI mais le +contacteur reste ouvert », « la ressource solaire est refusee faute de preneur, +verifier si la Jeep peut encore absorber ». Mon etiquette « calme » repondait a +la question *le controleur a-t-il raison*, alors que l observateur repond a *y +a-t-il quelque chose a voir*. Ce sont deux questions differentes, et seuls les +cas 3 et 16 (rien du tout a voir) relevent du vrai silence. + +Question a trancher avec le proprietaire, parce qu elle lui appartient : une +batterie pleine qui refuse du solaire avec une voiture branchee merite-t-elle un +signalement toutes les quinze minutes ? C est lui qui lira les notifications. + +### Trace des observations (meme session) +Les helpers du conseiller sont ecrases toutes les quinze minutes : un +signalement grave emis a 3 h du matin avait disparu au reveil, et rien dans la +memoire du projet n en gardait trace. Table `observation` ajoutee au service d +historisation (clef = horodatage du marqueur du conseiller, donc idempotente), +lisible par `node tools/enquete.mjs observations [heures] [gravite]`, qui ne +montre par defaut que ce qui a ete signale et compte a part les cycles calmes. + +### ⚠️ CINQ HELPERS DU CONSEILLER SONT GELES, ET UN CABLAGE LES LIT ENCORE +Depuis la specialisation du 12/09 06:15, `evcs_advisor_night_target_soc` (55), +`_current_max_a`, `_strategy`, `_ev_charge_tonight` et `_divergence` ne sont +plus ecrits. Le cablage de la cible SOC matin (§20, §39) les lit toujours, et +**ses quatre gardes passent** : toggle, statut `ok`, fraicheur — qui porte sur +`_last_run`, frais puisque le conseiller tourne — et bornage [22, 90], que 55 +traverse. Si le toggle `evcs_advisor_apply_night_target` est active, la cible de +la nuit devient un 55 fige d hier matin. + +La garde de fraicheur ne protege donc pas ce qu elle croit proteger : elle date +le RUN, pas la VALEUR. Le toggle est OFF aujourd hui. Le cablage est devenu du +code mort qui ne peut que se tromper — a retirer (trois scenarios golden), mais +c est une decision du proprietaire, §20 etant un jalon qu il avait valide. + +--- +*Document mis a jour le : 13/09/2026 — campagne conseiller : quatre defauts du prompt corriges, incidents 39/40, table `observation`* diff --git a/docs/mesures/campagne-conseiller-2026-09-12.json b/docs/mesures/campagne-conseiller-2026-09-12.json index 880cc43..d82c52c 100644 --- a/docs/mesures/campagne-conseiller-2026-09-12.json +++ b/docs/mesures/campagne-conseiller-2026-09-12.json @@ -22,38 +22,24 @@ }, "passages": [ { - "constat": "SOC 20% (plancher), bilan exige 59.1% pour couvrir la nuit. Réseau fermé, production nulle. Manque de 3.4 kWh à combler avant 09h.", + "constat": "SOC 20 % (plancher), reseau ferme, excedent -612 W. Bilan demande 59.1 % pour le matin. Manque de stockage critique.", "gravite": "haute", - "ce_qui_cloche": "Le contacteur EDF est FERMÉ alors que le bilan indique explicitement 'réseau jugé nécessaire : OUI'. La batterie est au plancher de sécurité et ne peut pas couvrir les 3.13 kWh requis jusqu'au croisement solaire.", - "piste": "Vérifier pourquoi l'actionneur 'Battery / Grid Hysteresis Fix V1' n'a pas ouvert le contacteur pour permettre la recharge réseau. Le système risque un black-out domestique ou une décharge forcée sous le seuil de sécurité si la consommation persiste.", + "ce_qui_cloche": "La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh sur le reseau et une cible de 59.1 %. Le systeme ne charge pas la nuit.", + "piste": "Verifier pourquoi le contacteur reste ferme ou si la consigne de 700 W bloque la charge nocturne. La marge de decharge est a 0 %, risque de coupure.", "confidence": 0.95 }, { - "constat": "SOC 20% (plancher), bilan exige 59.1% pour couvrir la nuit. Réseau fermé, production nulle. Manque de 3.4 kWh à acheter.", + "constat": "SOC 20 % (plancher), réseau fermé, déficit de 3.13 kWh à couvrir avant 9h. Le bilan exige le réseau mais il est coupé.", "gravite": "haute", - "ce_qui_cloche": "La batterie est au plancher de sécurité (20%) alors que le réseau est disponible et que le bilan identifie un besoin critique de recharge avant l'aube. Le système ne charge pas.", - "piste": "Vérifier pourquoi le contacteur reste ouvert ou si la consigne de puissance réseau (700 W) bloque la recharge nécessaire. Le propriétaire doit probablement ouvrir manuellement le contacteur ou ajuster les seuils d'hystérésis.", + "ce_qui_cloche": "Le contacteur EDF reste FERMÉ alors que le bilan identifie un besoin réseau de 3.4 kWh pour atteindre la cible SOC de 59.1 %. La batterie est au plancher de sécurité (20 %) et ne peut pas couvrir seule le déficit nocturne/matinale sans tomber sous les seuils critiques ou manquer l'énergie solaire du matin.", + "piste": "Vérifier pourquoi le 'Battery / Grid Hysteresis Fix V1' n'a pas ouvert le contacteur malgré le signal 'réseau jugé nécessaire : OUI'. Un script tiers ou une condition d'hystérésis bloquante empêche probablement la bascule vers le réseau.", "confidence": 0.95 }, { - "constat": "SOC 20% (plancher), bilan exige 59.1% pour couvrir la nuit, reseau ferme mais excedent solaire negatif.", + "constat": "SOC 20% au plancher, réseau fermé, déficit de 3.13 kWh à couvrir avant 9h. Le bilan exige le réseau mais il est coupé.", "gravite": "haute", - "ce_qui_cloche": "La batterie est au plancher de securite alors que le systeme doit traverser un deficit de 3.13 kWh avant 09h sans production PV ni charge vehicule.", - "piste": "Verifier pourquoi le contacteur reste ferme et si la consigne de 700 W permet une recharge effective ou si elle est bloquee par les seuils fixes du code.", - "confidence": 0.95 - }, - { - "constat": "SOC 20% (plancher), bilan exige 59.1% pour le matin. Réseau fermé, déficit de 3.4 kWh à couvrir avant 9h.", - "gravite": "haute", - "ce_qui_cloche": "Le contacteur EDF est FERMÉ alors que le bilan indique explicitement 'réseau jugé nécessaire : OUI'. La batterie ne peut pas atteindre la cible de 59.1 % sans importation réseau.", - "piste": "Vérifier pourquoi l'automatisation n'a pas ouvert le contacteur. Le propriétaire = Battery/Grid Hysteresis Fix V1 ou un script bloque-t-il l'ouverture ? Forcer l'ouverture manuellement si possible.", - "confidence": 0.95 - }, - { - "constat": "SOC 20% (plancher), bilan exige 59.1% pour couvrir la nuit. Réseau fermé, excedent -612W. Manque de stockage critique.", - "gravite": "haute", - "ce_qui_cloche": "La batterie est au plancher de securite alors que le systeme doit traverser un deficit de 3.13 kWh avant 09h sans reseau disponible.", - "piste": "Verifier pourquoi le contacteur EDF reste ferme malgre le signal 'reseau juge necessaire: OUI'. Suspect : Battery / Grid Hysteresis Fix V1 ou verrou hysteresis bloque l'ouverture.", + "ce_qui_cloche": "Le contacteur EDF reste FERMÉ alors que le bilan indique 'réseau jugé nécessaire: OUI'. La batterie ne peut pas atteindre la cible de 59.1% sans recharge réseau, ce qui entraînera un déficit matinal payé au plein tarif ou une panne de service.", + "piste": "Vérifier pourquoi le propriétaire du contacteur (Battery / Grid Hysteresis Fix V1) n'a pas basculé en ouverture pour permettre la recharge réseau. Un script tiers ou un verrou hysteresis bloquant pourrait empêcher l'actionneur d'agir malgré la demande du bilan.", "confidence": 0.95 } ] @@ -90,32 +76,18 @@ "confidence": 0.95 }, { - "constat": "Nuit, réseau fermé. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour couvrir le déficit nocturne identifié par le bilan.", - "gravite": "faible", - "ce_qui_cloche": "Le système consomme du réseau (700 W) alors que la batterie est sous la cible de sécurité (45% < 50.4%) et qu'un déficit de 1.1 kWh est prévu avant l'aube.", - "piste": "Vérifier si le contacteur EDF reste ouvert pendant les heures creuses (01:24-07:24) pour recharger la batterie vers la cible de 50.4% avant le pic du matin.", - "confidence": 0.9 - }, - { - "constat": "Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4% pour 9h. Manque de stockage identifié.", - "gravite": "faible", - "ce_qui_cloche": "Le bilan signale un manque de stockage de 6.8 kWh et une traversée déficitaire de 2 kWh cette nuit, alors que le SOC actuel (45%) est inférieur à la cible prudente (57%).", - "piste": "Vérifier si la stratégie 'auto_solar_plus' permet d'augmenter la consigne de charge réseau pendant les heures creuses actuelles pour atteindre la cible prudente avant l'aube.", - "confidence": 0.9 - }, - { - "constat": "Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4%, marge decharge 100A (plafond). Voiture branchée mais excedent negatif.", + "constat": "Nuit, PV 0 W. Batterie 45 % (cible 50.4 %). Réseau fermé pour couvrir le déficit de 700 W. Voiture branchée mais non chargée.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", - "confidence": 0.95 + "confidence": 1 }, { - "constat": "Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4%, marge decharge 100A (plafond). Voiture branchée mais excedent negatif.", + "constat": "Nuit, PV 0 W. Batterie 45 % (cible 50.4 %). Réseau fermé pour couvrir le déficit de 700 W. Voiture branchée mais non chargée.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", - "confidence": 0.95 + "confidence": 1 } ] }, @@ -140,39 +112,25 @@ }, "passages": [ { - "constat": "Batterie 70% (-12A), PV 0W, maison 612W. Bilan demande 59.1% pour 09h. Cible appliquee 59.1%. Coherent.", + "constat": "Batterie 70 % (cible 59.1 %), décharge -12 A, réseau ouvert. Bilan cohérent : 3.13 kWh à couvrir avant 09h.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.98 }, { - "constat": "Batterie 70% (SOC cible 59.1%), décharge -12A, PV 0W, maison 612W. Bilan cohérent : réseau non requis pour la nuit.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie 70% (SOC cible 59.1%), décharge -12A, PV 0W, maison 612W. Bilan cohérent : réseau non requis.", + "constat": "Nuit, PV 0 W. Batterie se decharge (-12 A) pour couvrir la maison (612 W). Contacteur ouvert. Cible SOC 59.1 % coherente avec le bilan.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.98 }, { - "constat": "Batterie 70% (-12A), PV 0W, maison 612W. Bilan demande 59.1% pour 09h. Cible appliquee 59.1%. Coherent.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.98 - }, - { - "constat": "Batterie 70% (SOC requis 59.1%), PV nul, contacteur ouvert. Le systeme est en autoconsommation pure et coherent avec le bilan.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.98 + "constat": "SOC 70% > cible 59.1%. Decharge -12A (4,8kW) incoherente avec charge maison de 612W. PV a 0W.", + "gravite": "haute", + "ce_qui_cloche": "La batterie se vide a pleine puissance (-12A) alors que la consommation est faible et qu'il n'y a pas de vehicule branche. Le courant ne correspond pas a la charge mesuree.", + "piste": "Verifier si un ecrivain externe (scripts ou EVCS) force le courant de decharge ou si le contacteur EDF bascule repetitivement (oscillation).", + "confidence": 0.9 } ] }, @@ -200,38 +158,24 @@ }, "passages": [ { - "constat": "Bilan exige 88% SOC pour demain, batterie a 55%. Contacteur ouvert. Manque de stockage identifie (8.2 kWh).", + "constat": "Batterie a 55% (-18A), reseau ouvert. Bilan exige 88-97% pour demain matin (11h). Manque de stockage critique identifie.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur EDF est ouvert alors que le bilan juge le reseau necessaire (5.1 kWh) et que la batterie ne peut pas couvrir le deficit nocturne/matinale sans tomber sous le plancher ou manquer l'objectif de 88%.", + "piste": "Verifier pourquoi le contacteur reste ouvert : conflit avec 'Battery / Grid Hysteresis Fix V1' ou blocage par un script/automate qui ignore le signal du bilan energetique.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55% (-18A), reseau ouvert. Bilan exige 88-97% pour demain, manque 8.2 kWh. Consigne reseau 700W limite la recharge nocturne.", "gravite": "moyenne", - "ce_qui_cloche": "Le systeme ne charge pas la batterie alors que le bilan indique un besoin critique de reseau et un manque de stockage.", - "piste": "Verifier pourquoi le contacteur reste ouvert ou si la consigne de 700W bloque la charge. Le controleur 'Bloque' empeche-t-il l'action ?", + "ce_qui_cloche": "Le contacteur reste ouvert alors que le bilan identifie un besoin de 5.1 kWh du reseau et une cible de 88%. La consigne de 700W est trop basse pour combler le deficit avant 11h.", + "piste": "Verifier pourquoi le contacteur ne se ferme pas (seuil hysteresis ou blocage EVCS). Augmenter la consigne de puissance reseau pour permettre la recharge en heures creuses.", "confidence": 0.9 }, { - "constat": "SOC 55% vs besoin 88-97%. Manque 8.2 kWh. Contacteur ouvert, reseau juge necessaire (5.1 kWh).", - "gravite": "haute", - "ce_qui_cloche": "Le systeme ne charge pas la batterie depuis le reseau alors que le bilan indique un deficit critique pour demain matin.", - "piste": "Verifier pourquoi le contacteur reste ouvert : conflit avec EVCS Surplus Controller ou seuil de hysteresis bloque la fermeture.", - "confidence": 0.95 - }, - { - "constat": "SOC 55% vs besoin 88-97%. Manque 8.2 kWh. Contacteur ouvert, reseau juge necessaire (5.1 kWh).", - "gravite": "haute", - "ce_qui_cloche": "Le systeme ne charge pas la batterie alors que le bilan exige le reseau pour couvrir le deficit nocturne et matinal.", - "piste": "Verifier pourquoi le contacteur reste ouvert : conflit entre EVCS Surplus Controller V2.6 et Battery/Grid Hysteresis Fix V1 ?", - "confidence": 0.95 - }, - { - "constat": "SOC 55% vs besoin 88-97%. Manque 8.2 kWh. Contacteur ouvert, reseau juge necessaire (5.1 kWh).", - "gravite": "haute", - "ce_qui_cloche": "Le systeme ne charge pas la batterie alors que le bilan exige le reseau pour couvrir le deficit nocturne et matinal.", - "piste": "Verifier pourquoi le contacteur reste ouvert : conflit avec EVCS Surplus Controller ou seuil de hysteresis bloque la fermeture.", - "confidence": 0.95 - }, - { - "constat": "SOC 55% vs besoin 88-97%. Manque 8.2 kWh. Contacteur ouvert, reseau juge necessaire (5.1 kWh).", - "gravite": "haute", - "ce_qui_cloche": "Le systeme ne charge pas la batterie alors que le bilan exige le reseau pour couvrir le deficit nocturne et matinal.", - "piste": "Verifier pourquoi le contacteur reste ouvert ou si l'automatisation bloque la commutation vers EDF.", + "constat": "Batterie a 55% (-18A), reseau ouvert. Bilan exige 88-97% pour demain, manque 8.2 kWh. Consigne reseau 700W bloque la charge.", + "gravite": "moyenne", + "ce_qui_cloche": "Le contacteur reste ouvert alors que le bilan identifie un besoin de 5.1 kWh du reseau. La consigne de 700W evite la charge nocturne gratuite (HC) et force l'achat au plein tarif le matin.", + "piste": "Verifier pourquoi le Battery/Grid Hysteresis Fix V1 ne ferme pas le contacteur pour charger vers la cible de 85%. La marge de decharge (82A) est suffisante pour accepter cette charge sans fragiliser le parc.", "confidence": 0.95 } ] @@ -260,39 +204,25 @@ }, "passages": [ { - "constat": "Batterie a 94% (marge 12%), PV brident, excedent -444W. Bilan demande 99.7% pour demain matin.", + "constat": "Batterie a 94 % (marge parc 12 %) avec excedent solaire negatif (-444 W) et voiture branchee. Le bilan exige 99,7 % pour demain matin.", "gravite": "faible", - "ce_qui_cloche": "Le bilan identifie un manque de stockage de 6.8 kWh et juge le reseau necessaire, mais la batterie est deja proche du plafond de charge (88A restants).", - "piste": "Verifier si la consigne de recharge reseau est activee pour combler le deficit avant le pic du matin, sans depasser la limite de protection du parc.", - "confidence": 0.9 - }, - { - "constat": "Batterie à 94% (marge de décharge faible), excédent solaire négatif (-444 W) et véhicule branché. Le bilan exige 100% pour demain.", - "gravite": "faible", - "ce_qui_cloche": "Le contrôleur affiche 'vehicle_not_connected' alors que le véhicule est physiquement branché, empêchant l'utilisation de la marge restante ou la gestion fine du surplus refusé.", - "piste": "Vérifier la communication CAN/V2C entre la borne EVCS et le système Victron pour corriger l'état de connexion du véhicule.", + "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que la VW est branchee, empechant l'utilisation de l'excedent ou la gestion fine du SOC cible.", + "piste": "Verifier le detecteur de presence vehicule du EVCS Surplus Controller V2.6 pour qu'il reconnaisse la charge en cours.", "confidence": 0.95 }, { - "constat": "Batterie à 94% (marge de décharge faible), excédent solaire négatif (-444 W) et contacteur EDF ouvert. Le bilan indique un besoin de réseau.", + "constat": "Batterie a 94 % (marge decharge 12 %), excedent solaire negatif (-444 W). Le bilan exige 99.7 % pour demain matin, mais le parc est quasi plein.", "gravite": "faible", - "ce_qui_cloche": "Le contrôleur affiche 'vehicle_not_connected' alors que le véhicule est branché, mais l'excédent négatif justifie la non-charge. L'écart entre le SOC actuel (94%) et le besoin du bilan (100%) crée une tension sur la marge de décharge.", - "piste": "Vérifier pourquoi le contacteur reste ouvert malgré le verdict 'réseau nécessaire' du bilan. Surveiller la marge de décharge (88A restants) pour éviter la saturation du parc si la charge continue.", - "confidence": 0.9 + "ce_qui_cloche": "Le systeme ne peut pas stocker l'energie necessaire au bilan (manque 6.8 kWh) car la batterie est proche du plafond et la production est insuffisante pour charger davantage sans evincer la maison.", + "piste": "Verifier si la consigne reseau de 700 W permet d'absorber un surplus eventuel ou si la limite de charge du parc bloque la progression vers les 100 % requis par le bilan.", + "confidence": 0.95 }, { - "constat": "Batterie a 94% (marge decharge 12%), PV brident, excedent solaire negatif (-444 W), voiture branchee mais non chargee.", + "constat": "Batterie a 94 % (marge parc 12 %), excedent solaire negatif (-444 W) avec voiture branchee. Bilan demande 99.7 % pour demain.", "gravite": "faible", - "ce_qui_cloche": "Le controleur EVCS est en mode 'vehicle_not_connected' alors que le vehicule est detecte comme BRANCHE. Il ne pilote donc pas la charge sur surplus, ce qui est coherent avec l'excedent negatif actuel mais bloque toute opportunite future si le surplus redevient positif.", - "piste": "Verifier pourquoi le controleur EVCS Surplus Controller V2.6 ne detecte pas la connexion du vehicule VW ou s'il est volontairement force en mode inactif.", - "confidence": 0.9 - }, - { - "constat": "Batterie a 94% (marge 12%), PV 758W < Maison 1202W. Excedent solaire negatif (-444W). Voiture branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "Le bilan exige 99.7% de SOC pour demain matin, mais la batterie est a 94%. La marge restante (88A) est faible et le systeme ne peut pas charger plus sans risquer la saturation du parc ou l'arret des chargeurs.", - "piste": "Verifier si le controleur EVCS bloque la charge voiture a cause de l'excedent negatif (correct), mais s'assurer que la strategie 'auto_solar_plus' n'essaye pas de forcer une charge batterie qui depasserait les limites declarees du parc (100A).", - "confidence": 0.9 + "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que le vehicule est detecte comme BRANCHE. Incoherence d'etat entre detection et logique de pilotage.", + "piste": "Verifier pourquoi l'EVCS Surplus Controller V2.6 ne detecte pas la presence du vehicule ou si un script externe force cet etat, empechant une charge eventuelle sur surplus.", + "confidence": 0.85 } ] }, @@ -323,39 +253,25 @@ }, "passages": [ { - "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond 0 A). Voiture branchee mais non chargee. Bilan exige 100 % SOC pour demain.", + "constat": "Batterie pleine (94%), PV bridés (6/6), excédent quasi nul (14 W). Le bilan exige 99.7% pour demain, mais le parc est au plafond de charge.", "gravite": "moyenne", - "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que la voiture est physiquement branchee. L'excedent solaire est negatif, empechant toute charge gratuite de l'excedent PV refuse par le systeme.", - "piste": "Verifier pourquoi le detecteur de vehicule du Surplus Controller ne voit pas la VW. Si le bilan est exact, il faut activer la charge reseau (EDF) pour atteindre le SOC cible avant la nuit.", - "confidence": 0.9 - }, - { - "constat": "Batterie pleine (94%), PV bridee (6/6), excedent negligeable (14W). Bilan demande 100% SOC pour demain, reseau requis.", - "gravite": "moyenne", - "ce_qui_cloche": "Le systeme bride le PV alors que la batterie est a 94% et que le bilan identifie un manque de stockage de 6.8 kWh necessaire au matin.", - "piste": "Verifier pourquoi l'EVCS ne consomme pas l'excedent refuse par la batterie ou si le contacteur EDF n'est pas ferme pour charger via le reseau.", + "ce_qui_cloche": "Le bilan identifie un manque de stockage de 6.8 kWh et juge le réseau nécessaire (4.9 kWh), mais la batterie étant saturée, l'énergie solaire est perdue (bridée) au lieu d'être stockée ou utilisée.", + "piste": "Vérifier si la consigne de puissance réseau (700 W) permettrait d'absorber cet excédent résiduel ou si la stratégie 'auto_solar_plus' doit prioriser la voiture sur ce surplus marginal avant la nuit.", "confidence": 0.95 }, { - "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond), contacteur ouvert. Voiture branchee mais non chargee.", + "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond 100 A). Voiture branchee mais non chargee.", "gravite": "faible", - "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que le vehicule est detecte comme BRANCHE. L'excedent negatif empeche la charge, ce qui est coherent, mais l'etat du controleur est incoherent.", - "piste": "Verifier pourquoi le Surplus Controller V2.6 ne detecte pas le vehicule branche et bloque la charge sur un excedent negatif au lieu de laisser la batterie se recharger via le reseau si necessaire.", + "ce_qui_cloche": "La production solaire est refusee alors que la voiture est branchee, mais l'excedent net est negatif. Le systeme protege correctement le parc et la batterie.", + "piste": "Verifier si la strategie 'auto_solar_plus' permet de charger la voiture sur reseau en heures creuses pour eviter les pertes futures, mais rien a corriger immediatement.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), excedent solaire negligeable (14 W). Le bilan exige 100 % pour demain.", + "gravite": "moyenne", + "ce_qui_cloche": "La production est refusee car la batterie est pleine, mais le bilan indique un besoin de reseau (4.9 kWh) et une cible de 100 %. L'excedent ne permet pas de charger la voiture sans vider la reserve.", + "piste": "Verifier si la consigne reseau (700 W) peut etre augmentee pour absorber l'energie refusee ou si le systeme attend bien le basculement sur EDF pour couvrir le deficit nocturne.", "confidence": 0.85 - }, - { - "constat": "PV bride (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond), contacteur ouvert. Voiture branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que le vehicule est detecte comme BRANCHE. L'excedent negatif empeche la charge, ce qui est coherent avec la regle de securite.", - "piste": "Verifier pourquoi l'etat du vehicule n'est pas reconnu par le controleur EVCS pour permettre une eventuelle charge sur surplus si celui-ci devient positif.", - "confidence": 0.95 - }, - { - "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond), contacteur ouvert. Voiture branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que le vehicule est detecte comme BRANCHE. L'excedent negatif empeche la charge, ce qui est coherent, mais l'etat du controleur est incoherent.", - "piste": "Verifier pourquoi le Surplus Controller V2.6 ne detecte pas le vehicule branche et bloque la charge sur un excedent negatif.", - "confidence": 0.95 } ] }, @@ -396,39 +312,25 @@ }, "passages": [ { - "constat": "Batterie a 96% (plafond), PV bridee, voiture chargee. Bilan demande reseau pour couvrir deficit nocturne.", - "gravite": "faible", - "ce_qui_cloche": "Le systeme force le reseau (force_grid_now) alors que la batterie est pleine et que la production est refusee. C'est coherent avec le bilan qui identifie un manque de stockage.", - "piste": "Verifier que la consigne de puissance reseau (8260 W) ne depasse pas l'abonnement ou les limites du parc si la voiture continue de charger.", + "constat": "Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif (-1134W).", + "gravite": "moyenne", + "ce_qui_cloche": "La voiture consomme de l'energie qui force la production PV a se brider et vide la batterie au lieu de stocker le surplus gratuit.", + "piste": "Verifier si la strategie 'force_grid_now' est coherente avec un excedent negatif : charger la voiture maintenant coute du reseau ou du stockage, alors que les chargeurs sont satures.", "confidence": 0.95 }, { - "constat": "Batterie a 96% (plafond), PV bridee, voiture chargee a 28A. Excedent solaire negatif (-1134 W) mais ressource refusee.", - "gravite": "faible", - "ce_qui_cloche": "Le controleur force le reseau alors que la production est bridee et que la batterie est pleine. La voiture consomme l'excedent disponible via le reseau, ce qui est coherent avec la strategie 'force_grid_now' pour proteger le parc a 100% de sa marge.", - "piste": "Verifier si la transition vers la consommation du surplus PV (sans reseau) se fera automatiquement des que la voiture aura fini ou que la production augmentera, ou si un script bloque le passage en mode surplus.", + "constat": "Batterie a 96% (plafond), PV bridee (121W) alors que la maison consomme 7.7kW. Le reseau est force pour eviter l'oscillation du contacteur.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", "confidence": 0.95 }, { "constat": "Batterie a 96% (plafond), PV bridee, voiture chargee. Bilan demande reseau pour couvrir le deficit nocturne.", - "gravite": "faible", - "ce_qui_cloche": "Le systeme est coherent : la batterie est pleine et ne peut plus stocker l'excident solaire refuse par les chargeurs brides. Le recours au reseau est necessaire car le stockage est sature.", - "piste": "Verifier que la consigne de puissance reseau (8260 W) permet bien d'absorber le surplus sans declencher de coupure ou de surcharge inattendue.", - "confidence": 0.95 - }, - { - "constat": "Batterie a 96 % (plafond), PV bridee, voiture chargee. Bilan demande reseau pour couvrir le deficit nocturne.", - "gravite": "faible", - "ce_qui_cloche": "Le systeme est coherent : la batterie est pleine et ne peut plus stocker l'excident solaire refuse par les chargeurs brides. Le recours au reseau est necessaire car le stockage est sature.", - "piste": "Verifier que la consigne de puissance reseau (8260 W) couvre bien la somme des charges actuelles sans declencher de coupure intempestive.", - "confidence": 0.95 - }, - { - "constat": "Batterie a 96 % (plafond), PV bridee, voiture chargee. Bilan demande reseau pour couvrir le deficit nocturne.", - "gravite": "faible", - "ce_qui_cloche": "Le systeme force le reseau (force_grid_now) car la batterie est pleine et le PV bride. C'est coherent avec la protection du parc et l'absence d'excedent solaire.", - "piste": "Verifier que la cible SOC matin de 35 % soit bien alignee avec le besoin reel de 62-70 % indique par le bilan si on veut eviter le plein tarif demain matin.", - "confidence": 0.95 + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est pleine et bloque la production solaire (bridee). Le bilan indique un besoin de reseau (1.4 kWh) mais le systeme reste en mode 'force_grid_now' sans que le contacteur ne bascule explicitement ou que la consigne ne soit ajustee pour absorber ce manque specifique identifie par le bilan.", + "piste": "Verifier si le controleur EVCS Surplus Controller V2.6 ou l'automatisation ajuste correctement la consigne de puissance reseau pour permettre l'achat des 1.4 kWh identifies comme necessaires par le bilan, maintenant que la batterie est saturee.", + "confidence": 0.85 } ] }, @@ -462,39 +364,25 @@ }, "passages": [ { - "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97% (plafond), contacteur ouvert. Jeep branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "Le controleur 'day_vehicle_full_idle' bloque la charge EV alors que le bilan indique un manque de stockage et une production refusee. L'excedent negatif justifie techniquement l'absence de charge, mais la ressource PV est perdue.", - "piste": "Verifier si la strategie 'auto_solar_plus' doit autoriser la charge EV sur le reseau (heures creuses ou tarif bas) pour absorber la production refusee, ou si le blocage est volontaire pour proteger le parc (SOC>80%).", - "confidence": 0.9 - }, - { - "constat": "PV bride (6/6) avec excedent negatif (-149 W). Batterie a 97% (plafond), contacteur ouvert. Jeep branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "Ressource solaire refusee (bridee) alors que la batterie est pleine et le reseau coupe. La voiture ne consomme pas cet excedent gratuit.", - "piste": "Verifier si l'EVCS Surplus Controller V2.6 autorise la charge sur excedent negatif ou s'il attend un surplus positif. Le systeme laisse de l'energie gratuite au sol.", - "confidence": 0.85 - }, - { - "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97 % (plafond), contacteur ouvert. Jeep branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "La production est refusee alors que la voiture est branchee, mais l'excedent solaire est negatif : charger la voiture viderait la batterie au detriment de la maison.", - "piste": "Verifier si le controleur EVCS bloque correctement la charge vehicule en cas d'excedent negatif pour proteger l'autoconsommation.", + "constat": "PV bride (6/6) avec excedent positif de 149 W et vehicule branche. La ressource solaire refusee n'est pas absorbee par la voiture.", + "gravite": "moyenne", + "ce_qui_cloche": "Le controleur 'day_vehicle_full_idle' bloque la charge EV alors que l'excedent solaire est positif et que les chargeurs se brident. L'energie gratuite est perdue au lieu d'etre stockee dans le vehicule.", + "piste": "Verifier pourquoi le Surplus Controller V2.6 ne declenche pas la charge sur un excedent de 149 W. Le seuil de declenchement ou la logique du mode 'idle' est probablement trop restrictif.", "confidence": 0.95 }, { - "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97% (plafond), contacteur ouvert. Jeep branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "Le controleur 'day_vehicle_full_idle' bloque la charge EV alors que l'excedent solaire est negatif et que la batterie est pleine. La production refusee n'est pas absorbee par le vehicule ni le reseau.", - "piste": "Verifier si la strategie 'auto_solar_plus' autorise la charge EV sur excedent negatif quand la batterie est saturee, ou si un seuil de SOC bloque erroneement l'absorption du surplus PV.", + "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97% (plafond), contacteur ouvert. Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee alors que la voiture est branchee et que le bilan indique un deficit nocturne de 2 kWh. L'excedent negatif empeche la charge EVCS, mais la ressource existe (bridee).", + "piste": "Verifier si l'EVCS Surplus Controller V2.6 bloque la charge a cause du SOC eleve ou de la consigne reseau. Considerer une charge minimale pour absorber l'excedent refuse avant la nuit.", "confidence": 0.85 }, { - "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97% (plafond), contacteur ouvert. Jeep branchee mais non chargee.", - "gravite": "faible", - "ce_qui_cloche": "Le controleur 'day_vehicle_full_idle' bloque la charge EV alors que l'excedent solaire est negatif et que la batterie est pleine. La production refusee n'est pas absorbee par le vehicule ni le reseau.", - "piste": "Verifier si la strategie 'auto_solar_plus' permet de charger la Jeep sur le surplus PV meme si l'excedent net est faible/negatif, ou si le blocage est un comportement attendu pour proteger la batterie au SOC eleve.", - "confidence": 0.9 + "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97 % (plafond), contacteur ouvert. Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "Ressource solaire refusee (bridee) alors que la voiture est branchee et que le bilan indique un deficit nocturne de 2 kWh. L'excedent negatif empeche la charge EVCS, mais la production perdue represente une opportunite manquee gratuite.", + "piste": "Verifier si l'EVCS Surplus Controller V2.6 permet une charge minimale ou si la consigne de puissance reseau (700 W) bloque l'absorption de l'excedent par la voiture. Considerer fermer le contacteur pour absorber le surplus via la voiture si la marge du parc le permet sans fragilisation.", + "confidence": 0.85 } ] }, @@ -520,38 +408,24 @@ }, "passages": [ { - "constat": "Batterie a 79% (marge parc 3A), decharge -97A. Excedent solaire negatif (-4624W). Bilan demande 5.1kWh pour demain matin.", - "gravite": "faible", - "ce_qui_cloche": "Le systeme decharge la batterie au maximum (-97A) alors que le bilan indique un besoin de 5.1kWh pour demain et une marge parc critique (3A restants). La cible SOC de 35% est incoherente avec le besoin de 62-70%.", - "piste": "Verifier pourquoi la consigne de decharge n'est pas limitee par la reserve necessaire au bilan (5.1kWh). Le controleur EVCS ou le script de hysteresis force-t-il la decharge malgre le manque de stockage identifie ?", + "constat": "Batterie a 79 % (plafond 80 %) avec marge de decharge quasi nulle (3 A). Consigne reseau 700 W incoherente avec contacteur ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau est fixee a 700 W alors que le contacteur est ouvert. Si un ecrivain non autorise force la fermeture, la batterie ne peut pas absorber l'ecart sans depasser sa limite de charge ou declencher une protection.", + "piste": "Verifier qui ecrit sur la consigne de puissance reseau (proprietaire : Battery / Grid Hysteresis Fix V1) et pourquoi elle n'est pas alignee sur l'etat du contacteur.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 79% (plafond parc) avec decharge -97A. Excedent solaire negatif (-4624W). Bilan demande 62% pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est bloquee au plafond du parc (97% de la marge) et se decharge fortement. Le bilan indique un besoin de reseau (OUI) mais le contacteur est ouvert, ce qui force la maison a puiser dans la reserve solaire critique pour demain matin.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan juge le reseau necessaire. L'ecrivain 'Battery / Grid Hysteresis Fix V1' ou un script bloque-t-il la fermeture ? Risque de manquer de SOC (62%) demain matin si la nuit est deficitante.", "confidence": 0.85 }, { "constat": "Batterie a 79% (marge parc 3A), decharge -97A. Excedent solaire negatif (-4624W). Bilan demande 62% pour demain matin.", - "gravite": "faible", - "ce_qui_cloche": "Le systeme decharge la batterie alors que le bilan indique un besoin de 5.1 kWh avant 09h et une reserve orageuse de 38%. La marge parc est critique mais coherente avec la consigne de protection materielle.", - "piste": "Verifier si la strategie 'auto_solar_plus' priorise correctement la reserve orageuse face a la limite de decharge du parc. Le contacteur ouvert confirme l'absence d'injection, ce qui est normal ici.", - "confidence": 0.9 - }, - { - "constat": "Batterie a 79 % (plafond parc) avec decharge -97 A. Excedent solaire negatif (-4624 W). Bilan demande 62 % pour demain matin.", - "gravite": "moyenne", - "ce_qui_cloche": "Le systeme decharge la batterie au maximum alors que le bilan indique un besoin de 5.1 kWh et une cible prudente de 70 %. La marge de decharge est quasi nulle (3 A), ce qui bloque toute flexibilite future.", - "piste": "Verifier si la consigne de decharge max du parc ou un script force cette decharge agressive. Le controleur EVCS est inactif, donc c'est probablement la logique de gestion reseau/batterie qui priorise la vente/consommation immediate au detriment du stockage necessaire pour le matin.", - "confidence": 0.85 - }, - { - "constat": "Batterie a 79% (plafond parc), decharge -97A. Excedent solaire negatif (-4624W). Bilan coherent : reseau requis pour la nuit.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie a 79 % (plafond parc), decharge -97 A. Excedent solaire negatif (-4624 W). Bilan coherent : reseau requis pour la nuit.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", + "gravite": "haute", + "ce_qui_cloche": "La batterie est a 97% de sa marge de decharge declaree par le parc (limite 100A, reste 3A). Le systeme deprote le materiel en appelant le reseau alors que la production PV est faible et que la maison consomme fort.", + "piste": "Verifier si la limite de decharge du parc est mal configuree ou si le courant mesure (-97A) est un pic transitoire. Si persistant, augmenter la consigne reseau pour eviter la saturation du bus DC et proteger les cellules.", "confidence": 0.95 } ] @@ -591,39 +465,25 @@ }, "passages": [ { - "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au max. Bilan demande reseau pour la nuit mais contacteur ferme.", + "constat": "Batterie a 96% (plafond), PV brident 0, voiture chargee a 28A. Consigne reseau 1281W coexiste avec excedent solaire de 5653W.", "gravite": "moyenne", - "ce_qui_cloche": "Le controleur force la strategie 'force_grid_now' alors que le bilan identifie un besoin de reseau (1.4 kWh) et que la batterie est pleine. Le systeme refuse l'energie gratuite du reseau (ou la production PV bridee) necessaire pour couvrir le deficit nocturne.", - "piste": "Verifier pourquoi le EVCS Surplus Controller V2.6 maintient 'force_grid_now' et bloque la commutation vers le reseau alors que la marge de decharge est nulle et que le bilan requiert une reserve.", + "ce_qui_cloche": "La consigne reseau de 1281 W evite l'absorption de l'excedent solaire disponible (5653 W) alors que la batterie est pleine et qu'il n'y a pas de frein sur les chargeurs.", + "piste": "Verifier pourquoi le controleur maintient une consigne reseau positive au lieu de laisser la production PV alimenter la maison/voiture pour reduire la facture EDF.", "confidence": 0.9 }, { - "constat": "Batterie a 96% (plafond), PV 6 kW, voiture chargee a 28 A. Excedent solaire positif de 5.6 kW. Bilan coherent avec la strategie force_grid_now.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie a 96 % (plafond), PV 6 kW, voiture chargee a 28 A. Excedent solaire positif de 5.6 kW. Bilan coherent avec la strategie force_grid_now.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au max. Bilan demande reseau pour la nuit mais contacteur ferme.", + "constat": "Batterie a 96% (plafond), PV brident, voiture chargee au reseau (1281W) alors que l'excedent solaire est de 5.6 kW.", "gravite": "moyenne", - "ce_qui_cloche": "Le controleur force la strategie 'force_grid_now' et le bilan juge le reseau necessaire (1.4 kWh), pourtant le contacteur EDF reste FERME. La batterie est pleine et ne peut pas stocker l'excedent solaire actuel.", - "piste": "Verifier pourquoi le script ou l'automatisation qui pilote le contacteur n'a pas bascule en mode reseau alors que la consigne du controleur et du bilan sont alignes sur ce besoin.", - "confidence": 0.95 + "ce_qui_cloche": "Le controleur force la strategie 'force_grid_now' et alimente la voiture via le reseau (1.3 kW) pendant que les chargeurs solaires sont a fond mais sans preneur pour l'excedent. L'excedent solaire positif devrait prioritairement charger la voiture gratuitement.", + "piste": "Verifier pourquoi le EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que l'excedent est nettement positif et que la batterie est pleine. Le contacteur reste ferme, ce qui bloque l'injection locale vers la borne.", + "confidence": 0.9 }, { - "constat": "Batterie a 96% (plafond), PV brident, voiture chargee au max. Bilan demande reseau pour la nuit mais contacteur ferme.", + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau (1281 W) alors que l'excedent solaire est de 5.6 kW.", "gravite": "moyenne", - "ce_qui_cloche": "Le controleur force la strategie 'force_grid_now' et le bilan juge le reseau necessaire (1.4 kWh), pourtant le contacteur EDF reste FERME. La batterie est saturee et ne peut pas absorber l'excedent solaire ni preparer la nuit sans passer par le reseau.", - "piste": "Verifier pourquoi le contacteur n'a pas bascule en ouverture alors que la consigne de puissance reseau est positive et que la strategie impose le reseau. Suspect : EVCS Surplus Controller V2.6 ou script qui bloque l'actionneur contre son proprietaire (Battery/Grid Hysteresis).", - "confidence": 0.95 + "ce_qui_cloche": "La strategie force_grid evince la production solaire gratuite pour charger la voiture et maintenir le SOC haut, gaspillant l'energie disponible.", + "piste": "Verifier pourquoi le controleur EVCS ne bascule pas en mode surplus pour absorber les 5.6 kW d'excedent solaire.", + "confidence": 0.9 } ] }, @@ -654,39 +514,25 @@ }, "passages": [ { - "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de puits pour la ressource refusee.", + "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de puits pour l'excedent.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.95 }, { - "constat": "Batterie pleine (98%), PV bridés (6/6), excédent solaire nul. Le bilan indique un déficit nocturne de 4.1 kWh à couvrir.", - "gravite": "moyenne", - "ce_qui_cloche": "Le système bride la production alors que le bilan identifie un manque de stockage de 6.8 kWh pour la nuit. L'énergie refusée est perdue, créant une dépendance au réseau tarifé demain matin.", - "piste": "Vérifier si l'absence de véhicule empêche l'absorption de l'excédent. Évaluer l'intérêt d'une décharge contrôlée vers le réseau ou un usage thermique pour éviter la perte des 6 chargeurs bridés.", - "confidence": 0.95 - }, - { - "constat": "Batterie pleine (98%), PV bridés (6/6), excédent solaire nul. Le bilan indique un déficit nocturne de 4.1 kWh à couvrir.", - "gravite": "moyenne", - "ce_qui_cloche": "Le système bride la production alors que le bilan identifie un manque de stockage de 6.8 kWh pour la nuit. L'énergie refusée est perdue au lieu d'être stockée ou absorbée par le réseau.", - "piste": "Vérifier pourquoi l'EVCS ne charge pas malgré l'excédent potentiel (bien que faible ici) et si le contacteur EDF peut être fermé pour absorber l'excédent avant bridage complet, ou ajuster la cible SOC si le véhicule était branché.", - "confidence": 0.9 - }, - { - "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de puits, ressource refusee.", + "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de puits pour l'excedent.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.95 }, { - "constat": "Batterie pleine (98%), PV bridee sans puits, excedent negatif (-108 W) et marge decharge a 0% du plafond.", - "gravite": "moyenne", - "ce_qui_cloche": "Le bilan demande 55-63% pour la nuit mais le systeme est bloque a 98% avec production refusee. La strategie 'auto_solar_plus' ne gere pas l'excedent solaire quand la batterie est saturee.", - "piste": "Verifier pourquoi la consigne de puissance reseau (700 W) n'est pas utilisee pour absorber l'excedent ou si un script bloque la commutation du contacteur alors que la marge de charge est atteinte.", - "confidence": 0.9 + "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de puits pour l'excedent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 } ] }, @@ -715,35 +561,21 @@ }, "passages": [ { - "constat": "PV 4.2 kW, excedent 3.3 kW, batterie chargee a 72 % (35 A). Bilan coherent : reseau non requis, marge parc saturee.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "SOC 72% vs cible prudente 62%. Orage Orange (reserve 88%). Surcharge batterie de 10 points. PV non bride, excedent positif.", - "gravite": "moyenne", - "ce_qui_cloche": "Le systeme ignore la reserve orageuse et la marge de securite du bilan. La batterie est chargee au-dessus du seuil prudent necessaire pour la nuit.", - "piste": "Verifier pourquoi le controleur ne force pas la decharge ou l'arret de la charge a 62-88%. Le surplus controller doit-il prioriser la reserve meteo ?", - "confidence": 0.95 - }, - { - "constat": "Batterie en charge (35 A) avec excédent solaire de 3300 W. Contacteur EDF ouvert. Bilan cohérent : pas de besoin réseau immédiat.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie en charge (35 A) avec excédent solaire de 3300 W. Le bilan indique un besoin de réserve orageuse à 88 % mais le SOC actuel est de 72 %.", + "constat": "Batterie a 72 % (charge 35 A), PV 4.2 kW, excedent 3.3 kW. Bilan demande 55-62 % pour demain matin. Orage orange conseille 88 %.", "gravite": "faible", - "ce_qui_cloche": "Le système ne priorise pas la réserve orageuse (88 %) face au simple remplissage standard, malgré l'alerte Orange active.", - "piste": "Vérifier si le script d'alerte météo force bien la cible SOC ou si il reste passif dans la logique EVCS/auto_solar_plus.", - "confidence": 0.85 + "ce_qui_cloche": "Le SOC actuel (72 %) est inferieur a la reserve orageuse conseillee (88 %). La charge en cours (35 A) est insuffisante pour atteindre ce seuil avant le soir.", + "piste": "Verifier si la consigne de puissance reseau (700 W) ou un limiteur de charge bloque l'absorption maximale du surplus solaire pour monter vers 88 % avant l'orage.", + "confidence": 0.9 }, { - "constat": "Batterie chargee a 72 % (35 A), PV a 4.2 kW, excedent solaire de 3.3 kW non exploite faute de vehicule branche.", + "constat": "SOC 72 % vs cible prudente 62 %. Surcharge de 10 pts. Orage Orange (88 %) et marge parc a 0 % rendent la situation critique.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme ignore l'alerte meteo et la saturation du parc : il charge a fond alors qu'il faut se proteger et preparer le deficit nocturne.", + "piste": "Verifier pourquoi le controleur ne bascule pas en mode protection/orage. Forcer une decharge ou ouvrir le contacteur pour eviter la surcharge batterie.", + "confidence": 0.95 + }, + { + "constat": "Batterie chargee a 72 % (35 A), PV a 4.2 kW non bride, excedent solaire positif de 3.3 kW. Aucun vehicule branche.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", @@ -789,38 +621,24 @@ }, "passages": [ { - "constat": "Batterie a 96% (plafond), PV 4.2 kW, voiture chargee a 20 A avec excedent solaire positif de 3.9 kW. Systeme coherent.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie a 96% (plafond), PV brident, voiture chargee. Bilan demande reseau pour couvrir la nuit.", + "constat": "Batterie a 96% (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain matin.", "gravite": "moyenne", - "ce_qui_cloche": "Le systeme refuse le reseau alors que le bilan identifie un manque de stockage et necessite l'EDF pour eviter le deficit nocturne.", - "piste": "Verifier pourquoi le contacteur reste ferme malgre la consigne 'reseau juge necessaire'. Suspecter un conflit avec EVCS Surplus Controller V2.6 ou un seuil fige.", + "ce_qui_cloche": "La batterie est pleine et le surplus solaire est refuse (bride). Le bilan indique un besoin de reseau (1.4 kWh) mais la consigne reste a 700 W, evitant l'achat d'energie gratuite ou necessaire.", + "piste": "Verifier pourquoi le controleur n'ouvre pas le contacteur pour acheter les 1.4 kWh identifies par le bilan, ou si la consigne de 700 W bloque l'absorption du reseau.", "confidence": 0.85 }, { - "constat": "Batterie a 96% (plafond), PV brident la voiture a 20A. Excedent solaire positif mais marge de decharge du parc quasi nulle.", + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande reseau pour couvrir la nuit.", "gravite": "moyenne", - "ce_qui_cloche": "La batterie est au plafond (10% restant) alors que le bilan demande 5.2 kWh pour demain matin et identifie un manque de stockage. Le systeme ne peut plus stocker l'excedent actuel.", - "piste": "Verifier si la limite de charge du parc (100A) est atteinte ou si c'est une protection SOC. Considerer de reduire la cible SOC actuelle pour liberer de la capacite de stockage avant la nuit.", + "ce_qui_cloche": "La batterie est pleine et le surplus solaire est refuse (bride). Le bilan indique un besoin de reseau (1.4 kWh) mais le contacteur reste ferme, privant la maison de cette ressource gratuite ou moins chere que le plein tarif du matin.", + "piste": "Verifier pourquoi le controleur n'ouvre pas le contacteur alors que le bilan juge le reseau necessaire. L'hysteresis ou un script bloque-t-il l'ouverture ?", "confidence": 0.85 }, { - "constat": "Batterie à 96% (plafond), PV 4.2kW, voiture charge à 20A. Excédent solaire positif de 3.9kW. Bilan cohérent.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie a 96% (plafond), PV brident la voiture (4.6 kW) et le reseau est ferme. Le bilan demande 62% pour demain matin.", + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain matin.", "gravite": "moyenne", - "ce_qui_cloche": "La batterie est saturee alors que le systeme consomme plus qu'il ne produit, empechant l'absorption de l'excedent solaire gratuit.", - "piste": "Verifier si la limite de charge du parc (100A) ou un seuil de SOC fige bloque la charge au-dela de 96%, ou si la strategie force_charge_now est incoherente avec le plein.", + "ce_qui_cloche": "La batterie est saturee et refuse le surplus solaire (bridee). Le bilan indique un besoin de reseau (1.4 kWh) mais la consigne reste a 700 W, evitant potentiellement l'achat ou mal gereant la transition vers le plancher.", + "piste": "Verifier si le controleur autorise bien la fermeture du contacteur pour acheter les 1.4 kWh identifies par le bilan, ou si la consigne de 700 W bloque cette action necessaire.", "confidence": 0.85 } ] @@ -852,38 +670,24 @@ }, "passages": [ { - "constat": "SOC 55% > cible prudente 59%. Manque de 0.4 kWh pour la nuit. Réseau ouvert, PV nul. Consommation maison 1.4 kW.", + "constat": "SOC 55 % vs cible prudente 59 %. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consigne réseau 700 W inopérante.", "gravite": "faible", - "ce_qui_cloche": "Le bilan indique un besoin de 59% (prudent) mais le SOC est à 55%. Le réseau est ouvert sans chargeur branché ni excédent solaire, ce qui est incohérent avec une stratégie d'autoconsommation stricte ou un manque identifié nul.", - "piste": "Vérifier pourquoi le contacteur EDF est ouvert alors que le bilan dit 'réseau nécessaire: OUI (0 kWh)' et qu'il n'y a pas de véhicule. Vérifier si l'hystérésis du contacteur bloque la fermeture malgré le déficit nocturne prévu.", + "ce_qui_cloche": "Le bilan indique un besoin de 59 % (prudent) mais le SOC est à 55 %. Le contacteur reste ouvert alors que le réseau est jugé nécessaire pour combler ce déficit nocturne.", + "piste": "Vérifier pourquoi le Battery/Grid Hysteresis Fix V1 n'a pas fermé le contacteur pour charger les 400 Wh manquants avant minuit.", "confidence": 0.85 }, { - "constat": "SOC 55 % vs besoin prudent 59 %. Réseau ouvert. Déficit nocturne de 2 kWh identifié.", + "constat": "SOC 55% > cible prudente 59% pour la nuit. Déficit de 0,4 kWh à combler avant le croisement de 11h.", "gravite": "faible", - "ce_qui_cloche": "Le bilan indique un réseau nécessaire (0 kWh) mais le contacteur est ouvert, laissant la batterie couvrir seule le déficit nocturne sans marge de sécurité optimale.", - "piste": "Vérifier pourquoi le contacteur n'a pas fermé pour combler les 4% de SOC manquants avant la traversée déficitaire prévue cette nuit.", + "ce_qui_cloche": "La batterie est légèrement sous-dimensionnée par rapport au besoin nocturne identifié par le bilan (manque de 0,4 kWh).", + "piste": "Vérifier si la consigne réseau de 700 W permettrait une recharge marginale pendant les heures creuses si le contacteur était fermé, ou accepter ce léger déficit.", "confidence": 0.85 }, { - "constat": "SOC 55% vs besoin prudent 59%. Réseau ouvert. Déficit nocturne de 2 kWh identifié.", + "constat": "SOC 55% vs cible prudente 59%. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consigne réseau 700 W inopérante.", "gravite": "faible", - "ce_qui_cloche": "La marge de sécurité (4%) est insuffisante pour couvrir le déficit nocturne sans toucher au plancher, alors que le réseau est disponible mais non utilisé.", - "piste": "Vérifier si l'automatisation 'Grid Hysteresis Fix V1' bloque la fermeture du contacteur à cause d'un seuil figé (ex: 60%), empêchant la recharge réseau nécessaire avant minuit.", - "confidence": 0.85 - }, - { - "constat": "SOC 55% > cible prudente 59%. Manque de 0.4 kWh pour la nuit. Réseau ouvert, PV nul. Consommation maison 1.4 kW.", - "gravite": "faible", - "ce_qui_cloche": "Le bilan indique un besoin de 59% (prudent) mais le SOC est à 55%. Le réseau est ouvert sans raison identifiée dans les événements récents.", - "piste": "Vérifier si l'ouverture du contacteur est due au seuil de sécurité ou à une erreur de l'automatisation 'EVCS Surplus Controller'.", - "confidence": 0.85 - }, - { - "constat": "SOC 55% vs besoin prudent 59%. Réseau ouvert. Déficit nocturne de 2 kWh identifié.", - "gravite": "faible", - "ce_qui_cloche": "La batterie est sous la cible prudente (59%) alors que le réseau est déjà ouvert pour couvrir le déficit, ce qui est cohérent mais limite la marge de sécurité orageuse.", - "piste": "Vérifier si l'ouverture du contacteur a été anticipée par le bilan ou si c'est une réaction tardive au SOC bas.", + "ce_qui_cloche": "La batterie est légèrement sous le seuil prudent requis par le bilan (52-59%) pour couvrir les 9.4 kWh jusqu'à 11h. Le contacteur reste ouvert alors que le réseau est jugé nécessaire (bien que 0 kWh).", + "piste": "Vérifier pourquoi le contacteur n'a pas fermé pour compenser le déficit nocturne ou si la consigne de 700 W empêche une charge optimale avant le pic du matin.", "confidence": 0.85 } ] @@ -915,35 +719,21 @@ }, "passages": [ { - "constat": "SOC 55 % > cible prudente 50 %. Excedent -1400 W. Contacteur ouvert. Pas de vehicule.", + "constat": "SOC 55% > cible prudente 50%. Batterie se decharge (-18A) pour couvrir la maison (1400W). Pas de PV. Contacteur ouvert.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.95 }, { - "constat": "SOC 55 % > cible prudente 50 %. Excédent -1400 W. Contacteur ouvert. Pas de véhicule. Système en décharge lente (-18 A).", + "constat": "SOC 55 % > cible prudente 50 %. Batterie se decharge (-18 A) pour couvrir la maison (1400 W). Contacteur ouvert. Aucun vehicule branche.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.95 }, { - "constat": "SOC 55 % > cible prudente 50 %. Excedent -1400 W. Contacteur ouvert. Aucun vehicule branche.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "SOC 55 % > cible prudente 50 %. Excedent -1400 W. Contacteur ouvert. Pas de vehicule.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "SOC 55% > cible prudente 50%. Surplus -1400W. Contacteur ouvert. Marge parc 382A (95%).", + "constat": "SOC 55 % > cible prudente 50 %. Batterie se decharge (-18 A) pour couvrir la maison (1400 W). Contacteur ouvert. Aucun vehicule branche.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", @@ -977,39 +767,25 @@ }, "passages": [ { - "constat": "Bascule du contacteur EDF toutes les 2 min (6 fois en 10 min) alors que le bilan demande une session stable de 1.1 kWh.", - "gravite": "moyenne", - "ce_qui_cloche": "L'hysteresis est insuffisante ou un ecrivain externe (EVCS Surplus Controller V2.6) force des basculements incoherents avec la consigne de charge continue.", - "piste": "Verifier si l'EVCS Surplus Controller V2.6 ou un script modifie le verrou hysteresis et augmenter la marge de bascule pour eviter les transitoires.", + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que la production PV est nulle et la batterie se charge à 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation répétée de l'actionneur principal. Chaque bascule coûte 50-150 Wh et use le relais. Le propriétaire du contacteur (Battery/Grid Hysteresis Fix V1) est probablement contredit par un autre écrivain (EVCS Surplus Controller ou scripts) qui force des états incohérents avec la réalité physique (PV=0).", + "piste": "Identifier quel script ou automate écrit sur le contacteur pendant ces bascules. Vérifier si l'EVCS Surplus Controller tente de piloter le contacteur malgré l'absence de véhicule et la nullité de la production solaire, créant une boucle de rétroaction instable.", "confidence": 0.95 }, { - "constat": "Bascule du contacteur EDF toutes les 2-3 min entre 06:25 et 06:35. La batterie charge a 20 A (1,9 kW) pendant que la maison consomme 950 W.", - "gravite": "moyenne", - "ce_qui_cloche": "Hysteresis instable : le systeme oscille autour d'un seuil de commutation sans stabilite, ce qui genere des transitoires inutiles et use le contacteur.", - "piste": "Verifier les parametres de hysteresis du 'Battery / Grid Hysteresis Fix V1' ou l'interference avec le 'EVCS Surplus Controller' qui ecrit aussi sur le contacteur.", + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que la batterie charge à 20 A et que le bilan demande du réseau.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation répétée de l'actionneur principal. Le propriétaire est Battery/Grid Hysteresis Fix V1, mais EVCS Surplus Controller V2.6 ou un script écrit probablement sur le contacteur, créant une boucle de rétroaction avec la consigne de puissance (5759 W).", + "piste": "Vérifier les logs d'écriture du contacteur pour identifier si EVCS Surplus Controller V2.6 ou un script force la bascule malgré l'hystérésis. Stabiliser la logique de commutation pour éviter l'usure du relais et les transitoires (50-150 Wh/bascule).", + "confidence": 0.98 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que la batterie charge à 20 A et le réseau est nécessaire.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation répétée du contacteur par un écrivain non propriétaire (EVCS Surplus Controller ou script), causant des transitoires inutiles.", + "piste": "Vérifier les règles de l'EVCS Surplus Controller V2.6 qui écrit sur le contacteur, car il n'est pas son propriétaire déclaré.", "confidence": 0.95 - }, - { - "constat": "Bascule du contacteur EDF toutes les 2 min (6 fois en 10 min) alors que le bilan juge le reseau necessaire et stable.", - "gravite": "moyenne", - "ce_qui_cloche": "Le contacteur oscille de facon incoherente avec la consigne de puissance (5759 W) et l'etat 'on'. Chaque bascule coute 50-150 Wh. Le proprietaire est Battery/Grid Hysteresis Fix V1, mais EVCS Surplus Controller V2.6 ecrit aussi dessus.", - "piste": "Verifier si EVCS Surplus Controller V2.6 ou un script force la fermeture/ouverture du contacteur a cause d'un excedent calcule errone (PV=0W). Desactiver temporairement EVCS pour stabiliser le hysteresis.", - "confidence": 0.85 - }, - { - "constat": "Bascule du contacteur EDF toutes les 30s entre 06:25 et 06:35. La batterie se recharge (20A) pendant que le bilan indique un besoin de réseau.", - "gravite": "moyenne", - "ce_qui_cloche": "Hysteresis instable : le contacteur oscille alors que la marge de décharge est à 100% et que le bilan demande explicitement l'ouverture du réseau pour couvrir le déficit prévisionnel.", - "piste": "Vérifier si un script ou l'EVCS Surplus Controller ne force pas la fermeture du contacteur, contredisant ainsi la logique d'hysteresis du propriétaire (Battery/Grid Hysteresis Fix V1).", - "confidence": 0.95 - }, - { - "constat": "Bascule du contacteur EDF toutes les 2-3 min entre 06:25 et 06:35. La batterie charge à 20 A (réseau) pour atteindre la cible de 42,8 %.", - "gravite": "moyenne", - "ce_qui_cloche": "Hysteresis instable : le contacteur oscille alors que le bilan indique un besoin net de 1,1 kWh réseau. Chaque bascule consomme 50-150 Wh de transitoire inutile.", - "piste": "Vérifier l'écrivain 'EVCS Surplus Controller V2.6' ou les scripts qui modifient le verrou hysteresis, car le propriétaire 'Battery / Grid Hysteresis Fix V1' devrait maintenir une position stable face au déficit identifié.", - "confidence": 0.9 } ] }, @@ -1038,35 +814,21 @@ }, "passages": [ { - "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, excedent solaire negatif (-950 W). Bilan coherent : pas de ressource PV pour charger.", + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : il manque 0.9 kWh pour tenir jusqu'a 9h.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.95 }, { - "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : excedent negatif, pas de charge vehicule.", + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : il manque 0.9 kWh pour tenir jusqu'a 9h.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", "confidence": 0.95 }, { - "constat": "Batterie en charge (20 A) depuis 05:02. SOC 42 % aligné sur la cible du bilan. PV nul, réseau fermé pour couvrir le déficit matinal.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.98 - }, - { - "constat": "Batterie chargee a 42% (cible atteinte), reseau ferme, PV a 0W. Bilan coherent : autonomie jusqu'a 9h.", - "gravite": "aucune", - "ce_qui_cloche": "", - "piste": "", - "confidence": 0.95 - }, - { - "constat": "Batterie chargee a 42% (cible atteinte), reseau ferme, PV nul. Bilan coherent : autonomie jusqu'a 9h.", + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV a 0 W. Bilan coherent : il manque 0.9 kWh pour tenir jusqu'a 9h.", "gravite": "aucune", "ce_qui_cloche": "", "piste": "", @@ -1094,38 +856,24 @@ }, "passages": [ { - "constat": "Bilan indisponible. Batterie à 20% (plancher), réseau fermé, excedent -612W. Cible matin 35% non atteinte.", + "constat": "SOC 20% (plancher), bilan indisponible. Consigne reseau 700W evite la charge pendant heures creuses (01:24-07:24).", "gravite": "moyenne", - "ce_qui_cloche": "Absence de bilan energetique empeche la verification de la coherence entre la cible SOC et les besoins reels du matin.", - "piste": "Verifier le statut du service de calcul du bilan (degrade) et confirmer que la fermeture du contacteur est coherente avec l'absence d'excedent solaire.", - "confidence": 0.85 + "ce_qui_cloche": "La batterie est au plancher de securite alors que le contacteur est ferme et que nous sommes en heures creuses. La consigne de 700W bloque l'absorption du reseau, empechant la recharge gratuite avant le pic tarifaire.", + "piste": "Verifier pourquoi la consigne reste a 700W au lieu d'une valeur negative ou nulle pour autoriser la charge depuis le reseau EDF pendant les heures creuses.", + "confidence": 0.95 }, { - "constat": "Bilan indisponible. Batterie a 20% (plancher), reseau ferme, excedent -612W. Cible matin 35% non atteinte.", - "gravite": "moyenne", - "ce_qui_cloche": "Absence de bilan energetique empeche la verification de la coherence entre la cible SOC et les besoins reels du matin.", - "piste": "Verifier le statut du service de calcul du bilan (degrade) et confirmer que la fermeture du contacteur est bien geree par Battery/Grid Hysteresis Fix V1.", - "confidence": 0.85 + "constat": "SOC 20% (plancher), reseau ferme, bilan indisponible. Consigne 700W evite le pic tarifaire matinale.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan energetique est degrade/indisponible, empechant la verification de la coherence entre la cible SOC 35% et les besoins reels du matin.", + "piste": "Verifier la disponibilite du service de calcul du bilan. Surveiller que le contacteur ne bascule pas avant l'aube pour atteindre la cible 35%.", + "confidence": 0.9 }, { - "constat": "Bilan indisponible. Batterie à 20% (plancher), contacteur fermé, maison consomme 612W sur le réseau. Cible matin 35% non atteinte.", + "constat": "SOC 20% (plancher), bilan indisponible, consigne reseau 700W. La batterie est vide avant les heures creuses.", "gravite": "moyenne", - "ce_qui_cloche": "La batterie est au plancher de sécurité (20%) alors que la cible du matin est fixée à 35%. Le système a consommé la réserve solaire pour alimenter la maison pendant la nuit, laissant un déficit qui sera payé au tarif plein ce matin.", - "piste": "Vérifier pourquoi la cible SOC de 35% n'a pas été maintenue ou si elle est incohérente avec la capacité réelle de recharge nocturne. Vérifier l'état du 'Battery / Grid Hysteresis Fix V1' qui gère le contacteur.", - "confidence": 0.85 - }, - { - "constat": "Bilan indisponible. Batterie à 20% (plancher), contacteur fermé, maison consomme 612W sur le réseau. Cible matin 35% non atteinte.", - "gravite": "moyenne", - "ce_qui_cloche": "Absence de bilan énergétique empêche la validation de la stratégie. La batterie est au plancher de sécurité alors que la cible est fixée à 35%, créant un risque de coupure ou de décharge excessive si la consommation augmente avant l'aube.", - "piste": "Vérifier pourquoi le calcul du bilan est en statut dégradé. Contrôler si le script 'Battery / Grid Hysteresis Fix V1' force le contacteur ouvert malgré la cible SOC de 35% pour protéger le parc.", - "confidence": 0.85 - }, - { - "constat": "Bilan indisponible. Batterie à 20% (plancher), contacteur fermé, maison consomme 612W sur le réseau. Cible matin 35% non atteinte.", - "gravite": "moyenne", - "ce_qui_cloche": "La batterie est au plancher de sécurité (20%) alors que la cible du matin est fixée à 35%. Le système a consommé la réserve solaire pour alimenter la maison pendant la nuit, laissant un déficit qui sera payé au tarif plein ce matin.", - "piste": "Vérifier pourquoi la cible de 35% n'a pas été maintenue ou si le bilan dégradé a empêché la gestion proactive. Vérifier l'état des chargeurs solaires (0/6 actifs) : sont-ils en veille normale ou y a-t-il une panne ?", + "ce_qui_cloche": "Le systeme laisse la batterie au plancher de securite (20%) alors que le reseau est ferme et que la cible matinale est de 35%. Sans bilan, on ne sait pas si c'est un choix ou une erreur de hysteresis.", + "piste": "Verifier pourquoi la consigne reseau n'a pas force la charge jusqu'a 35% avant 01:24 (debut HC). Verifier l'ecrivain 'Battery / Grid Hysteresis Fix V1'.", "confidence": 0.85 } ] diff --git a/docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.json b/docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.json new file mode 100644 index 0000000..ecbf7ec --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.json @@ -0,0 +1,1665 @@ +[ + { + "id": "1-nuit-bloquee-sans-vehicule", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 %", + "attendu": "SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "motsCles": [ + [ + "recharg", + "remonte", + "ne monte", + "stagne", + "plate", + "0 a", + "0a", + "immobile" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "3.4", + "balance_storage_shortfall_kwh": "6.77" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), deficit -612 W, reseau present mais consigne 700 W. Bilan demande 59.1% pour 09h.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le bilan identifie un besoin de 3.4 kWh via le reseau pour atteindre la cible matinale. Le systeme ne charge pas la batterie depuis le reseau pour preparer la nuit/matin.", + "piste": "Verifier pourquoi la consigne reseau (700 W) n'induit pas une charge de la batterie vers la cible de 59.1%. Est-ce que l'hysteresis ou un script bloque la charge reseau ?", + "confidence": 0.85 + }, + { + "constat": "SOC 20% (plancher), deficit -612 W, reseau present mais consigne 700 W. Bilan demande 59.1% pour 09h.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le bilan identifie un besoin de 3.4 kWh via le reseau pour atteindre la cible matinale. Le systeme ne charge pas activement depuis le reseau pour preparer la nuit/matin.", + "piste": "Verifier pourquoi le contacteur reste ferme sans charger la batterie vers la cible de 59.1%. La consigne de 700 W permet-elle de couvrir la maison (612 W) et de charger simultanement ? Si non, augmenter la consigne ou forcer une session de charge reseau avant l'aube.", + "confidence": 0.85 + }, + { + "constat": "Nuit, PV 0 W. Batterie a 20 % (plancher). Maison consomme 612 W. Reseau ferme et alimente la maison. Bilan demande 59.1 % pour le matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le bilan identifie un besoin de reseau de 3.4 kWh pour atteindre la cible de 59.1 %. Le systeme ne charge pas la batterie depuis le reseau pendant les heures creuses (01:24-07:24), laissant la maison dependre du reseau plein tarif ou subissant une penurie d'energie stockee.", + "piste": "Verifier pourquoi le contacteur reste ferme mais la batterie ne se charge pas vers la cible de 59.1 %. Est-ce que l'automatisation 'Battery / Grid Hysteresis Fix V1' bloque la charge ? Ou le controleur EVCS priorise-t-il mal ? Il faut charger la batterie maintenant pour eviter de payer le reseau demain matin.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher) avec deficit de -612 W. Le reseau est present mais la batterie ne charge pas pour atteindre la cible de 59,1 % requise par le bilan.", + "gravite": "haute", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le bilan exige 3,4 kWh du reseau pour couvrir la nuit et le matin. L'absence de charge reseau indique un blocage logiciel ou mecanique du contacteur/consigne.", + "piste": "Verifier l'etat du contacteur reseau et les ecritures du 'Battery / Grid Hysteresis Fix V1'. Si le contacteur est ferme mais qu'il n'y a pas de courant de charge, inspecter la consigne de puissance (700 W) qui pourrait etre trop basse ou mal appliquee par un script tiers.", + "confidence": 0.9 + }, + { + "constat": "Nuit, PV 0 W. Batterie a 20 % (plancher). Maison consomme 612 W. Reseau ferme et alimente la maison. Bilan demande 59.1 % pour le matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le bilan identifie un besoin de reseau de 3.4 kWh pour atteindre la cible de 59.1 %. Le systeme ne charge pas la batterie depuis le reseau pendant les heures creuses (01:24-07:24), laissant la maison dependre du reseau au plein tarif ou sans reserve solaire pour le matin.", + "piste": "Verifier pourquoi la consigne de charge reseau n'est pas activee pour remonter le SOC vers 59.1 % durant l'heure creuse en cours. Le contacteur est ferme mais le courant de charge semble nul ou insuffisant pour combler le deficit avant 09h.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "2-nuit-relachee-trop-tot", + "t": "2026-09-03T03:00:00+02:00", + "certain": true, + "titre": "03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30)", + "attendu": "SIGNALER : SOC sous le requis alors que la session est marquee terminee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "sous", + "en dessous", + "inferieur", + "manque", + "deficit", + "insuffisant" + ], + [ + "terminee", + "done", + "fini", + "relach", + "session" + ] + ], + "s": { + "soc_percent": "45", + "battery_current_a": "2", + "house_ac_power_w": "700", + "grid_state": "on", + "acin1_available": "1", + "evcs_vehicle_connected": "on", + "evcs_surplus_state": "night_session_done_idle", + "evcs_source_mode": "Réseau HC autorisé", + "night_target_soc_actual": "50.4", + "tomorrow_kwh": "33.9", + "balance_required_soc": "50.4", + "balance_required_soc_prudent": "57", + "balance_energy_to_cover_kwh": "4.3", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1" + }, + "passages": [ + { + "constat": "03:00, nuit. Batterie 45% (cible 50.4%), réseau présent et consigné à 700 W pour couvrir le déficit. Voiture branchée mais non chargée.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Déficit -700 W. Réseau comble le manque (1.1 kWh). Voiture branchée mais non chargée.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "03:00, nuit. Batterie 45% (cible 50.4%), réseau présent et consigné à 700 W. Voiture branchée mais non chargée. Bilan cohérent : déficit nocturne couvert par le réseau.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Déficit -700W. Réseau couvre le manque identifié (1.1 kWh). Voiture branchée mais excédent solaire nul.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "03:00, nuit. Batterie 45% (cible 50.4%), réseau présent et consigné à 700 W. Véhicule branché mais inactif. Bilan cohérent : déficit nocturne couvert par le réseau.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": false, + "k": false + }, + { + "g": false, + "k": false + }, + { + "g": false, + "k": false + }, + { + "g": false, + "k": false + }, + { + "g": false, + "k": false + } + ] + }, + { + "id": "3-nuit-couverte-ne-rien-faire", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis", + "attendu": "NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "70", + "battery_current_a": "-12", + "house_ac_power_w": "612", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "off" + }, + "passages": [ + { + "constat": "Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan coherent : SOC cible 59.1 % pour 3.13 kWh a couvrir avant 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), PV 0W. Bilan demande 59.1% pour 09h. Consigne reseau 700W inopérante (contacteur ouvert).", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, réseau coupé. Batterie 70% (-12A) couvre la maison (612W). Bilan demande 59.1% pour 09h. Consigne réseau 700W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59.1% pour 3.13kWh a couvrir avant 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan demande 59.1 % pour 09h. Consigne reseau 700 W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "4-hiver-nuit-longue", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h", + "attendu": "OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "88", + "balance_required_soc_prudent": "97", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "5.1", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "8.2" + }, + "passages": [ + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne confirme, reseau juge necessaire mais contacteur ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme reste en autonomie (contacteur ouvert). La batterie va atteindre le plancher avant l'aube ou au petit matin, rendant la cible de 85 % inatteignable sans injection.", + "piste": "Verifier pourquoi le contacteur n'a pas bascule alors que le bilan indique 'reseau juge necessaire: OUI'. Suspecter un conflit avec Battery/Grid Hysteresis Fix V1 ou un blocage par EVCS Surplus Controller V2.6 qui empeche la fermeture du contacteur.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Reseau absent, deficit nocturne imminent.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne peut pas couvrir la nuit sans toucher au plancher ou echouer.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan juge le reseau necessaire. Suspecter un ecrivain externe (EVCS/Scripts) qui bloque la fermeture.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne confirme, reseau juge necessaire mais contacteur ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan identifie un manque de 8.2 kWh et requiert le reseau, mais l'installation est en ile (contacteur ouvert). La batterie va atteindre le plancher avant le matin, rendant la prevision de 6.2 kWh demain inatteignable sans achat EDF.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan demande le reseau. Suspecter un conflit avec 'Battery / Grid Hysteresis Fix V1' ou un verrou hysteresis mal gere qui empeche la bascule vers le mode grille.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne confirme, reseau juge necessaire mais contacteur ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan identifie un manque de stockage de 8.2 kWh et requiert le reseau (5.1 kWh), mais le systeme reste en autonomie (contacteur ouvert). La batterie va atteindre le plancher avant l'aube, rendant la prevision matinale impossible sans achat au plein tarif ou coupure.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour couvrir le deficit identifie par le bilan. Suspecter un blocage par 'Battery / Grid Hysteresis Fix V1' ou une consigne de puissance reseau (700 W) trop basse qui empeche l'absorption des 5.1 kWh requis.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne confirme, reseau juge necessaire mais contacteur ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau pour couvrir la nuit (manque 8.2 kWh), mais le systeme reste en autonomie (contacteur ouvert). La batterie va atteindre le plancher avant l'aube, rendant la prevision matinale impossible.", + "piste": "Verifier pourquoi le contacteur n'a pas bascule alors que le bilan indique 'reseau juge necessaire : OUI'. Suspecter un blocage par un ecrivain externe ou une incoherence avec les seuils fixes du code.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "5-soir-deficit-ne-pas-demarrer", + "t": "2026-09-03T19:44:00+02:00", + "certain": true, + "titre": "03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W)", + "attendu": "CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "-12.2", + "pv_power_w": "758", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "1202", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison, coherent avec le bilan.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison. Le bilan exige 99.7 % SOC pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en ile (reseau ouvert) alors que le bilan identifie un manque de stockage de 6.8 kWh et juge le reseau necessaire. La voiture branchee ne charge pas, bloquant l'absorption d'un eventuel excedent futur ou la stabilisation du systeme.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert alors que le bilan demande du reseau. Verifier si le controleur EVCS bloque a cause du deficit actuel (normal) mais s'assurer que le reseau se refermera des que le deficit disparaitra ou pour charger la batterie vers les 100 % requis par le bilan.", + "confidence": 0.9 + }, + { + "constat": "Deficit solaire (-444 W) et reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison. Le bilan exige 99.7 % de SOC pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en ile a baton (reseau ouvert) alors que le bilan identifie un manque de stockage de 6.8 kWh et juge le reseau necessaire. La voiture branchee n'est pas chargee, mais l'excedent negatif empeche toute action sans vider la batterie.", + "piste": "Verifier pourquoi le contacteur reseau est reste ouvert malgre le signal 'reseau juge necessaire : OUI'. Si c'est volontaire (mode eco), accepter le risque de plancher au reveil ; sinon, fermer le contacteur pour charger la batterie ou la voiture via EDF.", + "confidence": 0.9 + }, + { + "constat": "Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison, coherent avec le bilan.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison, coherent avec le bilan.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "6-censure-demarrer", + "t": "2026-09-03T18:50:00+02:00", + "certain": true, + "titre": "03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee", + "attendu": "SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue", + "graviteAttendue": [ + "faible", + "moyenne" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "0", + "pv_power_w": "769", + "pv_power_10m_avg_w": "800", + "house_ac_power_w": "755", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "4.9", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie pleine (94%), PV bridés (6/6), excédent solaire nul (+14 W). Le bilan réclame 99.7% de SOC pour demain, mais le parc est au plafond.", + "gravite": "moyenne", + "ce_qui_cloche": "Le bilan identifie un manque de stockage de 6.8 kWh et juge le réseau nécessaire (4.9 kWh), mais la batterie est déjà à 0% de sa marge de décharge. L'énergie solaire excédentaire est perdue car la batterie ne peut plus charger.", + "piste": "Vérifier si l'automatisation 'EVCS Surplus Controller' ou un script force une consigne réseau incohérente qui empêche la charge du véhicule ou la gestion fine du surplus, alors que le contacteur EDF est ouvert.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pour demain, impossible sans reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en ileot (reseau ouvert) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production solaire refusee. La voiture ne consomme pas (0 W).", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? Le controleur EVCS attend-il un excedent qui n'existe pas car la batterie est pleine ?", + "confidence": 0.85 + }, + { + "constat": "Batterie pleine (94%), PV bridee (6/6), reseau absent. Bilan demande 100% SOC mais parc a 0% marge de charge.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau pour la nuit.", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700W ou un verrou hysteresis bloque-t-il l'importation des 4.9 kWh requis par le bilan ?", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridees (6/6), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert : le controleur EVCS ou l'hysteresis bloque-t-il la commutation vers le reseau pour eviter les transitoires ?", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) car la batterie est pleine et le reseau decharge, alors que le bilan identifie un manque de stockage de 6.8 kWh necessaire pour traverser la nuit sans payer le plein tarif.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert (consigne 700 W vs excedent negatif/nul). Le systeme devrait importer du courant EDF pour eviter de brider le PV et stocker l'energie gratuite, ou ajuster la consigne si la strategie 'auto_solar_plus' bloque l'importation par erreur.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "7-boost-evince-le-solaire", + "t": "2026-09-11T17:02:00+02:00", + "certain": true, + "titre": "11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W", + "attendu": "SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "s": { + "soc_percent": "96", + "battery_current_a": "0", + "pv_power_w": "121", + "pv_power_10m_avg_w": "150", + "house_ac_power_w": "7695", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "8260", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "plafond_edf_on_a": "28", + "balance_pv_censored": "on", + "balance_censor_reason": "production_bridee", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "8.4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de 5.2 kWh pour la nuit. La production solaire refusee n'est pas absorbee par la batterie pleine.", + "piste": "Verifier pourquoi la consigne SOC matin est fixee a 35 % alors que le bilan calcule 62 %. Ajuster la cible ou vider la batterie via la voiture si l'excedent le permet (ici deficit, donc impossible).", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96% (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62% pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de 5.2 kWh pour la nuit. La production solaire refusee n'est pas absorbee par la batterie pleine.", + "piste": "Verifier pourquoi la consigne SOC matin est fixee a 35% si le bilan en demande 62%. Considerer de reduire la cible SOC ou d'augmenter la puissance de charge EVCS pour absorber l'excedent solaire avant qu'il ne soit perdu.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96% (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62-70% pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est pleine mais le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau de 1.4 kWh. La production solaire est refusee alors que la voiture consomme du courant EDF.", + "piste": "Verifier si la consigne de puissance reseau (8260 W) ou le controleur EVCS permet d'absorber l'excedent solaire pour eviter la perte de production et reduire la facture EDF.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de 5.2 kWh pour la nuit. La production solaire refusee n'est pas absorbee par la batterie pleine.", + "piste": "Verifier pourquoi la consigne SOC ou la logique de charge ne permet pas d'absorber l'excedent solaire avant saturation, ou si la strategie force_grid evite la charge batterie inutilement.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est pleine et bloque la production solaire (bridee). La voiture consomme du reseau alors que le soleil est refuse. Le bilan indique un besoin de 1.4 kWh reseau ce soir.", + "piste": "Verifier pourquoi la voiture ne consomme pas l'excedent solaire (ou son absence) et si la consigne reseau permet d'absorber la production avant qu'elle soit perdue.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "8-voiture-pleine-ne-pas-reessayer", + "t": "2026-09-07T14:28:00+02:00", + "certain": true, + "titre": "07/09 14:28 — borne annonce charge terminee, vehicule branche immobile", + "attendu": "CALME : l etat collant fait son travail, aucune relance", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "97", + "battery_current_a": "1", + "pv_power_w": "2114", + "pv_power_10m_avg_w": "2000", + "house_ac_power_w": "1965", + "evcs_vehicle_connected": "on", + "evcs_current_a": "0", + "vehicle_selected": "JEEP", + "evcs_surplus_state": "day_vehicle_full_idle", + "evcs_source_mode": "Bloqué", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "58", + "balance_required_soc_prudent": "66", + "balance_energy_to_cover_kwh": "4.6", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "12", + "tomorrow_kwh": "30" + }, + "passages": [ + { + "constat": "PV bridee (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond), reseau absent.", + "gravite": "faible", + "ce_qui_cloche": "La production solaire est refusee car la batterie est saturee et le vehicule ne consomme plus. C'est une perte d'energie gratuite mais sans impact sur la securite ou la coherence systemique.", + "piste": "Verifier si la strategie 'auto_solar_plus' permet de debrider le contacteur pour eviter la perte, ou accepter cette perte comme consequence logique du vehicule plein.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 97 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Voiture pleine, aucun ecrivain actif.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 97 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Voiture pleine, aucun ecrivain actif.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "PV bride (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond). Reseau absent.", + "gravite": "faible", + "ce_qui_cloche": "La production solaire est refusee car la batterie est saturee et le vehicule ne consomme plus. C'est un gaspillage d'energie gratuite mais sans impact negatif sur le systeme.", + "piste": "Verifier si la consigne de puissance reseau (700 W) permettrait d'absorber cet excedent pour eviter la bride, ou accepter la perte si le reseau est volontairement coupe.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 97 % (plafond), PV bridees (6/6), reseau absent. Voiture pleine, aucun ecrivain actif.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "9-pointe-cuisson-proteger-le-parc", + "t": "2026-09-05T20:40:00+02:00", + "certain": true, + "titre": "05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A", + "attendu": "SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "limite", + "plafond", + "maximum", + "97", + "capacite", + "au bord", + "saturation" + ] + ], + "s": { + "soc_percent": "79", + "battery_current_a": "-97.4", + "pv_power_w": "320", + "pv_power_10m_avg_w": "500", + "house_ac_power_w": "4944", + "grid_state": "off", + "acin1_available": "0", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.1", + "balance_grid_needed": "on", + "tomorrow_kwh": "32" + }, + "passages": [ + { + "constat": "Parc a -97.4 A (limite 100 A) avec reseau absent et consigne 700 W inactive, marge de securite critique de 3 A.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a 97 % de sa limite declaree de decharge alors que le reseau est disponible mais non utilise (contacteur ouvert).", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'absorption du reseau pour soulager la batterie ?", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du courant et fragilisant les cellules.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas ferme pour absorber la demande (bilan : reseau OUI). Identifier si un ecrivain externe bloque la fermeture ou si la consigne est mal interpretee.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et sollicitant le materiel au maximum.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier si un ecrivain externe bloque la fermeture ou si la consigne de puissance est mal interpretee.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), reseau absent, excedent solaire negatif (-4624 W).", + "gravite": "haute", + "ce_qui_cloche": "Le parc est a 3 A de sa limite de decharge declaree alors que le reseau est disponible mais inutilise.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert et si un ecrivain non-proprietaire bloque la commutation.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A) avec reseau absent, excedent solaire negatif (-4624 W), SOC 79 %.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a 3 A de sa limite de decharge declaree alors que le reseau est disponible mais non utilise (contacteur ouvert).", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert et si un ecrivain autre que Battery/Grid Hysteresis Fix V1 bloque la commutation.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "10-nuage-sur-charge-28a", + "t": "2026-09-11T18:00:00+02:00", + "certain": true, + "titre": "11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W", + "attendu": "SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "nuage", + "marge", + "brutal", + "chute", + "passage", + "si le solaire" + ] + ], + "s": { + "soc_percent": "96", + "battery_current_a": "-0.7", + "pv_power_w": "6058", + "pv_power_10m_avg_w": "5500", + "house_ac_power_w": "6845", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "1281", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau de 1281 W evite l'injection mais limite le surplus.", + "gravite": "faible", + "ce_qui_cloche": "La consigne reseau (1281 W) est superflue car la batterie est pleine et les chargeurs sont brides ; elle ne protege pas le parc ici.", + "piste": "Verifier si la consigne reseau peut etre relevee ou desactivee pour laisser transiter le surplus solaire vers la voiture sans contrainte inutile.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif.", + "gravite": "moyenne", + "ce_qui_cloche": "Le controleur force la charge sur le reseau (force_grid_now) et evince la production PV gratuite (+5.6 kW) pour charger la voiture.", + "piste": "Verifier pourquoi EVCS Surplus Controller V2.6 ignore l'excedent solaire disponible et bascule en mode reseau.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau basse (1281 W) evite l'injection.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau basse (1281 W) evite l'injection.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau de 1281 W evite l'oscillation du contacteur.", + "gravite": "faible", + "ce_qui_cloche": "La consigne reseau force un achat inutile alors que le surplus solaire (+5653 W) est refuse par la batterie pleine et la voiture saturee.", + "piste": "Verifier si la consigne reseau doit etre relevee pour laisser transiter le surplus ou si c'est un comportement attendu de protection du parc.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": false, + "k": false + }, + { + "g": false, + "k": false + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "11-batterie-pleine-midi", + "t": "2026-09-11T12:00:00+02:00", + "certain": false, + "titre": "11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche", + "attendu": "OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ?", + "graviteAttendue": null, + "s": { + "soc_percent": "98", + "battery_current_a": "2.2", + "pv_power_w": "810", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "702", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "55", + "balance_required_soc_prudent": "63", + "balance_energy_to_cover_kwh": "4.1", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "balance_next_deficit_kwh": "4.1", + "balance_next_deficit_window": "(ce soir 20 h -> 09 h)", + "today_remaining_kwh": "45", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 98 % avec PV bride (6/6 chargeurs), reseau absent. Bilan indique besoin de 55 % pour la nuit, mais SOC actuel est bien superieur.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % avec production bridee (6/6 chargeurs). Excedent solaire negligeable (+108 W) sans vehicule. Reseau absent.", + "gravite": "faible", + "ce_qui_cloche": "La production est refusee car la batterie est saturee et le reseau est deconnecte, mais aucun puits n'est disponible pour absorber l'energie gratuite.", + "piste": "Verifier si la fermeture du contacteur reseau est bloquee par une consigne ou un automate alors que la ressource est abondante.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan coherent : reseau inutile, excedent negligeable (+108 W).", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % avec 6 chargeurs brides, reseau absent. Le bilan indique un besoin de 55 % pour la nuit mais la batterie est pleine.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est bridee (refusee) car la batterie est saturee et le reseau est coupe. L'energie gratuite est perdue alors que le systeme est en ileot.", + "piste": "Verifier pourquoi le contacteur reseau est ouvert si le bilan ne demande pas de reseau. Si c'est volontaire (autoconsommation stricte), accepter la perte d'excedent ou ouvrir le reseau pour eviter la bride." + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan indique reseau inutile mais contacteur ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que le bilan ne demande pas de reseau, et la batterie est pleine sans vehicule pour absorber l'excedent.", + "piste": "Verifier pourquoi le contacteur reste ouvert si le bilan dit 'reseau non necessaire' : potentiellement une consigne de puissance ou un seuil de SOC qui bloque la fermeture du contacteur alors que la production est perdue.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "12-orage-annonce", + "t": "2026-09-12T15:30:00+02:00", + "certain": false, + "titre": "Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site", + "attendu": "OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "72", + "battery_current_a": "35", + "pv_power_w": "4200", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "900", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_storm_level": "Orange", + "balance_storm_reserve_soc": "88", + "balance_required_soc": "55", + "balance_required_soc_prudent": "62", + "balance_energy_to_cover_kwh": "3.2", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "18", + "tomorrow_kwh": "40" + }, + "passages": [ + { + "constat": "Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers 72 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge à 35 A vers 72 %. Bilan cohérent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent 3.3 kW. Batterie charge à 35 A vers 72 %. Bilan cohérent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge à 35 A vers 72 %. Aucun véhicule branché.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers 72 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "13-voiture-empruntee-echeance", + "t": "2026-09-11T17:00:00+02:00", + "certain": false, + "titre": "11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present", + "attendu": "OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ?", + "graviteAttendue": null, + "s": { + "soc_percent": "96", + "battery_current_a": "-10", + "pv_power_w": "4255", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "4888", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "20", + "vehicle_selected": "JEEP", + "user_strategy": "force_charge_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "700", + "evcs_source_mode": "Solaire", + "evcs_surplus_state": "charging_hold_manual_local", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "required_energy_kwh": "12", + "departure_time": "19:00", + "departure_priority_enabled": "on", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "6", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau (0.7 kW). Excedent solaire positif, systeme coherent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme et inutile.", + "gravite": "moyenne", + "ce_qui_cloche": "Le reseau est ferme alors que la production solaire est bridee et que la voiture charge : l'energie gratuite est perdue au lieu d'alimenter le vehicule ou la batterie.", + "piste": "Verifier pourquoi le contacteur reste ferme avec un excedent de +3967 W ; ouvrir le reseau pour absorber la production refusee.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme.", + "gravite": "moyenne", + "ce_qui_cloche": "Le reseau est ferme et la batterie pleine : le surplus solaire est perdu alors que la voiture charge au courant limite.", + "piste": "Verifier pourquoi le contacteur reste ferme avec un excedent de 3967 W et une marge de parc de 90 A.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau (0.7 kW). Excedent solaire positif, systeme coherent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW. Le bilan demande 62 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est pleine et la voiture consomme l'excedent solaire (+3967 W). C'est optimal maintenant, mais le SOC de 96 % risque d'etre maintenu par la force_charge_now alors que le bilan indique un besoin de 62 % pour demain matin. Si la charge continue sans limite, on perd de l'espace ou on fragilise le parc.", + "piste": "Verifier si la consigne manuelle 'force_charge_now' va se desactiver automatiquement ou s'il faut passer en mode auto pour laisser le systeme gerer le SOC cible de 62-70 %. Surveiller la marge de decharge (90 A restants) qui est faible.", + "confidence": 0.85 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4b-hiver-parc-12", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000)", + "attendu": "OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "52", + "balance_required_soc_prudent": "59", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "12", + "bms_max_discharge_current_a": "300", + "bms_max_charge_current_a": "300" + }, + "passages": [ + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incohérente avec prévision 6.2 kWh.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC de 85% est irréaliste pour demain (prévision 6.2 kWh < besoin 9.4 kWh), mais le système fonctionne correctement en autonomie.", + "piste": "Vérifier si la consigne de 85% est figée dans un script ou l'EVCS alors qu'elle devrait être dynamique selon la prévision solaire.", + "confidence": 0.9 + }, + { + "constat": "SOC 55% vs besoin prudent 59%. Deficit nocturne de 2 kWh. Reseau absent, consigne 700W inopérante.", + "gravite": "faible", + "ce_qui_cloche": "Ecart de 4 points entre SOC actuel et cible prudente du bilan pour la traversée nocturne.", + "piste": "Vérifier si le contacteur EDF peut se fermer pour combler les 4% manquants avant minuit.", + "confidence": 0.85 + }, + { + "constat": "SOC 55% vs besoin prudent 59%. Deficit nocturne de 2 kWh. Reseau absent, contacteur ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "Le bilan indique que le reseau est necessaire (OUI) mais le contacteur reste ouvert. La batterie risque de ne pas atteindre la cible prudente de 59% pour demain matin.", + "piste": "Verifier pourquoi le contacteur n'a pas ferme pour charger les 4% manquants (diff 55-59). Est-ce un blocage du 'Battery / Grid Hysteresis Fix V1' ou une consigne erronee ?", + "confidence": 0.85 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59% pour demain 11h. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Consigne réseau 700W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4c-hiver-parc-16", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec 16 equivalents (vieux modules repares)", + "attendu": "OUVERT : et avec 16 equivalents ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "44", + "balance_required_soc_prudent": "50", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "off", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "16", + "bms_max_discharge_current_a": "400", + "bms_max_charge_current_a": "400" + }, + "passages": [ + { + "constat": "Batterie 55 % (cible prudente 50 %), réseau coupé, déficit -1400 W. Bilan cohérent : autonomie suffisante jusqu'au matin.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Marge parc saine.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie 55 % (cible prudente 50 %), réseau absent, déficit -1400 W. Bilan cohérent : 9.4 kWh à couvrir avant 11h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "15-oscillation-contacteur", + "t": "2026-09-12T06:36:00+02:00", + "certain": true, + "titre": "INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes", + "attendu": "SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "oscill", + "bascul", + "va-et-vient", + "aller-retour", + "repet", + "six fois", + "6 fois", + "cycl" + ], + [ + "conflit", + "deux", + "ecriv", + "contradict", + "se battent", + "concurren", + "automatisation", + "hysteresis" + ] + ], + "s": { + "soc_percent": "35", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "1.56", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "06:35:06 Contacteur EDF : off -> on|06:34:02 Contacteur EDF : on -> off|06:30:49 Contacteur EDF : off -> on|06:29:44 Contacteur EDF : on -> off|06:26:31 Contacteur EDF : off -> on|06:25:27 Contacteur EDF : on -> off" + }, + "passages": [ + { + "constat": "Oscillation du contacteur reseau (6 bascules en 10 min) alors que le bilan juge le reseau necessaire et qu'il est present.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur EDF bascule repetitivement (on/off) au lieu de rester ferme comme l'exige le bilan energetique. Chaque bascule coute 50-150 Wh et use le relais.", + "piste": "Identifier l'ecrivain fautif : le proprietaire 'Battery / Grid Hysteresis Fix V1' ou un ecrivain externe ('EVCS Surplus Controller', scripts) qui defait la consigne. Verifier les seuils d'hysteresis figes dans le code.", + "confidence": 0.98 + }, + { + "constat": "Oscillation du contacteur EDF toutes les ~2 min depuis 06:25 (6 bascules), alors que le reseau est requis par le bilan.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur bascule repetitivement, ce qui coute 300-900 Wh de transitoires et use le relais. Le proprietaire est Battery/Grid Hysteresis Fix V1, mais EVCS Surplus Controller ou scripts sont d'autres ecrivains potentiels.", + "piste": "Verifier si un script ou l'EVCS Surplus Controller force la fermeture/ouverture du contacteur en contradiction avec la consigne du hysteresis fix.", + "confidence": 0.95 + }, + { + "constat": "Oscillation du contacteur reseau : 6 bascules en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur EDF bascule de facon repetee, ce qui coute 50 a 150 Wh par cycle et use le relais. Le proprietaire est Battery/Grid Hysteresis Fix V1, mais EVCS Surplus Controller V2.6 ou des scripts sont d'autres ecrivains potentiels.", + "piste": "Verifier si un script ou le controleur EVCS ne force pas l'etat du contacteur contre la logique d'hysteresis du module principal. Stabiliser la consigne pour eviter les micro-bascules.", + "confidence": 0.98 + }, + { + "constat": "Oscillation du contacteur EDF toutes les 1-2 min depuis 06:25 (6 bascules).", + "gravite": "haute", + "ce_qui_cloche": "Bascule repetee du contacteur reseau, cout energetique et usure mecanique.", + "piste": "Verifier le hysteresis de Battery/Grid Hysteresis Fix V1 ou un conflit avec EVCS Surplus Controller.", + "confidence": 0.98 + }, + { + "constat": "Oscillation du contacteur EDF (6 bascules en 10 min) alors que le reseau est requis par le bilan pour couvrir le deficit matinal.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur bascule repetitivement, ce qui coute de l'energie et use le relais. Le bilan demande le reseau (1.1 kWh), mais il est coupé/reconnecté sans cesse.", + "piste": "Identifier l'ecrivain fautif (EVCS Surplus Controller ou script) qui force la coupure malgre la presence du reseau et la consigne haute. Stabiliser la logique d'hysteresis.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "16-systeme-calme", + "t": "2026-09-12T07:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes", + "attendu": "NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "42", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "0.9", + "balance_grid_needed": "on", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "05:02:51 Contacteur EDF : off -> on|05:02:51 Reprise reseau nuit : off -> on" + }, + "passages": [ + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le reseau jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système stable. Réseau présent, batterie charge (42%), PV nul (nuit). Consigne réseau 5759 W cohérente avec la demande.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nuls. Bilan coherent : deficit matinal couvert par le reseau.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nuls. Bilan coherent : deficit couvert par le reseau, pas de surcharge parc.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Samedi 07:00, PV a 0 W. Batterie chargee (20 A) via reseau ferme depuis 05:03. Consigne reseau haute (5759 W).", + "gravite": "faible", + "ce_qui_cloche": "La consigne de puissance reseau est laissee a 5759 W alors que le bilan indique un besoin nul et que le soleil revient a 09h.", + "piste": "Verifier si l'automatisation de reduction de la consigne reseau au lever du jour s'est bien declenchee ou si elle est bloquee par un script tiers.", + "confidence": 0.85 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "14-bilan-indisponible", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE", + "attendu": "SIGNALER en le disant : le bilan est degrade, donc prudence assumee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "degrad", + "indisponible", + "sans bilan", + "pas de bilan", + "inconnu", + "unknown" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "35", + "tomorrow_kwh": "75.2", + "balance_status": "degrade", + "balance_required_soc": "unknown", + "balance_energy_to_cover_kwh": "unknown" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), PV 0W, deficit -612W. Reseau ferme et consigne a 700W. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est vide alors que le reseau est disponible et la consigne haute. La cible matinale de 35% n'est pas atteinte, ce qui forcera un achat au plein tarif plus tard si le soleil ne charge pas assez vite.", + "piste": "Verifier pourquoi la recharge depuis le reseau n'a pas lieu ou est insuffisante pour atteindre les 35% avant le lever du jour. Le bilan degrade empeche une optimisation fine.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, bilan indisponible. La maison est alimentee par le reseau pendant la nuit.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan energetique est indisponible, empechant une verification precise de la coherence entre la cible SOC et les besoins reels du matin.", + "piste": "Verifier pourquoi le calculateur de bilan est en statut degrade et confirmer que la fermeture du contacteur reseau est bien geree par l'automatisation pour eviter un appel au plein tarif si la batterie ne remonte pas.", + "confidence": 0.8 + }, + { + "constat": "SOC 20% (plancher), PV 0W, réseau présent. Bilan indisponible. Consigne réseau 700W.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan énergétique est indisponible alors que la batterie est au plancher de sécurité de 22% (mesuré à 20%).", + "piste": "Vérifier la disponibilité du calculateur de bilan. La consigne réseau de 700W semble cohérente avec le déficit actuel.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), PV 0 W, réseau présent. Bilan indisponible. Consigne réseau 700 W.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan énergétique est indisponible alors que la batterie est au plancher de sécurité de 22 % (mesuré à 20 %).", + "piste": "Vérifier pourquoi le calcul du bilan est en statut dégradé et confirmer si la consigne de 700 W permet de recharger via EDF avant le pic du matin.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), PV 0 W, réseau présent. Bilan indisponible. Consigne réseau 700 W.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan énergétique est indisponible alors que la batterie est au plancher de sécurité et que le réseau est disponible pour charger.", + "piste": "Vérifier pourquoi le calcul du bilan est en statut dégradé à cette heure critique (nuit).", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + } +] \ No newline at end of file diff --git a/docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.log b/docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.log new file mode 100644 index 0000000..36516fd --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-apres-4-correctifs.log @@ -0,0 +1,328 @@ + +═══ 1-nuit-bloquee-sans-vehicule + 12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 % + attendu : SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh + ✔ [moyenne] SOC 20% (plancher), deficit -612 W, reseau present mais consigne 700 W. Bilan demande 59.1% + ↳ La batterie est au plancher de securite (20%) alors que le bilan identifie un besoin de 3.4 kWh via le reseau pour attei + → Verifier pourquoi la consigne reseau (700 W) n'induit pas une charge de la batterie vers la cible de 59.1%. Est-ce que l [ne nomme pas] + ✔ [moyenne] SOC 20% (plancher), deficit -612 W, reseau present mais consigne 700 W. Bilan demande 59.1% + ↳ La batterie est au plancher de securite (20%) alors que le bilan identifie un besoin de 3.4 kWh via le reseau pour attei + → Verifier pourquoi le contacteur reste ferme sans charger la batterie vers la cible de 59.1%. La consigne de 700 W permet [ne nomme pas] + ✔ [moyenne] Nuit, PV 0 W. Batterie a 20 % (plancher). Maison consomme 612 W. Reseau ferme et alimente la + ↳ La batterie est au plancher de securite (20 %) alors que le bilan identifie un besoin de reseau de 3.4 kWh pour atteindr + → Verifier pourquoi le contacteur reste ferme mais la batterie ne se charge pas vers la cible de 59.1 %. Est-ce que l'auto [ne nomme pas] + ✔ [haute ] SOC 20% (plancher) avec deficit de -612 W. Le reseau est present mais la batterie ne charge + ↳ La batterie est au plancher de securite (20%) alors que le bilan exige 3,4 kWh du reseau pour couvrir la nuit et le mati + → Verifier l'etat du contacteur reseau et les ecritures du 'Battery / Grid Hysteresis Fix V1'. Si le contacteur est ferme [ne nomme pas] + ✔ [moyenne] Nuit, PV 0 W. Batterie a 20 % (plancher). Maison consomme 612 W. Reseau ferme et alimente la + ↳ La batterie est au plancher de securite (20 %) alors que le bilan identifie un besoin de reseau de 3.4 kWh pour atteindr + → Verifier pourquoi la consigne de charge reseau n'est pas activee pour remonter le SOC vers 59.1 % durant l'heure creuse [nomme] + gravites : moyenne moyenne moyenne haute moyenne INSTABLE (2 valeurs) + gravite dans la fourchette moyenne|haute : 5/5 + a nomme la chose : 1/5 + +═══ 2-nuit-relachee-trop-tot + 03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30) + attendu : SIGNALER : SOC sous le requis alors que la session est marquee terminee + ✘ [aucune ] 03:00, nuit. Batterie 45% (cible 50.4%), réseau présent et consigné à 700 W pour couvrir le + [ne nomme pas] + ✘ [aucune ] Nuit, réseau présent. Batterie 45% (cible 50.4%). Déficit -700 W. Réseau comble le manque (1 + [ne nomme pas] + ✘ [aucune ] 03:00, nuit. Batterie 45% (cible 50.4%), réseau présent et consigné à 700 W. Voiture branché + [ne nomme pas] + ✘ [aucune ] Nuit, réseau présent. Batterie 45% (cible 50.4%). Déficit -700W. Réseau couvre le manque ide + [ne nomme pas] + ✘ [aucune ] 03:00, nuit. Batterie 45% (cible 50.4%), réseau présent et consigné à 700 W. Véhicule branch + [ne nomme pas] + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette faible|moyenne|haute : 0/5 + a nomme la chose : 0/5 + +═══ 3-nuit-couverte-ne-rien-faire + CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis + attendu : NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent + ✔ [aucune ] Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan coherent : SOC ci + ✔ [aucune ] Samedi 04:00, nuit. Batterie 70% (-12A), PV 0W. Bilan demande 59.1% pour 09h. Consigne resea + ✔ [aucune ] Nuit, réseau coupé. Batterie 70% (-12A) couvre la maison (612W). Bilan demande 59.1% pour 09 + ✔ [aucune ] Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59. + ✔ [aucune ] Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan demande 59.1 % po + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 4-hiver-nuit-longue [OUVERT] + HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h + attendu : OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ? + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne co + ↳ Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme reste en autonomie (contacteur ouvert). La ba + → Verifier pourquoi le contacteur n'a pas bascule alors que le bilan indique 'reseau juge necessaire: OUI'. Suspecter un c + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Reseau absent, defi + ↳ Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne peut pas couvrir la nuit sans toucher a + → Verifier pourquoi le contacteur reste ouvert alors que le bilan juge le reseau necessaire. Suspecter un ecrivain externe + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne co + ↳ Le bilan identifie un manque de 8.2 kWh et requiert le reseau, mais l'installation est en ile (contacteur ouvert). La ba + → Verifier pourquoi le contacteur reste ouvert alors que le bilan demande le reseau. Suspecter un conflit avec 'Battery / + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne co + ↳ Le bilan identifie un manque de stockage de 8.2 kWh et requiert le reseau (5.1 kWh), mais le systeme reste en autonomie + → Verifier pourquoi le contacteur reseau n'a pas bascule pour couvrir le deficit identifie par le bilan. Suspecter un bloc + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne co + ↳ Le bilan exige le reseau pour couvrir la nuit (manque 8.2 kWh), mais le systeme reste en autonomie (contacteur ouvert). + → Verifier pourquoi le contacteur n'a pas bascule alors que le bilan indique 'reseau juge necessaire : OUI'. Suspecter un + gravites : haute haute haute haute haute STABLE + +═══ 5-soir-deficit-ne-pas-demarrer + 03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W) + attendu : CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif + ✔ [aucune ] Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la + ✘ [moyenne] Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la + ↳ Le systeme est en ile (reseau ouvert) alors que le bilan identifie un manque de stockage de 6.8 kWh et juge le reseau ne + → Verifier pourquoi le contacteur reseau reste ouvert alors que le bilan demande du reseau. Verifier si le controleur EVCS + ✘ [moyenne] Deficit solaire (-444 W) et reseau absent. La batterie decharge (-12.2 A) pour couvrir la ma + ↳ Le systeme est en ile a baton (reseau ouvert) alors que le bilan identifie un manque de stockage de 6.8 kWh et juge le r + → Verifier pourquoi le contacteur reseau est reste ouvert malgre le signal 'reseau juge necessaire : OUI'. Si c'est volont + ✔ [aucune ] Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la + ✔ [aucune ] Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la + gravites : aucune moyenne moyenne aucune aucune INSTABLE (2 valeurs) + gravite dans la fourchette aucune|faible : 3/5 + +═══ 6-censure-demarrer + 03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee + attendu : SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue + ✔ [moyenne] Batterie pleine (94%), PV bridés (6/6), excédent solaire nul (+14 W). Le bilan réclame 99.7% + ↳ Le bilan identifie un manque de stockage de 6.8 kWh et juge le réseau nécessaire (4.9 kWh), mais la batterie est déjà à + → Vérifier si l'automatisation 'EVCS Surplus Controller' ou un script force une consigne réseau incohérente qui empêche la + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pou + ↳ Le systeme est en ileot (reseau ouvert) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production so + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? L + ✔ [moyenne] Batterie pleine (94%), PV bridee (6/6), reseau absent. Bilan demande 100% SOC mais parc a 0% + ↳ Production solaire refusee (bridee) alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de re + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700W ou un verrou hysteresis bloque-t-il l'importation des + ✔ [moyenne] Batterie a 94 % (plafond), PV bridees (6/6), reseau absent. Le bilan demande 100 % pour dema + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energi + → Verifier pourquoi le contacteur reste ouvert : le controleur EVCS ou l'hysteresis bloque-t-il la commutation vers le res + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pou + ↳ La production solaire est refusee (bridee) car la batterie est pleine et le reseau decharge, alors que le bilan identifi + → Verifier pourquoi le contacteur reseau reste ouvert (consigne 700 W vs excedent negatif/nul). Le systeme devrait importe + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne : 5/5 + +═══ 7-boost-evince-le-solaire + 11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W + attendu : SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne + ✔ [moyenne] Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62 % pour dem + ↳ La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de 5.2 kWh pour l + → Verifier pourquoi la consigne SOC matin est fixee a 35 % alors que le bilan calcule 62 %. Ajuster la cible ou vider la b + ✔ [moyenne] Batterie a 96% (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62% pour demai + ↳ La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de 5.2 kWh pour l + → Verifier pourquoi la consigne SOC matin est fixee a 35% si le bilan en demande 62%. Considerer de reduire la cible SOC o + ✔ [moyenne] Batterie a 96% (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62-70% pour de + ↳ La batterie est pleine mais le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau de 1.4 kWh. L + → Verifier si la consigne de puissance reseau (8260 W) ou le controleur EVCS permet d'absorber l'excedent solaire pour evi + ✔ [moyenne] Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62 % pour dem + ↳ La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de 5.2 kWh pour l + → Verifier pourquoi la consigne SOC ou la logique de charge ne permet pas d'absorber l'excedent solaire avant saturation, + ✔ [moyenne] Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan demande 62 % pour dem + ↳ La batterie est pleine et bloque la production solaire (bridee). La voiture consomme du reseau alors que le soleil est r + → Verifier pourquoi la voiture ne consomme pas l'excedent solaire (ou son absence) et si la consigne reseau permet d'absor + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette moyenne|haute : 5/5 + +═══ 8-voiture-pleine-ne-pas-reessayer + 07/09 14:28 — borne annonce charge terminee, vehicule branche immobile + attendu : CALME : l etat collant fait son travail, aucune relance + ✔ [faible ] PV bridee (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond), + ↳ La production solaire est refusee car la batterie est saturee et le vehicule ne consomme plus. C'est une perte d'energie + → Verifier si la strategie 'auto_solar_plus' permet de debrider le contacteur pour eviter la perte, ou accepter cette pert + ✔ [aucune ] Batterie a 97 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Voiture pleine, aucun e + ✔ [aucune ] Batterie a 97 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Voiture pleine, aucun e + ✔ [faible ] PV bride (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond). R + ↳ La production solaire est refusee car la batterie est saturee et le vehicule ne consomme plus. C'est un gaspillage d'ene + → Verifier si la consigne de puissance reseau (700 W) permettrait d'absorber cet excedent pour eviter la bride, ou accepte + ✔ [aucune ] Batterie a 97 % (plafond), PV bridees (6/6), reseau absent. Voiture pleine, aucun ecrivain a + gravites : faible aucune aucune faible aucune INSTABLE (2 valeurs) + gravite dans la fourchette aucune|faible : 5/5 + +═══ 9-pointe-cuisson-proteger-le-parc + 05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A + attendu : SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert + ✔ [haute ] Parc a -97.4 A (limite 100 A) avec reseau absent et consigne 700 W inactive, marge de securi + ↳ Le parc opere a 97 % de sa limite declaree de decharge alors que le reseau est disponible mais non utilise (contacteur o + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'absorption du [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reseau reste ouvert, empechant l'absor + → Verifier pourquoi le contacteur reseau n'a pas ferme pour absorber la demande (bilan : reseau OUI). Identifier si un ecr [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reseau reste ouvert, empechant l'absor + → Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Id [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), reseau absent, excedent solaire negatif (-4624 W). + ↳ Le parc est a 3 A de sa limite de decharge declaree alors que le reseau est disponible mais inutilise. + → Verifier pourquoi le contacteur reseau reste ouvert et si un ecrivain non-proprietaire bloque la commutation. [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A) avec reseau absent, excedent solaire negatif (-4624 W), SOC 79 + ↳ Le parc opere a 3 A de sa limite de decharge declaree alors que le reseau est disponible mais non utilise (contacteur ou + → Verifier pourquoi le contacteur reseau reste ouvert et si un ecrivain autre que Battery/Grid Hysteresis Fix V1 bloque la [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 10-nuage-sur-charge-28a + 11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W + attendu : SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie + ✔ [faible ] Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau de 1281 W evi + ↳ La consigne reseau (1281 W) est superflue car la batterie est pleine et les chargeurs sont brides ; elle ne protege pas + → Verifier si la consigne reseau peut etre relevee ou desactivee pour laisser transiter le surplus solaire vers la voiture [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ Le controleur force la charge sur le reseau (force_grid_now) et evince la production PV gratuite (+5.6 kW) pour charger + → Verifier pourquoi EVCS Surplus Controller V2.6 ignore l'excedent solaire disponible et bascule en mode reseau. [ne nomme pas] + ✘ [aucune ] Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau basse (1281 W + [ne nomme pas] + ✘ [aucune ] Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau basse (1281 W + [ne nomme pas] + ✔ [faible ] Batterie a 96 % (plafond), PV brident, voiture chargee au max. Consigne reseau de 1281 W evi + ↳ La consigne reseau force un achat inutile alors que le surplus solaire (+5653 W) est refuse par la batterie pleine et la + → Verifier si la consigne reseau doit etre relevee pour laisser transiter le surplus ou si c'est un comportement attendu d [ne nomme pas] + gravites : faible moyenne aucune aucune faible INSTABLE (3 valeurs) + gravite dans la fourchette faible|moyenne|haute : 3/5 + a nomme la chose : 0/5 + +═══ 11-batterie-pleine-midi [OUVERT] + 11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche + attendu : OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ? + [aucune ] Batterie a 98 % avec PV bride (6/6 chargeurs), reseau absent. Bilan indique besoin de 55 % p + [faible ] Batterie a 98 % avec production bridee (6/6 chargeurs). Excedent solaire negligeable (+108 W + ↳ La production est refusee car la batterie est saturee et le reseau est deconnecte, mais aucun puits n'est disponible pou + → Verifier si la fermeture du contacteur reseau est bloquee par une consigne ou un automate alors que la ressource est abo + [aucune ] Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan coherent : reseau inutile, exced + [moyenne] Batterie a 98 % avec 6 chargeurs brides, reseau absent. Le bilan indique un besoin de 55 % p + ↳ La production solaire est bridee (refusee) car la batterie est saturee et le reseau est coupe. L'energie gratuite est pe + → Verifier pourquoi le contacteur reseau est ouvert si le bilan ne demande pas de reseau. Si c'est volontaire (autoconsomm + [moyenne] Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan indique reseau inutile mais cont + ↳ Production solaire refusee (bridee) alors que le bilan ne demande pas de reseau, et la batterie est pleine sans vehicule + → Verifier pourquoi le contacteur reste ouvert si le bilan dit 'reseau non necessaire' : potentiellement une consigne de p + gravites : aucune faible aucune moyenne moyenne INSTABLE (3 valeurs) + +═══ 12-orage-annonce [OUVERT] + Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site + attendu : OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ? + [aucune ] Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent 3.3 kW. Batterie charge + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge + [aucune ] Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers + gravites : aucune aucune aucune aucune aucune STABLE + +═══ 13-voiture-empruntee-echeance [OUVERT] + 11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present + attendu : OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ? + [aucune ] Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau (0.7 kW). Excedent so + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme et inutile. + ↳ Le reseau est ferme alors que la production solaire est bridee et que la voiture charge : l'energie gratuite est perdue + → Verifier pourquoi le contacteur reste ferme avec un excedent de +3967 W ; ouvrir le reseau pour absorber la production r + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme. + ↳ Le reseau est ferme et la batterie pleine : le surplus solaire est perdu alors que la voiture charge au courant limite. + → Verifier pourquoi le contacteur reste ferme avec un excedent de 3967 W et une marge de parc de 90 A. + [aucune ] Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau (0.7 kW). Excedent so + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW. Le bilan demande 62 % pour d + ↳ La batterie est pleine et la voiture consomme l'excedent solaire (+3967 W). C'est optimal maintenant, mais le SOC de 96 + → Verifier si la consigne manuelle 'force_charge_now' va se desactiver automatiquement ou s'il faut passer en mode auto po + gravites : aucune moyenne moyenne aucune moyenne INSTABLE (2 valeurs) + +═══ 4b-hiver-parc-12 [OUVERT] + HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000) + attendu : OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ? + [faible ] Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cibl + ↳ La cible SOC de 85% est irréaliste pour demain (prévision 6.2 kWh < besoin 9.4 kWh), mais le système fonctionne correcte + → Vérifier si la consigne de 85% est figée dans un script ou l'EVCS alors qu'elle devrait être dynamique selon la prévisio + [faible ] SOC 55% vs besoin prudent 59%. Deficit nocturne de 2 kWh. Reseau absent, consigne 700W inopé + ↳ Ecart de 4 points entre SOC actuel et cible prudente du bilan pour la traversée nocturne. + → Vérifier si le contacteur EDF peut se fermer pour combler les 4% manquants avant minuit. + [moyenne] SOC 55% vs besoin prudent 59%. Deficit nocturne de 2 kWh. Reseau absent, contacteur ouvert. + ↳ Le bilan indique que le reseau est necessaire (OUI) mais le contacteur reste ouvert. La batterie risque de ne pas attein + → Verifier pourquoi le contacteur n'a pas ferme pour charger les 4% manquants (diff 55-59). Est-ce un blocage du 'Battery + [aucune ] Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59% pour + [aucune ] Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cons + gravites : faible faible moyenne aucune aucune INSTABLE (3 valeurs) + +═══ 4c-hiver-parc-16 [OUVERT] + HIVER avec 16 equivalents (vieux modules repares) + attendu : OUVERT : et avec 16 equivalents ? + [aucune ] Batterie 55 % (cible prudente 50 %), réseau coupé, déficit -1400 W. Bilan cohérent : autonom + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour dema + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour dema + [aucune ] Batterie 55 % (cible prudente 50 %), réseau absent, déficit -1400 W. Bilan cohérent : 9.4 kW + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour dema + gravites : aucune aucune aucune aucune aucune STABLE + +═══ 15-oscillation-contacteur + INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes + attendu : SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains + ✔ [haute ] Oscillation du contacteur reseau (6 bascules en 10 min) alors que le bilan juge le reseau ne + ↳ Le contacteur EDF bascule repetitivement (on/off) au lieu de rester ferme comme l'exige le bilan energetique. Chaque bas + → Identifier l'ecrivain fautif : le proprietaire 'Battery / Grid Hysteresis Fix V1' ou un ecrivain externe ('EVCS Surplus [nomme] + ✔ [haute ] Oscillation du contacteur EDF toutes les ~2 min depuis 06:25 (6 bascules), alors que le rese + ↳ Le contacteur bascule repetitivement, ce qui coute 300-900 Wh de transitoires et use le relais. Le proprietaire est Batt + → Verifier si un script ou l'EVCS Surplus Controller force la fermeture/ouverture du contacteur en contradiction avec la c [nomme] + ✔ [haute ] Oscillation du contacteur reseau : 6 bascules en 10 minutes (06:25-06:35) alors que le resea + ↳ Le contacteur EDF bascule de facon repetee, ce qui coute 50 a 150 Wh par cycle et use le relais. Le proprietaire est Bat + → Verifier si un script ou le controleur EVCS ne force pas l'etat du contacteur contre la logique d'hysteresis du module p [nomme] + ✔ [haute ] Oscillation du contacteur EDF toutes les 1-2 min depuis 06:25 (6 bascules). + ↳ Bascule repetee du contacteur reseau, cout energetique et usure mecanique. + → Verifier le hysteresis de Battery/Grid Hysteresis Fix V1 ou un conflit avec EVCS Surplus Controller. [nomme] + ✔ [haute ] Oscillation du contacteur EDF (6 bascules en 10 min) alors que le reseau est requis par le b + ↳ Le contacteur bascule repetitivement, ce qui coute de l'energie et use le relais. Le bilan demande le reseau (1.1 kWh), + → Identifier l'ecrivain fautif (EVCS Surplus Controller ou script) qui force la coupure malgre la presence du reseau et la [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 16-systeme-calme + CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes + attendu : NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le + ✔ [aucune ] Système stable. Réseau présent, batterie charge (42%), PV nul (nuit). Consigne réseau 5759 W + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nuls. Bilan coherent : deficit matinal couve + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nuls. Bilan coherent : deficit couvert par l + ✘ [faible ] Samedi 07:00, PV a 0 W. Batterie chargee (20 A) via reseau ferme depuis 05:03. Consigne rese + ↳ La consigne de puissance reseau est laissee a 5759 W alors que le bilan indique un besoin nul et que le soleil revient a + → Verifier si l'automatisation de reduction de la consigne reseau au lever du jour s'est bien declenchee ou si elle est bl + gravites : aucune aucune aucune aucune faible INSTABLE (2 valeurs) + gravite dans la fourchette aucune : 4/5 + +═══ 14-bilan-indisponible + ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE + attendu : SIGNALER en le disant : le bilan est degrade, donc prudence assumee + ✔ [moyenne] SOC 20% (plancher), PV 0W, deficit -612W. Reseau ferme et consigne a 700W. Bilan indisponibl + ↳ La batterie est vide alors que le reseau est disponible et la consigne haute. La cible matinale de 35% n'est pas atteint + → Verifier pourquoi la recharge depuis le reseau n'a pas lieu ou est insuffisante pour atteindre les 35% avant le lever du [nomme] + ✔ [faible ] SOC 20 % (plancher), reseau ferme, bilan indisponible. La maison est alimentee par le reseau + ↳ Le bilan energetique est indisponible, empechant une verification precise de la coherence entre la cible SOC et les beso + → Verifier pourquoi le calculateur de bilan est en statut degrade et confirmer que la fermeture du contacteur reseau est b [nomme] + ✔ [faible ] SOC 20% (plancher), PV 0W, réseau présent. Bilan indisponible. Consigne réseau 700W. + ↳ Le bilan énergétique est indisponible alors que la batterie est au plancher de sécurité de 22% (mesuré à 20%). + → Vérifier la disponibilité du calculateur de bilan. La consigne réseau de 700W semble cohérente avec le déficit actuel. [nomme] + ✔ [faible ] SOC 20 % (plancher), PV 0 W, réseau présent. Bilan indisponible. Consigne réseau 700 W. + ↳ Le bilan énergétique est indisponible alors que la batterie est au plancher de sécurité de 22 % (mesuré à 20 %). + → Vérifier pourquoi le calcul du bilan est en statut dégradé et confirmer si la consigne de 700 W permet de recharger via [nomme] + ✔ [faible ] SOC 20 % (plancher), PV 0 W, réseau présent. Bilan indisponible. Consigne réseau 700 W. + ↳ Le bilan énergétique est indisponible alors que la batterie est au plancher de sécurité et que le réseau est disponible + → Vérifier pourquoi le calcul du bilan est en statut dégradé à cette heure critique (nuit). [nomme] + gravites : moyenne faible faible faible faible INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 5/5 + +──────────────────────────────────────────────────────────── +INCIDENTS : 33/40 gravites justes (8 cas) + 5/5 1-nuit-bloquee-sans-vehicule nomme 1/5 + 0/5 2-nuit-relachee-trop-tot nomme 0/5 + 5/5 6-censure-demarrer + 5/5 7-boost-evince-le-solaire + 5/5 9-pointe-cuisson-proteger-le-parc nomme 5/5 + 3/5 10-nuage-sur-charge-28a nomme 0/5 + 5/5 15-oscillation-contacteur nomme 5/5 + 5/5 14-bilan-indisponible nomme 5/5 +SYSTEME CALME : 17/20 (silence attendu) (4 cas) + 5/5 3-nuit-couverte-ne-rien-faire + 3/5 5-soir-deficit-ne-pas-demarrer + 5/5 8-voiture-pleine-ne-pas-reessayer + 4/5 16-systeme-calme +CAS OUVERTS : 6, non notes, a lire + +Journal complet : docs/mesures/campagne-conseiller-2026-09-13.json diff --git a/docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.json b/docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.json new file mode 100644 index 0000000..80157d1 --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.json @@ -0,0 +1,1666 @@ +[ + { + "id": "1-nuit-bloquee-sans-vehicule", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 %", + "attendu": "SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "motsCles": [ + [ + "recharg", + "remonte", + "ne monte", + "stagne", + "plate", + "0 a", + "0a", + "immobile" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "3.4", + "balance_storage_shortfall_kwh": "6.77" + }, + "passages": [ + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne peut pas couvrir les 3.13 kWh requis avant 09h sans recharger.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est au plancher de securite avec un deficit nocturne a combler. Le reseau est disponible mais la marge de recharge n'est que de 88 W (700W - 612W).", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande 3.4 kWh du reseau. Il faut augmenter la consigne pour charger la batterie avant le matin.", + "confidence": 0.95 + }, + { + "constat": "SOC 20 % (plancher) avec deficit de -612 W. Le reseau est ferme mais la consigne de 700 W ne permet que 88 W de recharge, insuffisante pour atteindre le SOC cible de 59 % avant 09 h.", + "gravite": "moyenne", + "ce_qui_cloche": "La marge de recharge reseau est trop etroite (88 W) pour couvrir les 3.13 kWh requis par le bilan avant le croisement solaire a 09 h. La batterie restera au plancher pendant les heures creuses.", + "piste": "Verifier pourquoi la consigne de puissance reseau est limitee a 700 W alors que le bilan juge le reseau necessaire (3.4 kWh). Il faudrait augmenter cette consigne ou utiliser une session de charge plus longue si possible.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne peut pas couvrir les 3.13 kWh requis avant 9h sans recharger.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est au plancher de securite avec un deficit nocturne a venir. Le reseau est present mais la marge de recharge n'est que de 88 W (700W - 612W).", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande 3.4 kWh du reseau. Il faut augmenter la consigne pour charger la batterie avant le pic matinale.", + "confidence": 0.95 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne recharge pas (0 A) alors que le bilan exige 59 % pour tenir jusqu'a 9h.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est au plancher de securite avec un deficit prevu de 3.13 kWh avant l'aube. Le reseau est disponible mais la batterie reste a 0 A de charge, risquant une coupure ou un appel reseau non gere si la maison consomme plus que les 88 W restants.", + "piste": "Verifier pourquoi le courant de charge est nul : est-ce le contacteur qui est ouvert ? Ou la consigne de puissance reseau (700 W) est-elle trop basse pour permettre la recharge ? Le proprietaire doit verifier l'etat du contacteur et la consigne.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 20 % (plancher), reseau ferme, consigne 700 W. Bilan demande 59.1 % pour le matin. Manque de stockage critique.", + "gravite": "haute", + "ce_qui_cloche": "La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh via le reseau et une cible de 59.1 %. Le systeme ne recharge pas la batterie depuis le reseau malgre la presence du contacteur et la marge disponible (88 W).", + "piste": "Verifier pourquoi la recharge reseau n'est pas activee par le Battery/Grid Hysteresis Fix V1 ou si l'EVCS Surplus Controller bloque erroneement la fermeture du contacteur en mode 'vehicle_not_connected'.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "2-nuit-relachee-trop-tot", + "t": "2026-09-03T03:00:00+02:00", + "certain": true, + "titre": "03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30)", + "attendu": "SIGNALER : SOC sous le requis alors que la session est marquee terminee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "sous", + "en dessous", + "inferieur", + "manque", + "deficit", + "insuffisant" + ], + [ + "terminee", + "done", + "fini", + "relach", + "session" + ] + ], + "s": { + "soc_percent": "45", + "battery_current_a": "2", + "house_ac_power_w": "700", + "grid_state": "on", + "acin1_available": "1", + "evcs_vehicle_connected": "on", + "evcs_surplus_state": "night_session_done_idle", + "evcs_source_mode": "Réseau HC autorisé", + "night_target_soc_actual": "50.4", + "tomorrow_kwh": "33.9", + "balance_required_soc": "50.4", + "balance_required_soc_prudent": "57", + "balance_energy_to_cover_kwh": "4.3", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1" + }, + "passages": [ + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie. Le bilan identifie un besoin de 1.1 kWh manquant.", + "piste": "Vérifier pourquoi l'automatisation n'a pas augmenté la consigne réseau pour couvrir le déficit identifié par le bilan (manque de stockage).", + "confidence": 0.9 + }, + { + "constat": "SOC 45% vs cible 50.4%. Deficit de 4.3 kWh a couvrir avant 9h. Reseau present mais consigne bloquee a 700W (maison), zero marge pour charger.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel (-700 W) et la batterie doit fournir 4.3 kWh, mais le reseau ne recharge pas la batterie car toute sa capacite est absorbee par la consommation instantanee de la maison.", + "piste": "Verifier si la consigne de puissance reseau peut etre dynamisee ou si une session de charge sur heures creuses (12:24-14:24) est planifiee pour combler l'ecart avant le pic du matin.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 45 % (cible 50.4 %), reseau ferme, deficit de -700 W. Voiture branchee mais excedent solaire negatif.", + "gravite": "faible", + "ce_qui_cloche": "Le systeme est en attente passive alors que le bilan indique un besoin de recharge reseau (1.1 kWh) pour atteindre la cible matinale avant le croisement a 9h.", + "piste": "Verifier si le controleur EVCS ou l'automatisation bloque la recharge reseau sur la batterie pendant les heures creuses (01:24-07:24) malgre le signal 'reseau juge necessaire'.", + "confidence": 0.8 + }, + { + "constat": "SOC 45% vs cible 50.4%. Reseau ferme, consigne 700W couvre la maison mais ne recharge pas la batterie. Deficit de 1.1 kWh identifie.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau est bloquee a la consommation instantanee (700 W), empechant le chargement de la batterie necessaire pour atteindre la cible du matin.", + "piste": "Verifier pourquoi la consigne n'est pas augmentee pour couvrir les 1.1 kWh de deficit identifies par le bilan, ou si l'automatisation 'auto_solar_plus' bloque la charge hors heures creuses.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que le bilan identifie un besoin de 1.1 kWh via le réseau.", + "piste": "Vérifier pourquoi l'automatisation ou le script n'a pas augmenté la consigne réseau pour couvrir le déficit identifié par le bilan énergétique.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "3-nuit-couverte-ne-rien-faire", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis", + "attendu": "NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "70", + "battery_current_a": "-12", + "house_ac_power_w": "612", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "off" + }, + "passages": [ + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau absent. Consigne réseau 700W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), PV 0W. Maison 612W. Réseau coupé. Bilan demande 59.1% pour 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, réseau coupé. Batterie 70% (-12A) couvre la maison (612W). Bilan demande 59.1% pour 09h. Cible appliquée cohérente.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W sur batterie. Bilan coherent : SOC cible 59.1% pour couvrir 3.13 kWh jusqu'a 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W sur batterie. Bilan coherent : SOC cible 59.1% pour couvrir 3.13kWh jusqu'a 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "4-hiver-nuit-longue", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h", + "attendu": "OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "88", + "balance_required_soc_prudent": "97", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "5.1", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "8.2" + }, + "passages": [ + { + "constat": "Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (insuffisant vs cible 88%). Reseau absent, batterie se vide (-18A).", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est en ile a baton avec un deficit majeur. Le reseau est juge necessaire mais le contacteur reste ouvert. La batterie va atteindre le plancher (22%) avant le matin.", + "piste": "Verifier pourquoi le contacteur EDF n'a pas ferme pour charger la batterie depuis le reseau (consigne 700W). Investiguer l'ecrivain 'Battery / Grid Hysteresis Fix V1'.", + "confidence": 0.95 + }, + { + "constat": "Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (capacite ~3.7 kWh) est insuffisant. Le reseau est juge necessaire mais le contacteur est ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est en ile a baton avec un deficit previsible majeur. La consigne reseau (700 W) et l'etat du contacteur (ouvert) empechent la recharge batterie/reseau pour atteindre le SOC cible de 88-97%.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan indique 'reseau juge necessaire'. Identifier si c'est Battery/Grid Hysteresis ou EVCS qui bloque la fermeture.", + "confidence": 0.95 + }, + { + "constat": "Deficit nocturne : la batterie (-18 A) couvre la maison (1400 W). Le bilan requiert 5.1 kWh du reseau pour atteindre le SOC de securite, mais le contacteur est ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme consomme la reserve solaire au lieu d'utiliser l'EDF (disponible et juge necessaire par le bilan), ce qui risque de laisser la batterie sous le plancher de securite avant le matin.", + "piste": "Verifier pourquoi le 'Battery / Grid Hysteresis Fix V1' n'a pas ferme le contacteur alors que le bilan indique un besoin de reseau. La consigne a 700 W est coherente avec le deficit, mais l'actionneur reste inactif.", + "confidence": 0.9 + }, + { + "constat": "Batterie 55% (-18A) face à un besoin de 9.4 kWh (SOC cible 88%). Réseau absent, déficit nocturne confirmé.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le réseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne suffira pas pour demain matin.", + "piste": "Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan et les seuils de hysteresis.", + "confidence": 0.95 + }, + { + "constat": "Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (insuffisant vs cible 88%). Reseau absent, batterie se vide (-18A).", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est en ile a baton avec un deficit previsible majeur. Le reseau est juge necessaire mais le contacteur reste ouvert.", + "piste": "Verifier pourquoi le contacteur EDF n'a pas ferme pour charger la batterie (conflit ecrivain ou seuil hysteresis bloque).", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "5-soir-deficit-ne-pas-demarrer", + "t": "2026-09-03T19:44:00+02:00", + "certain": true, + "titre": "03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W)", + "attendu": "CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "-12.2", + "pv_power_w": "758", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "1202", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie a 94% (-12.2A), deficit solaire de -444W, reseau absent. Le bilan exige 99.7% pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit et isole du reseau alors que le bilan identifie un manque de stockage de 6.8 kWh necessaire pour la nuit.", + "piste": "Verifier pourquoi le contacteur reste ouvert (reseau juge necessaire mais absent) et si la consigne de 700W bloque l'importation.", + "confidence": 0.95 + }, + { + "constat": "Deficit reel de 444 W, reseau absent. Le bilan exige 99.7 % pour demain mais le parc est a 12 % de sa limite de charge (88 A restants).", + "gravite": "haute", + "ce_qui_cloche": "Le systeme ne peut pas atteindre la cible SOC necessaire (99.7 %) sans violer la limite de protection du parc (80 % de la marge declaree), alors que le reseau est inutilement ferme.", + "piste": "Verifier pourquoi le contacteur reste ouvert : le bilan indique 'reseau juge necessaire' mais l'actionneur ne bascule pas. Appeler le reseau maintenant pour charger la batterie au-dessus de la zone critique avant la nuit.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demande 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que le SOC (94 %) est inferieur au besoin calcule (99.7 %). La marge de decharge restante (88 A) est proche de la limite declaree (100 A), ce qui risque de declencher une protection ou un bridage inopine pendant la nuit.", + "piste": "Verifier pourquoi le contacteur reseau est ouvert alors que le bilan indique 'reseau juge necessaire : OUI'. Si c'est volontaire (mode eco/autonomie), accepter le risque de plancher ; sinon, forcer la fermeture du contacteur pour charger via EDF avant la nuit.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 94 % (-12.2 A), deficit solaire de -444 W, reseau absent. Le bilan exige 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et le reseau est coupe. La batterie doit couvrir 11.66 kWh mais ne peut pas atteindre la cible de 99.7 % sans charger sur le reseau, qui est indisponible.", + "piste": "Verifier pourquoi le contacteur reseau est ouvert alors que le bilan indique 'reseau juge necessaire : OUI'. Si c'est volontaire (mode eco), accepter le risque de plancher ; sinon, rouvrir le contacteur pour charger la batterie avant la nuit.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 94% (-12.2A), deficit solaire de -444W, reseau absent. Le bilan demande 99.7% pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que la marge de decharge est faible (88A). La cible SOC de 35% est incoherente avec le besoin de 99.7% identifie par le bilan.", + "piste": "Verifier pourquoi le contacteur reste ouvert malgre le 'reseau juge necessaire : OUI' dans le bilan. Investiguer l'ecrivain 'Battery / Grid Hysteresis Fix V1'.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "6-censure-demarrer", + "t": "2026-09-03T18:50:00+02:00", + "certain": true, + "titre": "03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee", + "attendu": "SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue", + "graviteAttendue": [ + "faible", + "moyenne" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "0", + "pv_power_w": "769", + "pv_power_10m_avg_w": "800", + "house_ac_power_w": "755", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "4.9", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'excedent est perdu.", + "piste": "Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais il n'est pas disponible. La voiture doit absorber l'excedent ou le reseau doit fermer.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridees (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'excedent est perdu.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert : le bilan indique 'reseau juge necessaire' (4.9 kWh). Si le reseau etait disponible, il absorberait l'excedent ou chargerait la voiture gratuitement.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais il n'est pas disponible. La voiture doit absorber l'excedent ou le reseau doit fermer.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais il n'est pas disponible. La voiture doit absorber l'excedent ou le reseau doit fermer.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pour demain, impossible sans reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en ileot (reseau ouvert) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production solaire refusee. La voiture ne consomme pas (0 W).", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? Le surplus solaire est perdu.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "7-boost-evince-le-solaire", + "t": "2026-09-11T17:02:00+02:00", + "certain": true, + "titre": "11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W", + "attendu": "SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "s": { + "soc_percent": "96", + "battery_current_a": "0", + "pv_power_w": "121", + "pv_power_10m_avg_w": "150", + "house_ac_power_w": "7695", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "8260", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "plafond_edf_on_a": "28", + "balance_pv_censored": "on", + "balance_censor_reason": "production_bridee", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "8.4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV bridee (121 W), reseau force pour charger la voiture. Bilan coherent : excedent censure, marge parc saturee.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) alors que le bilan demande du stockage pour la nuit.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee par les chargeurs (bridee) et l'excedent censure masque la ressource gratuite. La voiture consomme le reseau (8.2 kW) au lieu d'absorber ce surplus, privant la batterie de recharge avant la traverssee deficitaire nocturne.", + "piste": "Verifier si le controleur EVCS autorise la charge sur excedent solaire ou s'il force le reseau. Le bilan indique un manque de stockage de 6.8 kWh ; il faut absorber le surplus PV pour proteger la batterie contre la nuit.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) alors que le bilan demande du stockage pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee par la maison saturee et la batterie pleine, mais la voiture consomme ce qui devrait etre stocke ou injecte. Le systeme ne capture pas l'excedent gratuit.", + "piste": "Verifier pourquoi la borne EVCS n'absorbe pas l'excedent solaire (bridee a 28 A ?) ou si la strategie force_grid evite de charger la voiture sur PV. La marge de decharge est a 0 %, bloquant toute utilisation de la batterie.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee (121 W), reseau force pour charger la voiture. Bilan coherent avec le plein tarif.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee (121 W), reseau force pour charger la voiture. Bilan coherent : excedent censure par les chargeurs brides.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "8-voiture-pleine-ne-pas-reessayer", + "t": "2026-09-07T14:28:00+02:00", + "certain": true, + "titre": "07/09 14:28 — borne annonce charge terminee, vehicule branche immobile", + "attendu": "CALME : l etat collant fait son travail, aucune relance", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "97", + "battery_current_a": "1", + "pv_power_w": "2114", + "pv_power_10m_avg_w": "2000", + "house_ac_power_w": "1965", + "evcs_vehicle_connected": "on", + "evcs_current_a": "0", + "vehicle_selected": "JEEP", + "evcs_surplus_state": "day_vehicle_full_idle", + "evcs_source_mode": "Bloqué", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "58", + "balance_required_soc_prudent": "66", + "balance_energy_to_cover_kwh": "4.6", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "12", + "tomorrow_kwh": "30" + }, + "passages": [ + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. Batterie a 97% (plafond). Excedent reel masque par la censure.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee car le puits de stockage est sature et le vehicule ne consomme plus. L'energie gratuite est perdue.", + "piste": "Verifier si la consigne de puissance reseau (700 W) ou un seuil de SOC bloque l'absorption du surplus, ou accepter la perte si le parc est protege.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que la voiture ne consomme plus rien.", + "piste": "Verifier pourquoi la Jeep n'absorbe pas le surplus (borne bloquee ou strategie incoherente) pour eviter la perte de production.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et vehicule plein. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bilan identifie un manque de stockage de 6.8 kWh pour la nuit.", + "piste": "Verifier pourquoi le contacteur reste ouvert (consigne 700 W vs excedent). Si le reseau est disponible, il faut l'ouvrir pour absorber le surplus ou charger le vehicule si ce n'est pas vraiment plein.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et batterie a 97 %. Voiture pleine. Consigne reseau inutile car contacteur ouvert.", + "gravite": "faible", + "ce_qui_cloche": "La consigne de 700 W est inopérante tant que le contacteur reste ouvert, mais aucun conflit d'écriture n'est visible.", + "piste": "Vérifier si la fermeture du contacteur est bloquée par un script ou l'hysteresis alors que la production excède largement la demande.", + "confidence": 0.85 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et batterie a 97%. Voiture pleine. Consigne reseau inutile car contacteur ouvert.", + "gravite": "faible", + "ce_qui_cloche": "La consigne de 700 W est inopérante tant que le contacteur reste ouvert, mais la production excédentaire est perdue faute de puits disponible.", + "piste": "Vérifier si l'ouverture du contacteur est volontaire ou un blocage de l'hysteresis, sachant que la voiture ne peut plus absorber.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "9-pointe-cuisson-proteger-le-parc", + "t": "2026-09-05T20:40:00+02:00", + "certain": true, + "titre": "05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A", + "attendu": "SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "limite", + "plafond", + "maximum", + "97", + "capacite", + "au bord", + "saturation" + ] + ], + "s": { + "soc_percent": "79", + "battery_current_a": "-97.4", + "pv_power_w": "320", + "pv_power_10m_avg_w": "500", + "house_ac_power_w": "4944", + "grid_state": "off", + "acin1_available": "0", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.1", + "balance_grid_needed": "on", + "tomorrow_kwh": "32" + }, + "passages": [ + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reste ouvert, empechant l'absorption du reseau disponible et fragilisant les cellules.", + "piste": "Verifier pourquoi le contacteur ne se ferme pas pour absorber le deficit : inspecter l'ecrivain 'EVCS Surplus Controller V2.6' ou le verrou hysteresis qui bloque la bascule.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree (-97.4 A vs -100 A) pendant que le contacteur reste ouvert, empechant l'absorption du reseau et fragilisant les cellules.", + "piste": "Verifier pourquoi le contacteur ne se ferme pas pour connecter le reseau (Bilan dit OUI). Identifier si un ecrivain non-proprietaire (EVCS ou script) verrouille le contacteur.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) sans marge, tandis que le contacteur reseau reste ouvert empechant l'absorption du deficit identifie par le bilan.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour absorber le deficit (bilan : reseau OUI). Identifier l'ecrivain qui bloque la fermeture (Battery/Grid Hysteresis ou EVCS Surplus Controller).", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et sollicitant le materiel au maximum.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier si un ecrivain externe bloque la fermeture ou si la consigne de puissance est mal interpretee.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97,4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reseau est ouvert (reseau absent) empechant la recharge du parc qui tourne a sa limite de decharge (-97,4 A). Le bilan indique 'reseau juge necessaire : OUI'.", + "piste": "Verifier pourquoi le contacteur reste ouvert. L'ecrivain 'Battery / Grid Hysteresis Fix V1' ou un script bloque-t-il la fermeture ? Risque de degradation du parc si la nuit s'allonge sans reseau.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "10-nuage-sur-charge-28a", + "t": "2026-09-11T18:00:00+02:00", + "certain": true, + "titre": "11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W", + "attendu": "SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "nuage", + "marge", + "brutal", + "chute", + "passage", + "si le solaire" + ] + ], + "s": { + "soc_percent": "96", + "battery_current_a": "-0.7", + "pv_power_w": "6058", + "pv_power_10m_avg_w": "5500", + "house_ac_power_w": "6845", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "1281", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif (+5.6 kW).", + "gravite": "moyenne", + "ce_qui_cloche": "L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite pour alimenter la voiture.", + "piste": "Verifier pourquoi le controleur ignore l'excedent solaire positif et bascule en mode reseau force.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif (+5.6 kW).", + "gravite": "moyenne", + "ce_qui_cloche": "L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite qui reste disponible.", + "piste": "Verifier pourquoi le controleur ignore l'excedent solaire positif pour charger la voiture ; il devrait utiliser le surplus PV avant d'appeler le reseau.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif (+5.6 kW).", + "gravite": "moyenne", + "ce_qui_cloche": "L'EVCS consomme le reseau pour la voiture et recharge la batterie pleine, evitant d'utiliser l'excedent solaire gratuit qui se perd.", + "piste": "Verifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que l'excedent est positif et que les chargeurs sont a fond.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force pour charger la voiture alors que l'excedent solaire est de +5.6 kW et que le reseau n'est pas requis par le bilan.", + "gravite": "moyenne", + "ce_qui_cloche": "Le controleur utilise la strategie 'force_grid_now' (reseau) au lieu d'utiliser l'excedent solaire gratuit (+5.6 kW) pour alimenter la charge EV, ce qui coute de l'argent inutilement.", + "piste": "Verifier pourquoi le Surplus Controller V2.6 ne bascule pas en mode excedent solaire alors que les chargeurs PV sont a fond et qu'il reste de la puissance disponible.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif (+5.6 kW).", + "gravite": "moyenne", + "ce_qui_cloche": "L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite, contrairement a la regle de l'excedent.", + "piste": "Verifier pourquoi le controleur ignore l'excedent solaire positif pour basculer en mode reseau.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "11-batterie-pleine-midi", + "t": "2026-09-11T12:00:00+02:00", + "certain": false, + "titre": "11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche", + "attendu": "OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ?", + "graviteAttendue": null, + "s": { + "soc_percent": "98", + "battery_current_a": "2.2", + "pv_power_w": "810", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "702", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "55", + "balance_required_soc_prudent": "63", + "balance_energy_to_cover_kwh": "4.1", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "balance_next_deficit_kwh": "4.1", + "balance_next_deficit_window": "(ce soir 20 h -> 09 h)", + "today_remaining_kwh": "45", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits disponible, reseau absent. Bilan coherent avec la saturation du stockage.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridees (6/6), reseau absent. Surplus solaire refuse car aucun puits disponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La production est bridee alors que le bilan indique un besoin de stockage pour la nuit (4,1 kWh). L'absence de vehicule empeche d'absorber ce surplus gratuit.", + "piste": "Brancher un vehicule ou activer une charge flexible pour absorber l'excedent avant qu'il ne soit perdu par bridage des onduleurs.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan demande 55-63 % pour la nuit, reseau absent.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de couvrir 4.1 kWh ce soir. Le reseau est absent, empechant l'absorption de l'excedent ou la recharge si la batterie descendait.", + "piste": "Verifier pourquoi le contacteur reseau est ouvert (EDF absent ?). Si c'est volontaire, accepter la perte d'excedent. Sinon, rebrancher le reseau pour eviter la perte de 45 kWh potentiels et securiser la traversee nocturne.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Excedent solaire censure (+108 W reel plus eleve).", + "gravite": "moyenne", + "ce_qui_cloche": "La production est refusee (bridee) alors que le reseau est disponible mais non utilise, et la batterie ne peut pas absorber l'excedent.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert alors que la consigne est a 700 W et que la production depasse la demande. L'automate 'Battery / Grid Hysteresis Fix V1' ou un script bloque-t-il la fermeture ?", + "confidence": 0.9 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excedent solaire refuse.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "12-orage-annonce", + "t": "2026-09-12T15:30:00+02:00", + "certain": false, + "titre": "Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site", + "attendu": "OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "72", + "battery_current_a": "35", + "pv_power_w": "4200", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "900", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_storm_level": "Orange", + "balance_storm_reserve_soc": "88", + "balance_required_soc": "55", + "balance_required_soc_prudent": "62", + "balance_energy_to_cover_kwh": "3.2", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "18", + "tomorrow_kwh": "40" + }, + "passages": [ + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge à 35 A vers 72 %. Aucun véhicule branché.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 A vers un SOC de 72 %, cohérent avec la réserve orage conseillée de 88 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W et batterie à 72 % en charge. Le bilan indique un besoin de réserve orageuse à 88 %.", + "gravite": "faible", + "ce_qui_cloche": "Aucune incohérence majeure. La consigne réseau de 700 W est inactive car le contacteur est ouvert, ce qui est cohérent avec l'état mesuré.", + "piste": "Surveiller la montée du SOC vers la cible de vigilance orage (88 %) pour s'assurer que la charge ne se bride pas inutilement avant la nuit.", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge à 35 A vers 72 %. Bilan cohérent avec prévision orage.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge à 35 A vers 72 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "13-voiture-empruntee-echeance", + "t": "2026-09-11T17:00:00+02:00", + "certain": false, + "titre": "11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present", + "attendu": "OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ?", + "graviteAttendue": null, + "s": { + "soc_percent": "96", + "battery_current_a": "-10", + "pv_power_w": "4255", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "4888", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "20", + "vehicle_selected": "JEEP", + "user_strategy": "force_charge_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "700", + "evcs_source_mode": "Solaire", + "evcs_surplus_state": "charging_hold_manual_local", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "required_energy_kwh": "12", + "departure_time": "19:00", + "departure_priority_enabled": "on", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "6", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee a 20 A. Bilan demande 62 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau de 1.4 kWh. L'energie solaire excedentaire (+3967 W) n'est pas absorbee par la batterie (pleine) ni par la voiture (limitee a 20 A).", + "piste": "Verifier si la consigne manuelle 'force_charge_now' bloque la logique de surplus ou si la limite de courant EVCS (20 A) est trop basse pour absorber l'excedent avant saturation batterie.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utilise (700 W).", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plafond et ne peut plus stocker l'excédent solaire (+3967 W) qui est perdu ou force la voiture à charger via le réseau si la production baisse.", + "piste": "Vérifier pourquoi la voiture charge à 20 A alors que l'excédent solaire est élevé : le surplus controller devrait-il augmenter le courant pour absorber le refus du parc ?", + "confidence": 0.85 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme avec marge de recharge faible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plafond alors que le bilan indique un besoin de 5.2 kWh ce matin et une traversée nocturne de 2 kWh. Le surplus solaire (+3967 W) n'est pas stocké car la batterie est pleine, mais la voiture ne charge qu'à 20 A (limité par le contrôleur ou la borne), laissant du solaire potentiellement perdu si la production dépasse la consommation maison+voiture.", + "piste": "Vérifier pourquoi la voiture ne monte pas au-dessus de 20 A malgré l'excédent solaire important. Si le contrôleur limite volontairement pour protéger la batterie (déjà à 96%), c'est cohérent, mais il faut s'assurer que la stratégie 'force_charge_now' ne bloque pas l'optimisation du surplus vers la voiture si celle-ci peut accepter plus de courant sans fragiliser le parc (marge de décharge OK).", + "confidence": 0.8 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident la voiture a 20 A. Consigne reseau 700 W bloque le surplus solaire (+3967 W) et empeche la recharge batterie.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evince l'excedent solaire gratuit pour alimenter la voiture, alors que le bilan indique un besoin de reseau ce matin mais une ressource solaire abondante maintenant.", + "piste": "Verifier pourquoi la consigne reseau est fixee a 700 W au lieu d'etre ouverte ou elevee pour absorber le surplus PV et charger la batterie/voiture sans cout.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utilise (700 W).", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee alors que le reseau est disponible et que la production solaire est bridee. Le systeme ne recharge pas via le reseau pour eviter de depasser le plafond, ce qui force l'usage du reseau pour la maison au lieu d'utiliser le surplus solaire ou de stocker.", + "piste": "Verifier si la consigne de puissance reseau (700 W) est trop basse pour permettre une charge utile ou si la logique de 'force_charge_now' bloque la charge reseau a cause du SOC eleve, empechant l'optimisation des heures creuses ou du surplus.", + "confidence": 0.85 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4b-hiver-parc-12", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000)", + "attendu": "OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "52", + "balance_required_soc_prudent": "59", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "12", + "bms_max_discharge_current_a": "300", + "bms_max_charge_current_a": "300" + }, + "passages": [ + { + "constat": "Batterie 55% (SOC requis prudent 59%), reseau absent, deficit nocturne de 2 kWh. Consigne reseau 700W inopérante.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan indique un besoin de reseau (OUI) mais le contacteur est ouvert et AC-IN absent. La marge de 4% sous la cible prudente est faible pour la nuit.", + "piste": "Verifier pourquoi le contacteur n'a pas fermé pour couvrir le deficit identifie par le bilan avant l'extinction complete du PV.", + "confidence": 0.85 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (-18 A) couvre la maison (1400 W). Bilan demande 52-59 % pour demain. Consigne reseau 700 W inactive.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (-18 A) couvre la maison (1400 W). Bilan demande 52-59 % pour demain 11h. Consigne reseau 700 W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau coupe. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incoherente avec le deficit nocturne.", + "gravite": "moyenne", + "ce_qui_cloche": "La cible SOC de 85% est inutile et contre-productive : elle force a acheter du courant EDF au plein tarif pour stocker une energie qui sera consommee par la maison avant l'aube, alors que le bilan ne requiert que ~59%.", + "piste": "Verifier pourquoi la strategie auto_solar_plus maintient une cible aussi haute la nuit. Il faudrait laisser la batterie se vider vers le plancher de securite ou le niveau requis par le bilan (~59%) pour maximiser l'absorption solaire gratuite demain matin.", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% coherente avec hiver.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4c-hiver-parc-16", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec 16 equivalents (vieux modules repares)", + "attendu": "OUVERT : et avec 16 equivalents ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "44", + "balance_required_soc_prudent": "50", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "off", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "16", + "bms_max_discharge_current_a": "400", + "bms_max_charge_current_a": "400" + }, + "passages": [ + { + "constat": "Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan requis : 44-50 %. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante sans AC-IN.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan requis : 50 % pour demain 11h. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan requis : 44-50 %. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "15-oscillation-contacteur", + "t": "2026-09-12T06:36:00+02:00", + "certain": true, + "titre": "INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes", + "attendu": "SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "oscill", + "bascul", + "va-et-vient", + "aller-retour", + "repet", + "six fois", + "6 fois", + "cycl" + ], + [ + "conflit", + "deux", + "ecriv", + "contradict", + "se battent", + "concurren", + "automatisation", + "hysteresis" + ] + ], + "s": { + "soc_percent": "35", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "1.56", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "06:35:06 Contacteur EDF : off -> on|06:34:02 Contacteur EDF : on -> off|06:30:49 Contacteur EDF : off -> on|06:29:44 Contacteur EDF : on -> off|06:26:31 Contacteur EDF : off -> on|06:25:27 Contacteur EDF : on -> off" + }, + "passages": [ + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le bilan juge le reseau necessaire et qu'il est present.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement perturbee par un ecrivain externe (EVCS Surplus Controller ou scripts) qui defait les decisions du proprietaire.", + "piste": "Verifier si le EVCS Surplus Controller V2.6 ou un script force la fermeture/ouverture du contacteur independamment de la logique d'hysteresis, et stabiliser la consigne pour eviter l'usure des relais et les transitoires.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est present et la batterie charge a 20A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery/Grid Hysteresis Fix V1), probablement perturbee par un ecrivain externe (EVCS Surplus Controller ou scripts).", + "piste": "Verifier les logs du EVCS Surplus Controller V2.6 et des scripts pour identifier quel automate force la fermeture/ouverture du contacteur pendant la phase de charge.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau'. Chaque bascule coute 50-150 Wh et use le relais. Le proprietaire est Battery/Grid Hysteresis Fix V1, mais EVCS Surplus Controller V2.6 ou un script interagit probablement de facon incoherente avec la consigne de puissance (5759 W).", + "piste": "Identifier quel ecrivain non-proprietaire (EVCS ou script) force les bascules. Verifier si la logique d'hysteresis est contredite par une consigne dynamique du controleur EVCS qui ne tient pas compte du transitoire.", + "confidence": 0.95 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le bilan juge le reseau necessaire et qu'il est present.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement perturbee par un ecrivain externe (EVCS Surplus Controller ou scripts) qui defait les decisions du proprietaire.", + "piste": "Verifier les logs des ecritures sur le contacteur pour identifier quel script ou controleur force la bascule a chaque cycle, et stabiliser la logique d'hysteresis.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau'. Chaque bascule coute 50-150 Wh et use le relais. Le proprietaire est 'Battery / Grid Hysteresis Fix V1', mais les ecrivains 'EVCS Surplus Controller' ou 'scripts' sont suspects d'interference.", + "piste": "Verifier si un script ou le controleur EVCS force le contacteur malgre la presence du reseau et la consigne de puissance. Stabiliser la logique de hysteresis pour eviter les micro-bascules.", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "16-systeme-calme", + "t": "2026-09-12T07:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes", + "attendu": "NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "42", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "0.9", + "balance_grid_needed": "on", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "05:02:51 Contacteur EDF : off -> on|05:02:51 Reprise reseau nuit : off -> on" + }, + "passages": [ + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : deficit matinal couvert par le reseau.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Aucun vehicule branche.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit matinal couvert par le reseau avant croisement a 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 1 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le reseau jusqu'au croisement a 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le reseau jusqu'au croisement a 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "14-bilan-indisponible", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE", + "attendu": "SIGNALER en le disant : le bilan est degrade, donc prudence assumee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "degrad", + "indisponible", + "sans bilan", + "pas de bilan", + "inconnu", + "unknown" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "35", + "tomorrow_kwh": "75.2", + "balance_status": "degrade", + "balance_required_soc": "unknown", + "balance_energy_to_cover_kwh": "unknown" + }, + "passages": [ + { + "constat": "Bilan indisponible. Batterie a 20 % (plancher), reseau ferme, excedent negatif. Consigne 700 W laisse 88 W de marge pour recharge.", + "gravite": "faible", + "ce_qui_cloche": "Le systeme est au plancher de securite pendant les heures creuses alors que le reseau est disponible et que la cible matinale est de 35 %. L'absence de bilan empeche de valider si cette stagnation est optimale ou une perte d'opportunite.", + "piste": "Verifier pourquoi le bilan est degrade. Surveiller si la batterie remonte vers 35 % grace aux 88 W de marge reseau avant la fin des heures creuses (07:24).", + "confidence": 0.6 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite pendant les heures creuses alors que le reseau est disponible et que la cible matin est a 35 %. L'opportunite de recharge gratuite est manquee.", + "piste": "Verifier pourquoi la consigne reseau n'est pas relevee pour charger la batterie vers la cible de 35 % durant la nuit.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 20 % (plancher) avec reseau ferme et consigne a 700 W. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite pendant les heures creuses alors que le reseau est disponible. La marge de recharge n'est que de 88 W, ce qui est insuffisant pour atteindre la cible de 35 % avant le matin.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W (limite du contacteur ou reglages hysteresis). Augmenter la consigne pour permettre une recharge plus rapide depuis le reseau EDF.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 20 % (plancher), reseau ferme, excedent solaire negatif. Bilan indisponible.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan energetique est indisponible alors que la batterie est au plancher de securite et que le reseau est disponible pour recharger vers la cible de 35 %.", + "piste": "Verifier pourquoi le calcul du bilan est en statut degrade et s'assurer que la recharge via le reseau (88 W disponibles) se fait bien pour atteindre les 35 % avant le matin.", + "confidence": 0.9 + }, + { + "constat": "Bilan indisponible. Batterie a 20% (plancher), reseau ferme, marge decharge 100A. Consigne reseau 700W laisse 88W pour recharge.", + "gravite": "faible", + "ce_qui_cloche": "Le systeme est au plancher de securite (20%) avec le reseau disponible mais la consigne limite la recharge a 88W. Sans bilan, on ne sait pas si c'est optimal ou si l'on rate des heures creuses.", + "piste": "Verifier pourquoi le bilan est degrade et confirmer que la consigne de 700W est bien celle desiree pour la recharge nocturne avant le pic du matin.", + "confidence": 0.6 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + } +] \ No newline at end of file diff --git a/docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.log b/docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.log new file mode 100644 index 0000000..677af58 --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-apres-censure-signalee.log @@ -0,0 +1,343 @@ + +═══ 1-nuit-bloquee-sans-vehicule + 12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 % + attendu : SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh + ✔ [haute ] SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne peut pas couvrir les 3.13 + ↳ Le systeme est au plancher de securite avec un deficit nocturne a combler. Le reseau est disponible mais la marge de rec + → Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande 3.4 kWh du reseau. Il faut augmenter [nomme] + ✔ [moyenne] SOC 20 % (plancher) avec deficit de -612 W. Le reseau est ferme mais la consigne de 700 W ne + ↳ La marge de recharge reseau est trop etroite (88 W) pour couvrir les 3.13 kWh requis par le bilan avant le croisement so + → Verifier pourquoi la consigne de puissance reseau est limitee a 700 W alors que le bilan juge le reseau necessaire (3.4 [nomme] + ✔ [haute ] SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne peut pas couvrir les 3.13 + ↳ Le systeme est au plancher de securite avec un deficit nocturne a venir. Le reseau est present mais la marge de recharge + → Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande 3.4 kWh du reseau. Il faut augmenter [nomme] + ✔ [haute ] SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne recharge pas (0 A) alors q + ↳ Le systeme est au plancher de securite avec un deficit prevu de 3.13 kWh avant l'aube. Le reseau est disponible mais la + → Verifier pourquoi le courant de charge est nul : est-ce le contacteur qui est ouvert ? Ou la consigne de puissance resea [nomme] + ✔ [haute ] Batterie a 20 % (plancher), reseau ferme, consigne 700 W. Bilan demande 59.1 % pour le matin + ↳ La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh via le reseau et une cible de + → Verifier pourquoi la recharge reseau n'est pas activee par le Battery/Grid Hysteresis Fix V1 ou si l'EVCS Surplus Contro [nomme] + gravites : haute moyenne haute haute haute INSTABLE (2 valeurs) + gravite dans la fourchette moyenne|haute : 5/5 + a nomme la chose : 5/5 + +═══ 2-nuit-relachee-trop-tot + 03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30) + attendu : SIGNALER : SOC sous le requis alors que la session est marquee terminee + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie. Le bilan + → Vérifier pourquoi l'automatisation n'a pas augmenté la consigne réseau pour couvrir le déficit identifié par le bilan (m [ne nomme pas] + ✔ [moyenne] SOC 45% vs cible 50.4%. Deficit de 4.3 kWh a couvrir avant 9h. Reseau present mais consigne + ↳ Le systeme est en deficit reel (-700 W) et la batterie doit fournir 4.3 kWh, mais le reseau ne recharge pas la batterie + → Verifier si la consigne de puissance reseau peut etre dynamisee ou si une session de charge sur heures creuses (12:24-14 [nomme] + ✔ [faible ] Batterie a 45 % (cible 50.4 %), reseau ferme, deficit de -700 W. Voiture branchee mais exced + ↳ Le systeme est en attente passive alors que le bilan indique un besoin de recharge reseau (1.1 kWh) pour atteindre la ci + → Verifier si le controleur EVCS ou l'automatisation bloque la recharge reseau sur la batterie pendant les heures creuses [ne nomme pas] + ✔ [moyenne] SOC 45% vs cible 50.4%. Reseau ferme, consigne 700W couvre la maison mais ne recharge pas la + ↳ La consigne reseau est bloquee a la consommation instantanee (700 W), empechant le chargement de la batterie necessaire + → Verifier pourquoi la consigne n'est pas augmentee pour couvrir les 1.1 kWh de deficit identifies par le bilan, ou si l'a [ne nomme pas] + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que + → Vérifier pourquoi l'automatisation ou le script n'a pas augmenté la consigne réseau pour couvrir le déficit identifié pa [ne nomme pas] + gravites : moyenne moyenne faible moyenne moyenne INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 1/5 + +═══ 3-nuit-couverte-ne-rien-faire + CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis + attendu : NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent + ✔ [aucune ] Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau a + ✔ [aucune ] Samedi 04:00, nuit. Batterie 70% (-12A), PV 0W. Maison 612W. Réseau coupé. Bilan demande 59. + ✔ [aucune ] Nuit, réseau coupé. Batterie 70% (-12A) couvre la maison (612W). Bilan demande 59.1% pour 09 + ✔ [aucune ] Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W sur batterie. Bilan coherent : SOC cibl + ✔ [aucune ] Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W sur batterie. Bilan coherent : SOC cibl + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 4-hiver-nuit-longue [OUVERT] + HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h + attendu : OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ? + [haute ] Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (insuffisant vs cible 88%). + ↳ Le systeme est en ile a baton avec un deficit majeur. Le reseau est juge necessaire mais le contacteur reste ouvert. La + → Verifier pourquoi le contacteur EDF n'a pas ferme pour charger la batterie depuis le reseau (consigne 700W). Investiguer + [haute ] Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (capacite ~3.7 kWh) est insu + ↳ Le systeme est en ile a baton avec un deficit previsible majeur. La consigne reseau (700 W) et l'etat du contacteur (ouv + → Verifier pourquoi le contacteur reste ouvert alors que le bilan indique 'reseau juge necessaire'. Identifier si c'est Ba + [moyenne] Deficit nocturne : la batterie (-18 A) couvre la maison (1400 W). Le bilan requiert 5.1 kWh + ↳ Le systeme consomme la reserve solaire au lieu d'utiliser l'EDF (disponible et juge necessaire par le bilan), ce qui ris + → Verifier pourquoi le 'Battery / Grid Hysteresis Fix V1' n'a pas ferme le contacteur alors que le bilan indique un besoin + [haute ] Batterie 55% (-18A) face à un besoin de 9.4 kWh (SOC cible 88%). Réseau absent, déficit noct + ↳ Le bilan exige le réseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne suffira pas pour demain matin. + → Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan et les seuils de hysteresis. + [haute ] Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (insuffisant vs cible 88%). + ↳ Le systeme est en ile a baton avec un deficit previsible majeur. Le reseau est juge necessaire mais le contacteur reste + → Verifier pourquoi le contacteur EDF n'a pas ferme pour charger la batterie (conflit ecrivain ou seuil hysteresis bloque) + gravites : haute haute moyenne haute haute INSTABLE (2 valeurs) + +═══ 5-soir-deficit-ne-pas-demarrer + 03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W) + attendu : CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif + ✘ [moyenne] Batterie a 94% (-12.2A), deficit solaire de -444W, reseau absent. Le bilan exige 99.7% pour + ↳ Le systeme est en deficit et isole du reseau alors que le bilan identifie un manque de stockage de 6.8 kWh necessaire po + → Verifier pourquoi le contacteur reste ouvert (reseau juge necessaire mais absent) et si la consigne de 700W bloque l'imp + ✘ [haute ] Deficit reel de 444 W, reseau absent. Le bilan exige 99.7 % pour demain mais le parc est a 1 + ↳ Le systeme ne peut pas atteindre la cible SOC necessaire (99.7 %) sans violer la limite de protection du parc (80 % de l + → Verifier pourquoi le contacteur reste ouvert : le bilan indique 'reseau juge necessaire' mais l'actionneur ne bascule pa + ✘ [moyenne] Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demand + ↳ Le systeme est en deficit reel et isole du reseau alors que le SOC (94 %) est inferieur au besoin calcule (99.7 %). La m + → Verifier pourquoi le contacteur reseau est ouvert alors que le bilan indique 'reseau juge necessaire : OUI'. Si c'est vo + ✘ [moyenne] Batterie a 94 % (-12.2 A), deficit solaire de -444 W, reseau absent. Le bilan exige 99.7 % p + ↳ Le systeme est en deficit reel et le reseau est coupe. La batterie doit couvrir 11.66 kWh mais ne peut pas atteindre la + → Verifier pourquoi le contacteur reseau est ouvert alors que le bilan indique 'reseau juge necessaire : OUI'. Si c'est vo + ✘ [moyenne] Batterie a 94% (-12.2A), deficit solaire de -444W, reseau absent. Le bilan demande 99.7% pou + ↳ Le systeme est en deficit reel et isole du reseau alors que la marge de decharge est faible (88A). La cible SOC de 35% e + → Verifier pourquoi le contacteur reste ouvert malgre le 'reseau juge necessaire : OUI' dans le bilan. Investiguer l'ecriv + gravites : moyenne haute moyenne moyenne moyenne INSTABLE (2 valeurs) + gravite dans la fourchette aucune|faible : 0/5 + +═══ 6-censure-demarrer + 03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee + attendu : SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'excede + → Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais il n'est pas disponible + ✔ [moyenne] Batterie a 94 % (plafond), PV bridees (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'excede + → Verifier pourquoi le contacteur reseau reste ouvert : le bilan indique 'reseau juge necessaire' (4.9 kWh). Si le reseau + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energi + → Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais il n'est pas disponible + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energi + → Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais il n'est pas disponible + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pou + ↳ Le systeme est en ileot (reseau ouvert) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production so + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? L + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne : 5/5 + +═══ 7-boost-evince-le-solaire + 11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W + attendu : SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne + ✘ [aucune ] Batterie a 96 % (plafond), PV bridee (121 W), reseau force pour charger la voiture. Bilan co + ✔ [moyenne] Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) alors que l + ↳ La production solaire est refusee par les chargeurs (bridee) et l'excedent censure masque la ressource gratuite. La voit + → Verifier si le controleur EVCS autorise la charge sur excedent solaire ou s'il force le reseau. Le bilan indique un manq + ✔ [moyenne] Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) alors que l + ↳ La production solaire est refusee par la maison saturee et la batterie pleine, mais la voiture consomme ce qui devrait e + → Verifier pourquoi la borne EVCS n'absorbe pas l'excedent solaire (bridee a 28 A ?) ou si la strategie force_grid evite d + ✘ [aucune ] Batterie a 96 % (plafond), PV bridee (121 W), reseau force pour charger la voiture. Bilan co + ✘ [aucune ] Batterie a 96 % (plafond), PV bridee (121 W), reseau force pour charger la voiture. Bilan co + gravites : aucune moyenne moyenne aucune aucune INSTABLE (2 valeurs) + gravite dans la fourchette moyenne|haute : 2/5 + +═══ 8-voiture-pleine-ne-pas-reessayer + 07/09 14:28 — borne annonce charge terminee, vehicule branche immobile + attendu : CALME : l etat collant fait son travail, aucune relance + ✘ [moyenne] PV bridee (6/6) avec reseau absent et voiture pleine. Batterie a 97% (plafond). Excedent ree + ↳ La production solaire est refusee car le puits de stockage est sature et le vehicule ne consomme plus. L'energie gratuit + → Verifier si la consigne de puissance reseau (700 W) ou un seuil de SOC bloque l'absorption du surplus, ou accepter la pe + ✘ [moyenne] PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute + ↳ L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que la voi + → Verifier pourquoi la Jeep n'absorbe pas le surplus (borne bloquee ou strategie incoherente) pour eviter la perte de prod + ✘ [moyenne] PV bridee (6/6) avec reseau absent et vehicule plein. La ressource solaire est refusee faute + ↳ L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bil + → Verifier pourquoi le contacteur reste ouvert (consigne 700 W vs excedent). Si le reseau est disponible, il faut l'ouvrir + ✔ [faible ] PV bridee (6/6) avec reseau absent et batterie a 97 %. Voiture pleine. Consigne reseau inuti + ↳ La consigne de 700 W est inopérante tant que le contacteur reste ouvert, mais aucun conflit d'écriture n'est visible. + → Vérifier si la fermeture du contacteur est bloquée par un script ou l'hysteresis alors que la production excède largemen + ✔ [faible ] PV bridee (6/6) avec reseau absent et batterie a 97%. Voiture pleine. Consigne reseau inutil + ↳ La consigne de 700 W est inopérante tant que le contacteur reste ouvert, mais la production excédentaire est perdue faut + → Vérifier si l'ouverture du contacteur est volontaire ou un blocage de l'hysteresis, sachant que la voiture ne peut plus + gravites : moyenne moyenne moyenne faible faible INSTABLE (2 valeurs) + gravite dans la fourchette aucune|faible : 2/5 + +═══ 9-pointe-cuisson-proteger-le-parc + 05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A + attendu : SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reste ouvert, empechant l'absorption d + → Verifier pourquoi le contacteur ne se ferme pas pour absorber le deficit : inspecter l'ecrivain 'EVCS Surplus Controller [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite declaree (-97.4 A vs -100 A) pendant que le contacteur reste ouvert, empechant l'absorption du + → Verifier pourquoi le contacteur ne se ferme pas pour connecter le reseau (Bilan dit OUI). Identifier si un ecrivain non- [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) sans marge, tandis que le contacteur reseau reste ouve + → Verifier pourquoi le contacteur reseau n'a pas bascule pour absorber le deficit (bilan : reseau OUI). Identifier l'ecriv [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empecha + → Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Id [nomme] + ✔ [haute ] Parc a -97,4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le contacteur reseau est ouvert (reseau absent) empechant la recharge du parc qui tourne a sa limite de decharge (-97,4 + → Verifier pourquoi le contacteur reste ouvert. L'ecrivain 'Battery / Grid Hysteresis Fix V1' ou un script bloque-t-il la [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 10-nuage-sur-charge-28a + 11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W + attendu : SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite p + → Verifier pourquoi le controleur ignore l'excedent solaire positif et bascule en mode reseau force. [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite q + → Verifier pourquoi le controleur ignore l'excedent solaire positif pour charger la voiture ; il devrait utiliser le surpl [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ L'EVCS consomme le reseau pour la voiture et recharge la batterie pleine, evitant d'utiliser l'excedent solaire gratuit + → Verifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que l'excedent est positif et que [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), reseau force pour charger la voiture alors que l'excedent solaire + ↳ Le controleur utilise la strategie 'force_grid_now' (reseau) au lieu d'utiliser l'excedent solaire gratuit (+5.6 kW) pou + → Verifier pourquoi le Surplus Controller V2.6 ne bascule pas en mode excedent solaire alors que les chargeurs PV sont a f [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite, + → Verifier pourquoi le controleur ignore l'excedent solaire positif pour basculer en mode reseau. [ne nomme pas] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 0/5 + +═══ 11-batterie-pleine-midi [OUVERT] + 11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche + attendu : OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ? + [aucune ] Batterie a 98 % (plafond), PV bridee car aucun puits disponible, reseau absent. Bilan cohere + [moyenne] Batterie a 98 % (plafond), PV bridees (6/6), reseau absent. Surplus solaire refuse car aucun + ↳ La production est bridee alors que le bilan indique un besoin de stockage pour la nuit (4,1 kWh). L'absence de vehicule + → Brancher un vehicule ou activer une charge flexible pour absorber l'excedent avant qu'il ne soit perdu par bridage des o + [moyenne] Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan demande 55-63 % pour la nuit, re + ↳ La production solaire est refusee (bridee) alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessit + → Verifier pourquoi le contacteur reseau est ouvert (EDF absent ?). Si c'est volontaire, accepter la perte d'excedent. Sin + [moyenne] Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Excedent solaire censur + ↳ La production est refusee (bridee) alors que le reseau est disponible mais non utilise, et la batterie ne peut pas absor + → Verifier pourquoi le contacteur reseau reste ouvert alors que la consigne est a 700 W et que la production depasse la de + [aucune ] Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excede + gravites : aucune moyenne moyenne moyenne aucune INSTABLE (2 valeurs) + +═══ 12-orage-annonce [OUVERT] + Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site + attendu : OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ? + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge + [aucune ] Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 + [faible ] Système autonome (réseau coupé) avec excédent solaire de 3300 W et batterie à 72 % en charge + ↳ Aucune incohérence majeure. La consigne réseau de 700 W est inactive car le contacteur est ouvert, ce qui est cohérent a + → Surveiller la montée du SOC vers la cible de vigilance orage (88 %) pour s'assurer que la charge ne se bride pas inutile + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge + gravites : aucune aucune faible aucune aucune INSTABLE (2 valeurs) + +═══ 13-voiture-empruntee-echeance [OUVERT] + 11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present + attendu : OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ? + [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee a 20 A. Bilan demande 62 % pour demai + ↳ La batterie est saturee alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau de 1.4 + → Verifier si la consigne manuelle 'force_charge_now' bloque la logique de surplus ou si la limite de courant EVCS (20 A) + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utili + ↳ La batterie est au plafond et ne peut plus stocker l'excédent solaire (+3967 W) qui est perdu ou force la voiture à char + → Vérifier pourquoi la voiture charge à 20 A alors que l'excédent solaire est élevé : le surplus controller devrait-il aug + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme avec marge de r + ↳ La batterie est au plafond alors que le bilan indique un besoin de 5.2 kWh ce matin et une traversée nocturne de 2 kWh. + → Vérifier pourquoi la voiture ne monte pas au-dessus de 20 A malgré l'excédent solaire important. Si le contrôleur limite + [moyenne] Batterie a 96 % (plafond), PV brident la voiture a 20 A. Consigne reseau 700 W bloque le sur + ↳ La consigne de puissance reseau (700 W) evince l'excedent solaire gratuit pour alimenter la voiture, alors que le bilan + → Verifier pourquoi la consigne reseau est fixee a 700 W au lieu d'etre ouverte ou elevee pour absorber le surplus PV et c + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utili + ↳ La batterie est saturee alors que le reseau est disponible et que la production solaire est bridee. Le systeme ne rechar + → Verifier si la consigne de puissance reseau (700 W) est trop basse pour permettre une charge utile ou si la logique de ' + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + +═══ 4b-hiver-parc-12 [OUVERT] + HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000) + attendu : OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ? + [faible ] Batterie 55% (SOC requis prudent 59%), reseau absent, deficit nocturne de 2 kWh. Consigne re + ↳ Le bilan indique un besoin de reseau (OUI) mais le contacteur est ouvert et AC-IN absent. La marge de 4% sous la cible p + → Verifier pourquoi le contacteur n'a pas fermé pour couvrir le deficit identifie par le bilan avant l'extinction complete + [aucune ] Nuit, reseau absent. Batterie 55 % (-18 A) couvre la maison (1400 W). Bilan demande 52-59 % + [aucune ] Nuit, reseau absent. Batterie 55 % (-18 A) couvre la maison (1400 W). Bilan demande 52-59 % + [moyenne] Nuit, reseau coupe. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cibl + ↳ La cible SOC de 85% est inutile et contre-productive : elle force a acheter du courant EDF au plein tarif pour stocker u + → Verifier pourquoi la strategie auto_solar_plus maintient une cible aussi haute la nuit. Il faudrait laisser la batterie + [aucune ] Nuit, reseau absent. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cib + gravites : faible aucune aucune moyenne aucune INSTABLE (3 valeurs) + +═══ 4c-hiver-parc-16 [OUVERT] + HIVER avec 16 equivalents (vieux modules repares) + attendu : OUVERT : et avec 16 equivalents ? + [aucune ] Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bila + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) avec -18 A. Bilan demande 44-50 % pour demain. Cons + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour dema + [aucune ] Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bila + [aucune ] Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bila + gravites : aucune aucune aucune aucune aucune STABLE + +═══ 15-oscillation-contacteur + INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes + attendu : SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le bilan juge le rese + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement pe + → Verifier si le EVCS Surplus Controller V2.6 ou un script force la fermeture/ouverture du contacteur independamment de la [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est present et + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery/Grid Hysteresis Fix V1), probablement pert + → Verifier les logs du EVCS Surplus Controller V2.6 et des scripts pour identifier quel automate force la fermeture/ouvert [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau'. Chaque bascule coute 50-150 Wh et use le relais. Le proprietair + → Identifier quel ecrivain non-proprietaire (EVCS ou script) force les bascules. Verifier si la logique d'hysteresis est c [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le bilan juge le rese + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement pe + → Verifier les logs des ecritures sur le contacteur pour identifier quel script ou controleur force la bascule a chaque cy [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau'. Chaque bascule coute 50-150 Wh et use le relais. Le proprietair + → Verifier si un script ou le controleur EVCS force le contacteur malgre la presence du reseau et la consigne de puissance [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 16-systeme-calme + CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes + attendu : NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : deficit matinal couve + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Aucu + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit matinal couver + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 14-bilan-indisponible + ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE + attendu : SIGNALER en le disant : le bilan est degrade, donc prudence assumee + ✔ [faible ] Bilan indisponible. Batterie a 20 % (plancher), reseau ferme, excedent negatif. Consigne 700 + ↳ Le systeme est au plancher de securite pendant les heures creuses alors que le reseau est disponible et que la cible mat + → Verifier pourquoi le bilan est degrade. Surveiller si la batterie remonte vers 35 % grace aux 88 W de marge reseau avant [nomme] + ✔ [moyenne] SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge. Bilan indisponible. + ↳ La batterie est au plancher de securite pendant les heures creuses alors que le reseau est disponible et que la cible ma + → Verifier pourquoi la consigne reseau n'est pas relevee pour charger la batterie vers la cible de 35 % durant la nuit. [nomme] + ✔ [moyenne] Batterie a 20 % (plancher) avec reseau ferme et consigne a 700 W. Bilan indisponible. + ↳ La batterie est au plancher de securite pendant les heures creuses alors que le reseau est disponible. La marge de recha + → Verifier pourquoi la consigne reseau est bloquee a 700 W (limite du contacteur ou reglages hysteresis). Augmenter la con [nomme] + ✔ [faible ] Batterie a 20 % (plancher), reseau ferme, excedent solaire negatif. Bilan indisponible. + ↳ Le bilan energetique est indisponible alors que la batterie est au plancher de securite et que le reseau est disponible + → Verifier pourquoi le calcul du bilan est en statut degrade et s'assurer que la recharge via le reseau (88 W disponibles) [nomme] + ✔ [faible ] Bilan indisponible. Batterie a 20% (plancher), reseau ferme, marge decharge 100A. Consigne r + ↳ Le systeme est au plancher de securite (20%) avec le reseau disponible mais la consigne limite la recharge a 88W. Sans b + → Verifier pourquoi le bilan est degrade et confirmer que la consigne de 700W est bien celle desiree pour la recharge noct [nomme] + gravites : faible moyenne moyenne faible faible INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 5/5 + +──────────────────────────────────────────────────────────── +INCIDENTS : 37/40 gravites justes (8 cas) + 5/5 1-nuit-bloquee-sans-vehicule nomme 5/5 + 5/5 2-nuit-relachee-trop-tot nomme 1/5 + 5/5 6-censure-demarrer + 2/5 7-boost-evince-le-solaire + 5/5 9-pointe-cuisson-proteger-le-parc nomme 5/5 + 5/5 10-nuage-sur-charge-28a nomme 0/5 + 5/5 15-oscillation-contacteur nomme 5/5 + 5/5 14-bilan-indisponible nomme 5/5 +SYSTEME CALME : 12/20 (silence attendu) (4 cas) + 5/5 3-nuit-couverte-ne-rien-faire + 0/5 5-soir-deficit-ne-pas-demarrer + 2/5 8-voiture-pleine-ne-pas-reessayer + 5/5 16-systeme-calme +CAS OUVERTS : 6, non notes, a lire + +Journal complet : docs/mesures/campagne-conseiller-2026-09-13.json diff --git a/docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.json b/docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.json new file mode 100644 index 0000000..ea48444 --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.json @@ -0,0 +1,1666 @@ +[ + { + "id": "1-nuit-bloquee-sans-vehicule", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 %", + "attendu": "SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "motsCles": [ + [ + "recharg", + "remonte", + "ne monte", + "stagne", + "plate", + "0 a", + "0a", + "immobile" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "3.4", + "balance_storage_shortfall_kwh": "6.77" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kWh requis avant 9h sans recharger via le reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est au plancher de securite alors que le bilan exige un SOC de 59%. Le reseau est disponible mais la marge de recharge n'est que de 88W (700W - 612W).", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700W pendant les heures creuses (01:24-07:24). Il faudrait augmenter cette consigne pour permettre a la batterie de se recharger efficacement avant le matin.", + "confidence": 0.95 + }, + { + "constat": "SOC 20 % (plancher) avec reseau ferme et consigne a 700 W. La batterie ne peut charger que 88 W, insuffisant pour atteindre la cible de 59 % avant 09 h.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit structurel : la marge de charge reseau (88 W) est trop faible pour couvrir les 3.13 kWh requis par le bilan avant le croisement solaire.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande du reseau. Augmenter la consigne ou ouvrir le contacteur pour charger via EDF pendant les heures creuses.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne peut pas couvrir les 3.13 kWh requis avant 09h sans recharger via le reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est au plancher de securite alors que le bilan exige un SOC de 59 %. Le reseau est disponible mais la marge de recharge n'est que de 88 W (700W - 612W).", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W et non elevee pour permettre une recharge significative pendant la nuit creuse/avant l'aube.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kWh requis avant 9h. Le systeme est coherent mais critique.", + "gravite": "moyenne", + "ce_qui_cloche": "Le bilan demande 59.1% de SOC pour survivre jusqu'a 9h, mais la batterie est a 20%. Avec une marge de charge residuelle de seulement 88W (consigne 700W - maison 612W), il est physiquement impossible d'atteindre la cible avant le matin. La batterie sera vide ou au plancher de securite (22%) bien avant l'aube, obligeant la maison a dependre du reseau plein tarif des que le contacteur basculera si la consigne n'est pas relevee.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan identifie un besoin de 3.4 kWh via le reseau. Il faudrait augmenter la consigne (ex: 1500-2000 W) pour permettre a la batterie de se recharger pendant la nuit et atteindre le SOC necessaire pour le matin, evitant ainsi un deficit matinal couteux.", + "confidence": 0.95 + }, + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kWh requis avant 9h sans recharger via le reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est au plancher de securite avec un deficit prevu de 3.13 kWh. Le reseau est disponible mais la marge de recharge n'est que de 88 W (consigne 700W - charge maison 612W).", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande 3.4 kWh du reseau. Il faut augmenter la consigne pour charger la batterie avant le pic matinale.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "2-nuit-relachee-trop-tot", + "t": "2026-09-03T03:00:00+02:00", + "certain": true, + "titre": "03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30)", + "attendu": "SIGNALER : SOC sous le requis alors que la session est marquee terminee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "sous", + "en dessous", + "inferieur", + "manque", + "deficit", + "insuffisant" + ], + [ + "terminee", + "done", + "fini", + "relach", + "session" + ] + ], + "s": { + "soc_percent": "45", + "battery_current_a": "2", + "house_ac_power_w": "700", + "grid_state": "on", + "acin1_available": "1", + "evcs_vehicle_connected": "on", + "evcs_surplus_state": "night_session_done_idle", + "evcs_source_mode": "Réseau HC autorisé", + "night_target_soc_actual": "50.4", + "tomorrow_kwh": "33.9", + "balance_required_soc": "50.4", + "balance_required_soc_prudent": "57", + "balance_energy_to_cover_kwh": "4.3", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1" + }, + "passages": [ + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (consommation maison), laissant un excédent nul. La batterie ne peut donc pas se recharger sur le réseau malgré le déficit identifié par le bilan.", + "piste": "Vérifier pourquoi la consigne de puissance réseau n'est pas augmentée pour permettre la recharge nocturne (1.1 kWh) alors que le réseau est disponible et que la voiture est branchée mais inactive.", + "confidence": 0.9 + }, + { + "constat": "SOC 45% < cible 50.4%. Deficit -700W. Reseau present mais consigne bloquee a 700W (maison seule). Voiture branchee, excedent negatif.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie doit couvrir 4.3 kWh jusqu'a 9h mais ne peut pas se recharger : la consigne reseau est egale a la charge maison, il n'y a aucun surplus pour charger la batterie ou la voiture.", + "piste": "Verifier pourquoi la consigne de puissance reseau n'est pas relevee pendant les heures creuses (12:24-14:24) ou si le controleur EVCS bloque la recharge alors que le reseau est disponible et gratuit/HC.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (consommation maison), laissant un excédent nul. La batterie ne peut pas se recharger sur le réseau malgré le besoin identifié par le bilan.", + "piste": "Vérifier pourquoi l'automatisation n'a pas augmenté la consigne réseau pour permettre la recharge de nuit (manque de 1.1 kWh). Le propriétaire préfère payer quelques kWh plutôt que d'avoir une batterie sous-ciblée au matin.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "faible", + "ce_qui_cloche": "La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et gratuit (HC). Le système n'a pas chargé via le réseau.", + "piste": "Vérifier pourquoi le contrôleur n'a pas utilisé le réseau pour combler l'écart de 5.4% (environ 0.5-1 kWh) malgré la présence du contacteur.", + "confidence": 0.85 + }, + { + "constat": "03:00, nuit. Batterie 45% (cible 50.4%), PV 0W, réseau présent mais consigne bloquée à 700W (maison seule). Voiture branchée, excédent solaire négatif.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan identifie un besoin de 1.1 kWh du réseau pour atteindre la cible matinale, mais la consigne actuelle empêche toute recharge nocturne. La voiture est branchée mais ne peut pas charger (déficit).", + "piste": "Vérifier si le 'EVCS Surplus Controller' ou l'automatisation a verrouillé la consigne réseau à 700W alors que le mode 'auto_solar_plus' devrait autoriser la recharge batterie/voiture pendant les heures creuses (01:24-07:24) via le réseau EDF.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "3-nuit-couverte-ne-rien-faire", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis", + "attendu": "NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "70", + "battery_current_a": "-12", + "house_ac_power_w": "612", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "off" + }, + "passages": [ + { + "constat": "Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan coherent : cible 59.1 % pour 3.13 kWh a couvrir avant 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59.1% pour 3.13kWh a couvrir avant 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan demande 59.1 % pour 09h. Consigne reseau 700 W inopérante sans AC-IN.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59.1% pour 3.13kWh a couvrir avant 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59.1% pour 3.13kWh a couvrir avant 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "4-hiver-nuit-longue", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h", + "attendu": "OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "88", + "balance_required_soc_prudent": "97", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "5.1", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "8.2" + }, + "passages": [ + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Reseau absent, deficit nocturne imminent.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne peut pas couvrir la nuit sans toucher au plancher ou echouer.", + "piste": "Verifier pourquoi le contacteur reste ferme alors que le bilan juge le reseau necessaire. Probable conflit avec 'Battery / Grid Hysteresis Fix V1' ou seuil fige.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit de 8.2 kWh identifie. Reseau absent.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie va atteindre le plancher avant l'aube, rendant la couverture du matin impossible sans injection.", + "piste": "Verifier pourquoi le contacteur reste ferme alors que le bilan signale 'reseau juge necessaire : OUI'. Probable conflit avec Battery/Grid Hysteresis Fix V1 ou blocage par EVCS Surplus Controller.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne confirme, reseau juge necessaire mais contacteur ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme reste en autonomie (contacteur ouvert). La batterie va atteindre le plancher avant l'aube ou au petit matin, creant une coupure ou un appel reseau brutal non gere.", + "piste": "Verifier pourquoi le contacteur n'a pas bascule alors que le bilan indique 'reseau juge necessaire: OUI'. Suspecter un blocage par un ecrivain externe (EVCS Surplus Controller ou script) qui empeche la fermeture du contacteur malgre le deficit.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne confirme, reseau juge necessaire mais contacteur ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme est en autonomie (contacteur ouvert). La batterie va atteindre le plancher avant l'aube ou au petit dej.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan indique 'reseau juge necessaire'. Suspecter un blocage par EVCS Surplus Controller ou une erreur d'etat sur AC-IN.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit de 8.2 kWh identifie, reseau juge necessaire mais contacteur ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme reste en autonomie (contacteur ouvert). La batterie va atteindre le plancher avant l'aube ou au petit dejour.", + "piste": "Verifier pourquoi le contacteur n'a pas bascule : conflit entre 'Battery / Grid Hysteresis Fix V1' et 'EVCS Surplus Controller V2.6', ou blocage par un script/automate non liste.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "5-soir-deficit-ne-pas-demarrer", + "t": "2026-09-03T19:44:00+02:00", + "certain": true, + "titre": "03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W)", + "attendu": "CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "-12.2", + "pv_power_w": "758", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "1202", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison, coherent avec le bilan.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison, ce qui est coherent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Deficit solaire (-444 W) et reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison, coherent avec le bilan.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Deficit solaire (-444 W) et reseau absent. La batterie decharge (-12.2 A) pour couvrir la maison, coherent avec le bilan.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (-12.2 A), deficit solaire de -444 W, reseau absent. Le bilan exige 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit et isole du reseau alors que la marge de decharge ne permet pas d'atteindre le SOC requis (99.7 %) sans risque ou sans charge externe.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert alors que le bilan indique 'reseau juge necessaire : OUI'. L'absence de reseau empeche de combler le manque de stockage identifie (6.8 kWh).", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "6-censure-demarrer", + "t": "2026-09-03T18:50:00+02:00", + "certain": true, + "titre": "03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee", + "attendu": "SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue", + "graviteAttendue": [ + "faible", + "moyenne" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "0", + "pv_power_w": "769", + "pv_power_10m_avg_w": "800", + "house_ac_power_w": "755", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "4.9", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie pleine (94%), PV bridee (6/6), reseau absent. Bilan demande 100% SOC pour demain, mais marge parc a 0A.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan identifie un manque de stockage et requiert le reseau (4.9 kWh), mais le contacteur est ouvert. La production solaire est refusee alors que la batterie ne peut plus absorber (marge 0A).", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan juge le reseau necessaire. Le controleur EVCS est a l'arret, mais c'est le systeme de gestion du reseau qui doit fermer le contacteur pour eviter la perte d'excedent.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pour demain, impossible sans reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en ileot (reseau coupe) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production solaire refusee. La voiture ne consomme pas (0 W).", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? Le controleur EVCS est a l'arret, mais c'est le reseau qui manque pour charger la batterie au max avant la nuit.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee car aucun puits, reseau absent. Bilan demande 100 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que le bilan identifie un manque de stockage et une necessite de reseau pour la nuit suivante.", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou les seuils fixes empechent-ils l'absorption du surplus ?", + "confidence": 0.9 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pour demain, impossible sans reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en 'batterie_pleine_sans_puits' : la production solaire est refusee car la batterie est pleine et le reseau est deconnecte. Le bilan identifie un manque de stockage de 6.8 kWh et necessite le reseau (4.9 kWh) pour atteindre la cible de 99.7 %, mais le contacteur reste ouvert.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas ferme pour charger la batterie ou la voiture (EVCS). La consigne de 700 W est peut-etre trop basse ou un verrou bloque l'ecriture du contacteur par le controleur EVCS alors que la ressource solaire est gratuite et refusee.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridees (6/6), reseau absent. Bilan demande 100 % pour demain, impossible sans reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en ileot (reseau ouvert) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production solaire refusee. La voiture ne charge pas (0 W).", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? Le surplus doit alimenter la voiture ou fermer le reseau.", + "confidence": 0.85 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "7-boost-evince-le-solaire", + "t": "2026-09-11T17:02:00+02:00", + "certain": true, + "titre": "11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W", + "attendu": "SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "s": { + "soc_percent": "96", + "battery_current_a": "0", + "pv_power_w": "121", + "pv_power_10m_avg_w": "150", + "house_ac_power_w": "7695", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "8260", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "plafond_edf_on_a": "28", + "balance_pv_censored": "on", + "balance_censor_reason": "production_bridee", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "8.4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) alors que le bilan demande 62 % pour demain.", + "gravite": "moyenne", + "ce_qui_cloche": "La voiture consomme du courant EDF (8.2 kW) pendant que la production solaire est refusee et que la batterie est pleine, empechant l'autoconsommation gratuite.", + "piste": "Verifier pourquoi l'EVCS Surplus Controller V2.6 maintient la charge sur le reseau au lieu de reduire le courant ou de basculer en mode excedent, vu la production bridee.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan coherent : deficit solaire, reseau necessaire.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) pendant que le bilan demande 5.2 kWh pour demain.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que la batterie est pleine et que le vehicule consomme du courant EDF, privant la maison de l'energie gratuite necessaire au matin.", + "piste": "Verifier pourquoi l'EVCS ne bascule pas en surplus ou si la consigne de puissance reseau (8260 W) evite artificiellement la charge PV sur la voiture/batterie.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) mais excedent negatif (-1134 W). La voiture consomme 6.4 kW, evitant le reseau grace a la batterie (SOC 96%).", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan coherent : deficit solaire, reseau necessaire.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "8-voiture-pleine-ne-pas-reessayer", + "t": "2026-09-07T14:28:00+02:00", + "certain": true, + "titre": "07/09 14:28 — borne annonce charge terminee, vehicule branche immobile", + "attendu": "CALME : l etat collant fait son travail, aucune relance", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "97", + "battery_current_a": "1", + "pv_power_w": "2114", + "pv_power_10m_avg_w": "2000", + "house_ac_power_w": "1965", + "evcs_vehicle_connected": "on", + "evcs_current_a": "0", + "vehicle_selected": "JEEP", + "evcs_surplus_state": "day_vehicle_full_idle", + "evcs_source_mode": "Bloqué", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "58", + "balance_required_soc_prudent": "66", + "balance_energy_to_cover_kwh": "4.6", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "12", + "tomorrow_kwh": "30" + }, + "passages": [ + { + "constat": "PV bridee (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond), reseau absent.", + "gravite": "faible", + "ce_qui_cloche": "Ressource solaire refusee (bridee) sans preneur disponible (vehicule plein, batterie pleine).", + "piste": "Verifier la logique du EVCS Surplus Controller V2.6 pour autoriser une charge de maintien ou un ecartement si le vehicule n'est pas strictement plein a 100 %.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 97 % (plafond), PV bridee car aucun puits disponible, vehicule plein et inactif.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que le vehicule est branche mais ne charge pas. L'energie gratuite est perdue.", + "piste": "Verifier pourquoi le controleur EVCS maintient la voiture a 0 A malgre l'excedent solaire (+149 W). Si le vehicule n'est pas reellement plein, forcer une petite charge pour absorber l'excedent.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 97 % (plafond), PV bridees (6/6), reseau absent. Vehicule plein, aucun puits disponible pour l'excedent solaire.", + "gravite": "faible", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que le vehicule est branche mais plein et que la batterie est saturee. L'energie est perdue.", + "piste": "Verifier si le contacteur reseau peut se fermer pour absorber l'excedent ou si une strategie de charge EVCS doit etre activee malgre le statut 'plein'.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 97 % (plafond), PV bridee car aucun puits disponible, vehicule plein et inactif.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que le vehicule est branche mais ne charge pas, et la batterie est saturee.", + "piste": "Verifier pourquoi le controleur EVCS n'initie pas la charge du vehicule pour absorber l'excedent solaire gratuit.", + "confidence": 0.95 + }, + { + "constat": "PV bride (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond), reseau absent.", + "gravite": "faible", + "ce_qui_cloche": "Ressource solaire refusee (bridee) sans puits disponible : la voiture est pleine et la batterie au max. L'energie est perdue.", + "piste": "Verifier si le surplus controller permet de charger un autre appareil ou d'ajuster la consigne pour absorber les 2 kW brides.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "9-pointe-cuisson-proteger-le-parc", + "t": "2026-09-05T20:40:00+02:00", + "certain": true, + "titre": "05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A", + "attendu": "SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "limite", + "plafond", + "maximum", + "97", + "capacite", + "au bord", + "saturation" + ] + ], + "s": { + "soc_percent": "79", + "battery_current_a": "-97.4", + "pv_power_w": "320", + "pv_power_10m_avg_w": "500", + "house_ac_power_w": "4944", + "grid_state": "off", + "acin1_available": "0", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.1", + "balance_grid_needed": "on", + "tomorrow_kwh": "32" + }, + "passages": [ + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A, reseau absent alors qu'il est disponible et juge necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reseau reste ouvert (AC-IN absent) pendant que la batterie depasse 80 % de sa limite de decharge declaree, violant la regle de protection du parc.", + "piste": "Verifier pourquoi le contacteur n'a pas ferme : probablement un ecrivain non-proprietaire (EVCS Surplus Controller ou script) qui bloque la fermeture alors que Battery/Grid Hysteresis Fix V1 devrait l'ouvrir/fermer selon le bilan.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), reseau absent, excedent solaire negatif (-4624 W).", + "gravite": "haute", + "ce_qui_cloche": "Le parc est a 3 A de sa limite de decharge declaree alors que le reseau est disponible mais inutilise.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert et si la consigne de puissance (700 W) ou un ecrivain externe bloque l'absorption du reseau.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A, reseau absent alors qu'il est disponible et juge necessaire par le bilan.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reseau reste ouvert (AC-IN absent) pendant que la batterie depasse 80 % de sa limite de decharge declaree, violant la regle de protection du parc.", + "piste": "Verifier pourquoi le contacteur n'a pas bascule : probablement un ecrivain non-proprietaire (EVCS Surplus Controller ou script) qui bloque la fermeture malgre le deficit et la proximite de la limite materielle.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A, reseau absent alors qu'il est disponible et juge necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reseau reste ouvert (AC-IN absent) pendant que la batterie depasse 80 % de sa limite de decharge declaree, violant la regle de protection du parc.", + "piste": "Verifier pourquoi le contacteur n'a pas bascule : probablement un ecrivain non-proprietaire (EVCS Surplus Controller ou script) qui bloque la fermeture malgre le signal du bilan.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97,4 A (limite 100 A) avec reseau disponible mais contacteur ouvert. Deficit solaire (-4624 W).", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reste ouvert alors que le bilan juge le reseau necessaire et que la marge de decharge est critique (3 A).", + "piste": "Verifier pourquoi Battery/Grid Hysteresis Fix V1 n'a pas ferme le contacteur pour proteger le parc.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "10-nuage-sur-charge-28a", + "t": "2026-09-11T18:00:00+02:00", + "certain": true, + "titre": "11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W", + "attendu": "SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "nuage", + "marge", + "brutal", + "chute", + "passage", + "si le solaire" + ] + ], + "s": { + "soc_percent": "96", + "battery_current_a": "-0.7", + "pv_power_w": "6058", + "pv_power_10m_avg_w": "5500", + "house_ac_power_w": "6845", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "1281", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie force_grid evince la production solaire gratuite pour charger la voiture et la batterie, creant un gaspillage energetique.", + "piste": "Verifier pourquoi le controleur EVCS ne bascule pas en surplus quand l'excedent est positif et les chargeurs brident.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif (+5.6 kW).", + "gravite": "moyenne", + "ce_qui_cloche": "L'EVCS consomme le reseau pour la voiture et recharge la batterie pleine, evitant d'utiliser le surplus solaire gratuit qui est refuse par les chargeurs.", + "piste": "Verifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que l'excedent est positif et que la batterie est saturee.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif (+5.6 kW).", + "gravite": "moyenne", + "ce_qui_cloche": "L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite pour charger la batterie qui est deja pleine.", + "piste": "Verifier pourquoi le controleur ignore l'excedent solaire positif et la saturation de la batterie ; il devrait basculer la voiture sur le surplus ou reduire la consigne reseau.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solaire est positif.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie force_grid evince la production solaire gratuite pour charger la voiture et la batterie, creant un gaspillage energetique.", + "piste": "Verifier pourquoi le controleur EVCS ne bascule pas en surplus : la consigne de puissance reseau ou un verrou script bloque-t-il l'absorption du PV ?", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force pour charger la voiture alors que l'excedent solaire est positif (+5.6 kW) et le reseau disponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie 'force_grid_now' consomme du reseau payant pour la voiture pendant que le surplus solaire est refuse ou sous-utilise, contrairement a la regle de priorite a l'excedent.", + "piste": "Verifier pourquoi le controleur EVCS ne bascule pas en mode excedent solaire alors que les chargeurs PV sont a fond et qu'il reste de la puissance.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "11-batterie-pleine-midi", + "t": "2026-09-11T12:00:00+02:00", + "certain": false, + "titre": "11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche", + "attendu": "OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ?", + "graviteAttendue": null, + "s": { + "soc_percent": "98", + "battery_current_a": "2.2", + "pv_power_w": "810", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "702", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "55", + "balance_required_soc_prudent": "63", + "balance_energy_to_cover_kwh": "4.1", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "balance_next_deficit_kwh": "4.1", + "balance_next_deficit_window": "(ce soir 20 h -> 09 h)", + "today_remaining_kwh": "45", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 98 % et chargeurs brides : l'excident solaire (+108 W) est perdu car le parc est plein. Le bilan indique un besoin de 4,1 kWh ce soir.", + "gravite": "moyenne", + "ce_qui_cloche": "La production PV est bridee (6/6 chargeurs) alors que la batterie est pleine et qu'il n'y a pas de vehicule pour absorber l'excedent gratuit. L'energie solaire est refusee.", + "piste": "Verifier si la consigne de puissance reseau (700 W) ou les seuils SOC (95-100 %) empechent d'utiliser le reseau en heures creuses (12:24-14:24) pour eviter la perte de production, ou planifier une charge EV si disponible.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits disponible, reseau absent. Excedent solaire negligeable (+108 W).", + "gravite": "moyenne", + "ce_qui_cloche": "La production PV est refusee (bridee) alors que le reseau EDF est disponible mais non utilise pour absorber l'excedent ou charger la batterie au delà de son plafond.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert alors que la consigne est a 700 W et que la batterie est pleine : le systeme devrait basculer sur le reseau pour eviter la perte d'energie solaire gratuite.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 98 % avec production bridee (6/6 chargeurs), reseau absent. Excedent solaire negligeable (+108 W).", + "gravite": "faible", + "ce_qui_cloche": "La production est refusee car la batterie est quasi pleine et le reseau decharge n'est pas autorise, mais l'excedent reel est faible.", + "piste": "Verifier si la consigne de puissance reseau (700 W) permettrait d'absorber ce petit excedent pour eviter la perte, ou accepter la perte mineure.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 98 % avec 6 chargeurs brides, reseau absent. Le bilan indique un besoin de 55 % pour la nuit mais le systeme est en surcharge.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que la batterie est quasi pleine et que le reseau est coupe. L'energie gratuite est perdue au lieu d'etre stockee ou utilisee.", + "piste": "Verifier pourquoi le contacteur reste ouvert si le reseau est disponible (ou s'il est volontairement coupe). Si le reseau est accessible, ouvrir le contacteur permettrait d'absorber l'excedent ou de charger la voiture si presente. Ici, c'est une perte d'energie gratuite.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 98 % avec production bridee (6/6 chargeurs), reseau absent. Excedent solaire negligeable (+108 W).", + "gravite": "faible", + "ce_qui_cloche": "La production est refusee car la batterie est quasi pleine et le reseau est deconnecte, mais aucun vehicule n'est branche pour absorber cet excedent gratuit.", + "piste": "Verifier si la deconnexion du reseau est intentionnelle ou un bug du contacteur (proprietaire Battery/Grid Hysteresis Fix V1) qui empeche l'absorption de l'excedent solaire.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "12-orage-annonce", + "t": "2026-09-12T15:30:00+02:00", + "certain": false, + "titre": "Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site", + "attendu": "OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "72", + "battery_current_a": "35", + "pv_power_w": "4200", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "900", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_storm_level": "Orange", + "balance_storm_reserve_soc": "88", + "balance_required_soc": "55", + "balance_required_soc_prudent": "62", + "balance_energy_to_cover_kwh": "3.2", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "18", + "tomorrow_kwh": "40" + }, + "passages": [ + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie charge à 35 A vers un SOC de 72 %. Le bilan indique un besoin de réserve de 88 % pour l'orage, mais la marge de décharge est saine.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers 72 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers 72 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge à 35 A vers 72 %. Bilan cohérent avec prévision orage.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge à 35 A vers 72 %. Bilan cohérent avec prévision orage.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "13-voiture-empruntee-echeance", + "t": "2026-09-11T17:00:00+02:00", + "certain": false, + "titre": "11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present", + "attendu": "OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ?", + "graviteAttendue": null, + "s": { + "soc_percent": "96", + "battery_current_a": "-10", + "pv_power_w": "4255", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "4888", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "20", + "vehicle_selected": "JEEP", + "user_strategy": "force_charge_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "700", + "evcs_source_mode": "Solaire", + "evcs_surplus_state": "charging_hold_manual_local", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "required_energy_kwh": "12", + "departure_time": "19:00", + "departure_priority_enabled": "on", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "6", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme avec marge de recharge faible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plafond alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau pour la nuit. La production solaire excedentaire (+3967 W) n'est pas absorbee par la batterie (pleine) ni par la voiture (limitee a 20A/4.6kW).", + "piste": "Verifier si la limite de charge du parc ou la consigne manuelle 'force_charge_now' empeche l'absorption de l'excedent solaire. Considerer augmenter le courant de charge EVCS si le surplus persiste, ou accepter la perte d'excedent si le reseau couvre le deficit nocturne.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande 70 % pour demain, reseau juge necessaire.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau est fixee a 700 W, ce qui limite la recharge a 412 W et empeche d'atteindre le SOC prudent de 70 % avant l'aube.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan identifie un besoin de 1.4 kWh via le reseau.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utilise (700 W).", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plafond alors que le bilan demande du reseau pour la nuit et que des chargeurs se brident : l'energie solaire gratuite est perdue.", + "piste": "Verifier pourquoi la consigne de recharge reseau n'est pas augmentee pour absorber l'excedent ou si la limite de 100 A du parc bloque la charge.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utilise (700 W).", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plafond et ne peut plus stocker l'excedent solaire (+3967 W) qui alimente la voiture. Le reseau reste disponible mais n'est pas sollicite pour eviter le bridage ou recharger si besoin.", + "piste": "Verifier que la consigne de puissance reseau (700 W) permet d'absorber le surplus si la voiture s'arrete, ou ajuster la strategie pour utiliser le reseau en complement du PV quand la batterie est pleine.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utilise (700 W).", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee alors que le bilan indique un besoin de 5.2 kWh ce matin et que le reseau est disponible. L'energie solaire excedentaire (+3967 W) n'est pas stockee ni utilisee pour la voiture au max.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W et non elevee pour charger la batterie ou la voiture plus fort. Le surplus solaire est perdu car la batterie est pleine et la voiture charge lentement.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4b-hiver-parc-12", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000)", + "attendu": "OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "52", + "balance_required_soc_prudent": "59", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "12", + "bms_max_discharge_current_a": "300", + "bms_max_charge_current_a": "300" + }, + "passages": [ + { + "constat": "SOC 55% vs cible prudente 59%. Deficit nocturne de 2 kWh. Reseau absent, batterie alimente la maison (-18 A).", + "gravite": "faible", + "ce_qui_cloche": "Le bilan indique un besoin de reseau (OUI) mais le contacteur est ouvert. La marge de 4 points de SOC est faible pour la nuit.", + "piste": "Verifier pourquoi le contacteur n'a pas ferme pour couvrir le deficit nocturne identifie par le bilan.", + "confidence": 0.9 + }, + { + "constat": "SOC 55% vs cible prudente 59%. Deficit nocturne de 2 kWh. Reseau absent, batterie alimente la maison (-18A).", + "gravite": "faible", + "ce_qui_cloche": "Le bilan indique que le reseau est necessaire (0 kWh) mais le contacteur est ouvert. La marge de 4 points de SOC est faible pour la nuit.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan juge le reseau necessaire. Surveiller la descente du SOC vers le plancher de 22%.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incohérente avec prévision 6.2 kWh.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC de 85% est irréalisable sans réseau (prévision 6.2 kWh < besoin pour monter à 85%). Le système fonctionne en autonomie correcte mais la consigne est obsolète.", + "piste": "Vérifier si le script 'auto_solar_plus' ajuste dynamiquement la cible SOC selon la disponibilité du réseau ou la prévision solaire.", + "confidence": 0.9 + }, + { + "constat": "SOC 55% vs besoin prudent 59%. Deficit nocturne de 2 kWh. Reseau absent, consigne 700W inopérante.", + "gravite": "faible", + "ce_qui_cloche": "Ecart de 4 points entre SOC actuel et cible prudente du bilan pour la traversée nocturne.", + "piste": "Vérifier si le contacteur réseau peut se fermer pour combler les 4% manquants avant minuit.", + "confidence": 0.85 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incohérente avec prévision 6.2 kWh.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC de 85% est irréalisable demain (prévision 6.2 kWh < besoin ~9.4 kWh + marge), mais le système fonctionne correctement en autonomie pour l'instant.", + "piste": "Vérifier si la consigne de 85% est figée dans un script ou l'EVCS alors que le bilan indique qu'elle est inaccessible sans réseau.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4c-hiver-parc-16", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec 16 equivalents (vieux modules repares)", + "attendu": "OUVERT : et avec 16 equivalents ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "44", + "balance_required_soc_prudent": "50", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "off", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "16", + "bms_max_discharge_current_a": "400", + "bms_max_charge_current_a": "400" + }, + "passages": [ + { + "constat": "SOC 55 % > cible prudente 50 %. Réseau absent. Déficit -1400 W. Batterie décharge (-18 A).", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie 55 % (cible prudente 50 %), réseau coupé, déficit de -1400 W. Le bilan estime un besoin de 9.4 kWh jusqu'à 11h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "SOC 55 % > cible prudente 50 %. Deficit -1400 W. Reseau absent. Voiture absente. Bilan coherent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Batterie 55 % (cible prudente 50 %), réseau absent, déficit -1400 W. Bilan cohérent : autonomie suffisante jusqu'au matin.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) vs besoin prudent 50 %. Deficit -1400 W couvert par la batterie. Marge parc saine.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "15-oscillation-contacteur", + "t": "2026-09-12T06:36:00+02:00", + "certain": true, + "titre": "INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes", + "attendu": "SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "oscill", + "bascul", + "va-et-vient", + "aller-retour", + "repet", + "six fois", + "6 fois", + "cycl" + ], + [ + "conflit", + "deux", + "ecriv", + "contradict", + "se battent", + "concurren", + "automatisation", + "hysteresis" + ] + ], + "s": { + "soc_percent": "35", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "1.56", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "06:35:06 Contacteur EDF : off -> on|06:34:02 Contacteur EDF : on -> off|06:30:49 Contacteur EDF : off -> on|06:29:44 Contacteur EDF : on -> off|06:26:31 Contacteur EDF : off -> on|06:25:27 Contacteur EDF : on -> off" + }, + "passages": [ + { + "constat": "Oscillation du contacteur EDF toutes les 1-2 min (6 bascules en 10 min) alors que le reseau est requis par le bilan.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur bascule repetitivement, ce qui coute 50-150 Wh par cycle et use le relais. Le bilan demande le reseau (1.1 kWh), mais l'actionneur ne reste pas ferme.", + "piste": "Verifier quel ecrivain (EVCS Surplus Controller ou script) force la fermeture/ouverture du contacteur contre la consigne de Battery/Grid Hysteresis Fix V1.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement perturbe par un ecrivain externe (EVCS Surplus Controller ou scripts). Chaque bascule coute 50-150 Wh et use le relais.", + "piste": "Identifier quel script ou controleur EVCS force la fermeture/ouverture du contacteur pendant la phase de charge. Verifier les seuils d'hysteresis du module principal qui sont trop etroits pour la dynamique actuelle.", + "confidence": 0.95 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) pendant heures creuses, alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee du contacteur reseau : chaque bascule coute 50-150 Wh et use le relais. Le systeme ne maintient pas l'etat ferme requis par le bilan.", + "piste": "Identifier l'ecrivain fautif (EVCS Surplus Controller ou script) qui force la fermeture/ouverture malgre la consigne de maintien du proprietaire (Battery/Grid Hysteresis).", + "confidence": 0.98 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis pour couvrir le deficit de 1.56 kWh avant 09h.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee du contacteur reseau, coutant 300 a 900 Wh et usant le relais, probablement due a un conflit entre Battery/Grid Hysteresis Fix V1 et EVCS Surplus Controller V2.6 ou scripts.", + "piste": "Identifier l'ecrivain non proprietaire qui force la bascule (probablement EVCS Surplus Controller V2.6 ou script) et stabiliser la logique d'hysteresis pour eviter les transitoires inutiles.", + "confidence": 0.95 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis par le bilan pour couvrir le deficit de 1.56 kWh avant 09h.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee du contacteur reseau (6 cycles en 10 min) causant des transitoires inutiles et usure du relais, pendant que la batterie doit charger mais reste a 35% sous consigne de 42.8%.", + "piste": "Verifier l'ecrivain 'EVCS Surplus Controller V2.6' ou un script qui force la fermeture/ouverture du contacteur contre la logique du 'Battery / Grid Hysteresis Fix V1'. Stabiliser la consigne pour eviter les micro-bascules.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "16-systeme-calme", + "t": "2026-09-12T07:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes", + "attendu": "NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "42", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "0.9", + "balance_grid_needed": "on", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "05:02:51 Contacteur EDF : off -> on|05:02:51 Reprise reseau nuit : off -> on" + }, + "passages": [ + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : deficit matinal couvert par le reseau.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV a 0 W. Le systeme est en attente du soleil pour la matinale.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 1 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bilan coherent avec le matin d'hiver.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bilan coherent avec le matin d'hiver.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bilan coherent avec le matin d'hiver.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "14-bilan-indisponible", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE", + "attendu": "SIGNALER en le disant : le bilan est degrade, donc prudence assumee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "degrad", + "indisponible", + "sans bilan", + "pas de bilan", + "inconnu", + "unknown" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "35", + "tomorrow_kwh": "75.2", + "balance_status": "degrade", + "balance_required_soc": "unknown", + "balance_energy_to_cover_kwh": "unknown" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le reseau est disponible et qu'il reste une petite marge de recharge (88W). Sans bilan, on ne sait pas si c'est un creux transitoire ou une erreur de consigne qui empeche la recharge nocturne gratuite.", + "piste": "Verifier pourquoi la consigne reseau n'a pas permis de recharger la batterie au-dessus du plancher pendant les heures creuses precedentes. Surveiller le SOC pour voir s'il remonte des que la production PV demarrera.", + "confidence": 0.6 + }, + { + "constat": "SOC 20% (plancher), réseau présent mais consigne 700W limite la recharge à 88W. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de sécurité (20%) alors que le réseau est disponible et qu'il reste de la marge sur la consigne. La recharge est artificiellement bridée par la consigne basse, empêchant la récupération avant les heures creuses ou l'aube.", + "piste": "Vérifier pourquoi la consigne réseau est fixée à 700 W. Si l'objectif est de recharger via EDF, il faut augmenter cette consigne pour exploiter la marge restante (88 W) ou attendre les heures creuses si c'est une stratégie tarifaire stricte, mais le risque d'être à plat le matin est réel.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une marge de recharge. Le systeme ne recharge pas la batterie pour eviter le plein tarif du matin.", + "piste": "Verifier pourquoi la consigne de puissance reseau (700 W) n'est pas augmentee ou si un ecrivain bloque la recharge. Le bilan doit etre restaure pour piloter correctement la cible SOC.", + "confidence": 0.95 + }, + { + "constat": "Bilan indisponible. Batterie à 20% (plancher), réseau présent mais consigne 700W limite la recharge à 88W. Cible 35% inatteignable rapidement.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de sécurité (20%) alors que le réseau est disponible et qu'il reste des heures creuses (jusqu'à 07:24). La marge de recharge est faible (88W) car la maison consomme déjà 612W sur les 700W alloués, empêchant une remontée SOC efficace avant le matin.", + "piste": "Vérifier si la consigne de puissance réseau peut être augmentée temporairement ou si la consommation de fond de la maison peut être réduite pour permettre à la batterie de remonter vers la cible de 35% pendant les heures creuses restantes.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher), bilan indisponible. Consigne reseau 700W laisse 88W de marge pour recharge, mais la cible matin est fixée à 35%.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evite une recharge plus agressive pendant les heures creuses (01:24-07:24). La batterie reste au plancher alors que le reseau est disponible et gratuit, ce qui risque de payer le plein tarif le matin si la production solaire ne suffit pas.", + "piste": "Verifier pourquoi la consigne reseau n'est pas abaissée pour permettre une recharge plus rapide via EDF en heures creuses. Le bilan étant indisponible, confirmer manuellement que la recharge par le reseau est autorisée et prioritaire sur la cible SOC basse.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + } +] \ No newline at end of file diff --git a/docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.log b/docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.log new file mode 100644 index 0000000..6249023 --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-apres-marge-recharge.log @@ -0,0 +1,343 @@ + +═══ 1-nuit-bloquee-sans-vehicule + 12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 % + attendu : SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh + ✔ [moyenne] SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kW + ↳ Le systeme est au plancher de securite alors que le bilan exige un SOC de 59%. Le reseau est disponible mais la marge de + → Verifier pourquoi la consigne reseau est bloquee a 700W pendant les heures creuses (01:24-07:24). Il faudrait augmenter [nomme] + ✔ [moyenne] SOC 20 % (plancher) avec reseau ferme et consigne a 700 W. La batterie ne peut charger que 8 + ↳ Le systeme est en deficit structurel : la marge de charge reseau (88 W) est trop faible pour couvrir les 3.13 kWh requis + → Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande du reseau. Augmenter la consigne ou [ne nomme pas] + ✔ [moyenne] SOC 20 % (plancher), reseau ferme, consigne 700 W. La batterie ne peut pas couvrir les 3.13 + ↳ Le systeme est au plancher de securite alors que le bilan exige un SOC de 59 %. Le reseau est disponible mais la marge d + → Verifier pourquoi la consigne reseau est bloquee a 700 W et non elevee pour permettre une recharge significative pendant [nomme] + ✔ [moyenne] SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kW + ↳ Le bilan demande 59.1% de SOC pour survivre jusqu'a 9h, mais la batterie est a 20%. Avec une marge de charge residuelle + → Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan identifie un besoin de 3.4 kWh via le reseau [nomme] + ✔ [moyenne] SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kW + ↳ Le systeme est au plancher de securite avec un deficit prevu de 3.13 kWh. Le reseau est disponible mais la marge de rech + → Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande 3.4 kWh du reseau. Il faut augmenter [nomme] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette moyenne|haute : 5/5 + a nomme la chose : 4/5 + +═══ 2-nuit-relachee-trop-tot + 03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30) + attendu : SIGNALER : SOC sous le requis alors que la session est marquee terminee + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La consigne réseau est fixée à 700 W (consommation maison), laissant un excédent nul. La batterie ne peut donc pas se re + → Vérifier pourquoi la consigne de puissance réseau n'est pas augmentée pour permettre la recharge nocturne (1.1 kWh) alor [ne nomme pas] + ✔ [moyenne] SOC 45% < cible 50.4%. Deficit -700W. Reseau present mais consigne bloquee a 700W (maison se + ↳ La batterie doit couvrir 4.3 kWh jusqu'a 9h mais ne peut pas se recharger : la consigne reseau est egale a la charge mai + → Verifier pourquoi la consigne de puissance reseau n'est pas relevee pendant les heures creuses (12:24-14:24) ou si le co [ne nomme pas] + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La consigne réseau est fixée à 700 W (consommation maison), laissant un excédent nul. La batterie ne peut pas se recharg + → Vérifier pourquoi l'automatisation n'a pas augmenté la consigne réseau pour permettre la recharge de nuit (manque de 1.1 [ne nomme pas] + ✔ [faible ] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et gratuit (HC). Le système n'a pa + → Vérifier pourquoi le contrôleur n'a pas utilisé le réseau pour combler l'écart de 5.4% (environ 0.5-1 kWh) malgré la pré [ne nomme pas] + ✔ [faible ] 03:00, nuit. Batterie 45% (cible 50.4%), PV 0W, réseau présent mais consigne bloquée à 700W + ↳ Le bilan identifie un besoin de 1.1 kWh du réseau pour atteindre la cible matinale, mais la consigne actuelle empêche to + → Vérifier si le 'EVCS Surplus Controller' ou l'automatisation a verrouillé la consigne réseau à 700W alors que le mode 'a [ne nomme pas] + gravites : moyenne moyenne moyenne faible faible INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 0/5 + +═══ 3-nuit-couverte-ne-rien-faire + CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis + attendu : NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent + ✔ [aucune ] Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan coherent : cible + ✔ [aucune ] Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59. + ✔ [aucune ] Nuit, reseau absent. Batterie 70 % (-12 A) couvre la maison (612 W). Bilan demande 59.1 % po + ✔ [aucune ] Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59. + ✔ [aucune ] Nuit, reseau absent. Batterie 70% (-12A) couvre la maison (612W). Bilan coherent : cible 59. + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 4-hiver-nuit-longue [OUVERT] + HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h + attendu : OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ? + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Reseau absent, defi + ↳ Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne peut pas couvrir la nuit sans toucher a + → Verifier pourquoi le contacteur reste ferme alors que le bilan juge le reseau necessaire. Probable conflit avec 'Battery + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit de 8.2 kWh + ↳ Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie va atteindre le plancher avant l'aube, ren + → Verifier pourquoi le contacteur reste ferme alors que le bilan signale 'reseau juge necessaire : OUI'. Probable conflit + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne co + ↳ Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme reste en autonomie (contacteur ouvert). La ba + → Verifier pourquoi le contacteur n'a pas bascule alors que le bilan indique 'reseau juge necessaire: OUI'. Suspecter un b + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit nocturne co + ↳ Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme est en autonomie (contacteur ouvert). La batt + → Verifier pourquoi le contacteur reste ouvert alors que le bilan indique 'reseau juge necessaire'. Suspecter un blocage p + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Deficit de 8.2 kWh + ↳ Le bilan exige le reseau pour couvrir la nuit et le matin, mais le systeme reste en autonomie (contacteur ouvert). La ba + → Verifier pourquoi le contacteur n'a pas bascule : conflit entre 'Battery / Grid Hysteresis Fix V1' et 'EVCS Surplus Cont + gravites : haute haute haute haute haute STABLE + +═══ 5-soir-deficit-ne-pas-demarrer + 03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W) + attendu : CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif + ✔ [aucune ] Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la + ✔ [aucune ] Deficit solaire (-444 W) avec reseau absent. La batterie decharge (-12.2 A) pour couvrir la + ✔ [aucune ] Deficit solaire (-444 W) et reseau absent. La batterie decharge (-12.2 A) pour couvrir la ma + ✔ [aucune ] Deficit solaire (-444 W) et reseau absent. La batterie decharge (-12.2 A) pour couvrir la ma + ✘ [moyenne] Batterie a 94 % (-12.2 A), deficit solaire de -444 W, reseau absent. Le bilan exige 99.7 % p + ↳ Le systeme est en deficit et isole du reseau alors que la marge de decharge ne permet pas d'atteindre le SOC requis (99. + → Verifier pourquoi le contacteur reseau reste ouvert alors que le bilan indique 'reseau juge necessaire : OUI'. L'absence + gravites : aucune aucune aucune aucune moyenne INSTABLE (2 valeurs) + gravite dans la fourchette aucune|faible : 4/5 + +═══ 6-censure-demarrer + 03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee + attendu : SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue + ✘ [haute ] Batterie pleine (94%), PV bridee (6/6), reseau absent. Bilan demande 100% SOC pour demain, m + ↳ Le bilan identifie un manque de stockage et requiert le reseau (4.9 kWh), mais le contacteur est ouvert. La production s + → Verifier pourquoi le contacteur reste ouvert alors que le bilan juge le reseau necessaire. Le controleur EVCS est a l'ar + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pou + ↳ Le systeme est en ileot (reseau coupe) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production sol + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? L + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee car aucun puits, reseau absent. Bilan demande 100 % pou + ↳ La production solaire est refusee (bridee) alors que le bilan identifie un manque de stockage et une necessite de reseau + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou les seuils fixes empechent-ils l'absorption du su + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Bilan demande 100 % pou + ↳ Le systeme est en 'batterie_pleine_sans_puits' : la production solaire est refusee car la batterie est pleine et le rese + → Verifier pourquoi le contacteur reseau n'a pas ferme pour charger la batterie ou la voiture (EVCS). La consigne de 700 W + ✔ [moyenne] Batterie a 94 % (plafond), PV bridees (6/6), reseau absent. Bilan demande 100 % pour demain, + ↳ Le systeme est en ileot (reseau ouvert) alors que le bilan identifie un besoin de 4.9 kWh du reseau et une production so + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il la fermeture ? L + gravites : haute moyenne moyenne moyenne moyenne INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne : 4/5 + +═══ 7-boost-evince-le-solaire + 11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W + attendu : SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne + ✔ [moyenne] Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) alors que l + ↳ La voiture consomme du courant EDF (8.2 kW) pendant que la production solaire est refusee et que la batterie est pleine, + → Verifier pourquoi l'EVCS Surplus Controller V2.6 maintient la charge sur le reseau au lieu de reduire le courant ou de b + ✘ [aucune ] Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan coherent : deficit so + ✔ [moyenne] Batterie a 96 % (plafond), PV bridee (121 W), voiture chargee au reseau (6.4 kW) pendant que + ↳ La production solaire est refusee (bridee) alors que la batterie est pleine et que le vehicule consomme du courant EDF, + → Verifier pourquoi l'EVCS ne bascule pas en surplus ou si la consigne de puissance reseau (8260 W) evite artificiellement + ✘ [aucune ] PV bridee (6/6) mais excedent negatif (-1134 W). La voiture consomme 6.4 kW, evitant le rese + ✘ [aucune ] Batterie a 96 % (plafond), PV bridee, voiture chargee au reseau. Bilan coherent : deficit so + gravites : moyenne aucune moyenne aucune aucune INSTABLE (2 valeurs) + gravite dans la fourchette moyenne|haute : 2/5 + +═══ 8-voiture-pleine-ne-pas-reessayer + 07/09 14:28 — borne annonce charge terminee, vehicule branche immobile + attendu : CALME : l etat collant fait son travail, aucune relance + ✔ [faible ] PV bridee (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond), + ↳ Ressource solaire refusee (bridee) sans preneur disponible (vehicule plein, batterie pleine). + → Verifier la logique du EVCS Surplus Controller V2.6 pour autoriser une charge de maintien ou un ecartement si le vehicul + ✘ [moyenne] Batterie a 97 % (plafond), PV bridee car aucun puits disponible, vehicule plein et inactif. + ↳ La production solaire est refusee (bridee) alors que le vehicule est branche mais ne charge pas. L'energie gratuite est + → Verifier pourquoi le controleur EVCS maintient la voiture a 0 A malgre l'excedent solaire (+149 W). Si le vehicule n'est + ✔ [faible ] Batterie a 97 % (plafond), PV bridees (6/6), reseau absent. Vehicule plein, aucun puits disp + ↳ Production solaire refusee (bridee) alors que le vehicule est branche mais plein et que la batterie est saturee. L'energ + → Verifier si le contacteur reseau peut se fermer pour absorber l'excedent ou si une strategie de charge EVCS doit etre ac + ✘ [moyenne] Batterie a 97 % (plafond), PV bridee car aucun puits disponible, vehicule plein et inactif. + ↳ La production solaire est refusee (bridee) alors que le vehicule est branche mais ne charge pas, et la batterie est satu + → Verifier pourquoi le controleur EVCS n'initie pas la charge du vehicule pour absorber l'excedent solaire gratuit. + ✔ [faible ] PV bride (6/6) avec excedent +149 W, vehicule plein et inactif. Batterie a 97 % (plafond), r + ↳ Ressource solaire refusee (bridee) sans puits disponible : la voiture est pleine et la batterie au max. L'energie est pe + → Verifier si le surplus controller permet de charger un autre appareil ou d'ajuster la consigne pour absorber les 2 kW br + gravites : faible moyenne faible moyenne faible INSTABLE (2 valeurs) + gravite dans la fourchette aucune|faible : 3/5 + +═══ 9-pointe-cuisson-proteger-le-parc + 05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A + attendu : SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A, reseau absent alors qu'il est disponible et jug + ↳ Le contacteur reseau reste ouvert (AC-IN absent) pendant que la batterie depasse 80 % de sa limite de decharge declaree, + → Verifier pourquoi le contacteur n'a pas ferme : probablement un ecrivain non-proprietaire (EVCS Surplus Controller ou sc [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), reseau absent, excedent solaire negatif (-4624 W). + ↳ Le parc est a 3 A de sa limite de decharge declaree alors que le reseau est disponible mais inutilise. + → Verifier pourquoi le contacteur reseau reste ouvert et si la consigne de puissance (700 W) ou un ecrivain externe bloque [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A, reseau absent alors qu'il est disponible et jug + ↳ Le contacteur reseau reste ouvert (AC-IN absent) pendant que la batterie depasse 80 % de sa limite de decharge declaree, + → Verifier pourquoi le contacteur n'a pas bascule : probablement un ecrivain non-proprietaire (EVCS Surplus Controller ou [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A, reseau absent alors qu'il est disponible et jug + ↳ Le contacteur reseau reste ouvert (AC-IN absent) pendant que la batterie depasse 80 % de sa limite de decharge declaree, + → Verifier pourquoi le contacteur n'a pas bascule : probablement un ecrivain non-proprietaire (EVCS Surplus Controller ou [nomme] + ✔ [haute ] Parc a -97,4 A (limite 100 A) avec reseau disponible mais contacteur ouvert. Deficit solaire + ↳ Le contacteur reste ouvert alors que le bilan juge le reseau necessaire et que la marge de decharge est critique (3 A). + → Verifier pourquoi Battery/Grid Hysteresis Fix V1 n'a pas ferme le contacteur pour proteger le parc. [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 10-nuage-sur-charge-28a + 11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W + attendu : SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ La strategie force_grid evince la production solaire gratuite pour charger la voiture et la batterie, creant un gaspilla + → Verifier pourquoi le controleur EVCS ne bascule pas en surplus quand l'excedent est positif et les chargeurs brident. [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ L'EVCS consomme le reseau pour la voiture et recharge la batterie pleine, evitant d'utiliser le surplus solaire gratuit + → Verifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que l'excedent est positif et que [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ L'EVCS Surplus Controller V2.6 force la charge sur le reseau (force_grid_now) et evince la production solaire gratuite p + → Verifier pourquoi le controleur ignore l'excedent solaire positif et la saturation de la batterie ; il devrait basculer [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee au reseau alors que l'excedent solair + ↳ La strategie force_grid evince la production solaire gratuite pour charger la voiture et la batterie, creant un gaspilla + → Verifier pourquoi le controleur EVCS ne bascule pas en surplus : la consigne de puissance reseau ou un verrou script blo [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), reseau force pour charger la voiture alors que l'excedent solaire + ↳ La strategie 'force_grid_now' consomme du reseau payant pour la voiture pendant que le surplus solaire est refuse ou sou + → Verifier pourquoi le controleur EVCS ne bascule pas en mode excedent solaire alors que les chargeurs PV sont a fond et q [ne nomme pas] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 0/5 + +═══ 11-batterie-pleine-midi [OUVERT] + 11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche + attendu : OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ? + [moyenne] Batterie a 98 % et chargeurs brides : l'excident solaire (+108 W) est perdu car le parc est + ↳ La production PV est bridee (6/6 chargeurs) alors que la batterie est pleine et qu'il n'y a pas de vehicule pour absorbe + → Verifier si la consigne de puissance reseau (700 W) ou les seuils SOC (95-100 %) empechent d'utiliser le reseau en heure + [moyenne] Batterie a 98 % (plafond), PV bridee car aucun puits disponible, reseau absent. Excedent sol + ↳ La production PV est refusee (bridee) alors que le reseau EDF est disponible mais non utilise pour absorber l'excedent o + → Verifier pourquoi le contacteur reseau reste ouvert alors que la consigne est a 700 W et que la batterie est pleine : le + [faible ] Batterie a 98 % avec production bridee (6/6 chargeurs), reseau absent. Excedent solaire negl + ↳ La production est refusee car la batterie est quasi pleine et le reseau decharge n'est pas autorise, mais l'excedent ree + → Verifier si la consigne de puissance reseau (700 W) permettrait d'absorber ce petit excedent pour eviter la perte, ou ac + [moyenne] Batterie a 98 % avec 6 chargeurs brides, reseau absent. Le bilan indique un besoin de 55 % p + ↳ La production solaire est refusee (bridee) alors que la batterie est quasi pleine et que le reseau est coupe. L'energie + → Verifier pourquoi le contacteur reste ouvert si le reseau est disponible (ou s'il est volontairement coupe). Si le resea + [faible ] Batterie a 98 % avec production bridee (6/6 chargeurs), reseau absent. Excedent solaire negl + ↳ La production est refusee car la batterie est quasi pleine et le reseau est deconnecte, mais aucun vehicule n'est branch + → Verifier si la deconnexion du reseau est intentionnelle ou un bug du contacteur (proprietaire Battery/Grid Hysteresis Fi + gravites : moyenne moyenne faible moyenne faible INSTABLE (2 valeurs) + +═══ 12-orage-annonce [OUVERT] + Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site + attendu : OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ? + [aucune ] Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie charge à 35 A v + [aucune ] Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers + [aucune ] Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A vers + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge + [aucune ] Système autonome (réseau coupé). PV 4.2 kW, maison 0.9 kW, excédent +3.3 kW. Batterie charge + gravites : aucune aucune aucune aucune aucune STABLE + +═══ 13-voiture-empruntee-echeance [OUVERT] + 11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present + attendu : OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ? + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme avec marge de r + ↳ La batterie est au plafond alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau pour + → Verifier si la limite de charge du parc ou la consigne manuelle 'force_charge_now' empeche l'absorption de l'excedent so + [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande 70 % pour demain, rese + ↳ La consigne de puissance reseau est fixee a 700 W, ce qui limite la recharge a 412 W et empeche d'atteindre le SOC prude + → Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan identifie un besoin de 1.4 kWh via le reseau + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utili + ↳ La batterie est au plafond alors que le bilan demande du reseau pour la nuit et que des chargeurs se brident : l'energie + → Verifier pourquoi la consigne de recharge reseau n'est pas augmentee pour absorber l'excedent ou si la limite de 100 A d + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utili + ↳ La batterie est au plafond et ne peut plus stocker l'excedent solaire (+3967 W) qui alimente la voiture. Le reseau reste + → Verifier que la consigne de puissance reseau (700 W) permet d'absorber le surplus si la voiture s'arrete, ou ajuster la + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme mais sous-utili + ↳ La batterie est saturee alors que le bilan indique un besoin de 5.2 kWh ce matin et que le reseau est disponible. L'ener + → Verifier pourquoi la consigne reseau est bloquee a 700 W et non elevee pour charger la batterie ou la voiture plus fort. + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + +═══ 4b-hiver-parc-12 [OUVERT] + HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000) + attendu : OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ? + [faible ] SOC 55% vs cible prudente 59%. Deficit nocturne de 2 kWh. Reseau absent, batterie alimente l + ↳ Le bilan indique un besoin de reseau (OUI) mais le contacteur est ouvert. La marge de 4 points de SOC est faible pour la + → Verifier pourquoi le contacteur n'a pas ferme pour couvrir le deficit nocturne identifie par le bilan. + [faible ] SOC 55% vs cible prudente 59%. Deficit nocturne de 2 kWh. Reseau absent, batterie alimente l + ↳ Le bilan indique que le reseau est necessaire (0 kWh) mais le contacteur est ouvert. La marge de 4 points de SOC est fai + → Verifier pourquoi le contacteur reste ouvert alors que le bilan juge le reseau necessaire. Surveiller la descente du SOC + [faible ] Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cibl + ↳ La cible SOC de 85% est irréalisable sans réseau (prévision 6.2 kWh < besoin pour monter à 85%). Le système fonctionne e + → Vérifier si le script 'auto_solar_plus' ajuste dynamiquement la cible SOC selon la disponibilité du réseau ou la prévisi + [faible ] SOC 55% vs besoin prudent 59%. Deficit nocturne de 2 kWh. Reseau absent, consigne 700W inopé + ↳ Ecart de 4 points entre SOC actuel et cible prudente du bilan pour la traversée nocturne. + → Vérifier si le contacteur réseau peut se fermer pour combler les 4% manquants avant minuit. + [faible ] Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cibl + ↳ La cible SOC de 85% est irréalisable demain (prévision 6.2 kWh < besoin ~9.4 kWh + marge), mais le système fonctionne co + → Vérifier si la consigne de 85% est figée dans un script ou l'EVCS alors que le bilan indique qu'elle est inaccessible sa + gravites : faible faible faible faible faible STABLE + +═══ 4c-hiver-parc-16 [OUVERT] + HIVER avec 16 equivalents (vieux modules repares) + attendu : OUVERT : et avec 16 equivalents ? + [aucune ] SOC 55 % > cible prudente 50 %. Réseau absent. Déficit -1400 W. Batterie décharge (-18 A). + [aucune ] Batterie 55 % (cible prudente 50 %), réseau coupé, déficit de -1400 W. Le bilan estime un be + [aucune ] SOC 55 % > cible prudente 50 %. Deficit -1400 W. Reseau absent. Voiture absente. Bilan coher + [aucune ] Batterie 55 % (cible prudente 50 %), réseau absent, déficit -1400 W. Bilan cohérent : autono + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) vs besoin prudent 50 %. Deficit -1400 W couvert par + gravites : aucune aucune aucune aucune aucune STABLE + +═══ 15-oscillation-contacteur + INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes + attendu : SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains + ✔ [haute ] Oscillation du contacteur EDF toutes les 1-2 min (6 bascules en 10 min) alors que le reseau + ↳ Le contacteur bascule repetitivement, ce qui coute 50-150 Wh par cycle et use le relais. Le bilan demande le reseau (1.1 + → Verifier quel ecrivain (EVCS Surplus Controller ou script) force la fermeture/ouverture du contacteur contre la consigne [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est present et + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement pe + → Identifier quel script ou controleur EVCS force la fermeture/ouverture du contacteur pendant la phase de charge. Verifie [nomme] + ✔ [haute ] Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) pendant heures creuses, alors que le b + ↳ Oscillation repetee du contacteur reseau : chaque bascule coute 50-150 Wh et use le relais. Le systeme ne maintient pas + → Identifier l'ecrivain fautif (EVCS Surplus Controller ou script) qui force la fermeture/ouverture malgre la consigne de [nomme] + ✔ [haute ] Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis pour co + ↳ Oscillation repetee du contacteur reseau, coutant 300 a 900 Wh et usant le relais, probablement due a un conflit entre B + → Identifier l'ecrivain non proprietaire qui force la bascule (probablement EVCS Surplus Controller V2.6 ou script) et sta [nomme] + ✔ [haute ] Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis par le + ↳ Oscillation repetee du contacteur reseau (6 cycles en 10 min) causant des transitoires inutiles et usure du relais, pend + → Verifier l'ecrivain 'EVCS Surplus Controller V2.6' ou un script qui force la fermeture/ouverture du contacteur contre la [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 16-systeme-calme + CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes + attendu : NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : deficit matinal couve + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, PV a 0 W. Le systeme est en attente du soleil + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bila + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bila + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bila + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 14-bilan-indisponible + ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE + attendu : SIGNALER en le disant : le bilan est degrade, donc prudence assumee + ✔ [moyenne] SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge. Bilan indisponible. + ↳ La batterie est au plancher de securite (20%) alors que le reseau est disponible et qu'il reste une petite marge de rech + → Verifier pourquoi la consigne reseau n'a pas permis de recharger la batterie au-dessus du plancher pendant les heures cr [nomme] + ✔ [moyenne] SOC 20% (plancher), réseau présent mais consigne 700W limite la recharge à 88W. Bilan indisp + ↳ La batterie est au plancher de sécurité (20%) alors que le réseau est disponible et qu'il reste de la marge sur la consi + → Vérifier pourquoi la consigne réseau est fixée à 700 W. Si l'objectif est de recharger via EDF, il faut augmenter cette [nomme] + ✔ [moyenne] SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge. Bilan indisponible. + ↳ La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une marge de recharge. + → Verifier pourquoi la consigne de puissance reseau (700 W) n'est pas augmentee ou si un ecrivain bloque la recharge. Le b [nomme] + ✔ [moyenne] Bilan indisponible. Batterie à 20% (plancher), réseau présent mais consigne 700W limite la r + ↳ La batterie est au plancher de sécurité (20%) alors que le réseau est disponible et qu'il reste des heures creuses (jusq + → Vérifier si la consigne de puissance réseau peut être augmentée temporairement ou si la consommation de fond de la maiso [nomme] + ✔ [moyenne] SOC 20% (plancher), bilan indisponible. Consigne reseau 700W laisse 88W de marge pour rechar + ↳ La consigne de puissance reseau (700 W) evite une recharge plus agressive pendant les heures creuses (01:24-07:24). La b + → Verifier pourquoi la consigne reseau n'est pas abaissée pour permettre une recharge plus rapide via EDF en heures creuse [nomme] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 5/5 + +──────────────────────────────────────────────────────────── +INCIDENTS : 36/40 gravites justes (8 cas) + 5/5 1-nuit-bloquee-sans-vehicule nomme 4/5 + 5/5 2-nuit-relachee-trop-tot nomme 0/5 + 4/5 6-censure-demarrer + 2/5 7-boost-evince-le-solaire + 5/5 9-pointe-cuisson-proteger-le-parc nomme 5/5 + 5/5 10-nuage-sur-charge-28a nomme 0/5 + 5/5 15-oscillation-contacteur nomme 5/5 + 5/5 14-bilan-indisponible nomme 5/5 +SYSTEME CALME : 17/20 (silence attendu) (4 cas) + 5/5 3-nuit-couverte-ne-rien-faire + 4/5 5-soir-deficit-ne-pas-demarrer + 3/5 8-voiture-pleine-ne-pas-reessayer + 5/5 16-systeme-calme +CAS OUVERTS : 6, non notes, a lire + +Journal complet : docs/mesures/campagne-conseiller-2026-09-13.json diff --git a/docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.json b/docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.json new file mode 100644 index 0000000..0b56bbb --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.json @@ -0,0 +1,1673 @@ +[ + { + "id": "1-nuit-bloquee-sans-vehicule", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 %", + "attendu": "SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "motsCles": [ + [ + "recharg", + "remonte", + "ne monte", + "stagne", + "plate", + "0 a", + "0a", + "immobile" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "3.4", + "balance_storage_shortfall_kwh": "6.77" + }, + "passages": [ + { + "constat": "SOC 20 % (plancher), reseau ferme, excedent -612 W. Bilan demande 59.1 % pour le matin. Manque de stockage critique.", + "gravite": "haute", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le bilan identifie un besoin de 3.4 kWh sur le reseau et une cible de 59.1 %. Le systeme ne charge pas la nuit (PV=0) et le contacteur reste ferme, empechant l'absorption du courant EDF necessaire pour traverser la nuit sans deficit matinal.", + "piste": "Verifier pourquoi le contacteur EDF reste FERME alors que le bilan indique 'reseau juge necessaire : OUI'. Suspect principal : Battery / Grid Hysteresis Fix V1 ou un script qui bloque la fermeture du contacteur en dessous d'un seuil de SOC (ex: 25%) mal calibre par rapport au plancher reel de 20%.", + "confidence": 0.95 + }, + { + "constat": "SOC 20 % (plancher), réseau fermé, déficit de 3.13 kWh à couvrir avant 9h. Le bilan exige le réseau mais il est coupé.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur EDF reste FERMÉ alors que le bilan indique 'réseau jugé nécessaire: OUI'. La batterie est au plancher de sécurité et ne peut pas couvrir la nuit sans recharge réseau.", + "piste": "Vérifier pourquoi le propriétaire du contacteur (Battery / Grid Hysteresis Fix V1) n'ouvre pas le contact pour charger la batterie. Un script ou l'EVCS Surplus Controller pourrait bloquer l'actionneur malgré l'absence de véhicule.", + "confidence": 0.95 + }, + { + "constat": "SOC 20% (plancher), reseau ferme, bilan demande 59.1% pour couvrir la nuit. Manque de stockage critique.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est au plancher de securite alors que le contacteur reste ferme et que le bilan requiert le reseau pour atteindre la cible matinale.", + "piste": "Verifier pourquoi le contacteur ne s'ouvre pas pour charger depuis EDF (blocage par un ecrivain non-proprietaire ou seuil incoherent).", + "confidence": 0.95 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, bilan demande 59.1 % pour couvrir la nuit. Manque de stockage critique.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reste ferme alors que le bilan indique un besoin de 3.4 kWh du reseau et une cible SOC de 59.1 %. La batterie est vide et ne peut pas traverser la nuit sans recharge.", + "piste": "Verifier pourquoi le 'Battery / Grid Hysteresis Fix V1' n'a pas ouvert le contacteur pour charger la batterie depuis EDF. Le systeme va echouer a atteindre la cible matinale.", + "confidence": 0.95 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, excedent -612 W. Bilan exige 59 % pour 09h. Manque de stockage critique.", + "gravite": "haute", + "ce_qui_cloche": "La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh sur le reseau avant 09h. Le systeme ne charge pas la nuit.", + "piste": "Verifier pourquoi le contacteur reste ferme ou si la consigne de 700 W bloque la charge nocturne. La marge de decharge est a 0 A : risque de coupure imminente.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "2-nuit-relachee-trop-tot", + "t": "2026-09-03T03:00:00+02:00", + "certain": true, + "titre": "03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30)", + "attendu": "SIGNALER : SOC 45 sous les 50,4 % requis alors que la session est marquee terminee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "sous", + "en dessous", + "inferieur", + "manque", + "deficit", + "45" + ] + ], + "s": { + "soc_percent": "45", + "battery_current_a": "2", + "house_ac_power_w": "700", + "grid_state": "on", + "acin1_available": "1", + "evcs_vehicle_connected": "on", + "evcs_surplus_state": "night_session_done_idle", + "evcs_source_mode": "Réseau HC autorisé", + "night_target_soc_actual": "50.4", + "tomorrow_kwh": "33.9", + "balance_required_soc": "50.4", + "balance_required_soc_prudent": "57", + "balance_energy_to_cover_kwh": "4.3", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1" + }, + "passages": [ + { + "constat": "Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4% pour 9h. Voiture branchée mais excédent solaire nul (-700W).", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, PV 0 W. Batterie 45 % (cible 50.4 %). Réseau fermé pour couvrir le déficit de 700 W. Voiture branchée mais non chargée.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 1 + }, + { + "constat": "Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4% pour 9h. Manque 1.1 kWh réseau. Voiture branchée mais excédent solaire nul.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC (50.4%) est supérieure au SOC actuel (45%). Le système ne charge pas la voiture car l'excédent est négatif (-700 W), ce qui est correct. L'écart de 5.4% se comblera par le réseau pendant les HC si le contacteur reste ouvert ou via la marge restante.", + "piste": "Vérifier que le contacteur EDF reste bien ouvert jusqu'à la fin des heures creuses (07:24) pour atteindre la cible de 50.4% avant le pic du matin. La voiture doit attendre un excédent solaire réel.", + "confidence": 0.9 + }, + { + "constat": "Nuit, PV 0 W. Batterie 45 % (cible 50.4 %). Réseau fermé pour couvrir le déficit de 700 W. Voiture branchée mais non chargée.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 1 + }, + { + "constat": "Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4% pour 9h. Manque 1.1 kWh réseau. Voiture branchée mais excédent solaire nul.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": false, + "k": true + }, + { + "g": false, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": false, + "k": true + }, + { + "g": false, + "k": true + } + ] + }, + { + "id": "3-nuit-couverte-ne-rien-faire", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis", + "attendu": "NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "70", + "battery_current_a": "-12", + "house_ac_power_w": "612", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "off" + }, + "passages": [ + { + "constat": "SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ouvert, aucun conflit d'écriture.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ouvert, PV nul.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ouvert, aucun conflit d'écriture.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, PV 0 W. Batterie 70 % (SOC cible 59.1 %). Consommation maison 612 W. Contacteur EDF ouvert. Aucun véhicule branché.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ouvert, PV nul.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "4-hiver-nuit-longue", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h", + "attendu": "OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "88", + "balance_required_soc_prudent": "97", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "5.1", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "8.2" + }, + "passages": [ + { + "constat": "Batterie a 55% (-18A), reseau ouvert. Bilan exige 88-97% pour demain matin (9.4 kWh). Manque de stockage identifie : 8.2 kWh.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme ne charge pas la batterie alors que le bilan indique un besoin critique de reseau (5.1 kWh) et une cible de 88%. La marge de decharge est saine, mais l'energie manque pour traverser la nuit sans payer le plein tarif.", + "piste": "Verifier pourquoi le contacteur reste ouvert ou si la consigne de puissance reseau (700 W) bride la recharge. Le bilan dit 'reseau necessaire', il faut autoriser la charge depuis EDF maintenant.", + "confidence": 0.95 + }, + { + "constat": "Batterie à 55% (décharge -18A) face à un besoin de 9.4 kWh pour le matin. Le bilan exige 88-97% SOC et l'appel réseau, mais le contacteur est ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le système refuse de charger la batterie depuis le réseau alors que le bilan identifie un manque critique de 8.2 kWh pour traverser la nuit et le matin. La stratégie 'auto_solar_plus' bloque l'importation nécessaire.", + "piste": "Vérifier pourquoi le contacteur reste ouvert malgré la consigne réseau du bilan. L'absence de véhicule ne doit pas empêcher la recharge nocturne si le SOC est insuffisant pour le pic du matin.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55% (-18A), reseau ouvert. Bilan exige 88-97% pour demain matin (9.4 kWh). Manque de stockage identifie : 8.2 kWh.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme ne charge pas la batterie alors que le bilan indique un besoin critique de reseau (5.1 kWh) et une cible de 88%. La marge de decharge est saine, mais l'energie manque pour traverser la nuit et le matin.", + "piste": "Verifier pourquoi le contacteur reste ouvert ou si la consigne de puissance reseau (700 W) bloque la charge. Le bilan dit 'reseau juge necessaire', il faut autoriser la charge depuis EDF maintenant.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Manque de 8.2 kWh identifie. Contacteur EDF ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau (5.1 kWh) pour atteindre la cible, mais le contacteur est ouvert et aucun evenement ne signale sa fermeture. La batterie va se vider sous le plancher ou forcer une bascule tardive.", + "piste": "Verifier pourquoi le contacteur n'a pas ferme alors que le bilan juge le reseau necessaire. Suspecter un conflit avec 'Battery / Grid Hysteresis Fix V1' ou un blocage par les seuils figes (SOC 55% > seuil de fermeture ?).", + "confidence": 0.95 + }, + { + "constat": "SOC 55% vs cible 88%. Manque 8.2 kWh. Réseau ouvert mais bilan exige 5.1 kWh. Consigne 700W limite la recharge.", + "gravite": "moyenne", + "ce_qui_cloche": "Le contacteur reste ouvert alors que le bilan identifie un besoin de réseau (5.1 kWh) pour atteindre le SOC requis avant le matin.", + "piste": "Vérifier pourquoi le Battery/Grid Hysteresis n'a pas fermé le contacteur malgré le déficit identifié par le bilan.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "5-soir-deficit-ne-pas-demarrer", + "t": "2026-09-03T19:44:00+02:00", + "certain": true, + "titre": "03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W)", + "attendu": "CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "-12.2", + "pv_power_w": "758", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "1202", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie a 94 % (marge decharge 12 %), PV 758 W, excedent solaire negatif (-444 W). Bilan demande 99.7 % pour demain matin.", + "gravite": "faible", + "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que le vehicule est branche et consomme 0 W. La strategie 'auto_solar_plus' ne charge pas la voiture car l'excedent est negatif, ce qui est correct, mais l'etat du controleur est incoherent avec la realite physique.", + "piste": "Verifier pourquoi le controleur EVCS Surplus Controller V2.6 detecte 'vehicle_not_connected' alors que la VW est presente. S'il s'agit d'un faux negatif, la logique de surplus pourrait etre bloque a tort si un excedent apparaissait soudainement.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 94 % (marge decharge 12 %), excedent solaire negatif (-444 W). Le bilan exige 99.7 % pour demain matin, mais le parc est proche de sa limite de charge.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme ne peut pas atteindre la cible SOC necessaire (99.7 %) sans violer la marge de securite du parc (80 % de la capacite declaree) ou en utilisant le reseau hors heures creuses, alors que l'excedent est negatif.", + "piste": "Verifier si la consigne de puissance reseau (700 W) permet une charge lente depuis le reseau pour combler le manque de stockage identifie (6.8 kWh), ou accepter un deficit matinal.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 94 % (marge parc 12 %) avec excedent solaire negatif (-444 W). Le bilan exige 99.7 % pour demain matin.", + "gravite": "faible", + "ce_qui_cloche": "Le systeme est coherent : la voiture n'est pas chargee car l'excedent est negatif, et le reseau est ouvert car la batterie est pleine. Aucun conflit detecte.", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (marge decharge 12 %), excedent solaire negatif (-444 W), contacteur EDF ouvert, voiture branchee mais non chargee.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan exige un SOC de ~100 % pour couvrir la nuit, mais la batterie est a 94 %. Le systeme ne charge pas la voiture ni la batterie car l'excedent est negatif, ce qui est coherent avec la regle 1. L'ouverture du contacteur alors que le reseau est juge necessaire (0 kWh) et que la marge est faible est un point de vigilance, mais sans evenement d'oscillation.", + "piste": "Verifier pourquoi le contacteur reste ouvert si le reseau est requis par le bilan, ou confirmer que la consigne de 700 W permet de maintenir l'equilibre sans bascule.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 94 % (marge decharge 12 %), PV brident, excedent solaire negatif (-444 W). Bilan exige 100 % pour demain matin.", + "gravite": "haute", + "ce_qui_cloche": "Le controleur affiche 'vehicle_not_connected' alors que le vehicule est branche. Il ignore l'excedent et la marge critique du parc (88 A restants sur 100 A).", + "piste": "Verifier pourquoi EVCS Surplus Controller V2.6 ne detecte pas le VW. La batterie est proche de sa limite de decharge : risque de saturation ou de coupure si la charge continue sans gestion.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "6-censure-demarrer", + "t": "2026-09-03T18:50:00+02:00", + "certain": true, + "titre": "03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee", + "attendu": "CALME : ressource refusee et provocation legitime, le systeme fait ce qu il faut", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "0", + "pv_power_w": "769", + "pv_power_10m_avg_w": "800", + "house_ac_power_w": "755", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "4.9", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie pleine (94%), PV bridés (6/6), excédent solaire nul. Le bilan exige 100% pour demain mais le parc est au plafond de charge.", + "gravite": "moyenne", + "ce_qui_cloche": "Le surplus solaire est refusé car la batterie est saturée et la voiture n'est pas chargée, alors que le réseau est requis pour couvrir le déficit nocturne.", + "piste": "Vérifier pourquoi l'EVCS ne consomme pas le surplus gratuit : le contrôleur indique 'vehicle_not_connected' malgré la présence du VW, ou la consigne de courant est bloquée à 0A par un script.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond parc), contacteur ouvert. Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que la voiture est branchee et que le bilan indique un besoin de reseau demain matin. L'excedent negatif empeche la charge gratuite du vehicule.", + "piste": "Verifier pourquoi l'EVCS Surplus Controller V2.6 ne passe en mode charge quand les chargeurs se brident. Le controleur affiche 'vehicle_not_connected' alors que le vehicule est detecte : incoherence d'etat ou bug de detection.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond decharge 0 A). Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee alors que la voiture est branchee. Le controleur ignore l'excedent negatif et le fait que la batterie ne peut plus absorber la puissance.", + "piste": "Verifier pourquoi EVCS Surplus Controller V2.6 ne bascule pas en mode charge vehicule pour absorber les 769 W PV, ou si la consigne de courant borne est bloquee a 0 A par un script.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond parc), contacteur ouvert. Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que la voiture est branchee et que le bilan indique un besoin de reseau demain matin. L'excedent negatif empeche la charge gratuite du vehicule.", + "piste": "Verifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode charge vehicule pour absorber les 700-800 W de PV bridle, ou si la consigne de puissance reseau (700 W) bloque l'injection vers la voiture.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond parc), contacteur ouvert. Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee alors que la voiture est branchee et que le bilan indique un besoin de reseau demain matin. L'excedent negatif empeche la charge gratuite du vehicule.", + "piste": "Verifier si l'EVCS Surplus Controller V2.6 autorise la charge sur excedent negatif ou s'il faut ajuster la consigne pour absorber la PV bridee avant qu'elle ne soit perdue.", + "confidence": 0.85 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "7-boost-evince-le-solaire", + "t": "2026-09-11T17:02:00+02:00", + "certain": true, + "titre": "11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W", + "attendu": "SIGNALER GRAVE : la consigne reseau evince le solaire (8260 W demandes, PV a 121 W)", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "evinc", + "remplac", + "etouff", + "substitu", + "prend la place", + "au lieu du solaire", + "bride" + ], + [ + "consigne", + "setpoint", + "8260", + "demande reseau" + ] + ], + "s": { + "soc_percent": "96", + "battery_current_a": "0", + "pv_power_w": "121", + "pv_power_10m_avg_w": "150", + "house_ac_power_w": "7695", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "8260", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "plafond_edf_on_a": "28", + "balance_pv_censored": "on", + "balance_censor_reason": "production_bridee", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "8.4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif (-1134W).", + "gravite": "moyenne", + "ce_qui_cloche": "La voiture consomme l'excedent solaire negligeable et force le reseau a compenser la maison, alors que la batterie est pleine.", + "piste": "Verifier si la strategie 'force_grid_now' du controleur EVCS est coherente avec un excedent negatif : la charge devrait etre reduite ou arretee pour eviter de payer le reseau au lieu d'utiliser le PV.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96% (plafond), PV bridee, voiture chargee. Bilan demande reseau pour couvrir le deficit nocturne.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est pleine et bloque la production solaire (bridee). Le bilan indique un besoin de reseau (1.4 kWh) mais le contacteur reste ferme, privant la maison de l'opportunite d'acheter au tarif bas ou de proteger le parc si necessaire.", + "piste": "Verifier pourquoi le controleur 'force_grid_now' n'a pas ouvert le contacteur alors que le bilan juge le reseau necessaire. Verifier les seuils SOC figes (95/100%) qui peuvent empecher la bascule.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif (-1134W).", + "gravite": "moyenne", + "ce_qui_cloche": "La voiture consomme l'excedent solaire negligeable et force le reseau (8260W) alors que la batterie est pleine. Le controleur 'force_grid_now' evince le peu de PV disponible.", + "piste": "Verifier si la strategie 'force_grid_now' est coherente avec un excedent negatif. La voiture devrait peut-etre reduire sa puissance pour laisser passer le PV ou attendre les heures creuses.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif (-1134W).", + "gravite": "moyenne", + "ce_qui_cloche": "La voiture consomme de l'energie qui force la batterie a se vider ou le reseau a compenser, alors que le bilan indique un besoin futur de 5.2 kWh et une production actuelle refusee.", + "piste": "Verifier si la strategie 'force_grid_now' est coherente avec la presence d'un excedent negatif : charger la voiture maintenant vide la reserve necessaire pour demain matin (cible 35%).", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif (-1134W).", + "gravite": "moyenne", + "ce_qui_cloche": "La voiture consomme l'excedent solaire negligeable et force le reseau (8260W) alors que la batterie est pleine. La production refusee n'est pas absorbee.", + "piste": "Verifier si la borne EVCS doit reduire son courant pour laisser passer le surplus PV ou si la strategie force_grid est coherente avec la saturation du parc.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": false, + "k": false + }, + { + "g": false, + "k": true + }, + { + "g": false, + "k": true + }, + { + "g": false, + "k": false + }, + { + "g": false, + "k": true + } + ] + }, + { + "id": "8-voiture-pleine-ne-pas-reessayer", + "t": "2026-09-07T14:28:00+02:00", + "certain": true, + "titre": "07/09 14:28 — borne annonce charge terminee, vehicule branche immobile", + "attendu": "CALME : l etat collant fait son travail, aucune relance", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "97", + "battery_current_a": "1", + "pv_power_w": "2114", + "pv_power_10m_avg_w": "2000", + "house_ac_power_w": "1965", + "evcs_vehicle_connected": "on", + "evcs_current_a": "0", + "vehicle_selected": "JEEP", + "evcs_surplus_state": "day_vehicle_full_idle", + "evcs_source_mode": "Bloqué", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "58", + "balance_required_soc_prudent": "66", + "balance_energy_to_cover_kwh": "4.6", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "12", + "tomorrow_kwh": "30" + }, + "passages": [ + { + "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97 % (plafond), contacteur ouvert. Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee car la batterie est pleine et la maison consomme tout le reste. L'excedent negatif empeche la charge EV gratuite, alors que la ressource existe.", + "piste": "Verifier si la consigne reseau de 700 W ou un seuil SOC trop haut bloque l'absorption. Considerer une charge EV sur surplus meme faible pour eviter la perte de PV.", + "confidence": 0.85 + }, + { + "constat": "PV bride (6/6) avec excédent positif de 149 W et véhicule branché. La ressource solaire refusée n'est pas absorbée par la Jeep.", + "gravite": "moyenne", + "ce_qui_cloche": "Le contrôleur 'day_vehicle_full_idle' ignore l'excédent solaire disponible pour charger le véhicule, laissant la production PV se brider inutilement.", + "piste": "Vérifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode charge véhicule malgré l'excédent mesuré et les chargeurs bridés.", + "confidence": 0.95 + }, + { + "constat": "PV bride (6/6) avec excedent positif de 149 W et vehicule branche. Batterie a 97 % (plafond), contacteur ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee alors que le vehicule est branche et que l'excedent est positif. Le controleur 'day_vehicle_full_idle' bloque la charge EVCS, gaspillant la ressource gratuite.", + "piste": "Verifier pourquoi le Surplus Controller V2.6 ne passe pas en mode charge vehicule malgre l'excedent et le blocage des PV. La strategie 'auto_solar_plus' devrait absorber cet excedent.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97 % (plafond), contacteur ouvert. Voiture branchee mais non chargee.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee (bridee) alors que la voiture est branchee et que le bilan indique un besoin de reseau ce soir. L'excedent negatif empeche la charge EV, mais la ressource existe et est gratuite.", + "piste": "Verifier pourquoi l'EVCS Surplus Controller V2.6 ne prend pas la surcharge PV pour la Jeep. Le controleur 'day_vehicle_full_idle' bloque peut-etre la charge malgre la presence d'un puits disponible (voiture).", + "confidence": 0.85 + }, + { + "constat": "PV bridee (6/6) avec excedent positif de 149 W et vehicule branche. Batterie a 97 % (plafond). Consigne reseau 700 W incoherente.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee alors que la voiture est branchee et que l'excedent est positif. La consigne de 700 W evite le recours au reseau mais ne permet pas d'absorber la ressource gratuite disponible.", + "piste": "Verifier pourquoi le Surplus Controller n'augmente pas le courant de la borne pour absorber les 2 kW de PV brides, ou si la limite du parc (100A) bloque la charge batterie.", + "confidence": 0.85 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "9-pointe-cuisson-proteger-le-parc", + "t": "2026-09-05T20:40:00+02:00", + "certain": true, + "titre": "05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A", + "attendu": "SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "limite", + "plafond", + "maximum", + "97", + "capacite", + "au bord", + "saturation" + ] + ], + "s": { + "soc_percent": "79", + "battery_current_a": "-97.4", + "pv_power_w": "320", + "pv_power_10m_avg_w": "500", + "house_ac_power_w": "4944", + "grid_state": "off", + "acin1_available": "0", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.1", + "balance_grid_needed": "on", + "tomorrow_kwh": "32" + }, + "passages": [ + { + "constat": "Batterie a 79 % (plafond 80 %) avec marge de decharge quasi nulle (3 A). Consigne reseau 700 W incoherente avec contacteur ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau est fixee a 700 W alors que le contacteur est ouvert. Si le systeme bascule sur le reseau, il ne pourra pas absorber la production ou la charge attendue sans depasser cette limite artificielle.", + "piste": "Verifier pourquoi la consigne reste a 700 W en mode 'vehicle_not_connected'. Elle devrait etre alignee sur la capacite d'absorption du parc ou mise a zero si le reseau est inutile pour l'instant.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 79% (plafond parc) avec decharge -97A. Excedent solaire negatif (-4624W). Bilan demande 5.1kWh pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au maximum de sa marge de decharge (3A restants) alors que le bilan identifie un manque de stockage de 6.8 kWh et une necessite de reseau. Le systeme ne peut pas stocker plus, mais la consigne reseau (700W) n'est pas activee pour compenser ce deficit structurel.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan indique 'reseau juge necessaire'. La limite du parc bloque la charge, mais le reseau devrait prendre le relais pour eviter le deficit nocturne.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 79% (marge parc 3A), decharge -97A. Excedent solaire negatif (-4624W). Bilan demande 5.1kWh pour demain matin.", + "gravite": "haute", + "ce_qui_cloche": "La batterie est a 97% de sa marge de decharge declaree (plafond 80%). La regle de protection du materiel s'applique : il faut appeler le reseau meme si le SOC parait confortable.", + "piste": "Verifier pourquoi la consigne reseau n'a pas force la fermeture du contacteur alors que la marge de parc est critique (3A restants). Le systeme doit charger via EDF pour proteger les cellules.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 79 % (plafond parc), decharge -97 A. Excedent solaire negatif (-4624 W). Bilan demande 62 % pour demain matin.", + "gravite": "haute", + "ce_qui_cloche": "La batterie est au plafond de charge du parc (marge 3A) alors que le bilan energetique indique un besoin de 5.1 kWh pour la nuit et une cible de 62 %. Le systeme ne peut pas stocker l'energie necessaire, ce qui forcera un achat reseau ou une coupure.", + "piste": "Verifier pourquoi la batterie est bloquee a 79 % (limite thermique ou BMS ?). Si c'est une limite dure, accepter l'achat reseau. Sinon, investiguer la cause du blocage premature.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 79 % (plafond parc), decharge -97 A. Excedent solaire negatif (-4624 W). Bilan demande 62 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est verrouillee au plafond du parc (97 % de la marge) et se vide sans recharger, alors que le bilan identifie un manque de stockage de 6.8 kWh pour la nuit. L'absence de recharge force l'usage du reseau EDF plus tard.", + "piste": "Verifier pourquoi la charge est bloquee a 0 A alors que le SOC n'est pas a 100 %. Le controleur 'Bloque' ou une limite de courant du parc empeche-t-il la recharge ? Si c'est volontaire pour proteger le parc, accepter le cout reseau ; sinon, debloquer la charge.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": false, + "k": true + }, + { + "g": false, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": false, + "k": true + } + ] + }, + { + "id": "10-nuage-sur-charge-28a", + "t": "2026-09-11T18:00:00+02:00", + "certain": true, + "titre": "11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W", + "attendu": "SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "nuage", + "marge", + "brutal", + "chute", + "passage", + "si le solaire" + ] + ], + "s": { + "soc_percent": "96", + "battery_current_a": "-0.7", + "pv_power_w": "6058", + "pv_power_10m_avg_w": "5500", + "house_ac_power_w": "6845", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "1281", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96% (plafond), PV 6 kW, voiture chargee a 28 A. Excedent solaire positif de 5.65 kW. Consigne reseau 1.28 kW.", + "gravite": "faible", + "ce_qui_cloche": "La consigne reseau de 1.28 kW est inutile car l'excedent solaire couvre largement la demande residuelle et la charge EV. Le systeme importe du courant alors que le surplus PV est disponible.", + "piste": "Verifier pourquoi la consigne n'est pas a 0 W ou si un ecrivain externe (EVCS) force une importation minimale mal geree.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96% (plafond), PV brident, voiture chargee au reseau (1281W) alors que l'excedent solaire est de 5.6 kW.", + "gravite": "moyenne", + "ce_qui_cloche": "Le controleur force le reseau pour la voiture (force_grid_now) et ignore l'excedent solaire disponible qui permettrait de charger gratuitement sans vider la batterie.", + "piste": "Verifier pourquoi EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que les chargeurs sont a fond et qu'il y a un excedent positif.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96% (plafond), PV 6kW, voiture chargee a 28A. Excedent solaire positif de 5.6kW. Consigne reseau 1.3kW.", + "gravite": "faible", + "ce_qui_cloche": "La consigne reseau de 1281 W est inutile car l'excedent solaire couvre largement la demande residuelle et la charge EV. Le systeme importe du courant alors que le soleil est disponible.", + "piste": "Verifier pourquoi la consigne n'est pas a 0 ou si un ecrivain externe force une importation minimale.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96% (plafond), PV brident, voiture chargee au reseau (1281W) alors que l'excedent solaire est de 5.6 kW.", + "gravite": "moyenne", + "ce_qui_cloche": "Le controleur force le reseau pour la voiture, evitant d'absorber l'excedent solaire gratuit et potentiellement inutile si la batterie est pleine.", + "piste": "Verifier pourquoi EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que la marge de charge est nulle mais que la production depasse largement la consommation maison.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96% (plafond), PV brident 0, voiture chargee a 28A. Consigne reseau 1281W coexiste avec excedent solaire de 5653W.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau laissee ouverte evince l'excedent solaire gratuit pour charger la batterie au lieu de la voiture ou d'absorber le surplus.", + "piste": "Verifier pourquoi la consigne n'est pas a 0W alors que les chargeurs ne se brident pas et qu'il y a un gros excedent disponible.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "11-batterie-pleine-midi", + "t": "2026-09-11T12:00:00+02:00", + "certain": false, + "titre": "11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche", + "attendu": "OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ?", + "graviteAttendue": null, + "s": { + "soc_percent": "98", + "battery_current_a": "2.2", + "pv_power_w": "810", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "702", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "55", + "balance_required_soc_prudent": "63", + "balance_energy_to_cover_kwh": "4.1", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "balance_next_deficit_kwh": "4.1", + "balance_next_deficit_window": "(ce soir 20 h -> 09 h)", + "today_remaining_kwh": "45", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), excedent solaire positif de 108 W sans vehicule pour l'absorber.", + "gravite": "faible", + "ce_qui_cloche": "La production est refusee car la batterie est pleine et aucun puits n'est disponible, mais le bilan indique que le reseau n'est pas necessaire pour l'instant.", + "piste": "Verifier si la consigne de puissance reseau (700 W) permettrait d'absorber cet excedent ou si c'est un comportement attendu en fin de matinnee avant la baisse du soleil.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de puits pour l'excedent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de puits pour l'energie refusee.", + "gravite": "faible", + "ce_qui_cloche": "", + "piste": "Verifier si la consigne reseau de 700 W est coherente avec le fait que le contacteur soit ferme, ou si c'est un etat transitoire apres fermeture.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), excedent solaire positif de 108 W sans vehicule pour l'absorber.", + "gravite": "faible", + "ce_qui_cloche": "La production est refusee car la batterie est pleine et il n'y a pas de puits (voiture). C'est une perte d'energie gratuite, mais sans impact sur le confort ou la securite.", + "piste": "Verifier si un branchement EV est possible pour absorber ce surplus, sinon c'est un comportement normal en fin de matinnee avec ciel nuageux/partiel.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert. Bilan coherent : pas de stockage possible.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "12-orage-annonce", + "t": "2026-09-12T15:30:00+02:00", + "certain": false, + "titre": "Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site", + "attendu": "OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "72", + "battery_current_a": "35", + "pv_power_w": "4200", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "900", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_storm_level": "Orange", + "balance_storm_reserve_soc": "88", + "balance_required_soc": "55", + "balance_required_soc_prudent": "62", + "balance_energy_to_cover_kwh": "3.2", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "18", + "tomorrow_kwh": "40" + }, + "passages": [ + { + "constat": "SOC 72 % vs cible prudente 62 %. Surcharge de 10 pts (970 Wh) par rapport au besoin du bilan. Orage Orange, reserve conseillee 88 % non atteinte.", + "gravite": "faible", + "ce_qui_cloche": "La batterie est plus chargee que necessaire pour la nuit et l'orage, mais sans impact negatif immediat sur le reseau ou le materiel.", + "piste": "Verifier si la consigne de charge PV peut etre legrement reduite pour eviter de saturer la batterie avant l'orage, ou laisser tel quel car la marge est faible.", + "confidence": 0.9 + }, + { + "constat": "Batterie en charge (35 A) avec excédent solaire de 3,3 kW. Contacteur EDF ouvert. Bilan cohérent : pas de réseau nécessaire.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie en charge (35 A) avec excédent solaire de 3.3 kW, contacteur ouvert, aucun véhicule branché.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "SOC 72 % vs cible prudente 62 %. Orage Orange (88 %). PV 4.2 kW non bridés. Réseau ouvert. Cohérent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "PV 4.2 kW, excedent 3.3 kW, batterie chargee a 72 % (35 A), contacteur ouvert, aucun vehicule branche.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "13-voiture-empruntee-echeance", + "t": "2026-09-11T17:00:00+02:00", + "certain": false, + "titre": "11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present", + "attendu": "OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ?", + "graviteAttendue": null, + "s": { + "soc_percent": "96", + "battery_current_a": "-10", + "pv_power_w": "4255", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "4888", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "20", + "vehicle_selected": "JEEP", + "user_strategy": "force_charge_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "700", + "evcs_source_mode": "Solaire", + "evcs_surplus_state": "charging_hold_manual_local", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "required_energy_kwh": "12", + "departure_time": "19:00", + "departure_priority_enabled": "on", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "6", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau ferme. Excedent solaire positif mais non exploite par le reseau.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau est fixee a 700 W alors que l'excedent solaire est de ~4 kW. Le systeme refuse d'absorber le surplus gratuit, ce qui force la production a se brider ou a charger la batterie au detriment du reseau.", + "piste": "Verifier pourquoi la consigne reste a 700 W avec un excedent positif. Si la batterie est pleine, augmenter la consigne permettrait d'utiliser le surplus pour la voiture sans couter d'energie EDF.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plafond et le reseau est ferme alors que la production est bridee : l'energie solaire est perdue car le stockage est sature et la voiture ne peut pas absorber plus.", + "piste": "Verifier si la limite de charge du parc (100 A) ou la consigne de puissance reseau (700 W) empechent d'utiliser l'excedent pour charger davantage la voiture ou ouvrir le reseau.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est pleine et le surplus solaire est refuse (bride). Le bilan indique un besoin de reseau (1.4 kWh) mais la consigne reste a 700 W, privant la maison de cette ressource gratuite ou economique.", + "piste": "Verifier pourquoi le contacteur EDF n'ouvre pas pour laisser entrer les 1.4 kWh requis par le bilan, ou si la consigne de 700 W bloque l'absorption du reseau necessaire.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee et le systeme ne peut pas stocker l'excedent solaire actuel. Le bilan indique un besoin de reseau (1.4 kWh) mais la consigne est a 700 W, ce qui limite l'absorption du reseau ou force une production perdue si la voiture n'absorbe pas tout.", + "piste": "Verifier que la consigne de puissance reseau permet bien d'acheter les 1.4 kWh identifies par le bilan sans evincer inutilement la production PV restante apres saturation batterie+voiture.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 96% (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est saturee et le controleur force la charge EV, evitant l'achat EDF necessaire au bilan (1.4 kWh).", + "piste": "Verifier si le Surplus Controller permet de basculer sur le reseau ou reduire la charge EV pour laisser la place aux heures creuses.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4b-hiver-parc-12", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000)", + "attendu": "OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "52", + "balance_required_soc_prudent": "59", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "12", + "bms_max_discharge_current_a": "300", + "bms_max_charge_current_a": "300" + }, + "passages": [ + { + "constat": "SOC 55 % vs cible prudente 59 %. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consigne réseau 700 W inopérante.", + "gravite": "faible", + "ce_qui_cloche": "Le bilan indique un besoin de 59 % (prudent) mais le SOC est à 55 %. Le contacteur reste ouvert alors que le réseau est jugé nécessaire pour combler ce déficit nocturne.", + "piste": "Vérifier pourquoi le Battery/Grid Hysteresis Fix V1 n'a pas fermé le contacteur pour charger les 400 Wh manquants avant l'extinction solaire complète.", + "confidence": 0.85 + }, + { + "constat": "SOC 55 % vs cible prudente 59 %. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consigne réseau 700 W inopérante.", + "gravite": "faible", + "ce_qui_cloche": "La batterie est sous le seuil prudent requis par le bilan (52-59 %) pour couvrir les 9.4 kWh jusqu'à 11h. Le contacteur reste ouvert alors que le réseau est jugé nécessaire.", + "piste": "Vérifier pourquoi le Battery/Gird Hysteresis Fix V1 n'a pas fermé le contacteur pour charger vers 59 % malgré le déficit identifié.", + "confidence": 0.85 + }, + { + "constat": "SOC 55 % vs cible prudente 59 %. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consigne réseau 700 W inopérante.", + "gravite": "faible", + "ce_qui_cloche": "La batterie est légèrement sous le seuil prudent requis par le bilan (52-59 %) pour couvrir les 9.4 kWh jusqu'à 11h. Le contacteur reste ouvert alors que le réseau est jugé nécessaire.", + "piste": "Vérifier pourquoi le contacteur n'a pas fermé pour charger les ~400 Wh manquants avant la nuit. La consigne de 700 W semble ignorée ou bloquée par un autre écrivain.", + "confidence": 0.85 + }, + { + "constat": "SOC 55% vs cible prudente 59%. Manque de 4% (1.2 kWh) pour la nuit. Réseau ouvert, PV nul. Consigne réseau 700W inopérante.", + "gravite": "faible", + "ce_qui_cloche": "La batterie est légèrement sous le seuil prudent requis par le bilan énergétique pour couvrir les 9.4 kWh jusqu'au matin sans appel réseau coûteux.", + "piste": "Vérifier si l'appel réseau programmé ou automatique a bien lieu avant minuit pour combler cet écart de 1.2 kWh, ou accepter un petit sursaut tarifaire au réveil.", + "confidence": 0.85 + }, + { + "constat": "SOC 55 % (cible prudente 59 %), décharge -18 A. Réseau ouvert, PV nul. Manque de 4 kWh pour la nuit.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est sous la cible prudente du bilan (52-59 %) et le réseau reste ouvert malgré un déficit nocturne identifié de 2 kWh.", + "piste": "Vérifier pourquoi le contacteur EDF n'a pas fermé pour charger les 4 kWh manquants avant minuit (coût heures pleines).", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4c-hiver-parc-16", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec 16 equivalents (vieux modules repares)", + "attendu": "OUVERT : et avec 16 equivalents ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "44", + "balance_required_soc_prudent": "50", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "off", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "16", + "bms_max_discharge_current_a": "400", + "bms_max_charge_current_a": "400" + }, + "passages": [ + { + "constat": "SOC 55% > cible prudente 50%. Batterie se decharge (-18A) pour couvrir la maison (1400W). Pas de PV. Contacteur ouvert.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "SOC 55 % (cible prudente 50 %), PV nul, contacteur ouvert. La batterie couvre la nuit sans appel reseau.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 1 + }, + { + "constat": "SOC 55 % > cible prudente 50 %. Batterie se decharge (-18 A) pour couvrir la maison (1400 W). Contacteur ouvert. Aucun vehicule.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "SOC 55% > cible prudente 50%. Batterie se decharge (-18A) pour couvrir la maison (1400W). Pas de PV. Contacteur ouvert.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "SOC 55% > cible prudente 50%. Batterie se decharge (-18A) pour couvrir la maison (1400W). Pas de PV. Contacteur ouvert.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "15-oscillation-contacteur", + "t": "2026-09-12T06:36:00+02:00", + "certain": true, + "titre": "INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes", + "attendu": "SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "oscill", + "bascul", + "va-et-vient", + "aller-retour", + "repet", + "six fois", + "6 fois", + "cycl" + ], + [ + "conflit", + "deux", + "ecriv", + "contradict", + "se battent", + "concurren", + "automatisation", + "hysteresis" + ] + ], + "s": { + "soc_percent": "35", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "1.56", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "06:35:06 Contacteur EDF : off -> on|06:34:02 Contacteur EDF : on -> off|06:30:49 Contacteur EDF : off -> on|06:29:44 Contacteur EDF : on -> off|06:26:31 Contacteur EDF : off -> on|06:25:27 Contacteur EDF : on -> off" + }, + "passages": [ + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que la production PV est nulle et la batterie se charge à 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation répétée du contacteur réseau. Chaque bascule coûte 50-150 Wh et use le relais. Le propriétaire est Battery/Grid Hysteresis Fix V1, mais l'instabilité suggère une interférence d'un autre écrivain (EVCS ou scripts) sur le verrou hystérésis.", + "piste": "Identifier quel script ou automate force la fermeture/ouverture du contacteur pendant cette phase de charge batterie sans PV. Vérifier les logs de l'EVCS Surplus Controller qui pourrait mal gérer l'état 'vehicle_not_connected' avec un excédent négatif.", + "confidence": 0.95 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que la batterie charge à 20 A et que le réseau est jugé nécessaire.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation répétée du contacteur : chaque bascule coûte 50-150 Wh et use le relais. Le propriétaire est Battery/Grid Hysteresis Fix V1, mais l'oscillation suggère une interaction avec un autre écrivain (EVCS ou scripts).", + "piste": "Vérifier les logs de l'EVCS Surplus Controller V2.6 et des scripts pour identifier qui force la bascule malgré l'hystérésis. Stabiliser la logique de commutation.", + "confidence": 0.95 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que la batterie charge à 20 A et que le bilan demande du réseau.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation répétée de l'actionneur principal, probablement causée par un écrivain non propriétaire (EVCS ou script) qui contredit la logique de hysteresis du Battery Manager.", + "piste": "Identifier quel script ou automate force la fermeture/ouverture du contacteur pendant la phase de charge batterie et désactiver cette source d'instabilité.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que la production PV est nulle et le bilan stable.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation rapide de l'actionneur 'Contacteur reseau' sans variation significative des entrées mesurées, causant une usure inutile du relais.", + "piste": "Identifier l'écrivain fautif parmi les scripts ou l'EVCS Surplus Controller qui défait l'action du propriétaire Battery/Grid Hysteresis Fix V1.", + "confidence": 0.95 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que la production PV est nulle et la batterie se charge à 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation répétée du contacteur réseau. Chaque bascule coûte 50-150 Wh et use le relais. Le propriétaire est Battery/Grid Hysteresis Fix V1, mais l'instabilité suggère une interférence d'un autre écrivain ou un seuil de hystérésis trop serré par rapport au bruit de mesure.", + "piste": "Vérifier si un script ou l'EVCS Surplus Controller ne force pas des états contradictoires sur le verrou hystérésis. Élargir la fenêtre de hystérésis pour stabiliser le contacteur pendant les phases de charge réseau sans PV.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "16-systeme-calme", + "t": "2026-09-12T07:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes", + "attendu": "NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "42", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "0.9", + "balance_grid_needed": "on", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "05:02:51 Contacteur EDF : off -> on|05:02:51 Reprise reseau nuit : off -> on" + }, + "passages": [ + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : 0.9 kWh a couvrir avant 09h, marge de decharge suffisante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV a 0 W. Bilan coherent : il manque 0.9 kWh pour tenir jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : 0.9 kWh a couvrir avant 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : 0.9 kWh a couvrir avant 09h, marge de decharge suffisante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 1 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : il manque 0.9 kWh pour tenir jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "14-bilan-indisponible", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE", + "attendu": "SIGNALER en le disant : le bilan est degrade, donc prudence assumee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "degrad", + "indisponible", + "sans bilan", + "pas de bilan", + "inconnu", + "unknown" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "35", + "tomorrow_kwh": "75.2", + "balance_status": "degrade", + "balance_required_soc": "unknown", + "balance_energy_to_cover_kwh": "unknown" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), bilan indisponible. Consigne reseau 700W evite la coupure mais bloque le chargement gratuit pendant les heures creuses.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau est fixee a 700 W alors que nous sommes en heures creuses (01:24-07:24). Cela empeche la batterie de se recharger au tarif reduit, la laissant au plancher de securite pour la nuit.", + "piste": "Verifier pourquoi la consigne reste a 700 W et non a 0 W (ou valeur max) durant les heures creuses. Le controleur 'Battery / Grid Hysteresis Fix V1' ou un script doit autoriser l'absorption maximale du reseau pour recharger la batterie avant le pic du matin.", + "confidence": 0.95 + }, + { + "constat": "SOC 20% (plancher), bilan indisponible. Consigne reseau 700W evite la coupure mais bloque le chargement gratuit pendant les heures creuses.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) est trop haute pour permettre a la batterie de se charger au maximum pendant les heures creuses (01:24-07:24). La marge de decharge est nulle, donc toute consommation supplementaire vient du reseau plein tarif ou empeche la recharge gratuite.", + "piste": "Verifier si l'automatisation 'Battery / Grid Hysteresis Fix V1' permet d'abaisser la consigne reseau a 0-50 W pendant les heures creuses pour maximiser la recharge batterie avant le pic du matin.", + "confidence": 0.85 + }, + { + "constat": "SOC 20% (plancher), bilan indisponible. Consigne reseau 700W ferme pendant heures creuses, evitant la charge gratuite.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau est fixee a 700 W alors que le contacteur est ferme et que nous sommes en heures creuses (01:24-07:24). Cela empeche la batterie de se recharger au tarif reduit pour atteindre la cible de 35 % avant le pic du matin.", + "piste": "Verifier pourquoi la consigne reste a 700 W au lieu d'etre relevee ou mise a zero pour autoriser la charge depuis le reseau EDF pendant les heures creuses.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher), bilan indisponible. Consigne reseau 700W active pendant heures creuses, evitant la charge gratuite.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) maintient le contacteur ferme et bloque la charge batterie depuis le reseau, alors que nous sommes en heures creuses (01:24-07:24). Le bilan est indisponible, mais la marge de decharge est a 0%, ce qui force l'usage du reseau au lieu d'une charge opportuniste gratuite.", + "piste": "Verifier pourquoi la consigne reste a 700 W au lieu de permettre la charge (ou si c'est un comportement attendu du 'Battery / Grid Hysteresis Fix V1'). Si le but est de charger la nuit, la consigne devrait autoriser plus de tirage sur le reseau pour remonter le SOC avant le matin.", + "confidence": 0.85 + }, + { + "constat": "SOC 20% (plancher), bilan indisponible. Consigne reseau 700W active pendant heures creuses, evitant la charge gratuite de la batterie.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) maintient le contacteur ferme et bloque la charge de la batterie alors que nous sommes en heures creuses (01:24-07:24). La marge de decharge est a 0%, ce qui force l'achat au tarif plein si la production solaire du matin ne suffit pas.", + "piste": "Verifier pourquoi la consigne n'est pas relachee pour permettre la charge depuis le reseau durant les heures creuses. Le bilan degrade empeche une optimisation fine, mais la logique 'grille' devrait prendre le relais.", + "confidence": 0.85 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + } +] \ No newline at end of file diff --git a/docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.log b/docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.log new file mode 100644 index 0000000..f51a00b --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-avant-correctifs.log @@ -0,0 +1,350 @@ + +═══ 1-nuit-bloquee-sans-vehicule + 12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 % + attendu : SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh + ✔ [haute ] SOC 20 % (plancher), reseau ferme, excedent -612 W. Bilan demande 59.1 % pour le matin. Manq + ↳ La batterie est au plancher de securite (20 %) alors que le bilan identifie un besoin de 3.4 kWh sur le reseau et une ci + → Verifier pourquoi le contacteur EDF reste FERME alors que le bilan indique 'reseau juge necessaire : OUI'. Suspect princ [ne nomme pas] + ✔ [haute ] SOC 20 % (plancher), réseau fermé, déficit de 3.13 kWh à couvrir avant 9h. Le bilan exige le + ↳ Le contacteur EDF reste FERMÉ alors que le bilan indique 'réseau jugé nécessaire: OUI'. La batterie est au plancher de s + → Vérifier pourquoi le propriétaire du contacteur (Battery / Grid Hysteresis Fix V1) n'ouvre pas le contact pour charger l [nomme] + ✔ [haute ] SOC 20% (plancher), reseau ferme, bilan demande 59.1% pour couvrir la nuit. Manque de stocka + ↳ Le systeme est au plancher de securite alors que le contacteur reste ferme et que le bilan requiert le reseau pour attei + → Verifier pourquoi le contacteur ne s'ouvre pas pour charger depuis EDF (blocage par un ecrivain non-proprietaire ou seui [ne nomme pas] + ✔ [haute ] SOC 20 % (plancher), reseau ferme, bilan demande 59.1 % pour couvrir la nuit. Manque de stoc + ↳ Le contacteur reste ferme alors que le bilan indique un besoin de 3.4 kWh du reseau et une cible SOC de 59.1 %. La batte + → Verifier pourquoi le 'Battery / Grid Hysteresis Fix V1' n'a pas ouvert le contacteur pour charger la batterie depuis EDF [nomme] + ✔ [haute ] SOC 20 % (plancher), reseau ferme, excedent -612 W. Bilan exige 59 % pour 09h. Manque de sto + ↳ La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh sur le reseau avant 09h. Le sy + → Verifier pourquoi le contacteur reste ferme ou si la consigne de 700 W bloque la charge nocturne. La marge de decharge e [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette moyenne|haute : 5/5 + a nomme la chose : 3/5 + +═══ 2-nuit-relachee-trop-tot + 03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30) + attendu : SIGNALER : SOC 45 sous les 50,4 % requis alors que la session est marquee terminee + ✘ [aucune ] Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4% pour 9h. Voiture branch + [nomme] + ✘ [aucune ] Nuit, PV 0 W. Batterie 45 % (cible 50.4 %). Réseau fermé pour couvrir le déficit de 700 W. V + [nomme] + ✔ [faible ] Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4% pour 9h. Manque 1.1 kWh + ↳ La cible SOC (50.4%) est supérieure au SOC actuel (45%). Le système ne charge pas la voiture car l'excédent est négatif + → Vérifier que le contacteur EDF reste bien ouvert jusqu'à la fin des heures creuses (07:24) pour atteindre la cible de 50 [nomme] + ✘ [aucune ] Nuit, PV 0 W. Batterie 45 % (cible 50.4 %). Réseau fermé pour couvrir le déficit de 700 W. V + [nomme] + ✘ [aucune ] Nuit, réseau fermé (HC), batterie 45% charge 2A. Bilan demande 50.4% pour 9h. Manque 1.1 kWh + [nomme] + gravites : aucune aucune faible aucune aucune INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne|haute : 1/5 + a nomme la chose : 5/5 + +═══ 3-nuit-couverte-ne-rien-faire + CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis + attendu : NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent + ✔ [aucune ] SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ou + ✔ [aucune ] SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ou + ✔ [aucune ] SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ou + ✔ [aucune ] Nuit, PV 0 W. Batterie 70 % (SOC cible 59.1 %). Consommation maison 612 W. Contacteur EDF ou + ✔ [aucune ] SOC 70 % > cible 59.1 %. Décharge -12 A cohérente avec bilan (3.13 kWh à couvrir). Réseau ou + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 4-hiver-nuit-longue [OUVERT] + HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h + attendu : OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ? + [moyenne] Batterie a 55% (-18A), reseau ouvert. Bilan exige 88-97% pour demain matin (9.4 kWh). Manque + ↳ Le systeme ne charge pas la batterie alors que le bilan indique un besoin critique de reseau (5.1 kWh) et une cible de 8 + → Verifier pourquoi le contacteur reste ouvert ou si la consigne de puissance reseau (700 W) bride la recharge. Le bilan d + [haute ] Batterie à 55% (décharge -18A) face à un besoin de 9.4 kWh pour le matin. Le bilan exige 88- + ↳ Le système refuse de charger la batterie depuis le réseau alors que le bilan identifie un manque critique de 8.2 kWh pou + → Vérifier pourquoi le contacteur reste ouvert malgré la consigne réseau du bilan. L'absence de véhicule ne doit pas empêc + [moyenne] Batterie a 55% (-18A), reseau ouvert. Bilan exige 88-97% pour demain matin (9.4 kWh). Manque + ↳ Le systeme ne charge pas la batterie alors que le bilan indique un besoin critique de reseau (5.1 kWh) et une cible de 8 + → Verifier pourquoi le contacteur reste ouvert ou si la consigne de puissance reseau (700 W) bloque la charge. Le bilan di + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Manque de 8.2 kWh i + ↳ Le bilan exige le reseau (5.1 kWh) pour atteindre la cible, mais le contacteur est ouvert et aucun evenement ne signale + → Verifier pourquoi le contacteur n'a pas ferme alors que le bilan juge le reseau necessaire. Suspecter un conflit avec 'B + [moyenne] SOC 55% vs cible 88%. Manque 8.2 kWh. Réseau ouvert mais bilan exige 5.1 kWh. Consigne 700W + ↳ Le contacteur reste ouvert alors que le bilan identifie un besoin de réseau (5.1 kWh) pour atteindre le SOC requis avant + → Vérifier pourquoi le Battery/Grid Hysteresis n'a pas fermé le contacteur malgré le déficit identifié par le bilan. + gravites : moyenne haute moyenne haute moyenne INSTABLE (2 valeurs) + +═══ 5-soir-deficit-ne-pas-demarrer + 03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W) + attendu : CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif + ✔ [faible ] Batterie a 94 % (marge decharge 12 %), PV 758 W, excedent solaire negatif (-444 W). Bilan de + ↳ Le controleur affiche 'vehicle_not_connected' alors que le vehicule est branche et consomme 0 W. La strategie 'auto_sola + → Verifier pourquoi le controleur EVCS Surplus Controller V2.6 detecte 'vehicle_not_connected' alors que la VW est present + ✘ [moyenne] Batterie a 94 % (marge decharge 12 %), excedent solaire negatif (-444 W). Le bilan exige 99. + ↳ Le systeme ne peut pas atteindre la cible SOC necessaire (99.7 %) sans violer la marge de securite du parc (80 % de la c + → Verifier si la consigne de puissance reseau (700 W) permet une charge lente depuis le reseau pour combler le manque de s + ✔ [faible ] Batterie a 94 % (marge parc 12 %) avec excedent solaire negatif (-444 W). Le bilan exige 99. + ↳ Le systeme est coherent : la voiture n'est pas chargee car l'excedent est negatif, et le reseau est ouvert car la batter + ✔ [faible ] Batterie a 94 % (marge decharge 12 %), excedent solaire negatif (-444 W), contacteur EDF ouv + ↳ Le bilan exige un SOC de ~100 % pour couvrir la nuit, mais la batterie est a 94 %. Le systeme ne charge pas la voiture n + → Verifier pourquoi le contacteur reste ouvert si le reseau est requis par le bilan, ou confirmer que la consigne de 700 W + ✘ [haute ] Batterie a 94 % (marge decharge 12 %), PV brident, excedent solaire negatif (-444 W). Bilan + ↳ Le controleur affiche 'vehicle_not_connected' alors que le vehicule est branche. Il ignore l'excedent et la marge critiq + → Verifier pourquoi EVCS Surplus Controller V2.6 ne detecte pas le VW. La batterie est proche de sa limite de decharge : r + gravites : faible moyenne faible faible haute INSTABLE (3 valeurs) + gravite dans la fourchette aucune|faible : 3/5 + +═══ 6-censure-demarrer + 03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee + attendu : CALME : ressource refusee et provocation legitime, le systeme fait ce qu il faut + ✘ [moyenne] Batterie pleine (94%), PV bridés (6/6), excédent solaire nul. Le bilan exige 100% pour demai + ↳ Le surplus solaire est refusé car la batterie est saturée et la voiture n'est pas chargée, alors que le réseau est requi + → Vérifier pourquoi l'EVCS ne consomme pas le surplus gratuit : le contrôleur indique 'vehicle_not_connected' malgré la pr + ✘ [moyenne] PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond parc), contacteur ou + ↳ La production solaire est refusee (bridee) alors que la voiture est branchee et que le bilan indique un besoin de reseau + → Verifier pourquoi l'EVCS Surplus Controller V2.6 ne passe en mode charge quand les chargeurs se brident. Le controleur a + ✘ [moyenne] PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond decharge 0 A). Voitu + ↳ La production solaire est refusee alors que la voiture est branchee. Le controleur ignore l'excedent negatif et le fait + → Verifier pourquoi EVCS Surplus Controller V2.6 ne bascule pas en mode charge vehicule pour absorber les 769 W PV, ou si + ✘ [moyenne] PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond parc), contacteur ou + ↳ La production solaire est refusee (bridee) alors que la voiture est branchee et que le bilan indique un besoin de reseau + → Verifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode charge vehicule pour absorber les 700-800 W de P + ✘ [moyenne] PV bridee (6/6) avec excedent negatif (-14 W). Batterie a 94 % (plafond parc), contacteur ou + ↳ La production solaire est refusee alors que la voiture est branchee et que le bilan indique un besoin de reseau demain m + → Verifier si l'EVCS Surplus Controller V2.6 autorise la charge sur excedent negatif ou s'il faut ajuster la consigne pour + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette aucune|faible : 0/5 + +═══ 7-boost-evince-le-solaire + 11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W + attendu : SIGNALER GRAVE : la consigne reseau evince le solaire (8260 W demandes, PV a 121 W) + ✘ [moyenne] Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif + ↳ La voiture consomme l'excedent solaire negligeable et force le reseau a compenser la maison, alors que la batterie est p + → Verifier si la strategie 'force_grid_now' du controleur EVCS est coherente avec un excedent negatif : la charge devrait [ne nomme pas] + ✘ [moyenne] Batterie a 96% (plafond), PV bridee, voiture chargee. Bilan demande reseau pour couvrir le d + ↳ La batterie est pleine et bloque la production solaire (bridee). Le bilan indique un besoin de reseau (1.4 kWh) mais le + → Verifier pourquoi le controleur 'force_grid_now' n'a pas ouvert le contacteur alors que le bilan juge le reseau necessai [nomme] + ✘ [moyenne] Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif + ↳ La voiture consomme l'excedent solaire negligeable et force le reseau (8260W) alors que la batterie est pleine. Le contr + → Verifier si la strategie 'force_grid_now' est coherente avec un excedent negatif. La voiture devrait peut-etre reduire s [nomme] + ✘ [moyenne] Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif + ↳ La voiture consomme de l'energie qui force la batterie a se vider ou le reseau a compenser, alors que le bilan indique u + → Verifier si la strategie 'force_grid_now' est coherente avec la presence d'un excedent negatif : charger la voiture main [ne nomme pas] + ✘ [moyenne] Batterie a 96% (plafond), PV bridee (121W), voiture chargee a 28A. Excedent solaire negatif + ↳ La voiture consomme l'excedent solaire negligeable et force le reseau (8260W) alors que la batterie est pleine. La produ + → Verifier si la borne EVCS doit reduire son courant pour laisser passer le surplus PV ou si la strategie force_grid est c [nomme] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette haute : 0/5 + a nomme la chose : 3/5 + +═══ 8-voiture-pleine-ne-pas-reessayer + 07/09 14:28 — borne annonce charge terminee, vehicule branche immobile + attendu : CALME : l etat collant fait son travail, aucune relance + ✘ [moyenne] PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97 % (plafond), contacteur ouvert + ↳ La production solaire est refusee car la batterie est pleine et la maison consomme tout le reste. L'excedent negatif emp + → Verifier si la consigne reseau de 700 W ou un seuil SOC trop haut bloque l'absorption. Considerer une charge EV sur surp + ✘ [moyenne] PV bride (6/6) avec excédent positif de 149 W et véhicule branché. La ressource solaire refu + ↳ Le contrôleur 'day_vehicle_full_idle' ignore l'excédent solaire disponible pour charger le véhicule, laissant la product + → Vérifier pourquoi l'EVCS Surplus Controller V2.6 ne bascule pas en mode charge véhicule malgré l'excédent mesuré et les + ✘ [moyenne] PV bride (6/6) avec excedent positif de 149 W et vehicule branche. Batterie a 97 % (plafond) + ↳ La production solaire est refusee alors que le vehicule est branche et que l'excedent est positif. Le controleur 'day_ve + → Verifier pourquoi le Surplus Controller V2.6 ne passe pas en mode charge vehicule malgre l'excedent et le blocage des PV + ✘ [moyenne] PV bridee (6/6) avec excedent negatif (-149 W). Batterie a 97 % (plafond), contacteur ouvert + ↳ La production solaire est refusee (bridee) alors que la voiture est branchee et que le bilan indique un besoin de reseau + → Verifier pourquoi l'EVCS Surplus Controller V2.6 ne prend pas la surcharge PV pour la Jeep. Le controleur 'day_vehicle_f + ✘ [moyenne] PV bridee (6/6) avec excedent positif de 149 W et vehicule branche. Batterie a 97 % (plafond + ↳ La production solaire est refusee alors que la voiture est branchee et que l'excedent est positif. La consigne de 700 W + → Verifier pourquoi le Surplus Controller n'augmente pas le courant de la borne pour absorber les 2 kW de PV brides, ou si + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette aucune|faible : 0/5 + +═══ 9-pointe-cuisson-proteger-le-parc + 05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A + attendu : SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert + ✘ [moyenne] Batterie a 79 % (plafond 80 %) avec marge de decharge quasi nulle (3 A). Consigne reseau 700 + ↳ La consigne de puissance reseau est fixee a 700 W alors que le contacteur est ouvert. Si le systeme bascule sur le resea + → Verifier pourquoi la consigne reste a 700 W en mode 'vehicle_not_connected'. Elle devrait etre alignee sur la capacite d [nomme] + ✘ [moyenne] Batterie a 79% (plafond parc) avec decharge -97A. Excedent solaire negatif (-4624W). Bilan d + ↳ La batterie est au maximum de sa marge de decharge (3A restants) alors que le bilan identifie un manque de stockage de 6 + → Verifier pourquoi le contacteur reste ouvert alors que le bilan indique 'reseau juge necessaire'. La limite du parc bloq [nomme] + ✔ [haute ] Batterie a 79% (marge parc 3A), decharge -97A. Excedent solaire negatif (-4624W). Bilan dema + ↳ La batterie est a 97% de sa marge de decharge declaree (plafond 80%). La regle de protection du materiel s'applique : il + → Verifier pourquoi la consigne reseau n'a pas force la fermeture du contacteur alors que la marge de parc est critique (3 [nomme] + ✔ [haute ] Batterie a 79 % (plafond parc), decharge -97 A. Excedent solaire negatif (-4624 W). Bilan de + ↳ La batterie est au plafond de charge du parc (marge 3A) alors que le bilan energetique indique un besoin de 5.1 kWh pour + → Verifier pourquoi la batterie est bloquee a 79 % (limite thermique ou BMS ?). Si c'est une limite dure, accepter l'achat [nomme] + ✘ [moyenne] Batterie a 79 % (plafond parc), decharge -97 A. Excedent solaire negatif (-4624 W). Bilan de + ↳ La batterie est verrouillee au plafond du parc (97 % de la marge) et se vide sans recharger, alors que le bilan identifi + → Verifier pourquoi la charge est bloquee a 0 A alors que le SOC n'est pas a 100 %. Le controleur 'Bloque' ou une limite d [nomme] + gravites : moyenne moyenne haute haute moyenne INSTABLE (2 valeurs) + gravite dans la fourchette haute : 2/5 + a nomme la chose : 5/5 + +═══ 10-nuage-sur-charge-28a + 11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W + attendu : SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie + ✔ [faible ] Batterie a 96% (plafond), PV 6 kW, voiture chargee a 28 A. Excedent solaire positif de 5.65 + ↳ La consigne reseau de 1.28 kW est inutile car l'excedent solaire couvre largement la demande residuelle et la charge EV. + → Verifier pourquoi la consigne n'est pas a 0 W ou si un ecrivain externe (EVCS) force une importation minimale mal geree. [ne nomme pas] + ✔ [moyenne] Batterie a 96% (plafond), PV brident, voiture chargee au reseau (1281W) alors que l'excedent + ↳ Le controleur force le reseau pour la voiture (force_grid_now) et ignore l'excedent solaire disponible qui permettrait d + → Verifier pourquoi EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que les chargeurs sont a fond et qu' [ne nomme pas] + ✔ [faible ] Batterie a 96% (plafond), PV 6kW, voiture chargee a 28A. Excedent solaire positif de 5.6kW. + ↳ La consigne reseau de 1281 W est inutile car l'excedent solaire couvre largement la demande residuelle et la charge EV. + → Verifier pourquoi la consigne n'est pas a 0 ou si un ecrivain externe force une importation minimale. [ne nomme pas] + ✔ [moyenne] Batterie a 96% (plafond), PV brident, voiture chargee au reseau (1281W) alors que l'excedent + ↳ Le controleur force le reseau pour la voiture, evitant d'absorber l'excedent solaire gratuit et potentiellement inutile + → Verifier pourquoi EVCS Surplus Controller V2.6 ne bascule pas en mode surplus alors que la marge de charge est nulle mai [nomme] + ✔ [moyenne] Batterie a 96% (plafond), PV brident 0, voiture chargee a 28A. Consigne reseau 1281W coexist + ↳ La consigne reseau laissee ouverte evince l'excedent solaire gratuit pour charger la batterie au lieu de la voiture ou d + → Verifier pourquoi la consigne n'est pas a 0W alors que les chargeurs ne se brident pas et qu'il y a un gros excedent dis [ne nomme pas] + gravites : faible moyenne faible moyenne moyenne INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 1/5 + +═══ 11-batterie-pleine-midi [OUVERT] + 11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche + attendu : OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ? + [faible ] Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), excedent solaire positif de 108 W sans + ↳ La production est refusee car la batterie est pleine et aucun puits n'est disponible, mais le bilan indique que le resea + → Verifier si la consigne de puissance reseau (700 W) permettrait d'absorber cet excedent ou si c'est un comportement atte + [aucune ] PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert + [faible ] PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert + → Verifier si la consigne reseau de 700 W est coherente avec le fait que le contacteur soit ferme, ou si c'est un etat tra + [faible ] Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), excedent solaire positif de 108 W sans + ↳ La production est refusee car la batterie est pleine et il n'y a pas de puits (voiture). C'est une perte d'energie gratu + → Verifier si un branchement EV est possible pour absorber ce surplus, sinon c'est un comportement normal en fin de matinn + [aucune ] PV bridee (6/6) avec excedent negatif (-108 W). Batterie a 98 % (plafond), contacteur ouvert + gravites : faible aucune faible faible aucune INSTABLE (2 valeurs) + +═══ 12-orage-annonce [OUVERT] + Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site + attendu : OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ? + [faible ] SOC 72 % vs cible prudente 62 %. Surcharge de 10 pts (970 Wh) par rapport au besoin du bilan + ↳ La batterie est plus chargee que necessaire pour la nuit et l'orage, mais sans impact negatif immediat sur le reseau ou + → Verifier si la consigne de charge PV peut etre legrement reduite pour eviter de saturer la batterie avant l'orage, ou la + [aucune ] Batterie en charge (35 A) avec excédent solaire de 3,3 kW. Contacteur EDF ouvert. Bilan cohé + [aucune ] Batterie en charge (35 A) avec excédent solaire de 3.3 kW, contacteur ouvert, aucun véhicule + [aucune ] SOC 72 % vs cible prudente 62 %. Orage Orange (88 %). PV 4.2 kW non bridés. Réseau ouvert. C + [aucune ] PV 4.2 kW, excedent 3.3 kW, batterie chargee a 72 % (35 A), contacteur ouvert, aucun vehicul + gravites : faible aucune aucune aucune aucune INSTABLE (2 valeurs) + +═══ 13-voiture-empruntee-echeance [OUVERT] + 11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present + attendu : OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ? + [moyenne] Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau ferme. Excedent solai + ↳ La consigne de puissance reseau est fixee a 700 W alors que l'excedent solaire est de ~4 kW. Le systeme refuse d'absorbe + → Verifier pourquoi la consigne reste a 700 W avec un excedent positif. Si la batterie est pleine, augmenter la consigne p + [moyenne] Batterie a 96 % (plafond), PV brident, voiture consomme 4.6 kW, reseau ferme. + ↳ La batterie est au plafond et le reseau est ferme alors que la production est bridee : l'energie solaire est perdue car + → Verifier si la limite de charge du parc (100 A) ou la consigne de puissance reseau (700 W) empechent d'utiliser l'excede + [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain mat + ↳ La batterie est pleine et le surplus solaire est refuse (bride). Le bilan indique un besoin de reseau (1.4 kWh) mais la + → Verifier pourquoi le contacteur EDF n'ouvre pas pour laisser entrer les 1.4 kWh requis par le bilan, ou si la consigne d + [moyenne] Batterie a 96 % (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain mat + ↳ La batterie est saturee et le systeme ne peut pas stocker l'excedent solaire actuel. Le bilan indique un besoin de resea + → Verifier que la consigne de puissance reseau permet bien d'acheter les 1.4 kWh identifies par le bilan sans evincer inut + [moyenne] Batterie a 96% (plafond), PV brident, voiture chargee. Bilan demande reseau pour demain mati + ↳ La batterie est saturee et le controleur force la charge EV, evitant l'achat EDF necessaire au bilan (1.4 kWh). + → Verifier si le Surplus Controller permet de basculer sur le reseau ou reduire la charge EV pour laisser la place aux heu + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + +═══ 4b-hiver-parc-12 [OUVERT] + HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000) + attendu : OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ? + [faible ] SOC 55 % vs cible prudente 59 %. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consi + ↳ Le bilan indique un besoin de 59 % (prudent) mais le SOC est à 55 %. Le contacteur reste ouvert alors que le réseau est + → Vérifier pourquoi le Battery/Grid Hysteresis Fix V1 n'a pas fermé le contacteur pour charger les 400 Wh manquants avant + [faible ] SOC 55 % vs cible prudente 59 %. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consi + ↳ La batterie est sous le seuil prudent requis par le bilan (52-59 %) pour couvrir les 9.4 kWh jusqu'à 11h. Le contacteur + → Vérifier pourquoi le Battery/Gird Hysteresis Fix V1 n'a pas fermé le contacteur pour charger vers 59 % malgré le déficit + [faible ] SOC 55 % vs cible prudente 59 %. Manque de 400 Wh pour la nuit. Réseau ouvert, PV nul. Consi + ↳ La batterie est légèrement sous le seuil prudent requis par le bilan (52-59 %) pour couvrir les 9.4 kWh jusqu'à 11h. Le + → Vérifier pourquoi le contacteur n'a pas fermé pour charger les ~400 Wh manquants avant la nuit. La consigne de 700 W sem + [faible ] SOC 55% vs cible prudente 59%. Manque de 4% (1.2 kWh) pour la nuit. Réseau ouvert, PV nul. C + ↳ La batterie est légèrement sous le seuil prudent requis par le bilan énergétique pour couvrir les 9.4 kWh jusqu'au matin + → Vérifier si l'appel réseau programmé ou automatique a bien lieu avant minuit pour combler cet écart de 1.2 kWh, ou accep + [moyenne] SOC 55 % (cible prudente 59 %), décharge -18 A. Réseau ouvert, PV nul. Manque de 4 kWh pour + ↳ La batterie est sous la cible prudente du bilan (52-59 %) et le réseau reste ouvert malgré un déficit nocturne identifié + → Vérifier pourquoi le contacteur EDF n'a pas fermé pour charger les 4 kWh manquants avant minuit (coût heures pleines). + gravites : faible faible faible faible moyenne INSTABLE (2 valeurs) + +═══ 4c-hiver-parc-16 [OUVERT] + HIVER avec 16 equivalents (vieux modules repares) + attendu : OUVERT : et avec 16 equivalents ? + [aucune ] SOC 55% > cible prudente 50%. Batterie se decharge (-18A) pour couvrir la maison (1400W). Pa + [aucune ] SOC 55 % (cible prudente 50 %), PV nul, contacteur ouvert. La batterie couvre la nuit sans a + [aucune ] SOC 55 % > cible prudente 50 %. Batterie se decharge (-18 A) pour couvrir la maison (1400 W) + [aucune ] SOC 55% > cible prudente 50%. Batterie se decharge (-18A) pour couvrir la maison (1400W). Pa + [aucune ] SOC 55% > cible prudente 50%. Batterie se decharge (-18A) pour couvrir la maison (1400W). Pa + gravites : aucune aucune aucune aucune aucune STABLE + +═══ 15-oscillation-contacteur + INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes + attendu : SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que la production PV est + ↳ Oscillation répétée du contacteur réseau. Chaque bascule coûte 50-150 Wh et use le relais. Le propriétaire est Battery/G + → Identifier quel script ou automate force la fermeture/ouverture du contacteur pendant cette phase de charge batterie san [nomme] + ✔ [haute ] Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que la batterie charge à 20 A et + ↳ Oscillation répétée du contacteur : chaque bascule coûte 50-150 Wh et use le relais. Le propriétaire est Battery/Grid Hy + → Vérifier les logs de l'EVCS Surplus Controller V2.6 et des scripts pour identifier qui force la bascule malgré l'hystéré [nomme] + ✔ [haute ] Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que la batterie charge à 20 A et + ↳ Oscillation répétée de l'actionneur principal, probablement causée par un écrivain non propriétaire (EVCS ou script) qui + → Identifier quel script ou automate force la fermeture/ouverture du contacteur pendant la phase de charge batterie et dés [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que la production PV est + ↳ Oscillation rapide de l'actionneur 'Contacteur reseau' sans variation significative des entrées mesurées, causant une us + → Identifier l'écrivain fautif parmi les scripts ou l'EVCS Surplus Controller qui défait l'action du propriétaire Battery/ [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que la production PV est + ↳ Oscillation répétée du contacteur réseau. Chaque bascule coûte 50-150 Wh et use le relais. Le propriétaire est Battery/G + → Vérifier si un script ou l'EVCS Surplus Controller ne force pas des états contradictoires sur le verrou hystérésis. Élar [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 16-systeme-calme + CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes + attendu : NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : 0.9 kWh a couvrir avan + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, PV a 0 W. Bilan coherent : il manque 0.9 kWh p + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, PV nul. Bilan coherent : 0.9 kWh a couvrir ava + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : 0.9 kWh a couvrir avan + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : il manque 0.9 kWh pour + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 14-bilan-indisponible + ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE + attendu : SIGNALER en le disant : le bilan est degrade, donc prudence assumee + ✔ [moyenne] SOC 20% (plancher), bilan indisponible. Consigne reseau 700W evite la coupure mais bloque le + ↳ La consigne de puissance reseau est fixee a 700 W alors que nous sommes en heures creuses (01:24-07:24). Cela empeche la + → Verifier pourquoi la consigne reste a 700 W et non a 0 W (ou valeur max) durant les heures creuses. Le controleur 'Batte [nomme] + ✔ [moyenne] SOC 20% (plancher), bilan indisponible. Consigne reseau 700W evite la coupure mais bloque le + ↳ La consigne de puissance reseau (700 W) est trop haute pour permettre a la batterie de se charger au maximum pendant les + → Verifier si l'automatisation 'Battery / Grid Hysteresis Fix V1' permet d'abaisser la consigne reseau a 0-50 W pendant le [nomme] + ✔ [moyenne] SOC 20% (plancher), bilan indisponible. Consigne reseau 700W ferme pendant heures creuses, e + ↳ La consigne de puissance reseau est fixee a 700 W alors que le contacteur est ferme et que nous sommes en heures creuses + → Verifier pourquoi la consigne reste a 700 W au lieu d'etre relevee ou mise a zero pour autoriser la charge depuis le res [nomme] + ✔ [moyenne] SOC 20% (plancher), bilan indisponible. Consigne reseau 700W active pendant heures creuses, + ↳ La consigne de puissance reseau (700 W) maintient le contacteur ferme et bloque la charge batterie depuis le reseau, alo + → Verifier pourquoi la consigne reste a 700 W au lieu de permettre la charge (ou si c'est un comportement attendu du 'Batt [nomme] + ✔ [moyenne] SOC 20% (plancher), bilan indisponible. Consigne reseau 700W active pendant heures creuses, + ↳ La consigne de puissance reseau (700 W) maintient le contacteur ferme et bloque la charge de la batterie alors que nous + → Verifier pourquoi la consigne n'est pas relachee pour permettre la charge depuis le reseau durant les heures creuses. Le [nomme] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 5/5 + +──────────────────────────────────────────────────────────── +INCIDENTS : 23/35 gravites justes (7 cas) + 5/5 1-nuit-bloquee-sans-vehicule nomme 3/5 + 1/5 2-nuit-relachee-trop-tot nomme 5/5 + 0/5 7-boost-evince-le-solaire nomme 3/5 + 2/5 9-pointe-cuisson-proteger-le-parc nomme 5/5 + 5/5 10-nuage-sur-charge-28a nomme 1/5 + 5/5 15-oscillation-contacteur nomme 5/5 + 5/5 14-bilan-indisponible nomme 5/5 +SYSTEME CALME : 13/25 (silence attendu) (5 cas) + 5/5 3-nuit-couverte-ne-rien-faire + 3/5 5-soir-deficit-ne-pas-demarrer + 0/5 6-censure-demarrer + 0/5 8-voiture-pleine-ne-pas-reessayer + 5/5 16-systeme-calme +CAS OUVERTS : 6, non notes, a lire + +Journal complet : docs/mesures/campagne-conseiller-2026-09-13.json diff --git a/docs/mesures/campagne-conseiller-2026-09-13-finale.json b/docs/mesures/campagne-conseiller-2026-09-13-finale.json new file mode 100644 index 0000000..5ec438e --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-finale.json @@ -0,0 +1,1662 @@ +[ + { + "id": "1-nuit-bloquee-sans-vehicule", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 %", + "attendu": "SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "motsCles": [ + [ + "recharg", + "remonte", + "ne monte", + "stagne", + "plate", + "0 a", + "0a", + "immobile" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "3.4", + "balance_storage_shortfall_kwh": "6.77" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge pour recharge. Bilan demande 59.1% SOC pour le matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh via le reseau pour atteindre la cible du matin. La marge de recharge residuelle (88 W) est insuffisante pour combler ce deficit avant l'aube.", + "piste": "Verifier si la consigne de puissance reseau (700 W) peut etre temporairement relevee ou si le contacteur doit basculer en mode charge prioritaire pendant les heures creuses (01:24-07:24) pour eviter de payer le plein tarif a 09h.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kWh requis pour le matin.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est au plancher de securite avec un deficit nocturne prevu. Le reseau est disponible mais la marge de recharge n'est que de 88 W, insuffisante pour atteindre la cible de 59.1 % avant l'aube.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande du reseau. Laisser le contacteur ouvert et augmenter la consigne si possible pour recharger via EDF avant 07:24.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 20 % (plancher), reseau ferme, consigne 700 W. La marge de recharge est negligeable (88 W) pour atteindre la cible de 59 % avant 09h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evite le deficit mais ne permet pas de recharger la batterie au rythme necessaire par le bilan energetique.", + "piste": "Verifier si la consigne reseau peut etre augmentee temporairement ou si le systeme doit accepter un achat supplementaire pour combler les 3.13 kWh requis.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 20 % (plancher) avec reseau ferme. Consigne 700 W limite la recharge a 88 W, insuffisante pour atteindre le SOC cible de 59 % avant 09h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evite l'absorption du surplus solaire et bride la recharge nocturne, empechant la batterie de couvrir le deficit de 3.13 kWh identifie par le bilan.", + "piste": "Verifier si la consigne de 700 W est une valeur figee ou un resultat d'hysteresis. Il faudrait augmenter cette consigne pour permettre a la batterie de se recharger via le reseau pendant les heures creuses actuelles.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 20 % (plancher), reseau ferme, consigne 700 W. La maison est alimentee par le reseau et la batterie ne se recharge pas.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evince la recharge de la batterie alors que le bilan indique un besoin de 3.4 kWh du reseau pour atteindre le SOC cible de 59.1 % avant 09h. Le systeme laisse la batterie au plancher pendant les heures creuses/crepuscule.", + "piste": "Verifier pourquoi la consigne reste bloquee a 700 W et empeche la recharge nocturne. Le contacteur doit permettre d'absorber plus de puissance du reseau pour recharger la batterie avant l'aube.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "2-nuit-relachee-trop-tot", + "t": "2026-09-03T03:00:00+02:00", + "certain": true, + "titre": "03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30)", + "attendu": "SIGNALER : SOC sous le requis alors que la session est marquee terminee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "sous", + "en dessous", + "inferieur", + "manque", + "deficit", + "insuffisant" + ], + [ + "terminee", + "done", + "fini", + "relach", + "session" + ] + ], + "s": { + "soc_percent": "45", + "battery_current_a": "2", + "house_ac_power_w": "700", + "grid_state": "on", + "acin1_available": "1", + "evcs_vehicle_connected": "on", + "evcs_surplus_state": "night_session_done_idle", + "evcs_source_mode": "Réseau HC autorisé", + "night_target_soc_actual": "50.4", + "tomorrow_kwh": "33.9", + "balance_required_soc": "50.4", + "balance_required_soc_prudent": "57", + "balance_energy_to_cover_kwh": "4.3", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1" + }, + "passages": [ + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (consommation maison), laissant un excédent nul. La batterie ne peut donc pas se recharger sur le réseau malgré le déficit identifié par le bilan.", + "piste": "Vérifier pourquoi l'automatisation ou le script n'a pas augmenté la consigne de puissance réseau pour permettre la recharge nocturne (HC) nécessaire au bilan.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que le bilan identifie un besoin de 1.1 kWh via le réseau.", + "piste": "Vérifier pourquoi la consigne réseau n'est pas augmentée pour couvrir le déficit identifié par le bilan (recharge nocturne).", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et que le bilan identifie un besoin de recharge de 1.1 kWh.", + "piste": "Vérifier pourquoi le contrôleur n'a pas chargé via le réseau pendant les heures creuses ou si la consigne de puissance réseau a été mal ajustée pour permettre cette recharge nocturne.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que le bilan identifie un besoin de 1.1 kWh via le réseau.", + "piste": "Vérifier pourquoi la consigne réseau n'est pas augmentée pour couvrir le déficit identifié par le bilan (1.1 kWh) malgré la présence du contacteur et l'autorisation HC.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et que le bilan identifie un besoin de recharge de 1.1 kWh.", + "piste": "Vérifier pourquoi le contrôleur n'a pas chargé via le réseau pendant les heures creuses ou si la consigne de puissance réseau a été limitée à tort.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "3-nuit-couverte-ne-rien-faire", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis", + "attendu": "NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "70", + "battery_current_a": "-12", + "house_ac_power_w": "612", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "off" + }, + "passages": [ + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau absent. Consigne réseau 700W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau absent. Consigne réseau 700W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "4-hiver-nuit-longue", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h", + "attendu": "OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "88", + "balance_required_soc_prudent": "97", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "5.1", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "8.2" + }, + "passages": [ + { + "constat": "Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88-97 % et le réseau, mais le contacteur est ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le système refuse de charger sur le réseau malgré un déficit critique identifié par le bilan. La cible matinale de 85 % est inatteignable sans réseau, condamnant la maison à manquer d'énergie au petit-déjeuner.", + "piste": "Vérifier pourquoi le contacteur reste ouvert alors que le bilan indique 'réseau nécessaire'. Suspecter un conflit entre l'automate EVCS Surplus Controller V2.6 ou un script qui verrouille l'hystérésis contre la logique du bilan.", + "confidence": 0.95 + }, + { + "constat": "Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88-97 % et le réseau, mais ce dernier est coupé.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur réseau est ouvert alors que le bilan identifie un manque de 5.1 kWh nécessitant l'EDF pour éviter la panne nocturne. La batterie ne peut pas couvrir seule le déficit.", + "piste": "Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan. Si c'est volontaire (mode off-grid), il faut réduire drastiquement la consommation ou accepter la coupure avant 11h.", + "confidence": 0.95 + }, + { + "constat": "Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (insuffisant vs cible 88%). Reseau absent, batterie decharge (-18A).", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est en ile a baton avec un deficit majeur. Le reseau est juge necessaire mais le contacteur reste ouvert. La marge de securite est erodee.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas ferme pour charger la batterie (regle hysteresis ou EVCS bloque ?). Risque d'atteinte du plancher 22% avant l'aube.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Reseau absent, deficit nocturne imminent.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne peut pas couvrir la nuit sans toucher au plancher ou echouer.", + "piste": "Verifier pourquoi le contacteur reste ferme alors que le systeme est en autonomie et que le bilan signale un manque critique de stockage pour la nuit.", + "confidence": 0.95 + }, + { + "constat": "Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88-97 % et le réseau, mais ce dernier est coupé.", + "gravite": "haute", + "ce_qui_cloche": "Incohérence critique : le contacteur réseau est ouvert alors que le bilan identifie un manque de 5.1 kWh nécessitant l'EDF pour éviter la panne nocturne.", + "piste": "Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan. Suspecter un verrou hysteresis ou un script qui empêche la bascule vers le réseau.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "5-soir-deficit-ne-pas-demarrer", + "t": "2026-09-03T19:44:00+02:00", + "certain": true, + "titre": "03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W)", + "attendu": "CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "-12.2", + "pv_power_w": "758", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "1202", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demande 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que la marge de decharge restante (88 A) est insuffisante pour couvrir les 11.66 kWh requis par le bilan sans toucher au plancher de securite.", + "piste": "Verifier pourquoi le contacteur reste ouvert malgre le 'reseau juge necessaire : OUI' dans le bilan. Si le reseau ne peut pas fermer, la batterie va se vider sous le plancher de 22 % avant l'aube.", + "confidence": 0.95 + }, + { + "constat": "Deficit reel de 444 W, reseau absent. Le bilan exige 99.7 % pour demain mais le parc est a 12 % de sa limite de charge (88 A restants).", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est en mode 'reseau absent' alors que le bilan indique un besoin critique de stockage (manque de 6.8 kWh) et une cible de 99.7 %. La marge de decharge restante (88 A) approche la limite declaree du parc (100 A), ce qui constitue un risque de protection materielle ou de saturation imminente si la charge continue sans gestion.", + "piste": "Verifier pourquoi le contacteur reseau est ouvert alors que le bilan juge le reseau necessaire (ou au moins utile pour eviter la saturation batterie). Investiguer l'ecrivain 'Battery / Grid Hysteresis Fix V1' ou les automations qui maintiennent le contacteur ferme malgre le deficit et la proximite de la limite de charge du parc.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (-12.2 A), deficit solaire de -444 W, reseau absent. Le bilan demande 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que la marge de decharge est faible (88A). La cible SOC de 35% est incoherente avec le besoin de 99.7% identifie par le bilan.", + "piste": "Verifier pourquoi le contacteur reste ouvert pendant un deficit nocturnal prevu de 2 kWh. Le controleur EVCS est a l'arret, mais la batterie doit couvrir 11.66 kWh d'ici 09h.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demande 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que le SOC (94 %) est inferieur au besoin calcule (99.7 %). La marge de decharge restante (88 A) est proche de la limite declaree (100 A), ce qui risque de declencher une protection ou un bridage inopine.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert alors que le bilan juge le reseau necessaire. Si le reseau doit rester coupé, accepter le risque de plancher bas ; sinon, forcer la fermeture pour charger via EDF avant la nuit.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (-12.2 A) avec deficit solaire de -444 W. Le bilan exige 99.7 % pour le matin, mais la marge de charge est saturee (88 A restants).", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme ne peut pas atteindre la cible SOC necessaire (99.7 %) a cause de la limite physique du parc (80 % de la capacite declaree), rendant la prevision matinale inatteignable sans reseau.", + "piste": "Verifier si l'automatisation 'Battery / Grid Hysteresis Fix V1' permet de fermer le contacteur EDF pour charger les 5-6 kWh manquants avant que la batterie n'atteigne sa limite de protection.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "6-censure-demarrer", + "t": "2026-09-03T18:50:00+02:00", + "certain": true, + "titre": "03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee", + "attendu": "SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue", + "graviteAttendue": [ + "faible", + "moyenne" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "0", + "pv_power_w": "769", + "pv_power_10m_avg_w": "800", + "house_ac_power_w": "755", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "4.9", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'excedent est perdu.", + "piste": "Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais l'automatisation ne le ferme pas, ou la consigne de puissance est mal interpretee par le hysteresis.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee car la batterie est pleine et le reseau est deconnecte. L'excedent reel est masque par la censure des chargeurs.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan identifie un besoin de reseau (4.9 kWh) et une production bridee.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie gratuite est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'importation ? Si le reseau est disponible, il faut le connecter pour absorber l'excedent ou charger le vehicule si pertinent.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert avec un excedent positif (bien que censure). Si le reseau etait disponible, il aurait pu absorber l'excedent ou charger la voiture gratuitement.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'importation pour eviter la surcharge du parc ?", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "7-boost-evince-le-solaire", + "t": "2026-09-11T17:02:00+02:00", + "certain": true, + "titre": "11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W", + "attendu": "SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "s": { + "soc_percent": "96", + "battery_current_a": "0", + "pv_power_w": "121", + "pv_power_10m_avg_w": "150", + "house_ac_power_w": "7695", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "8260", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "plafond_edf_on_a": "28", + "balance_pv_censored": "on", + "balance_censor_reason": "production_bridee", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "8.4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voiture charge a 28 A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est branche, creant un conflit d'absorption.", + "piste": "Verifier si le Surplus Controller autorise la charge EVCS a absorber la production refusee par les chargeurs solaires au lieu de laisser le reseau prendre la main.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 8260 W alors que le bilan ne demande que 1.4 kWh, evitant du solaire.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 8260 W est inutile et contre-productive : elle remplace la production PV par l'EDF, tandis que la batterie est pleine et n'a pas besoin d'etre chargee.", + "piste": "Verifier pourquoi la strategie 'force_grid_now' maintient une telle puissance alors que le surplus solaire existe et que la batterie est au max.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 8260 W alors que le bilan ne demande que 1.4 kWh, evitant du solaire.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 8260 W est inutile et contre-productive : elle remplace la production PV bridee par du courant EDF payant, sans necessite de charge batterie.", + "piste": "Verifier pourquoi la strategie 'force_grid_now' maintient une telle puissance ; reduire la consigne pour laisser passer l'excedent solaire ou charger le vehicule si pertinent.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voiture charge a 28 A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est branche, creant un conflit d'absorption.", + "piste": "Verifier si le Surplus Controller autorise la charge EV sur l'excedent reel ou si la consigne reseau doit etre reduite pour laisser passer le PV.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voiture charge a 28 A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est branche, creant un conflit d'absorption.", + "piste": "Verifier si le Surplus Controller autorise la charge EV sur l'excedent reel ou si la consigne reseau doit etre reduite pour laisser passer le PV.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "8-voiture-pleine-ne-pas-reessayer", + "t": "2026-09-07T14:28:00+02:00", + "certain": true, + "titre": "07/09 14:28 — borne annonce charge terminee, vehicule branche immobile", + "attendu": "CALME : l etat collant fait son travail, aucune relance", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "97", + "battery_current_a": "1", + "pv_power_w": "2114", + "pv_power_10m_avg_w": "2000", + "house_ac_power_w": "1965", + "evcs_vehicle_connected": "on", + "evcs_current_a": "0", + "vehicle_selected": "JEEP", + "evcs_surplus_state": "day_vehicle_full_idle", + "evcs_source_mode": "Bloqué", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "58", + "balance_required_soc_prudent": "66", + "balance_energy_to_cover_kwh": "4.6", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "12", + "tomorrow_kwh": "30" + }, + "passages": [ + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que la voiture ne consomme plus rien.", + "piste": "Verifier pourquoi la Jeep est bloquee en 'plein' alors qu'elle est branchee : si elle peut encore absorber quelques kWh, debloquer la charge pour eviter la perte de production.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. Batterie a 97% (plafond). Excedent reel masque par la censure.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee car le puits de stockage est sature et le vehicule ne consomme plus. L'energie gratuite est perdue.", + "piste": "Verifier si la consigne de puissance reseau (700 W) ou un seuil de SOC bloque l'injection, mais ici c'est une saturation physique du parc.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite au lieu de la stocker ou de la consommer.", + "piste": "Verifier pourquoi la voiture ne prend pas le surplus (pleine ?) et si la consigne reseau (700 W) n'est pas trop basse pour absorber ce qu'il reste apres bridage.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et vehicule plein. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bilan identifie un manque de stockage de 6,8 kWh pour la nuit.", + "piste": "Verifier pourquoi le vehicule n'absorbe pas le surplus (memoire 'plein' ou consigne bornee). Considerer une strategie de charge batterie plus agressive si le SOC permet, ou accepter la perte si le parc est protege.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bilan identifie un manque de stockage de 6.8 kWh pour la nuit.", + "piste": "Verifier pourquoi la voiture n'absorbe pas le surplus (pleine ou consigne bloquee) et si la consigne reseau de 700 W permettrait d'eviter ce gaspillage sans fragiliser le parc.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "9-pointe-cuisson-proteger-le-parc", + "t": "2026-09-05T20:40:00+02:00", + "certain": true, + "titre": "05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A", + "attendu": "SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "limite", + "plafond", + "maximum", + "97", + "capacite", + "au bord", + "saturation" + ] + ], + "s": { + "soc_percent": "79", + "battery_current_a": "-97.4", + "pv_power_w": "320", + "pv_power_10m_avg_w": "500", + "house_ac_power_w": "4944", + "grid_state": "off", + "acin1_available": "0", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.1", + "balance_grid_needed": "on", + "tomorrow_kwh": "32" + }, + "passages": [ + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et fragilisant le materiel.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier si un ecrivain non-proprietaire (EVCS ou script) verrouille le contacteur.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et fragilisant le materiel.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier si un ecrivain externe bloque la fermeture ou si la consigne de puissance est mal interpretee.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reste ouvert, empechant l'absorption du reseau disponible et fragilisant les cellules.", + "piste": "Verifier pourquoi le contacteur EDF n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier l'ecrivain qui bloque la fermeture (Battery/Grid Hysteresis ou EVCS).", + "confidence": 0.95 + }, + { + "constat": "Parc a -97,4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reseau est ouvert (reseau absent) empechant la recharge du parc qui tourne a sa limite de decharge (-97,4 A). Le bilan indique 'reseau juge necessaire : OUI'.", + "piste": "Verifier pourquoi le contacteur reste ouvert. Probable conflit entre Battery/Grid Hysteresis Fix V1 et EVCS Surplus Controller V2.6 ou un seuil fige (SOC 80%) qui bloque la fermeture du contacteur malgre le deficit.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et fragilisant le materiel.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas ferme pour absorber le deficit identifie par le bilan ; inspecter les ecrivains du contacteur (Battery/Grid Hysteresis ou EVCS).", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "10-nuage-sur-charge-28a", + "t": "2026-09-11T18:00:00+02:00", + "certain": true, + "titre": "11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W", + "attendu": "SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "nuage", + "marge", + "brutal", + "chute", + "passage", + "si le solaire" + ] + ], + "s": { + "soc_percent": "96", + "battery_current_a": "-0.7", + "pv_power_w": "6058", + "pv_power_10m_avg_w": "5500", + "house_ac_power_w": "6845", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "1281", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W. La voiture consomme 6440 W, masquant la ressource gratuite.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie 'force_grid_now' remplace du solaire gratuit par du reseau payant pour maintenir le SOC au plafond, tandis que la marge de decharge est quasi nulle (1 %).", + "piste": "Verifier pourquoi le controleur force le reseau au lieu d'utiliser l'excedent PV pour la voiture ou de laisser la batterie se stabiliser sans surcharge inutile.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), reseau consomme 1281 W inutilement alors que le solaire est disponible et non bride.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau force l'importation d'energie qui evince la production PV locale, gaspillant des kWh gratuits.", + "piste": "Verifier pourquoi la consigne reseau n'est pas mise a zero ou reduite pour laisser passer le surplus solaire vers la voiture ou la batterie.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W. La voiture consomme 6440 W, masquant la ressource gratuite.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie 'force_grid_now' remplace du solaire gratuit par du reseau payant pour maintenir un SOC inutilement haut, tandis que le vehicule absorbe deja une grosse part de la production.", + "piste": "Verifier pourquoi le controleur force le reseau au lieu d'utiliser l'excedent solaire pour la voiture ou la batterie (deja pleine). Le surplus controller devrait prioriser la charge EV sur le reseau.", + "confidence": 0.9 + }, + { + "erreur": "JSON non termine" + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W. La voiture consomme 6440 W, absorbant la production.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie 'force_grid_now' evince le solaire gratuit au profit du reseau payant pour maintenir un SOC inutilement haut, tandis que la marge de decharge est quasi nulle (1%).", + "piste": "Verifier pourquoi le controleur force le reseau alors que le bilan indique un excedent positif et que la batterie est pleine. Le surplus controller devrait prioriser la charge EV sur le reseau.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": false, + "k": false + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "11-batterie-pleine-midi", + "t": "2026-09-11T12:00:00+02:00", + "certain": false, + "titre": "11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche", + "attendu": "OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ?", + "graviteAttendue": null, + "s": { + "soc_percent": "98", + "battery_current_a": "2.2", + "pv_power_w": "810", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "702", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "55", + "balance_required_soc_prudent": "63", + "balance_energy_to_cover_kwh": "4.1", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "balance_next_deficit_kwh": "4.1", + "balance_next_deficit_window": "(ce soir 20 h -> 09 h)", + "today_remaining_kwh": "45", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excedent solaire refuse.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excedent solaire refuse.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan indique reseau inutile mais contacteur ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme refuse le reseau alors que la production est perdue (bridee) et que la batterie est pleine. L'energie gratuite est gaspillee au lieu d'etre stockee ou utilisee.", + "piste": "Verifier pourquoi le contacteur reste ouvert avec un excedent solaire positif et une batterie pleine. Le controleur EVCS ou l'hysteresis bloque-t-il la fermeture ?", + "confidence": 0.9 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excedent solaire refuse.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Surplus solaire refuse car aucun puits disponible.", + "gravite": "faible", + "ce_qui_cloche": "La production est bridee alors que la batterie est pleine et qu'aucun vehicule n'est branche. L'energie est perdue mais le systeme protege le parc correctement.", + "piste": "Verifier si l'absence de reseau est intentionnelle ou un defaut du contacteur, car le bilan indique 'reseau juge necessaire : non'.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "12-orage-annonce", + "t": "2026-09-12T15:30:00+02:00", + "certain": false, + "titre": "Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site", + "attendu": "OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "72", + "battery_current_a": "35", + "pv_power_w": "4200", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "900", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_storm_level": "Orange", + "balance_storm_reserve_soc": "88", + "balance_required_soc": "55", + "balance_required_soc_prudent": "62", + "balance_energy_to_cover_kwh": "3.2", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "18", + "tomorrow_kwh": "40" + }, + "passages": [ + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 A vers un SOC de 72 %, cohérent avec la réserve orage conseillée de 88 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 A vers un SOC de 72 %, cohérent avec la réserve orage conseillée de 88 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 A vers un SOC de 72 %, cohérent avec la réserve orage conseillée de 88 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A, aucun véhicule branché.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW > Maison 0.9 kW. Batterie charge à 35 A vers 72 %. Excédent solaire de 3.3 kW non absorbé.", + "gravite": "faible", + "ce_qui_cloche": "L'excédent solaire de 3.3 kW est perdu car aucun véhicule n'est branché et la batterie n'est pas au plafond. C'est une opportunité manquée mais sans incohérence technique ni oscillation.", + "piste": "Brancher un véhicule pour absorber l'excédent gratuit, ou accepter la perte si le SOC cible du soir est atteint rapidement.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "13-voiture-empruntee-echeance", + "t": "2026-09-11T17:00:00+02:00", + "certain": false, + "titre": "11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present", + "attendu": "OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ?", + "graviteAttendue": null, + "s": { + "soc_percent": "96", + "battery_current_a": "-10", + "pv_power_w": "4255", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "4888", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "20", + "vehicle_selected": "JEEP", + "user_strategy": "force_charge_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "700", + "evcs_source_mode": "Solaire", + "evcs_surplus_state": "charging_hold_manual_local", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "required_energy_kwh": "12", + "departure_time": "19:00", + "departure_priority_enabled": "on", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "6", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96% (plafond), PV brident 0, excedent solaire +3.9 kWc utilise par la voiture. Consigne reseau inutile car le bilan ne demande pas de charge.", + "gravite": "faible", + "ce_qui_cloche": "La consigne reseau de 700 W est active alors que le systeme est en force_charge_now et que l'excedent solaire couvre deja la demande. Cela risque d'evincer du solaire gratuit ou de creer des transitoires inutiles si le contacteur bascule.", + "piste": "Verifier pourquoi la consigne reseau n'est pas mise a zero ou desactivee quand la strategie force_charge_now est active avec un excedent positif. Le proprietaire Battery/Grid Hysteresis Fix V1 devrait probablement fermer le contacteur pour laisser le PV alimenter la maison/voiture sans passer par le reseau.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, reseau consigne a 700 W inutile car excedent solaire positif.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 700 W evince du solaire gratuit alors que la batterie est pleine et qu'il reste +3967 W d'excedent.", + "piste": "Verifier pourquoi la consigne reseau n'est pas a 0 W ou si un ecrivain non-proprietaire force cette valeur.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau (0.7 kW). Excedent solaire positif mais non utilise.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 700 W evince du solaire gratuit alors que l'excedent est de +3967 W. Le parc est au plafond, empechant d'absorber ce surplus.", + "piste": "Verifier pourquoi la consigne reseau n'est pas a 0 W pour laisser le PV alimenter la voiture ou la maison sans passer par EDF.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96% (plafond), PV brident, voiture consomme 4.6 kW. Consigne reseau 700 W inutile car excedent solaire positif.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau de 700 W force l'importation d'EDF alors que le bilan indique un excedent solaire de +3967 W et que la batterie est pleine. Cela evince la production gratuite.", + "piste": "Verifier pourquoi la consigne reseau n'est pas a 0 W ou negative pour absorber l'excedent, ou si le controleur EVCS ne gere pas correctement le surplus quand la batterie est au max.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96% (plafond), reseau consigne a 700W inutile car excedent solaire positif. Voiture chargee a 20A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 700W evince du solaire gratuit alors que l'excedent est de +3967W et la batterie pleine.", + "piste": "Verifier pourquoi le contacteur reste ferme/consigne haute avec un excedent solaire important et une batterie au plafond.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4b-hiver-parc-12", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000)", + "attendu": "OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "52", + "balance_required_soc_prudent": "59", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "12", + "bms_max_discharge_current_a": "300", + "bms_max_charge_current_a": "300" + }, + "passages": [ + { + "constat": "Nuit, reseau absent. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% coherente avec hiver.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incohérente avec prévision 6.2 kWh.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC de 85% est irréaliste pour demain (prévision 6.2 kWh < besoin 9.4 kWh), mais le système fonctionne correctement en autonomie.", + "piste": "Vérifier si la consigne de 85% est figée dans un script ou l'EVCS et devrait être ajustée dynamiquement selon la prévision solaire.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incohérente avec le déficit nocturne.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC de 85% est appliquée alors que le bilan identifie un besoin de 52-59% pour traverser la nuit. Le système ne charge pas (PV=0), donc la cible n'est pas atteinte mais n'est pas non plus violée activement.", + "piste": "Vérifier si la consigne de 85% est figée dans l'automate 'Battery / Grid Hysteresis Fix V1' ou si elle devrait être dynamique selon le bilan. Aucun risque immédiat car la marge de décharge est large (282A).", + "confidence": 0.9 + }, + { + "constat": "Nuit, reseau coupe. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Consigne reseau 700W inactive.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (-18 A) couvre la maison (1400 W). Bilan demande 52-59 % pour demain. Consigne reseau 700 W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4c-hiver-parc-16", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec 16 equivalents (vieux modules repares)", + "attendu": "OUVERT : et avec 16 equivalents ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "44", + "balance_required_soc_prudent": "50", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "off", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "16", + "bms_max_discharge_current_a": "400", + "bms_max_charge_current_a": "400" + }, + "passages": [ + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante sans AC-IN.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan : 9.4 kWh à couvrir avant 11h, SOC requis 44 %. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit d'hiver, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan requis : 50 % pour demain 11h. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante sans AC-IN.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan requis : 44-50 %. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "15-oscillation-contacteur", + "t": "2026-09-12T06:36:00+02:00", + "certain": true, + "titre": "INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes", + "attendu": "SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "oscill", + "bascul", + "va-et-vient", + "aller-retour", + "repet", + "six fois", + "6 fois", + "cycl" + ], + [ + "conflit", + "deux", + "ecriv", + "contradict", + "se battent", + "concurren", + "automatisation", + "hysteresis" + ] + ], + "s": { + "soc_percent": "35", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "1.56", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "06:35:06 Contacteur EDF : off -> on|06:34:02 Contacteur EDF : on -> off|06:30:49 Contacteur EDF : off -> on|06:29:44 Contacteur EDF : on -> off|06:26:31 Contacteur EDF : off -> on|06:25:27 Contacteur EDF : on -> off" + }, + "passages": [ + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement perturbee par un ecrivain externe (EVCS Surplus Controller ou scripts). Chaque bascule coute 50-150 Wh et use le relais.", + "piste": "Verifier les logs du 'Battery / Grid Hysteresis Fix V1' pour identifier quel ecrivain non-proprietaire force la commutation. Stabiliser la consigne de puissance reseau ou augmenter la hysteresis temporelle.", + "confidence": 0.98 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis par le bilan pour couvrir le deficit matinal.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur contacteur, coutant des transitoires et usant le relais, sans justification par le bilan stable.", + "piste": "Verifier les ecrivains du contacteur (Battery/Grid Hysteresis Fix V1 vs EVCS Surplus Controller) pour identifier la source de l'instabilite.", + "confidence": 0.98 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis pour couvrir le deficit de 1.56 kWh avant 09h.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee du contacteur reseau, coutant 300 a 900 Wh de transitoires et usant le relais, sans justification par le bilan qui demande une alimentation stable.", + "piste": "Verifier l'ecrivain 'EVCS Surplus Controller V2.6' ou un script qui force la commutation, car le proprietaire 'Battery / Grid Hysteresis Fix V1' devrait maintenir le contacteur ferme selon le besoin de reseau identifie.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement perturbee par un ecrivain externe (EVCS Surplus Controller ou scripts). Chaque bascule coute 50-150 Wh et use le relais.", + "piste": "Verifier les logs du 'Battery / Grid Hysteresis Fix V1' pour identifier quel ecrivain non-proprietaire force la commutation. Stabiliser la consigne de puissance reseau ou ajouter une hysteresis temporelle plus large.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau'. Chaque bascule coute 50-150 Wh et use le relais. Le proprietaire est Battery/Grid Hysteresis Fix V1, mais EVCS Surplus Controller ou scripts interviennent probablement.", + "piste": "Identifier quel ecrivain non-proprietaire force les basculements (probablement EVCS Surplus Controller V2.6 ou un script) et stabiliser la logique d'hysteresis pour eviter l'usure du contacteur.", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "16-systeme-calme", + "t": "2026-09-12T07:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes", + "attendu": "NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "42", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "0.9", + "balance_grid_needed": "on", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "05:02:51 Contacteur EDF : off -> on|05:02:51 Reprise reseau nuit : off -> on" + }, + "passages": [ + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Le systeme est en attente du soleil pour la session de charge.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le reseau jusqu'au croisement a 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le reseau jusqu'au croisement de 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie avant le croisement a 09 h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bilan coherent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "14-bilan-indisponible", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE", + "attendu": "SIGNALER en le disant : le bilan est degrade, donc prudence assumee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "degrad", + "indisponible", + "sans bilan", + "pas de bilan", + "inconnu", + "unknown" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "35", + "tomorrow_kwh": "75.2", + "balance_status": "degrade", + "balance_required_soc": "unknown", + "balance_energy_to_cover_kwh": "unknown" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le reseau est disponible et qu'il reste une petite marge de recharge (88W). Sans bilan, on ne sait pas si c'est optimal ou un risque de coupure matinale.", + "piste": "Verifier pourquoi la consigne reseau n'a pas permis de recharger plus haut avant l'entree dans les heures creuses ou la nuit. Surveiller la remontee du SOC.", + "confidence": 0.6 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une petite marge de recharge (88 W). Le systeme ne recharge pas activement la batterie depuis le reseau pour sortir du plancher, ce qui expose a un deficit le matin si la production PV tarde.", + "piste": "Verifier pourquoi la recharge reseau n'est pas activee ou augmente pour sortir du SOC 20 %. La consigne de 700 W est peut-etre trop restrictive pour permettre une recharge significative de la batterie pendant les heures creuses ou la nuit.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une petite marge de recharge (88 W). Sans bilan, on ne sait pas si la cible de 35 % sera atteinte avant le pic du matin.", + "piste": "Verifier pourquoi la recharge n'est pas plus agressive (consigne trop basse ?) et confirmer l'indisponibilite du bilan energetique.", + "confidence": 0.8 + }, + { + "constat": "SOC 20% (plancher), PV 0W, deficit -612W. Consigne reseau 700W laisse 88W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que la marge de recharge reseau n'est que de 88W. Le systeme ne peut pas se recharger efficacement avant le matin, risquant un appel reseau plein tarif a l'aube.", + "piste": "Verifier si la consigne de puissance reseau (700W) est trop restrictive pour les heures creuses ou la nuit. Considerer une augmentation temporaire de la consigne pour permettre a la batterie de sortir du plancher avant le pic matinal.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher), PV 0W, reseau ferme mais consigne 700W limite la recharge a 88W. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le reseau est disponible et que la cible matinale est de 35%. La marge de recharge residuelle (88W) est trop faible pour combler l'ecart avant le lever du soleil, risquant un deficit matinal paye au plein tarif.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700W pendant les heures creuses/nuitees. Si le systeme permet d'augmenter cette consigne sans fragiliser le parc (limite 100A), il faudrait laisser le reseau charger la batterie plus vite pour atteindre les 35% avant l'aube.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + } +] \ No newline at end of file diff --git a/docs/mesures/campagne-conseiller-2026-09-13-finale.log b/docs/mesures/campagne-conseiller-2026-09-13-finale.log new file mode 100644 index 0000000..90be18d --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13-finale.log @@ -0,0 +1,345 @@ + +═══ 1-nuit-bloquee-sans-vehicule + 12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 % + attendu : SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh + ✔ [moyenne] SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge pour recharge. Bilan dem + ↳ La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh via le reseau pour atteindre l + → Verifier si la consigne de puissance reseau (700 W) peut etre temporairement relevee ou si le contacteur doit basculer e [nomme] + ✔ [haute ] SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kW + ↳ Le systeme est au plancher de securite avec un deficit nocturne prevu. Le reseau est disponible mais la marge de recharg + → Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande du reseau. Laisser le contacteur ouv [nomme] + ✔ [moyenne] Batterie a 20 % (plancher), reseau ferme, consigne 700 W. La marge de recharge est negligeab + ↳ La consigne de puissance reseau (700 W) evite le deficit mais ne permet pas de recharger la batterie au rythme necessair + → Verifier si la consigne reseau peut etre augmentee temporairement ou si le systeme doit accepter un achat supplementaire [nomme] + ✔ [moyenne] Batterie a 20 % (plancher) avec reseau ferme. Consigne 700 W limite la recharge a 88 W, insu + ↳ La consigne de puissance reseau (700 W) evite l'absorption du surplus solaire et bride la recharge nocturne, empechant l + → Verifier si la consigne de 700 W est une valeur figee ou un resultat d'hysteresis. Il faudrait augmenter cette consigne [nomme] + ✔ [moyenne] Batterie a 20 % (plancher), reseau ferme, consigne 700 W. La maison est alimentee par le res + ↳ La consigne de puissance reseau (700 W) evince la recharge de la batterie alors que le bilan indique un besoin de 3.4 kW + → Verifier pourquoi la consigne reste bloquee a 700 W et empeche la recharge nocturne. Le contacteur doit permettre d'abso [nomme] + gravites : moyenne haute moyenne moyenne moyenne INSTABLE (2 valeurs) + gravite dans la fourchette moyenne|haute : 5/5 + a nomme la chose : 5/5 + +═══ 2-nuit-relachee-trop-tot + 03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30) + attendu : SIGNALER : SOC sous le requis alors que la session est marquee terminee + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La consigne réseau est fixée à 700 W (consommation maison), laissant un excédent nul. La batterie ne peut donc pas se re + → Vérifier pourquoi l'automatisation ou le script n'a pas augmenté la consigne de puissance réseau pour permettre la recha [ne nomme pas] + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que + → Vérifier pourquoi la consigne réseau n'est pas augmentée pour couvrir le déficit identifié par le bilan (recharge noctur [ne nomme pas] + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et que le bilan identifie un besoi + → Vérifier pourquoi le contrôleur n'a pas chargé via le réseau pendant les heures creuses ou si la consigne de puissance r [ne nomme pas] + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que + → Vérifier pourquoi la consigne réseau n'est pas augmentée pour couvrir le déficit identifié par le bilan (1.1 kWh) malgré [ne nomme pas] + ✔ [moyenne] Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible ava + ↳ La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et que le bilan identifie un besoi + → Vérifier pourquoi le contrôleur n'a pas chargé via le réseau pendant les heures creuses ou si la consigne de puissance r [ne nomme pas] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 0/5 + +═══ 3-nuit-couverte-ne-rien-faire + CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis + attendu : NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent + ✔ [aucune ] Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau a + ✔ [aucune ] Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh + ✔ [aucune ] Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh + ✔ [aucune ] Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau a + ✔ [aucune ] Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 4-hiver-nuit-longue [OUVERT] + HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h + attendu : OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ? + [haute ] Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88- + ↳ Le système refuse de charger sur le réseau malgré un déficit critique identifié par le bilan. La cible matinale de 85 % + → Vérifier pourquoi le contacteur reste ouvert alors que le bilan indique 'réseau nécessaire'. Suspecter un conflit entre + [haute ] Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88- + ↳ Le contacteur réseau est ouvert alors que le bilan identifie un manque de 5.1 kWh nécessitant l'EDF pour éviter la panne + → Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan. Si c'est volontaire (mode off-grid), il faut ré + [haute ] Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (insuffisant vs cible 88%). + ↳ Le systeme est en ile a baton avec un deficit majeur. Le reseau est juge necessaire mais le contacteur reste ouvert. La + → Verifier pourquoi le contacteur reseau n'a pas ferme pour charger la batterie (regle hysteresis ou EVCS bloque ?). Risqu + [haute ] Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Reseau absent, defi + ↳ Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne peut pas couvrir la nuit sans toucher a + → Verifier pourquoi le contacteur reste ferme alors que le systeme est en autonomie et que le bilan signale un manque crit + [haute ] Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88- + ↳ Incohérence critique : le contacteur réseau est ouvert alors que le bilan identifie un manque de 5.1 kWh nécessitant l'E + → Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan. Suspecter un verrou hysteresis ou un script qui + gravites : haute haute haute haute haute STABLE + +═══ 5-soir-deficit-ne-pas-demarrer + 03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W) + attendu : CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif + ✘ [moyenne] Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demand + ↳ Le systeme est en deficit reel et isole du reseau alors que la marge de decharge restante (88 A) est insuffisante pour c + → Verifier pourquoi le contacteur reste ouvert malgre le 'reseau juge necessaire : OUI' dans le bilan. Si le reseau ne peu + ✘ [haute ] Deficit reel de 444 W, reseau absent. Le bilan exige 99.7 % pour demain mais le parc est a 1 + ↳ Le systeme est en mode 'reseau absent' alors que le bilan indique un besoin critique de stockage (manque de 6.8 kWh) et + → Verifier pourquoi le contacteur reseau est ouvert alors que le bilan juge le reseau necessaire (ou au moins utile pour e + ✘ [moyenne] Batterie a 94 % (-12.2 A), deficit solaire de -444 W, reseau absent. Le bilan demande 99.7 % + ↳ Le systeme est en deficit reel et isole du reseau alors que la marge de decharge est faible (88A). La cible SOC de 35% e + → Verifier pourquoi le contacteur reste ouvert pendant un deficit nocturnal prevu de 2 kWh. Le controleur EVCS est a l'arr + ✘ [moyenne] Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demand + ↳ Le systeme est en deficit reel et isole du reseau alors que le SOC (94 %) est inferieur au besoin calcule (99.7 %). La m + → Verifier pourquoi le contacteur reseau reste ouvert alors que le bilan juge le reseau necessaire. Si le reseau doit rest + ✘ [moyenne] Batterie a 94 % (-12.2 A) avec deficit solaire de -444 W. Le bilan exige 99.7 % pour le mati + ↳ Le systeme ne peut pas atteindre la cible SOC necessaire (99.7 %) a cause de la limite physique du parc (80 % de la capa + → Verifier si l'automatisation 'Battery / Grid Hysteresis Fix V1' permet de fermer le contacteur EDF pour charger les 5-6 + gravites : moyenne haute moyenne moyenne moyenne INSTABLE (2 valeurs) + gravite dans la fourchette aucune|faible : 0/5 + +═══ 6-censure-demarrer + 03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee + attendu : SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'excede + → Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais l'automatisation ne le + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ La production solaire est refusee car la batterie est pleine et le reseau est deconnecte. L'excedent reel est masque par + → Verifier pourquoi le contacteur reste ouvert alors que le bilan identifie un besoin de reseau (4.9 kWh) et une productio + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energi + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'importation ? + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energi + → Verifier pourquoi le contacteur reste ouvert avec un excedent positif (bien que censure). Si le reseau etait disponible, + ✔ [moyenne] Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % + ↳ Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energi + → Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'importation po + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne : 5/5 + +═══ 7-boost-evince-le-solaire + 11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W + attendu : SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne + ✔ [moyenne] PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voi + ↳ La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est + → Verifier si le Surplus Controller autorise la charge EVCS a absorber la production refusee par les chargeurs solaires au + ✔ [moyenne] Batterie a 96 % (plafond), reseau force a 8260 W alors que le bilan ne demande que 1.4 kWh, + ↳ La consigne reseau de 8260 W est inutile et contre-productive : elle remplace la production PV par l'EDF, tandis que la + → Verifier pourquoi la strategie 'force_grid_now' maintient une telle puissance alors que le surplus solaire existe et que + ✔ [moyenne] Batterie a 96 % (plafond), reseau force a 8260 W alors que le bilan ne demande que 1.4 kWh, + ↳ La consigne reseau de 8260 W est inutile et contre-productive : elle remplace la production PV bridee par du courant EDF + → Verifier pourquoi la strategie 'force_grid_now' maintient une telle puissance ; reduire la consigne pour laisser passer + ✔ [moyenne] PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voi + ↳ La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est + → Verifier si le Surplus Controller autorise la charge EV sur l'excedent reel ou si la consigne reseau doit etre reduite p + ✔ [moyenne] PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voi + ↳ La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est + → Verifier si le Surplus Controller autorise la charge EV sur l'excedent reel ou si la consigne reseau doit etre reduite p + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette moyenne|haute : 5/5 + +═══ 8-voiture-pleine-ne-pas-reessayer + 07/09 14:28 — borne annonce charge terminee, vehicule branche immobile + attendu : CALME : l etat collant fait son travail, aucune relance + ✘ [moyenne] PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute + ↳ L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que la voi + → Verifier pourquoi la Jeep est bloquee en 'plein' alors qu'elle est branchee : si elle peut encore absorber quelques kWh, + ✘ [moyenne] PV bridee (6/6) avec reseau absent et voiture pleine. Batterie a 97% (plafond). Excedent ree + ↳ La production solaire est refusee car le puits de stockage est sature et le vehicule ne consomme plus. L'energie gratuit + → Verifier si la consigne de puissance reseau (700 W) ou un seuil de SOC bloque l'injection, mais ici c'est une saturation + ✘ [moyenne] PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute + ↳ L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite au lieu de la st + → Verifier pourquoi la voiture ne prend pas le surplus (pleine ?) et si la consigne reseau (700 W) n'est pas trop basse po + ✘ [moyenne] PV bridee (6/6) avec reseau absent et vehicule plein. La ressource solaire est refusee faute + ↳ L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bil + → Verifier pourquoi le vehicule n'absorbe pas le surplus (memoire 'plein' ou consigne bornee). Considerer une strategie de + ✘ [moyenne] PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute + ↳ L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bil + → Verifier pourquoi la voiture n'absorbe pas le surplus (pleine ou consigne bloquee) et si la consigne reseau de 700 W per + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette aucune|faible : 0/5 + +═══ 9-pointe-cuisson-proteger-le-parc + 05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A + attendu : SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empecha + → Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Id [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empecha + → Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Id [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reste ouvert, empechant l'absorption d + → Verifier pourquoi le contacteur EDF n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Ident [nomme] + ✔ [haute ] Parc a -97,4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le contacteur reseau est ouvert (reseau absent) empechant la recharge du parc qui tourne a sa limite de decharge (-97,4 + → Verifier pourquoi le contacteur reste ouvert. Probable conflit entre Battery/Grid Hysteresis Fix V1 et EVCS Surplus Cont [nomme] + ✔ [haute ] Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau + ↳ Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empecha + → Verifier pourquoi le contacteur reseau n'a pas ferme pour absorber le deficit identifie par le bilan ; inspecter les ecr [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 10-nuage-sur-charge-28a + 11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W + attendu : SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie + ✔ [moyenne] Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W + ↳ La strategie 'force_grid_now' remplace du solaire gratuit par du reseau payant pour maintenir le SOC au plafond, tandis + → Verifier pourquoi le controleur force le reseau au lieu d'utiliser l'excedent PV pour la voiture ou de laisser la batter [nomme] + ✔ [moyenne] Batterie a 96 % (plafond), reseau consomme 1281 W inutilement alors que le solaire est dispo + ↳ La consigne de puissance reseau force l'importation d'energie qui evince la production PV locale, gaspillant des kWh gra + → Verifier pourquoi la consigne reseau n'est pas mise a zero ou reduite pour laisser passer le surplus solaire vers la voi [ne nomme pas] + ✔ [moyenne] Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W + ↳ La strategie 'force_grid_now' remplace du solaire gratuit par du reseau payant pour maintenir un SOC inutilement haut, t + → Verifier pourquoi le controleur force le reseau au lieu d'utiliser l'excedent solaire pour la voiture ou la batterie (de [ne nomme pas] + ✖ JSON non termine + ✔ [moyenne] Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W + ↳ La strategie 'force_grid_now' evince le solaire gratuit au profit du reseau payant pour maintenir un SOC inutilement hau + → Verifier pourquoi le controleur force le reseau alors que le bilan indique un excedent positif et que la batterie est pl [nomme] + gravites : moyenne moyenne moyenne ✖ moyenne INSTABLE (2 valeurs) + gravite dans la fourchette faible|moyenne|haute : 4/5 + a nomme la chose : 2/5 + +═══ 11-batterie-pleine-midi [OUVERT] + 11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche + attendu : OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ? + [aucune ] Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excede + [aucune ] Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excede + [moyenne] Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan indique reseau inutile mais cont + ↳ Le systeme refuse le reseau alors que la production est perdue (bridee) et que la batterie est pleine. L'energie gratuit + → Verifier pourquoi le contacteur reste ouvert avec un excedent solaire positif et une batterie pleine. Le controleur EVCS + [aucune ] Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excede + [faible ] Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Surplus solaire refuse + ↳ La production est bridee alors que la batterie est pleine et qu'aucun vehicule n'est branche. L'energie est perdue mais + → Verifier si l'absence de reseau est intentionnelle ou un defaut du contacteur, car le bilan indique 'reseau juge necessa + gravites : aucune aucune moyenne aucune faible INSTABLE (3 valeurs) + +═══ 12-orage-annonce [OUVERT] + Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site + attendu : OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ? + [aucune ] Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 + [aucune ] Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 + [aucune ] Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 + [aucune ] Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A, auc + [faible ] Système autonome (réseau coupé). PV 4.2 kW > Maison 0.9 kW. Batterie charge à 35 A vers 72 % + ↳ L'excédent solaire de 3.3 kW est perdu car aucun véhicule n'est branché et la batterie n'est pas au plafond. C'est une o + → Brancher un véhicule pour absorber l'excédent gratuit, ou accepter la perte si le SOC cible du soir est atteint rapideme + gravites : aucune aucune aucune aucune faible INSTABLE (2 valeurs) + +═══ 13-voiture-empruntee-echeance [OUVERT] + 11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present + attendu : OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ? + [faible ] Batterie a 96% (plafond), PV brident 0, excedent solaire +3.9 kWc utilise par la voiture. Co + ↳ La consigne reseau de 700 W est active alors que le systeme est en force_charge_now et que l'excedent solaire couvre dej + → Verifier pourquoi la consigne reseau n'est pas mise a zero ou desactivee quand la strategie force_charge_now est active + [moyenne] Batterie a 96 % (plafond), PV brident, reseau consigne a 700 W inutile car excedent solaire + ↳ La consigne reseau de 700 W evince du solaire gratuit alors que la batterie est pleine et qu'il reste +3967 W d'excedent + → Verifier pourquoi la consigne reseau n'est pas a 0 W ou si un ecrivain non-proprietaire force cette valeur. + [moyenne] Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau (0.7 kW). Excedent so + ↳ La consigne reseau de 700 W evince du solaire gratuit alors que l'excedent est de +3967 W. Le parc est au plafond, empec + → Verifier pourquoi la consigne reseau n'est pas a 0 W pour laisser le PV alimenter la voiture ou la maison sans passer pa + [moyenne] Batterie a 96% (plafond), PV brident, voiture consomme 4.6 kW. Consigne reseau 700 W inutile + ↳ La consigne de puissance reseau de 700 W force l'importation d'EDF alors que le bilan indique un excedent solaire de +39 + → Verifier pourquoi la consigne reseau n'est pas a 0 W ou negative pour absorber l'excedent, ou si le controleur EVCS ne g + [moyenne] Batterie a 96% (plafond), reseau consigne a 700W inutile car excedent solaire positif. Voitu + ↳ La consigne reseau de 700W evince du solaire gratuit alors que l'excedent est de +3967W et la batterie pleine. + → Verifier pourquoi le contacteur reste ferme/consigne haute avec un excedent solaire important et une batterie au plafond + gravites : faible moyenne moyenne moyenne moyenne INSTABLE (2 valeurs) + +═══ 4b-hiver-parc-12 [OUVERT] + HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000) + attendu : OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ? + [aucune ] Nuit, reseau absent. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cib + [faible ] Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cibl + ↳ La cible SOC de 85% est irréaliste pour demain (prévision 6.2 kWh < besoin 9.4 kWh), mais le système fonctionne correcte + → Vérifier si la consigne de 85% est figée dans un script ou l'EVCS et devrait être ajustée dynamiquement selon la prévisi + [faible ] Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cibl + ↳ La cible SOC de 85% est appliquée alors que le bilan identifie un besoin de 52-59% pour traverser la nuit. Le système ne + → Vérifier si la consigne de 85% est figée dans l'automate 'Battery / Grid Hysteresis Fix V1' ou si elle devrait être dyna + [aucune ] Nuit, reseau coupe. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cons + [aucune ] Nuit, reseau absent. Batterie 55 % (-18 A) couvre la maison (1400 W). Bilan demande 52-59 % + gravites : aucune faible faible aucune aucune INSTABLE (2 valeurs) + +═══ 4c-hiver-parc-16 [OUVERT] + HIVER avec 16 equivalents (vieux modules repares) + attendu : OUVERT : et avec 16 equivalents ? + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour dema + [aucune ] Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bila + [aucune ] Nuit d'hiver, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan + [aucune ] Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour dema + [aucune ] Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bila + gravites : aucune aucune aucune aucune aucune STABLE + +═══ 15-oscillation-contacteur + INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes + attendu : SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement pe + → Verifier les logs du 'Battery / Grid Hysteresis Fix V1' pour identifier quel ecrivain non-proprietaire force la commutat [nomme] + ✔ [haute ] Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis par le + ↳ Oscillation repetee de l'actionneur contacteur, coutant des transitoires et usant le relais, sans justification par le b + → Verifier les ecrivains du contacteur (Battery/Grid Hysteresis Fix V1 vs EVCS Surplus Controller) pour identifier la sour [nomme] + ✔ [haute ] Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis pour co + ↳ Oscillation repetee du contacteur reseau, coutant 300 a 900 Wh de transitoires et usant le relais, sans justification pa + → Verifier l'ecrivain 'EVCS Surplus Controller V2.6' ou un script qui force la commutation, car le proprietaire 'Battery / [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement pe + → Verifier les logs du 'Battery / Grid Hysteresis Fix V1' pour identifier quel ecrivain non-proprietaire force la commutat [nomme] + ✔ [haute ] Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present + ↳ Oscillation repetee de l'actionneur 'Contacteur reseau'. Chaque bascule coute 50-150 Wh et use le relais. Le proprietair + → Identifier quel ecrivain non-proprietaire force les basculements (probablement EVCS Surplus Controller V2.6 ou un script [nomme] + gravites : haute haute haute haute haute STABLE + gravite dans la fourchette haute : 5/5 + a nomme la chose : 5/5 + +═══ 16-systeme-calme + CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes + attendu : NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Le systeme est en attente du soleil pou + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le + ✔ [aucune ] Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie avant + ✔ [aucune ] Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bila + gravites : aucune aucune aucune aucune aucune STABLE + gravite dans la fourchette aucune : 5/5 + +═══ 14-bilan-indisponible + ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE + attendu : SIGNALER en le disant : le bilan est degrade, donc prudence assumee + ✔ [moyenne] SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge pour recharge. Bilan ind + ↳ La batterie est au plancher de securite (20%) alors que le reseau est disponible et qu'il reste une petite marge de rech + → Verifier pourquoi la consigne reseau n'a pas permis de recharger plus haut avant l'entree dans les heures creuses ou la [nomme] + ✔ [moyenne] SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge pour recharge. Bilan + ↳ La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une petite marge de rec + → Verifier pourquoi la recharge reseau n'est pas activee ou augmente pour sortir du SOC 20 %. La consigne de 700 W est peu [nomme] + ✔ [moyenne] SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge pour recharge. Bilan + ↳ La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une petite marge de rec + → Verifier pourquoi la recharge n'est pas plus agressive (consigne trop basse ?) et confirmer l'indisponibilite du bilan e [nomme] + ✔ [moyenne] SOC 20% (plancher), PV 0W, deficit -612W. Consigne reseau 700W laisse 88W de marge pour rech + ↳ La batterie est au plancher de securite (20%) alors que la marge de recharge reseau n'est que de 88W. Le systeme ne peut + → Verifier si la consigne de puissance reseau (700W) est trop restrictive pour les heures creuses ou la nuit. Considerer u [nomme] + ✔ [moyenne] SOC 20% (plancher), PV 0W, reseau ferme mais consigne 700W limite la recharge a 88W. Bilan i + ↳ La batterie est au plancher de securite (20%) alors que le reseau est disponible et que la cible matinale est de 35%. La + → Verifier pourquoi la consigne reseau est bloquee a 700W pendant les heures creuses/nuitees. Si le systeme permet d'augme [nomme] + gravites : moyenne moyenne moyenne moyenne moyenne STABLE + gravite dans la fourchette faible|moyenne|haute : 5/5 + a nomme la chose : 5/5 + +──────────────────────────────────────────────────────────── +INCIDENTS : 39/40 gravites justes (8 cas) + 5/5 1-nuit-bloquee-sans-vehicule nomme 5/5 + 5/5 2-nuit-relachee-trop-tot nomme 0/5 + 5/5 6-censure-demarrer + 5/5 7-boost-evince-le-solaire + 5/5 9-pointe-cuisson-proteger-le-parc nomme 5/5 + 4/5 10-nuage-sur-charge-28a nomme 2/5 + 5/5 15-oscillation-contacteur nomme 5/5 + 5/5 14-bilan-indisponible nomme 5/5 +SYSTEME CALME : 10/20 (silence attendu) (4 cas) + 5/5 3-nuit-couverte-ne-rien-faire + 0/5 5-soir-deficit-ne-pas-demarrer + 0/5 8-voiture-pleine-ne-pas-reessayer + 5/5 16-systeme-calme +CAS OUVERTS : 6, non notes, a lire + +Journal complet : docs/mesures/campagne-conseiller-2026-09-13.json diff --git a/docs/mesures/campagne-conseiller-2026-09-13.json b/docs/mesures/campagne-conseiller-2026-09-13.json new file mode 100644 index 0000000..5ec438e --- /dev/null +++ b/docs/mesures/campagne-conseiller-2026-09-13.json @@ -0,0 +1,1662 @@ +[ + { + "id": "1-nuit-bloquee-sans-vehicule", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 %", + "attendu": "SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "motsCles": [ + [ + "recharg", + "remonte", + "ne monte", + "stagne", + "plate", + "0 a", + "0a", + "immobile" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "3.4", + "balance_storage_shortfall_kwh": "6.77" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge pour recharge. Bilan demande 59.1% SOC pour le matin.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite alors que le bilan identifie un besoin de 3.4 kWh via le reseau pour atteindre la cible du matin. La marge de recharge residuelle (88 W) est insuffisante pour combler ce deficit avant l'aube.", + "piste": "Verifier si la consigne de puissance reseau (700 W) peut etre temporairement relevee ou si le contacteur doit basculer en mode charge prioritaire pendant les heures creuses (01:24-07:24) pour eviter de payer le plein tarif a 09h.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W. La batterie ne peut pas couvrir les 3.13 kWh requis pour le matin.", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est au plancher de securite avec un deficit nocturne prevu. Le reseau est disponible mais la marge de recharge n'est que de 88 W, insuffisante pour atteindre la cible de 59.1 % avant l'aube.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700 W alors que le bilan demande du reseau. Laisser le contacteur ouvert et augmenter la consigne si possible pour recharger via EDF avant 07:24.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 20 % (plancher), reseau ferme, consigne 700 W. La marge de recharge est negligeable (88 W) pour atteindre la cible de 59 % avant 09h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evite le deficit mais ne permet pas de recharger la batterie au rythme necessaire par le bilan energetique.", + "piste": "Verifier si la consigne reseau peut etre augmentee temporairement ou si le systeme doit accepter un achat supplementaire pour combler les 3.13 kWh requis.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 20 % (plancher) avec reseau ferme. Consigne 700 W limite la recharge a 88 W, insuffisante pour atteindre le SOC cible de 59 % avant 09h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evite l'absorption du surplus solaire et bride la recharge nocturne, empechant la batterie de couvrir le deficit de 3.13 kWh identifie par le bilan.", + "piste": "Verifier si la consigne de 700 W est une valeur figee ou un resultat d'hysteresis. Il faudrait augmenter cette consigne pour permettre a la batterie de se recharger via le reseau pendant les heures creuses actuelles.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 20 % (plancher), reseau ferme, consigne 700 W. La maison est alimentee par le reseau et la batterie ne se recharge pas.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (700 W) evince la recharge de la batterie alors que le bilan indique un besoin de 3.4 kWh du reseau pour atteindre le SOC cible de 59.1 % avant 09h. Le systeme laisse la batterie au plancher pendant les heures creuses/crepuscule.", + "piste": "Verifier pourquoi la consigne reste bloquee a 700 W et empeche la recharge nocturne. Le contacteur doit permettre d'absorber plus de puissance du reseau pour recharger la batterie avant l'aube.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "2-nuit-relachee-trop-tot", + "t": "2026-09-03T03:00:00+02:00", + "certain": true, + "titre": "03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30)", + "attendu": "SIGNALER : SOC sous le requis alors que la session est marquee terminee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "sous", + "en dessous", + "inferieur", + "manque", + "deficit", + "insuffisant" + ], + [ + "terminee", + "done", + "fini", + "relach", + "session" + ] + ], + "s": { + "soc_percent": "45", + "battery_current_a": "2", + "house_ac_power_w": "700", + "grid_state": "on", + "acin1_available": "1", + "evcs_vehicle_connected": "on", + "evcs_surplus_state": "night_session_done_idle", + "evcs_source_mode": "Réseau HC autorisé", + "night_target_soc_actual": "50.4", + "tomorrow_kwh": "33.9", + "balance_required_soc": "50.4", + "balance_required_soc_prudent": "57", + "balance_energy_to_cover_kwh": "4.3", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1" + }, + "passages": [ + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (consommation maison), laissant un excédent nul. La batterie ne peut donc pas se recharger sur le réseau malgré le déficit identifié par le bilan.", + "piste": "Vérifier pourquoi l'automatisation ou le script n'a pas augmenté la consigne de puissance réseau pour permettre la recharge nocturne (HC) nécessaire au bilan.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que le bilan identifie un besoin de 1.1 kWh via le réseau.", + "piste": "Vérifier pourquoi la consigne réseau n'est pas augmentée pour couvrir le déficit identifié par le bilan (recharge nocturne).", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et que le bilan identifie un besoin de recharge de 1.1 kWh.", + "piste": "Vérifier pourquoi le contrôleur n'a pas chargé via le réseau pendant les heures creuses ou si la consigne de puissance réseau a été mal ajustée pour permettre cette recharge nocturne.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne réseau est fixée à 700 W (égale à la charge maison), ce qui empêche toute recharge de la batterie alors que le bilan identifie un besoin de 1.1 kWh via le réseau.", + "piste": "Vérifier pourquoi la consigne réseau n'est pas augmentée pour couvrir le déficit identifié par le bilan (1.1 kWh) malgré la présence du contacteur et l'autorisation HC.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau présent. Batterie 45% (cible 50.4%). Manque 1.1 kWh pour atteindre la cible avant le croisement à 9h.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est sous la cible de sécurité matinale alors que le réseau est disponible et que le bilan identifie un besoin de recharge de 1.1 kWh.", + "piste": "Vérifier pourquoi le contrôleur n'a pas chargé via le réseau pendant les heures creuses ou si la consigne de puissance réseau a été limitée à tort.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + } + ] + }, + { + "id": "3-nuit-couverte-ne-rien-faire", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis", + "attendu": "NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "70", + "battery_current_a": "-12", + "house_ac_power_w": "612", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "59.1", + "tomorrow_kwh": "75.2", + "balance_required_soc": "59.1", + "balance_required_soc_prudent": "66.2", + "balance_energy_to_cover_kwh": "3.13", + "balance_grid_needed": "off" + }, + "passages": [ + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau absent. Consigne réseau 700W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + }, + { + "constat": "Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Samedi 04:00, nuit. Batterie 70% (-12A), maison 612W. Bilan demande 59.1% pour 09h. Réseau absent. Consigne réseau 700W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, batterie 70% (-12A), reseau absent. Bilan coherent : cible 59.1% pour couvrir 3.13 kWh jusqu'a 9h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "4-hiver-nuit-longue", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h", + "attendu": "OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "88", + "balance_required_soc_prudent": "97", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "5.1", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "8.2" + }, + "passages": [ + { + "constat": "Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88-97 % et le réseau, mais le contacteur est ouvert.", + "gravite": "haute", + "ce_qui_cloche": "Le système refuse de charger sur le réseau malgré un déficit critique identifié par le bilan. La cible matinale de 85 % est inatteignable sans réseau, condamnant la maison à manquer d'énergie au petit-déjeuner.", + "piste": "Vérifier pourquoi le contacteur reste ouvert alors que le bilan indique 'réseau nécessaire'. Suspecter un conflit entre l'automate EVCS Surplus Controller V2.6 ou un script qui verrouille l'hystérésis contre la logique du bilan.", + "confidence": 0.95 + }, + { + "constat": "Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88-97 % et le réseau, mais ce dernier est coupé.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur réseau est ouvert alors que le bilan identifie un manque de 5.1 kWh nécessitant l'EDF pour éviter la panne nocturne. La batterie ne peut pas couvrir seule le déficit.", + "piste": "Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan. Si c'est volontaire (mode off-grid), il faut réduire drastiquement la consommation ou accepter la coupure avant 11h.", + "confidence": 0.95 + }, + { + "constat": "Deficit nocturne de 9.4 kWh a couvrir avant 11h. SOC actuel 55% (insuffisant vs cible 88%). Reseau absent, batterie decharge (-18A).", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est en ile a baton avec un deficit majeur. Le reseau est juge necessaire mais le contacteur reste ouvert. La marge de securite est erodee.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas ferme pour charger la batterie (regle hysteresis ou EVCS bloque ?). Risque d'atteinte du plancher 22% avant l'aube.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 55 % (-18 A) face a un besoin de 9.4 kWh (SOC cible 88-97 %). Reseau absent, deficit nocturne imminent.", + "gravite": "haute", + "ce_qui_cloche": "Le bilan exige le reseau (5.1 kWh) mais le contacteur est ouvert. La batterie ne peut pas couvrir la nuit sans toucher au plancher ou echouer.", + "piste": "Verifier pourquoi le contacteur reste ferme alors que le systeme est en autonomie et que le bilan signale un manque critique de stockage pour la nuit.", + "confidence": 0.95 + }, + { + "constat": "Batterie à 55 % (décharge -18 A) face à un besoin de 9.4 kWh jusqu'à 11h. Le bilan exige 88-97 % et le réseau, mais ce dernier est coupé.", + "gravite": "haute", + "ce_qui_cloche": "Incohérence critique : le contacteur réseau est ouvert alors que le bilan identifie un manque de 5.1 kWh nécessitant l'EDF pour éviter la panne nocturne.", + "piste": "Vérifier pourquoi le contacteur reste ouvert malgré la demande du bilan. Suspecter un verrou hysteresis ou un script qui empêche la bascule vers le réseau.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "5-soir-deficit-ne-pas-demarrer", + "t": "2026-09-03T19:44:00+02:00", + "certain": true, + "titre": "03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W)", + "attendu": "CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "-12.2", + "pv_power_w": "758", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "1202", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demande 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que la marge de decharge restante (88 A) est insuffisante pour couvrir les 11.66 kWh requis par le bilan sans toucher au plancher de securite.", + "piste": "Verifier pourquoi le contacteur reste ouvert malgre le 'reseau juge necessaire : OUI' dans le bilan. Si le reseau ne peut pas fermer, la batterie va se vider sous le plancher de 22 % avant l'aube.", + "confidence": 0.95 + }, + { + "constat": "Deficit reel de 444 W, reseau absent. Le bilan exige 99.7 % pour demain mais le parc est a 12 % de sa limite de charge (88 A restants).", + "gravite": "haute", + "ce_qui_cloche": "Le systeme est en mode 'reseau absent' alors que le bilan indique un besoin critique de stockage (manque de 6.8 kWh) et une cible de 99.7 %. La marge de decharge restante (88 A) approche la limite declaree du parc (100 A), ce qui constitue un risque de protection materielle ou de saturation imminente si la charge continue sans gestion.", + "piste": "Verifier pourquoi le contacteur reseau est ouvert alors que le bilan juge le reseau necessaire (ou au moins utile pour eviter la saturation batterie). Investiguer l'ecrivain 'Battery / Grid Hysteresis Fix V1' ou les automations qui maintiennent le contacteur ferme malgre le deficit et la proximite de la limite de charge du parc.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (-12.2 A), deficit solaire de -444 W, reseau absent. Le bilan demande 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que la marge de decharge est faible (88A). La cible SOC de 35% est incoherente avec le besoin de 99.7% identifie par le bilan.", + "piste": "Verifier pourquoi le contacteur reste ouvert pendant un deficit nocturnal prevu de 2 kWh. Le controleur EVCS est a l'arret, mais la batterie doit couvrir 11.66 kWh d'ici 09h.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 94 % (-12.2 A), reseau absent, excedent solaire negatif (-444 W). Le bilan demande 99.7 % pour demain matin.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme est en deficit reel et isole du reseau alors que le SOC (94 %) est inferieur au besoin calcule (99.7 %). La marge de decharge restante (88 A) est proche de la limite declaree (100 A), ce qui risque de declencher une protection ou un bridage inopine.", + "piste": "Verifier pourquoi le contacteur reseau reste ouvert alors que le bilan juge le reseau necessaire. Si le reseau doit rester coupé, accepter le risque de plancher bas ; sinon, forcer la fermeture pour charger via EDF avant la nuit.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (-12.2 A) avec deficit solaire de -444 W. Le bilan exige 99.7 % pour le matin, mais la marge de charge est saturee (88 A restants).", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme ne peut pas atteindre la cible SOC necessaire (99.7 %) a cause de la limite physique du parc (80 % de la capacite declaree), rendant la prevision matinale inatteignable sans reseau.", + "piste": "Verifier si l'automatisation 'Battery / Grid Hysteresis Fix V1' permet de fermer le contacteur EDF pour charger les 5-6 kWh manquants avant que la batterie n'atteigne sa limite de protection.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "6-censure-demarrer", + "t": "2026-09-03T18:50:00+02:00", + "certain": true, + "titre": "03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee", + "attendu": "SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue", + "graviteAttendue": [ + "faible", + "moyenne" + ], + "s": { + "soc_percent": "94", + "battery_current_a": "0", + "pv_power_w": "769", + "pv_power_10m_avg_w": "800", + "house_ac_power_w": "755", + "evcs_vehicle_connected": "on", + "vehicle_selected": "VW", + "evcs_source_mode": "Potentiel solaire", + "evcs_surplus_state": "idle_wait_conditions", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "99.7", + "balance_required_soc_prudent": "100", + "balance_energy_to_cover_kwh": "11.66", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "4.9", + "tomorrow_kwh": "33.9" + }, + "passages": [ + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'excedent est perdu.", + "piste": "Verifier pourquoi le contacteur reste ouvert : le bilan juge le reseau necessaire (4.9 kWh) mais l'automatisation ne le ferme pas, ou la consigne de puissance est mal interpretee par le hysteresis.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee car la batterie est pleine et le reseau est deconnecte. L'excedent reel est masque par la censure des chargeurs.", + "piste": "Verifier pourquoi le contacteur reste ouvert alors que le bilan identifie un besoin de reseau (4.9 kWh) et une production bridee.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie gratuite est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'importation ? Si le reseau est disponible, il faut le connecter pour absorber l'excedent ou charger le vehicule si pertinent.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert avec un excedent positif (bien que censure). Si le reseau etait disponible, il aurait pu absorber l'excedent ou charger la voiture gratuitement.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 94 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Le bilan demande 100 % pour demain mais le parc est sature.", + "gravite": "moyenne", + "ce_qui_cloche": "Production solaire refusee (bridee) alors que la batterie ne peut plus stocker et que le reseau est deconnecte. L'energie est perdue.", + "piste": "Verifier pourquoi le contacteur reste ouvert : la consigne de 700 W ou un verrou hysteresis bloque-t-il l'importation pour eviter la surcharge du parc ?", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "7-boost-evince-le-solaire", + "t": "2026-09-11T17:02:00+02:00", + "certain": true, + "titre": "11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W", + "attendu": "SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne", + "graviteAttendue": [ + "moyenne", + "haute" + ], + "s": { + "soc_percent": "96", + "battery_current_a": "0", + "pv_power_w": "121", + "pv_power_10m_avg_w": "150", + "house_ac_power_w": "7695", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "8260", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "plafond_edf_on_a": "28", + "balance_pv_censored": "on", + "balance_censor_reason": "production_bridee", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "8.4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voiture charge a 28 A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est branche, creant un conflit d'absorption.", + "piste": "Verifier si le Surplus Controller autorise la charge EVCS a absorber la production refusee par les chargeurs solaires au lieu de laisser le reseau prendre la main.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 8260 W alors que le bilan ne demande que 1.4 kWh, evitant du solaire.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 8260 W est inutile et contre-productive : elle remplace la production PV par l'EDF, tandis que la batterie est pleine et n'a pas besoin d'etre chargee.", + "piste": "Verifier pourquoi la strategie 'force_grid_now' maintient une telle puissance alors que le surplus solaire existe et que la batterie est au max.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 8260 W alors que le bilan ne demande que 1.4 kWh, evitant du solaire.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 8260 W est inutile et contre-productive : elle remplace la production PV bridee par du courant EDF payant, sans necessite de charge batterie.", + "piste": "Verifier pourquoi la strategie 'force_grid_now' maintient une telle puissance ; reduire la consigne pour laisser passer l'excedent solaire ou charger le vehicule si pertinent.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voiture charge a 28 A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est branche, creant un conflit d'absorption.", + "piste": "Verifier si le Surplus Controller autorise la charge EV sur l'excedent reel ou si la consigne reseau doit etre reduite pour laisser passer le PV.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) mais excedent negatif censure. Consigne reseau 8260 W evince le solaire. Voiture charge a 28 A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau (8260 W) force l'importation alors que la production PV est bridee et qu'un vehicule est branche, creant un conflit d'absorption.", + "piste": "Verifier si le Surplus Controller autorise la charge EV sur l'excedent reel ou si la consigne reseau doit etre reduite pour laisser passer le PV.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "8-voiture-pleine-ne-pas-reessayer", + "t": "2026-09-07T14:28:00+02:00", + "certain": true, + "titre": "07/09 14:28 — borne annonce charge terminee, vehicule branche immobile", + "attendu": "CALME : l etat collant fait son travail, aucune relance", + "graviteAttendue": [ + "aucune", + "faible" + ], + "s": { + "soc_percent": "97", + "battery_current_a": "1", + "pv_power_w": "2114", + "pv_power_10m_avg_w": "2000", + "house_ac_power_w": "1965", + "evcs_vehicle_connected": "on", + "evcs_current_a": "0", + "vehicle_selected": "JEEP", + "evcs_surplus_state": "day_vehicle_full_idle", + "evcs_source_mode": "Bloqué", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "58", + "balance_required_soc_prudent": "66", + "balance_energy_to_cover_kwh": "4.6", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "12", + "tomorrow_kwh": "30" + }, + "passages": [ + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que la voiture ne consomme plus rien.", + "piste": "Verifier pourquoi la Jeep est bloquee en 'plein' alors qu'elle est branchee : si elle peut encore absorber quelques kWh, debloquer la charge pour eviter la perte de production.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. Batterie a 97% (plafond). Excedent reel masque par la censure.", + "gravite": "moyenne", + "ce_qui_cloche": "La production solaire est refusee car le puits de stockage est sature et le vehicule ne consomme plus. L'energie gratuite est perdue.", + "piste": "Verifier si la consigne de puissance reseau (700 W) ou un seuil de SOC bloque l'injection, mais ici c'est une saturation physique du parc.", + "confidence": 0.95 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite au lieu de la stocker ou de la consommer.", + "piste": "Verifier pourquoi la voiture ne prend pas le surplus (pleine ?) et si la consigne reseau (700 W) n'est pas trop basse pour absorber ce qu'il reste apres bridage.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et vehicule plein. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bilan identifie un manque de stockage de 6,8 kWh pour la nuit.", + "piste": "Verifier pourquoi le vehicule n'absorbe pas le surplus (memoire 'plein' ou consigne bornee). Considerer une strategie de charge batterie plus agressive si le SOC permet, ou accepter la perte si le parc est protege.", + "confidence": 0.9 + }, + { + "constat": "PV bridee (6/6) avec reseau absent et voiture pleine. La ressource solaire est refusee faute de puits, la batterie est a 97 %.", + "gravite": "moyenne", + "ce_qui_cloche": "L'excedent solaire reel est masque par le bridage des chargeurs. Le systeme gaspille l'energie gratuite alors que le bilan identifie un manque de stockage de 6.8 kWh pour la nuit.", + "piste": "Verifier pourquoi la voiture n'absorbe pas le surplus (pleine ou consigne bloquee) et si la consigne reseau de 700 W permettrait d'eviter ce gaspillage sans fragiliser le parc.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + }, + { + "g": false, + "k": null + } + ] + }, + { + "id": "9-pointe-cuisson-proteger-le-parc", + "t": "2026-09-05T20:40:00+02:00", + "certain": true, + "titre": "05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A", + "attendu": "SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "limite", + "plafond", + "maximum", + "97", + "capacite", + "au bord", + "saturation" + ] + ], + "s": { + "soc_percent": "79", + "battery_current_a": "-97.4", + "pv_power_w": "320", + "pv_power_10m_avg_w": "500", + "house_ac_power_w": "4944", + "grid_state": "off", + "acin1_available": "0", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.1", + "balance_grid_needed": "on", + "tomorrow_kwh": "32" + }, + "passages": [ + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et fragilisant le materiel.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier si un ecrivain non-proprietaire (EVCS ou script) verrouille le contacteur.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et fragilisant le materiel.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier si un ecrivain externe bloque la fermeture ou si la consigne de puissance est mal interpretee.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite absolue de decharge (-97.4 A) pendant que le contacteur reste ouvert, empechant l'absorption du reseau disponible et fragilisant les cellules.", + "piste": "Verifier pourquoi le contacteur EDF n'a pas bascule pour fermer le circuit (regle 'reseau juge necessaire : OUI'). Identifier l'ecrivain qui bloque la fermeture (Battery/Grid Hysteresis ou EVCS).", + "confidence": 0.95 + }, + { + "constat": "Parc a -97,4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le contacteur reseau est ouvert (reseau absent) empechant la recharge du parc qui tourne a sa limite de decharge (-97,4 A). Le bilan indique 'reseau juge necessaire : OUI'.", + "piste": "Verifier pourquoi le contacteur reste ouvert. Probable conflit entre Battery/Grid Hysteresis Fix V1 et EVCS Surplus Controller V2.6 ou un seuil fige (SOC 80%) qui bloque la fermeture du contacteur malgre le deficit.", + "confidence": 0.95 + }, + { + "constat": "Parc a -97.4 A (limite 100 A), marge de 3 A. Reseau absent alors que le bilan juge le reseau necessaire.", + "gravite": "haute", + "ce_qui_cloche": "Le parc opere a la limite declaree de decharge (-97.4 A / -100 A) pendant que le contacteur reseau reste ouvert, empechant l'absorption du deficit et fragilisant le materiel.", + "piste": "Verifier pourquoi le contacteur reseau n'a pas ferme pour absorber le deficit identifie par le bilan ; inspecter les ecrivains du contacteur (Battery/Grid Hysteresis ou EVCS).", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "10-nuage-sur-charge-28a", + "t": "2026-09-11T18:00:00+02:00", + "certain": true, + "titre": "11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W", + "attendu": "SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "nuage", + "marge", + "brutal", + "chute", + "passage", + "si le solaire" + ] + ], + "s": { + "soc_percent": "96", + "battery_current_a": "-0.7", + "pv_power_w": "6058", + "pv_power_10m_avg_w": "5500", + "house_ac_power_w": "6845", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "28", + "vehicle_selected": "JEEP", + "user_strategy": "force_grid_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "1281", + "evcs_source_mode": "Réseau forcé", + "evcs_surplus_state": "charging_hold_grid", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "4", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W. La voiture consomme 6440 W, masquant la ressource gratuite.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie 'force_grid_now' remplace du solaire gratuit par du reseau payant pour maintenir le SOC au plafond, tandis que la marge de decharge est quasi nulle (1 %).", + "piste": "Verifier pourquoi le controleur force le reseau au lieu d'utiliser l'excedent PV pour la voiture ou de laisser la batterie se stabiliser sans surcharge inutile.", + "confidence": 0.9 + }, + { + "constat": "Batterie a 96 % (plafond), reseau consomme 1281 W inutilement alors que le solaire est disponible et non bride.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau force l'importation d'energie qui evince la production PV locale, gaspillant des kWh gratuits.", + "piste": "Verifier pourquoi la consigne reseau n'est pas mise a zero ou reduite pour laisser passer le surplus solaire vers la voiture ou la batterie.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W. La voiture consomme 6440 W, masquant la ressource gratuite.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie 'force_grid_now' remplace du solaire gratuit par du reseau payant pour maintenir un SOC inutilement haut, tandis que le vehicule absorbe deja une grosse part de la production.", + "piste": "Verifier pourquoi le controleur force le reseau au lieu d'utiliser l'excedent solaire pour la voiture ou la batterie (deja pleine). Le surplus controller devrait prioriser la charge EV sur le reseau.", + "confidence": 0.9 + }, + { + "erreur": "JSON non termine" + }, + { + "constat": "Batterie a 96 % (plafond), reseau force a 1281 W alors que l'excedent solaire est de +5653 W. La voiture consomme 6440 W, absorbant la production.", + "gravite": "moyenne", + "ce_qui_cloche": "La strategie 'force_grid_now' evince le solaire gratuit au profit du reseau payant pour maintenir un SOC inutilement haut, tandis que la marge de decharge est quasi nulle (1%).", + "piste": "Verifier pourquoi le controleur force le reseau alors que le bilan indique un excedent positif et que la batterie est pleine. Le surplus controller devrait prioriser la charge EV sur le reseau.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": false + }, + { + "g": true, + "k": false + }, + { + "g": false, + "k": false + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "11-batterie-pleine-midi", + "t": "2026-09-11T12:00:00+02:00", + "certain": false, + "titre": "11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche", + "attendu": "OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ?", + "graviteAttendue": null, + "s": { + "soc_percent": "98", + "battery_current_a": "2.2", + "pv_power_w": "810", + "pv_power_10m_avg_w": "900", + "house_ac_power_w": "702", + "mppt_operation_modes": "voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited,voltage_current_limited", + "balance_pv_censored": "on", + "balance_censor_reason": "batterie_pleine_sans_puits", + "balance_required_soc": "55", + "balance_required_soc_prudent": "63", + "balance_energy_to_cover_kwh": "4.1", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "balance_next_deficit_kwh": "4.1", + "balance_next_deficit_window": "(ce soir 20 h -> 09 h)", + "today_remaining_kwh": "45", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excedent solaire refuse.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excedent solaire refuse.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits. Bilan indique reseau inutile mais contacteur ouvert.", + "gravite": "moyenne", + "ce_qui_cloche": "Le systeme refuse le reseau alors que la production est perdue (bridee) et que la batterie est pleine. L'energie gratuite est gaspillee au lieu d'etre stockee ou utilisee.", + "piste": "Verifier pourquoi le contacteur reste ouvert avec un excedent solaire positif et une batterie pleine. Le controleur EVCS ou l'hysteresis bloque-t-il la fermeture ?", + "confidence": 0.9 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee car aucun puits, reseau absent. Bilan coherent : excedent solaire refuse.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 98 % (plafond), PV bridee (6/6 chargeurs), reseau absent. Surplus solaire refuse car aucun puits disponible.", + "gravite": "faible", + "ce_qui_cloche": "La production est bridee alors que la batterie est pleine et qu'aucun vehicule n'est branche. L'energie est perdue mais le systeme protege le parc correctement.", + "piste": "Verifier si l'absence de reseau est intentionnelle ou un defaut du contacteur, car le bilan indique 'reseau juge necessaire : non'.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "12-orage-annonce", + "t": "2026-09-12T15:30:00+02:00", + "certain": false, + "titre": "Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site", + "attendu": "OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ?", + "graviteAttendue": null, + "s": { + "soc_percent": "72", + "battery_current_a": "35", + "pv_power_w": "4200", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "900", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "balance_storm_level": "Orange", + "balance_storm_reserve_soc": "88", + "balance_required_soc": "55", + "balance_required_soc_prudent": "62", + "balance_energy_to_cover_kwh": "3.2", + "balance_grid_needed": "off", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "18", + "tomorrow_kwh": "40" + }, + "passages": [ + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 A vers un SOC de 72 %, cohérent avec la réserve orage conseillée de 88 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 A vers un SOC de 72 %, cohérent avec la réserve orage conseillée de 88 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé) avec excédent solaire de 3300 W. La batterie se charge à 35 A vers un SOC de 72 %, cohérent avec la réserve orage conseillée de 88 %.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé), PV 4.2 kW, excédent +3.3 kW, batterie en charge à 35 A, aucun véhicule branché.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Système autonome (réseau coupé). PV 4.2 kW > Maison 0.9 kW. Batterie charge à 35 A vers 72 %. Excédent solaire de 3.3 kW non absorbé.", + "gravite": "faible", + "ce_qui_cloche": "L'excédent solaire de 3.3 kW est perdu car aucun véhicule n'est branché et la batterie n'est pas au plafond. C'est une opportunité manquée mais sans incohérence technique ni oscillation.", + "piste": "Brancher un véhicule pour absorber l'excédent gratuit, ou accepter la perte si le SOC cible du soir est atteint rapidement.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "13-voiture-empruntee-echeance", + "t": "2026-09-11T17:00:00+02:00", + "certain": false, + "titre": "11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present", + "attendu": "OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ?", + "graviteAttendue": null, + "s": { + "soc_percent": "96", + "battery_current_a": "-10", + "pv_power_w": "4255", + "pv_power_10m_avg_w": "4000", + "house_ac_power_w": "4888", + "evcs_vehicle_connected": "on", + "evcs_charging": "on", + "evcs_current_a": "20", + "vehicle_selected": "JEEP", + "user_strategy": "force_charge_now", + "grid_state": "on", + "acin1_available": "1", + "grid_setpoint_w": "700", + "evcs_source_mode": "Solaire", + "evcs_surplus_state": "charging_hold_manual_local", + "mppt_operation_modes": "mppt_active,mppt_active,mppt_active,mppt_active,mppt_active,mppt_active", + "plafond_edf_on_a": "28", + "required_energy_kwh": "12", + "departure_time": "19:00", + "departure_priority_enabled": "on", + "balance_required_soc": "62", + "balance_required_soc_prudent": "70", + "balance_energy_to_cover_kwh": "5.2", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.4", + "balance_crossing_hour": "09 h", + "today_remaining_kwh": "6", + "tomorrow_kwh": "75.2" + }, + "passages": [ + { + "constat": "Batterie a 96% (plafond), PV brident 0, excedent solaire +3.9 kWc utilise par la voiture. Consigne reseau inutile car le bilan ne demande pas de charge.", + "gravite": "faible", + "ce_qui_cloche": "La consigne reseau de 700 W est active alors que le systeme est en force_charge_now et que l'excedent solaire couvre deja la demande. Cela risque d'evincer du solaire gratuit ou de creer des transitoires inutiles si le contacteur bascule.", + "piste": "Verifier pourquoi la consigne reseau n'est pas mise a zero ou desactivee quand la strategie force_charge_now est active avec un excedent positif. Le proprietaire Battery/Grid Hysteresis Fix V1 devrait probablement fermer le contacteur pour laisser le PV alimenter la maison/voiture sans passer par le reseau.", + "confidence": 0.85 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident, reseau consigne a 700 W inutile car excedent solaire positif.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 700 W evince du solaire gratuit alors que la batterie est pleine et qu'il reste +3967 W d'excedent.", + "piste": "Verifier pourquoi la consigne reseau n'est pas a 0 W ou si un ecrivain non-proprietaire force cette valeur.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96 % (plafond), PV brident la voiture (4.6 kW) et le reseau (0.7 kW). Excedent solaire positif mais non utilise.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 700 W evince du solaire gratuit alors que l'excedent est de +3967 W. Le parc est au plafond, empechant d'absorber ce surplus.", + "piste": "Verifier pourquoi la consigne reseau n'est pas a 0 W pour laisser le PV alimenter la voiture ou la maison sans passer par EDF.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96% (plafond), PV brident, voiture consomme 4.6 kW. Consigne reseau 700 W inutile car excedent solaire positif.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne de puissance reseau de 700 W force l'importation d'EDF alors que le bilan indique un excedent solaire de +3967 W et que la batterie est pleine. Cela evince la production gratuite.", + "piste": "Verifier pourquoi la consigne reseau n'est pas a 0 W ou negative pour absorber l'excedent, ou si le controleur EVCS ne gere pas correctement le surplus quand la batterie est au max.", + "confidence": 0.95 + }, + { + "constat": "Batterie a 96% (plafond), reseau consigne a 700W inutile car excedent solaire positif. Voiture chargee a 20A.", + "gravite": "moyenne", + "ce_qui_cloche": "La consigne reseau de 700W evince du solaire gratuit alors que l'excedent est de +3967W et la batterie pleine.", + "piste": "Verifier pourquoi le contacteur reste ferme/consigne haute avec un excedent solaire important et une batterie au plafond.", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4b-hiver-parc-12", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000)", + "attendu": "OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "52", + "balance_required_soc_prudent": "59", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "12", + "bms_max_discharge_current_a": "300", + "bms_max_charge_current_a": "300" + }, + "passages": [ + { + "constat": "Nuit, reseau absent. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% coherente avec hiver.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incohérente avec prévision 6.2 kWh.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC de 85% est irréaliste pour demain (prévision 6.2 kWh < besoin 9.4 kWh), mais le système fonctionne correctement en autonomie.", + "piste": "Vérifier si la consigne de 85% est figée dans un script ou l'EVCS et devrait être ajustée dynamiquement selon la prévision solaire.", + "confidence": 0.9 + }, + { + "constat": "Nuit, réseau coupé. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Cible matin 85% incohérente avec le déficit nocturne.", + "gravite": "faible", + "ce_qui_cloche": "La cible SOC de 85% est appliquée alors que le bilan identifie un besoin de 52-59% pour traverser la nuit. Le système ne charge pas (PV=0), donc la cible n'est pas atteinte mais n'est pas non plus violée activement.", + "piste": "Vérifier si la consigne de 85% est figée dans l'automate 'Battery / Grid Hysteresis Fix V1' ou si elle devrait être dynamique selon le bilan. Aucun risque immédiat car la marge de décharge est large (282A).", + "confidence": 0.9 + }, + { + "constat": "Nuit, reseau coupe. Batterie 55% (-18A) couvre la maison (1400W). Bilan demande 52-59%. Consigne reseau 700W inactive.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (-18 A) couvre la maison (1400 W). Bilan demande 52-59 % pour demain. Consigne reseau 700 W inopérante.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "4c-hiver-parc-16", + "t": "2026-12-15T23:30:00+01:00", + "certain": false, + "titre": "HIVER avec 16 equivalents (vieux modules repares)", + "attendu": "OUVERT : et avec 16 equivalents ?", + "graviteAttendue": null, + "s": { + "soc_percent": "55", + "battery_current_a": "-18", + "house_ac_power_w": "1400", + "grid_state": "off", + "acin1_available": "0", + "night_target_soc_actual": "85", + "tomorrow_kwh": "6.2", + "balance_required_soc": "44", + "balance_required_soc_prudent": "50", + "balance_energy_to_cover_kwh": "9.4", + "balance_grid_needed": "off", + "balance_grid_energy_needed_kwh": "0", + "balance_crossing_hour": "11 h", + "balance_storage_shortfall_kwh": "0", + "modules_en_service": "16", + "bms_max_discharge_current_a": "400", + "bms_max_charge_current_a": "400" + }, + "passages": [ + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante sans AC-IN.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan : 9.4 kWh à couvrir avant 11h, SOC requis 44 %. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit d'hiver, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan requis : 50 % pour demain 11h. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit, reseau absent. Batterie 55 % (SOC) avec courant -18 A. Bilan demande 44-50 % pour demain. Consigne reseau 700 W inopérante sans AC-IN.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Nuit hivernale, réseau coupé. Batterie 55 % (décharge -18 A) couvre la maison (1400 W). Bilan requis : 44-50 %. Marge parc confortable.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + }, + { + "g": null, + "k": null + } + ] + }, + { + "id": "15-oscillation-contacteur", + "t": "2026-09-12T06:36:00+02:00", + "certain": true, + "titre": "INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes", + "attendu": "SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains", + "graviteAttendue": [ + "haute" + ], + "motsCles": [ + [ + "oscill", + "bascul", + "va-et-vient", + "aller-retour", + "repet", + "six fois", + "6 fois", + "cycl" + ], + [ + "conflit", + "deux", + "ecriv", + "contradict", + "se battent", + "concurren", + "automatisation", + "hysteresis" + ] + ], + "s": { + "soc_percent": "35", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "1.56", + "balance_grid_needed": "on", + "balance_grid_energy_needed_kwh": "1.1", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "06:35:06 Contacteur EDF : off -> on|06:34:02 Contacteur EDF : on -> off|06:30:49 Contacteur EDF : off -> on|06:29:44 Contacteur EDF : on -> off|06:26:31 Contacteur EDF : off -> on|06:25:27 Contacteur EDF : on -> off" + }, + "passages": [ + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement perturbee par un ecrivain externe (EVCS Surplus Controller ou scripts). Chaque bascule coute 50-150 Wh et use le relais.", + "piste": "Verifier les logs du 'Battery / Grid Hysteresis Fix V1' pour identifier quel ecrivain non-proprietaire force la commutation. Stabiliser la consigne de puissance reseau ou augmenter la hysteresis temporelle.", + "confidence": 0.98 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis par le bilan pour couvrir le deficit matinal.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur contacteur, coutant des transitoires et usant le relais, sans justification par le bilan stable.", + "piste": "Verifier les ecrivains du contacteur (Battery/Grid Hysteresis Fix V1 vs EVCS Surplus Controller) pour identifier la source de l'instabilite.", + "confidence": 0.98 + }, + { + "constat": "Contacteur EDF bascule 6 fois en 10 min (06:25-06:35) alors que le reseau est requis pour couvrir le deficit de 1.56 kWh avant 09h.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee du contacteur reseau, coutant 300 a 900 Wh de transitoires et usant le relais, sans justification par le bilan qui demande une alimentation stable.", + "piste": "Verifier l'ecrivain 'EVCS Surplus Controller V2.6' ou un script qui force la commutation, car le proprietaire 'Battery / Grid Hysteresis Fix V1' devrait maintenir le contacteur ferme selon le besoin de reseau identifie.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau' (proprietaire Battery / Grid Hysteresis Fix V1), probablement perturbee par un ecrivain externe (EVCS Surplus Controller ou scripts). Chaque bascule coute 50-150 Wh et use le relais.", + "piste": "Verifier les logs du 'Battery / Grid Hysteresis Fix V1' pour identifier quel ecrivain non-proprietaire force la commutation. Stabiliser la consigne de puissance reseau ou ajouter une hysteresis temporelle plus large.", + "confidence": 0.98 + }, + { + "constat": "Le contacteur EDF bascule 6 fois en 10 minutes (06:25-06:35) alors que le reseau est present et la batterie charge a 20 A.", + "gravite": "haute", + "ce_qui_cloche": "Oscillation repetee de l'actionneur 'Contacteur reseau'. Chaque bascule coute 50-150 Wh et use le relais. Le proprietaire est Battery/Grid Hysteresis Fix V1, mais EVCS Surplus Controller ou scripts interviennent probablement.", + "piste": "Identifier quel ecrivain non-proprietaire force les basculements (probablement EVCS Surplus Controller V2.6 ou un script) et stabiliser la logique d'hysteresis pour eviter l'usure du contacteur.", + "confidence": 0.98 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + }, + { + "id": "16-systeme-calme", + "t": "2026-09-12T07:00:00+02:00", + "certain": true, + "titre": "CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes", + "attendu": "NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes", + "graviteAttendue": [ + "aucune" + ], + "s": { + "soc_percent": "42", + "battery_current_a": "20", + "pv_power_w": "0", + "house_ac_power_w": "950", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "42.8", + "balance_required_soc": "42.8", + "balance_required_soc_prudent": "49", + "balance_energy_to_cover_kwh": "0.9", + "balance_grid_needed": "on", + "balance_crossing_hour": "09 h", + "grid_setpoint_w": "5759", + "tomorrow_kwh": "75.2", + "evenements_recents": "05:02:51 Contacteur EDF : off -> on|05:02:51 Reprise reseau nuit : off -> on" + }, + "passages": [ + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Le systeme est en attente du soleil pour la session de charge.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le reseau jusqu'au croisement a 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible matin), reseau ferme, PV nul. Bilan coherent : deficit couvert par le reseau jusqu'au croisement de 09h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie avant le croisement a 09 h.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + }, + { + "constat": "Batterie a 42 % (cible 42.8 %), reseau ferme, deficit de 950 W couvert par la batterie. Bilan coherent.", + "gravite": "aucune", + "ce_qui_cloche": "", + "piste": "", + "confidence": 0.95 + } + ], + "notes": [ + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + }, + { + "g": true, + "k": null + } + ] + }, + { + "id": "14-bilan-indisponible", + "t": "2026-09-12T04:00:00+02:00", + "certain": true, + "titre": "ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE", + "attendu": "SIGNALER en le disant : le bilan est degrade, donc prudence assumee", + "graviteAttendue": [ + "faible", + "moyenne", + "haute" + ], + "motsCles": [ + [ + "degrad", + "indisponible", + "sans bilan", + "pas de bilan", + "inconnu", + "unknown" + ] + ], + "s": { + "soc_percent": "20", + "battery_current_a": "0", + "house_ac_power_w": "612", + "grid_state": "on", + "acin1_available": "1", + "night_target_soc_actual": "35", + "tomorrow_kwh": "75.2", + "balance_status": "degrade", + "balance_required_soc": "unknown", + "balance_energy_to_cover_kwh": "unknown" + }, + "passages": [ + { + "constat": "SOC 20% (plancher), reseau ferme, consigne 700W laisse 88W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le reseau est disponible et qu'il reste une petite marge de recharge (88W). Sans bilan, on ne sait pas si c'est optimal ou un risque de coupure matinale.", + "piste": "Verifier pourquoi la consigne reseau n'a pas permis de recharger plus haut avant l'entree dans les heures creuses ou la nuit. Surveiller la remontee du SOC.", + "confidence": 0.6 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une petite marge de recharge (88 W). Le systeme ne recharge pas activement la batterie depuis le reseau pour sortir du plancher, ce qui expose a un deficit le matin si la production PV tarde.", + "piste": "Verifier pourquoi la recharge reseau n'est pas activee ou augmente pour sortir du SOC 20 %. La consigne de 700 W est peut-etre trop restrictive pour permettre une recharge significative de la batterie pendant les heures creuses ou la nuit.", + "confidence": 0.9 + }, + { + "constat": "SOC 20 % (plancher), reseau ferme, consigne 700 W laisse 88 W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20 %) alors que le reseau est disponible et qu'il reste une petite marge de recharge (88 W). Sans bilan, on ne sait pas si la cible de 35 % sera atteinte avant le pic du matin.", + "piste": "Verifier pourquoi la recharge n'est pas plus agressive (consigne trop basse ?) et confirmer l'indisponibilite du bilan energetique.", + "confidence": 0.8 + }, + { + "constat": "SOC 20% (plancher), PV 0W, deficit -612W. Consigne reseau 700W laisse 88W de marge pour recharge. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que la marge de recharge reseau n'est que de 88W. Le systeme ne peut pas se recharger efficacement avant le matin, risquant un appel reseau plein tarif a l'aube.", + "piste": "Verifier si la consigne de puissance reseau (700W) est trop restrictive pour les heures creuses ou la nuit. Considerer une augmentation temporaire de la consigne pour permettre a la batterie de sortir du plancher avant le pic matinal.", + "confidence": 0.9 + }, + { + "constat": "SOC 20% (plancher), PV 0W, reseau ferme mais consigne 700W limite la recharge a 88W. Bilan indisponible.", + "gravite": "moyenne", + "ce_qui_cloche": "La batterie est au plancher de securite (20%) alors que le reseau est disponible et que la cible matinale est de 35%. La marge de recharge residuelle (88W) est trop faible pour combler l'ecart avant le lever du soleil, risquant un deficit matinal paye au plein tarif.", + "piste": "Verifier pourquoi la consigne reseau est bloquee a 700W pendant les heures creuses/nuitees. Si le systeme permet d'augmenter cette consigne sans fragiliser le parc (limite 100A), il faudrait laisser le reseau charger la batterie plus vite pour atteindre les 35% avant l'aube.", + "confidence": 0.9 + } + ], + "notes": [ + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + }, + { + "g": true, + "k": true + } + ] + } +] \ No newline at end of file diff --git a/src/advisor/BUILD_PROMPT.js b/src/advisor/BUILD_PROMPT.js index 5896c8b..d778432 100644 --- a/src/advisor/BUILD_PROMPT.js +++ b/src/advisor/BUILD_PROMPT.js @@ -107,6 +107,14 @@ const ctx = { // Meme principe que le bilan : on lui donne la grandeur, pas les ingredients. const maisonHorsVoitureW = Math.max(0, ctx.houseW - (ctx.evcsCharging ? ctx.evcsCurrentA * 230 : 0)); const excedentSolaireW = Math.round(ctx.pvW - maisonHorsVoitureW); +const margeRechargeW = ctx.gridOn && Number.isFinite(ctx.gridSetpointW) + ? Math.round(ctx.gridSetpointW - maisonHorsVoitureW) + : null; +// Le bilan dit lui-meme si la batterie doit monter. A defaut de bilan +// exploitable on ne tranche pas, et la marge reste un simple constat. +const batterieDoitMonter = Number.isFinite(ctx.balanceRequiredSoc) && Number.isFinite(ctx.soc) + ? ctx.soc < ctx.balanceRequiredSoc + : null; const margeDechargeA = Number.isFinite(ctx.bmsMaxDischargeA) && Number.isFinite(ctx.batteryCurrentA) ? Math.round(ctx.bmsMaxDischargeA - Math.abs(Math.min(0, ctx.batteryCurrentA))) : null; @@ -213,14 +221,46 @@ const systemPrompt = [ ' evince la production — 5,6 kW de solaire remplaces par du reseau.', '- haute : un actionneur bascule de facon repetee, OU le materiel est sollicite', ' pres de ses limites, OU un automate defait ce qu un autre vient de', - ' faire. Exemple reel : le contacteur reseau qui bascule six fois en', - ' dix minutes le 12/09 — chaque bascule coute 50 a 150 Wh et use le', - ' relais, et aucun automate ne le voyait.', + ' faire. Deux exemples reels : le contacteur reseau qui bascule six', + ' fois en dix minutes le 12/09 — chaque bascule coute 50 a 150 Wh et', + ' use le relais, et aucun automate ne le voyait ; et le 05/09 a 20:40,', + ' le parc a -97,4 A pour une limite declaree de 100 A, soit 3 A de', + ' marge, pendant que le reseau restait disponible et inutilise.', 'UNE OSCILLATION EST TOUJOURS DE GRAVITE HAUTE, meme si chaque bascule prise', 'isolement parait anodine : c est la repetition qui fait le degat, et c est', 'precisement ce qu aucune regle locale ne peut voir.', ].join('\n'); +// Les etats du controleur sont des identifiants internes. Le conseiller n'a +// aucune raison de savoir que `day_vehicle_full_idle` veut dire « le vehicule +// est plein, il n'absorbera plus rien » — et sans le savoir il signale comme +// une anomalie un systeme qui a raison. +const ETATS = { + vehicle_not_connected: 'aucun vehicule branche', + idle_wait_conditions: 'a l arret, conditions de demarrage non reunies', + idle_wait_source: 'a l arret, en attente d une source', + day_vehicle_full_idle: 'vehicule PLEIN, il n absorbera plus rien (memoire du jour)', + night_recovery_done_idle: 'charge de nuit terminee ET batterie a la cible', + night_session_done_idle: 'charge de nuit terminee, batterie encore sous la cible', + departure_done_idle: 'charge avant depart terminee', + vehicle_full_or_paused: 'le vehicule ne demande plus de courant', + start_min_current: 'demarrage au courant minimal', + start_grid_hc_min_current: 'demarrage sur le reseau en heures creuses', + start_manual_local_min_current: 'demarrage manuel au courant minimal', + charging_hold_grid: 'en charge sur le reseau, consigne tenue', + charging_hold_manual_local: 'en charge, consigne manuelle', + charging_hold_cloud_tolerance: 'en charge, tolerance nuage en cours', + charging_step_up_battery: 'en charge, courant en hausse sur le solaire', + charging_step_up_grid_hc: 'en charge, courant en hausse sur le reseau', + charging_step_down_battery: 'en charge, courant en baisse', + charging_step_down_system_cap: 'en charge, courant ramene au plafond du systeme', + battery_current_hard_stop: 'ARRET : la batterie se dechargeait trop fort', + stop_conditions_lost: 'ARRET : conditions de maintien perdues', + stop_source_lost: 'ARRET : la source a disparu', + hold_min_run: 'maintenu le temps de la duree minimale de marche', +}; +const etatLisible = (e) => ETATS[e] ? `${ETATS[e]} (${e})` : e; + function nombre(v, unite, defaut) { return Number.isFinite(v) ? `${v}${unite}` : (defaut || 'inconnu'); } @@ -247,13 +287,13 @@ const userPrompt = [ `- PV : ${Math.round(ctx.pvW)} W instantane, ${Math.round(ctx.pvAvg10mW)} W sur 10 min`, `- Chargeurs solaires : ${ctx.mppt.aFond}/${ctx.mppt.total} a pleine puissance, ${ctx.mppt.brides} qui se BRIDENT`, `- Maison : ${Math.round(ctx.houseW)} W, dont voiture ${ctx.evcsCharging ? Math.round(ctx.evcsCurrentA * 230) : 0} W`, - `- EXCEDENT SOLAIRE (production moins maison hors voiture) : ${excedentSolaireW} W`, + `- EXCEDENT SOLAIRE (production moins maison hors voiture) : ${excedentSolaireW > 0 ? `+${excedentSolaireW} W, il RESTE du solaire` : excedentSolaireW < 0 ? `${excedentSolaireW} W` : '0 W, exactement a l equilibre'}${ctx.mppt.brides > 0 ? ` — ATTENTION, ce chiffre est CENSURE : ${ctx.mppt.brides} chargeurs se retiennent, la ressource reelle est PLUS HAUTE${excedentSolaireW < 0 ? ' et ce chiffre negatif ne prouve PAS qu il manque du soleil' : ''}` : excedentSolaireW < 0 ? ', DEFICIT reel : la batterie porte deja la maison' : ''}`, `- MARGE DE DECHARGE du parc : ${margeDechargeA === null ? 'inconnue' : `${margeDechargeA} A restants`}${partDuPlafond === null ? '' : ` — la batterie est a ${partDuPlafond} % de son plafond`}`, - `- Contacteur EDF : ${ctx.gridOn ? 'FERME' : 'ouvert'} (AC-IN ${ctx.acinAvailable ? 'present' : 'absent'})`, - `- Consigne de puissance reseau : ${nombre(ctx.gridSetpointW, ' W')}`, + `- Reseau EDF : ${ctx.gridOn ? 'PRESENT, il peut alimenter la maison' : 'ABSENT, la maison vit sur batterie et solaire'} (contacteur ${ctx.gridOn ? 'ferme' : 'ouvert'}, AC-IN ${ctx.acinAvailable ? 'present' : 'absent'})`, + `- Consigne de puissance reseau : ${nombre(ctx.gridSetpointW, ' W')}${margeRechargeW === null ? '' : batterieDoitMonter === false && margeRechargeW > 0 ? ` — la batterie n a PAS besoin de monter (SOC ${ctx.soc} %, bilan ${ctx.balanceRequiredSoc} %), donc ces ${margeRechargeW} W de demande reseau n ont aucune destination : ils ne peuvent que remplacer du solaire` : margeRechargeW > 0 ? ` — il reste ${margeRechargeW} W pour RECHARGER la batterie, qui en a besoin` : ' — une fois la maison servie il ne reste RIEN pour recharger la batterie'}`, `- Limites declarees par le parc : charge ${nombre(ctx.bmsMaxChargeA, ' A')}, decharge ${nombre(ctx.bmsMaxDischargeA, ' A')}`, `- Vehicule : ${ctx.vehicleConnected ? `BRANCHE (${ctx.vehicleSelected})` : 'AUCUN branche'}${ctx.evcsCharging ? `, en charge a ${ctx.evcsCurrentA} A` : ''}`, - `- Controleur : ${ctx.surplusState} | source ${ctx.sourceMode} | strategie reelle ${ctx.userStrategy}`, + `- Controleur : ${etatLisible(ctx.surplusState)} | source ${ctx.sourceMode} | strategie reelle ${ctx.userStrategy}`, `- Cible SOC matin actuellement appliquee : ${ctx.nightTargetActual} %`, `- Prevision : ${ctx.todayRemainingKwh} kWh restant aujourd hui, ${ctx.tomorrowKwh} kWh demain`, '', diff --git a/tools/campagne-conseiller.mjs b/tools/campagne-conseiller.mjs index a07fb24..2490e9c 100644 --- a/tools/campagne-conseiller.mjs +++ b/tools/campagne-conseiller.mjs @@ -56,7 +56,9 @@ export const CAS = [ // ─────────── NUIT ET RESEAU ─────────── { id:'1-nuit-bloquee-sans-vehicule', t:'2026-09-12T04:00:00+02:00', certain:true, titre:"12/09 04:00 — SOC 20, HC ouvertes, aucun vehicule, bilan 59,1 %", - attendu:"AGIR : engager le reseau, cible ~59 %", + attendu:"SIGNALER : reseau engage mais la batterie reste plate a 20 % alors que le bilan reclame 3,4 kWh", + graviteAttendue:["moyenne","haute"], + motsCles:[["recharg","remonte","ne monte","stagne","plate","0 a","0a","immobile"]], s:{ soc_percent:'20', battery_current_a:'0', house_ac_power_w:'612', grid_state:'on', acin1_available:'1', night_target_soc_actual:'59.1', tomorrow_kwh:'75.2', balance_required_soc:'59.1', balance_required_soc_prudent:'66.2', @@ -65,7 +67,9 @@ export const CAS = [ { id:'2-nuit-relachee-trop-tot', t:'2026-09-03T03:00:00+02:00', certain:true, titre:"03/09 03:00 — SOC 45, bilan 50,4 % (releche a tort : batterie a 20 % a 06:30)", - attendu:"AGIR : tenir le reseau, cible ~50 %", + attendu:"SIGNALER : SOC sous le requis alors que la session est marquee terminee", + graviteAttendue:["faible","moyenne","haute"], + motsCles:[["sous","en dessous","inferieur","manque","deficit","insuffisant"],["terminee","done","fini","relach","session"]], s:{ soc_percent:'45', battery_current_a:'2', house_ac_power_w:'700', grid_state:'on', acin1_available:'1', evcs_vehicle_connected:'on', evcs_surplus_state:'night_session_done_idle', evcs_source_mode:'Réseau HC autorisé', @@ -75,7 +79,8 @@ export const CAS = [ { id:'3-nuit-couverte-ne-rien-faire', t:'2026-09-12T04:00:00+02:00', certain:true, titre:"CONTREFACTUEL — meme nuit mais SOC 70, au-dessus des 59,1 % requis", - attendu:"NE RIEN FAIRE : auto_solar_plus, pas de reseau", + attendu:"NE RIEN SIGNALER : au-dessus de la ligne, reseau ouvert, tout est coherent", + graviteAttendue:["aucune"], s:{ soc_percent:'70', battery_current_a:'-12', house_ac_power_w:'612', grid_state:'off', acin1_available:'0', night_target_soc_actual:'59.1', tomorrow_kwh:'75.2', balance_required_soc:'59.1', balance_required_soc_prudent:'66.2', @@ -83,7 +88,8 @@ export const CAS = [ { id:'4-hiver-nuit-longue', t:'2026-12-15T23:30:00+01:00', certain:false, titre:"HIVER — 15/12 23:30, prevision 6 kWh demain, croisement tardif a 11 h", - attendu:"OUVERT : quelle cible pour une nuit d hiver ?", + attendu:"OUVERT : voit-il l ecart entre la cible 85 et les 88 % requis, et le deficit de stockage ?", + graviteAttendue:null, s:{ soc_percent:'55', battery_current_a:'-18', house_ac_power_w:'1400', grid_state:'off', acin1_available:'0', night_target_soc_actual:'85', tomorrow_kwh:'6.2', balance_required_soc:'88', balance_required_soc_prudent:'97', @@ -94,19 +100,21 @@ export const CAS = [ // ─────────── SOLAIRE ET VOITURE ─────────── { id:'5-soir-deficit-ne-pas-demarrer', t:'2026-09-03T19:44:00+02:00', certain:true, titre:"03/09 19:44 — PV 758 W mais maison 1202 W : excedent NEGATIF (-444 W)", - attendu:"NE PAS DEMARRER la charge", + attendu:"CALME (le correctif du 03/09 tient) : la charge ne demarre pas, excedent negatif", + graviteAttendue:["aucune","faible"], s:{ soc_percent:'94', battery_current_a:'-12.2', pv_power_w:'758', pv_power_10m_avg_w:'900', house_ac_power_w:'1202', evcs_vehicle_connected:'on', vehicle_selected:'VW', - evcs_source_mode:'Potentiel solaire', mppt_operation_modes:MAX, + evcs_source_mode:'Potentiel solaire', evcs_surplus_state:'idle_wait_conditions', mppt_operation_modes:MAX, balance_required_soc:'99.7', balance_required_soc_prudent:'100', balance_energy_to_cover_kwh:'11.66', balance_grid_needed:'on', tomorrow_kwh:'33.9' } }, { id:'6-censure-demarrer', t:'2026-09-03T18:50:00+02:00', certain:true, titre:"03/09 18:50 — PV 769 W, maison 755 W, chargeurs BRIDES : ressource refusee", - attendu:"DEMARRER : la ressource est gratuite", + attendu:"SIGNALER : ressource refusee et vehicule branche a l arret, energie perdue", + graviteAttendue:["faible","moyenne"], s:{ soc_percent:'94', battery_current_a:'0', pv_power_w:'769', pv_power_10m_avg_w:'800', house_ac_power_w:'755', evcs_vehicle_connected:'on', vehicle_selected:'VW', - evcs_source_mode:'Potentiel solaire', mppt_operation_modes:LIM, + evcs_source_mode:'Potentiel solaire', evcs_surplus_state:'idle_wait_conditions', mppt_operation_modes:LIM, balance_pv_censored:'on', balance_censor_reason:'batterie_pleine_sans_puits', balance_required_soc:'99.7', balance_required_soc_prudent:'100', balance_energy_to_cover_kwh:'11.66', balance_grid_needed:'on', @@ -114,7 +122,8 @@ export const CAS = [ { id:'7-boost-evince-le-solaire', t:'2026-09-11T17:02:00+02:00', certain:true, titre:"11/09 17:02 — BOOST 28 A, consigne 8260 W, PV effondre a 121 W", - attendu:"AGIR : reduire la demande reseau, le solaire est evince", + attendu:"SIGNALER : la consigne reseau evince le solaire — l ancrage du prompt dit moyenne", + graviteAttendue:["moyenne","haute"], s:{ soc_percent:'96', battery_current_a:'0', pv_power_w:'121', pv_power_10m_avg_w:'150', house_ac_power_w:'7695', evcs_vehicle_connected:'on', evcs_charging:'on', evcs_current_a:'28', vehicle_selected:'JEEP', user_strategy:'force_grid_now', @@ -129,7 +138,8 @@ export const CAS = [ { id:'8-voiture-pleine-ne-pas-reessayer', t:'2026-09-07T14:28:00+02:00', certain:true, titre:"07/09 14:28 — borne annonce charge terminee, vehicule branche immobile", - attendu:"NE RIEN FAIRE : ne pas relancer la charge", + attendu:"CALME : l etat collant fait son travail, aucune relance", + graviteAttendue:["aucune","faible"], s:{ soc_percent:'97', battery_current_a:'1', pv_power_w:'2114', pv_power_10m_avg_w:'2000', house_ac_power_w:'1965', evcs_vehicle_connected:'on', evcs_current_a:'0', vehicle_selected:'JEEP', evcs_surplus_state:'day_vehicle_full_idle', @@ -142,7 +152,9 @@ export const CAS = [ // ─────────── PROTECTION DU MATERIEL ─────────── { id:'9-pointe-cuisson-proteger-le-parc', t:'2026-09-05T20:40:00+02:00', certain:true, titre:"05/09 20:40 — maison 4944 W, batterie a -97,4 A pour une limite de 100 A", - attendu:"AGIR : appeler le reseau, le parc est a sa limite", + attendu:"SIGNALER GRAVE : le parc est a 97,4 A pour une limite de 100 A, reseau ouvert", + graviteAttendue:["haute"], + motsCles:[["limite","plafond","maximum","97","capacite","au bord","saturation"]], s:{ soc_percent:'79', battery_current_a:'-97.4', pv_power_w:'320', pv_power_10m_avg_w:'500', house_ac_power_w:'4944', grid_state:'off', acin1_available:'0', balance_required_soc:'62', balance_required_soc_prudent:'70', @@ -150,7 +162,9 @@ export const CAS = [ { id:'10-nuage-sur-charge-28a', t:'2026-09-11T18:00:00+02:00', certain:true, titre:"11/09 18:00 — voiture a 28 A, consigne descendue a 1281 W, PV 6058 W", - attendu:"AGIR : garder de la marge reseau, un nuage tomberait sur la batterie", + attendu:"SIGNALER : consigne a 1281 W sous une voiture a 28 A, un nuage tombe sur la batterie", + graviteAttendue:["faible","moyenne","haute"], + motsCles:[["nuage","marge","brutal","chute","passage","si le solaire"]], s:{ soc_percent:'96', battery_current_a:'-0.7', pv_power_w:'6058', pv_power_10m_avg_w:'5500', house_ac_power_w:'6845', evcs_vehicle_connected:'on', evcs_charging:'on', evcs_current_a:'28', vehicle_selected:'JEEP', user_strategy:'force_grid_now', @@ -165,7 +179,8 @@ export const CAS = [ // ─────────── CAS OUVERTS ─────────── { id:'11-batterie-pleine-midi', t:'2026-09-11T12:00:00+02:00', certain:false, titre:"11/09 12:00 — SOC 98, production refusee, AUCUN vehicule branche", - attendu:"OUVERT : y a-t-il quelque chose a faire ?", + attendu:"OUVERT : production refusee sans preneur, aucun vehicule. Voit-il l energie perdue ?", + graviteAttendue:null, s:{ soc_percent:'98', battery_current_a:'2.2', pv_power_w:'810', pv_power_10m_avg_w:'900', house_ac_power_w:'702', mppt_operation_modes:LIM, balance_pv_censored:'on', balance_censor_reason:'batterie_pleine_sans_puits', @@ -177,7 +192,8 @@ export const CAS = [ { id:'12-orage-annonce', t:'2026-09-12T15:30:00+02:00', certain:false, titre:"Vigilance ORANGE annoncee, SOC 72, coupures frequentes sur ce site", - attendu:"OUVERT : jusqu ou constituer la reserve ?", + attendu:"OUVERT : vigilance orange, reserve 88 % contre SOC 72. Quel arbitrage ?", + graviteAttendue:null, s:{ soc_percent:'72', battery_current_a:'35', pv_power_w:'4200', pv_power_10m_avg_w:'4000', house_ac_power_w:'900', mppt_operation_modes:MAX, balance_storm_level:'Orange', balance_storm_reserve_soc:'88', @@ -187,7 +203,8 @@ export const CAS = [ { id:'13-voiture-empruntee-echeance', t:'2026-09-11T17:00:00+02:00', certain:false, titre:"11/09 17:00 — voiture EMPRUNTEE a rendre a 19 h, 28 A possible, soleil present", - attendu:"OUVERT : vitesse contre solaire, arbitrage humain", + attendu:"OUVERT : echeance 19 h contre solaire. Voit-il l arbitrage humain ?", + graviteAttendue:null, s:{ soc_percent:'96', battery_current_a:'-10', pv_power_w:'4255', pv_power_10m_avg_w:'4000', house_ac_power_w:'4888', evcs_vehicle_connected:'on', evcs_charging:'on', evcs_current_a:'20', vehicle_selected:'JEEP', user_strategy:'force_charge_now', @@ -202,7 +219,8 @@ export const CAS = [ { id:'4b-hiver-parc-12', t:'2026-12-15T23:30:00+01:00', certain:false, titre:"HIVER avec le parc de cet hiver — 12 equivalents (4 US2000C + 4 US5000)", - attendu:"OUVERT : la cible baisse-t-elle quand la reserve triple ?", + attendu:"OUVERT : le parc triple change-t-il sa lecture de la nuit d hiver ?", + graviteAttendue:null, s:{ soc_percent:'55', battery_current_a:'-18', house_ac_power_w:'1400', grid_state:'off', acin1_available:'0', night_target_soc_actual:'85', tomorrow_kwh:'6.2', balance_required_soc:'52', balance_required_soc_prudent:'59', @@ -214,7 +232,8 @@ export const CAS = [ { id:'4c-hiver-parc-16', t:'2026-12-15T23:30:00+01:00', certain:false, titre:"HIVER avec 16 equivalents (vieux modules repares)", - attendu:"OUVERT : la cible baisse-t-elle encore ?", + attendu:"OUVERT : et avec 16 equivalents ?", + graviteAttendue:null, s:{ soc_percent:'55', battery_current_a:'-18', house_ac_power_w:'1400', grid_state:'off', acin1_available:'0', night_target_soc_actual:'85', tomorrow_kwh:'6.2', balance_required_soc:'44', balance_required_soc_prudent:'50', @@ -226,7 +245,9 @@ export const CAS = [ { id:'15-oscillation-contacteur', t:'2026-09-12T06:36:00+02:00', certain:true, titre:"INCIDENT 12/09 06:25-06:35 — le contacteur bascule six fois en dix minutes", - attendu:"REPERER : gravite haute, nommer le conflit entre ecrivains", + attendu:"SIGNALER GRAVE : six bascules en dix minutes, nommer le conflit entre ecrivains", + graviteAttendue:["haute"], + motsCles:[["oscill","bascul","va-et-vient","aller-retour","repet","six fois","6 fois","cycl"],["conflit","deux","ecriv","contradict","se battent","concurren","automatisation","hysteresis"]], s:{ soc_percent:'35', battery_current_a:'20', pv_power_w:'0', house_ac_power_w:'950', grid_state:'on', acin1_available:'1', night_target_soc_actual:'42.8', balance_required_soc:'42.8', balance_required_soc_prudent:'49', @@ -237,7 +258,8 @@ export const CAS = [ { id:'16-systeme-calme', t:'2026-09-12T07:00:00+02:00', certain:true, titre:"CONTREFACTUEL — meme nuit, contacteur stable depuis 90 minutes", - attendu:"NE RIEN SIGNALER : gravite aucune", + attendu:"NE RIEN SIGNALER : meme nuit, contacteur stable depuis 90 minutes", + graviteAttendue:["aucune"], s:{ soc_percent:'42', battery_current_a:'20', pv_power_w:'0', house_ac_power_w:'950', grid_state:'on', acin1_available:'1', night_target_soc_actual:'42.8', balance_required_soc:'42.8', balance_required_soc_prudent:'49', @@ -247,13 +269,33 @@ export const CAS = [ { id:'14-bilan-indisponible', t:'2026-09-12T04:00:00+02:00', certain:true, titre:"ROBUSTESSE — meme nuit que le cas 1 mais bilan DEGRADE", - attendu:"Le dire dans sa raison et rester prudent", + attendu:"SIGNALER en le disant : le bilan est degrade, donc prudence assumee", + graviteAttendue:["faible","moyenne","haute"], + motsCles:[["degrad","indisponible","sans bilan","pas de bilan","inconnu","unknown"]], s:{ soc_percent:'20', battery_current_a:'0', house_ac_power_w:'612', grid_state:'on', acin1_available:'1', night_target_soc_actual:'35', tomorrow_kwh:'75.2', balance_status:'degrade', balance_required_soc:'unknown', balance_energy_to_cover_kwh:'unknown' } }, ]; +// ── Notation ──────────────────────────────────────────────────────────────── +// Un observateur ne se juge pas a une valeur qu'il propose mais a sa capacite +// a SEPARER un systeme qui derape d'un systeme qui va bien. D'ou deux mesures +// seulement : la gravite tombe-t-elle dans la fourchette attendue, et a-t-il +// NOMME la chose (mots-cles choisis hors du vocabulaire du prompt). +// Les cas ouverts ne sont pas notes : ils se lisent. +const sansAccent = s => String(s ?? '').normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase(); + +function noter(cas, x) { + if (x.erreur) return { g: false, k: false }; + const g = cas.graviteAttendue ? cas.graviteAttendue.includes(String(x.gravite)) : null; + const texte = sansAccent(`${x.constat} ${x.ce_qui_cloche} ${x.piste}`); + const k = cas.motsCles?.length + ? cas.motsCles.every(groupe => groupe.some(t => texte.includes(sansAccent(t)))) + : null; + return { g, k }; +} + async function demander(messages) { const r = await fetch(URL, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ model:'qwen3-coder', temperature:0.1, max_tokens:600, messages }) }); @@ -271,19 +313,48 @@ for (const cas of CAS) { const p = buildPrompt({ ...BASE, ...cas.s }, cas.t); const passages = []; for (let i = 0; i < PASSAGES; i++) passages.push(await demander(p.messages)); - resultats.push({ ...cas, passages }); - const cibles = passages.map(x => x.night_target_soc).filter(Number.isFinite); - const ecart = cibles.length ? Math.max(...cibles) - Math.min(...cibles) : null; - console.log(`\n═══ ${cas.id}${cas.certain ? '' : ' [OUVERT]'}`); + const notes = passages.map(x => noter(cas, x)); + const gravites = passages.map(x => x.erreur ? '✖' : String(x.gravite)); + const distinctes = [...new Set(gravites)]; + resultats.push({ ...cas, passages, notes }); + + console.log(`\n═══ ${cas.id}${cas.graviteAttendue ? '' : ' [OUVERT]'}`); console.log(` ${cas.titre}`); console.log(` attendu : ${cas.attendu}`); - for (const x of passages) { - console.log(x.erreur ? ` ✖ ${x.erreur}` - : ` [${String(x.gravite).padEnd(7)}] ${String(x.constat).slice(0,88).padEnd(90)} ${String(x.strategy).padEnd(16)} cible ${String(x.night_target_soc).padStart(3)}`); - if (!x.erreur && x.ce_qui_cloche) console.log(` ↳ ${String(x.ce_qui_cloche).slice(0,120)}`); + for (let i = 0; i < passages.length; i++) { + const x = passages[i], n = notes[i]; + if (x.erreur) { console.log(` ✖ ${x.erreur}`); continue; } + const marque = n.g === null ? ' ' : n.g ? '✔' : '✘'; + const mot = n.k === null ? '' : n.k ? ' [nomme]' : ' [ne nomme pas]'; + console.log(` ${marque} [${String(x.gravite).padEnd(7)}] ${String(x.constat).slice(0,92)}`); + if (x.ce_qui_cloche) console.log(` ↳ ${String(x.ce_qui_cloche).slice(0,120)}`); + if (x.piste) console.log(` → ${String(x.piste).slice(0,120)}${mot}`); + else if (mot) console.log(` ${mot.trim()}`); } - if (ecart !== null) console.log(` → ecart de cible entre passages : ${ecart} pts`); + const justes = notes.filter(n => n.g === true).length; + const nommes = notes.filter(n => n.k === true).length; + console.log(` gravites : ${gravites.join(' ')} ${distinctes.length === 1 ? 'STABLE' : `INSTABLE (${distinctes.length} valeurs)`}`); + if (cas.graviteAttendue) console.log(` gravite dans la fourchette ${cas.graviteAttendue.join('|')} : ${justes}/${PASSAGES}`); + if (cas.motsCles?.length) console.log(` a nomme la chose : ${nommes}/${PASSAGES}`); } -fs.writeFileSync('docs/mesures/campagne-conseiller-' + new Date().toISOString().slice(0,10) + '.json', - JSON.stringify(resultats, null, 2)); -console.log('\nJournal complet : docs/mesures/campagne-conseiller-*.json'); + +// ── Verdict : la separation incident / systeme calme ───────────────────────── +const notes = c => c.notes.filter(n => n.g === true).length; +const incidents = resultats.filter(c => c.graviteAttendue && !c.graviteAttendue.includes('aucune')); +const calmes = resultats.filter(c => c.graviteAttendue && c.graviteAttendue.includes('aucune')); +const ouverts = resultats.filter(c => !c.graviteAttendue); +const somme = l => l.reduce((s, c) => s + notes(c), 0); + +console.log('\n────────────────────────────────────────────────────────────'); +console.log(`INCIDENTS : ${somme(incidents)}/${incidents.length * PASSAGES} gravites justes (${incidents.length} cas)`); +for (const c of incidents) { + const nommes = c.motsCles?.length ? ` nomme ${c.notes.filter(n => n.k === true).length}/${PASSAGES}` : ''; + console.log(` ${String(notes(c)).padStart(2)}/${PASSAGES} ${c.id}${nommes}`); +} +console.log(`SYSTEME CALME : ${somme(calmes)}/${calmes.length * PASSAGES} (silence attendu) (${calmes.length} cas)`); +for (const c of calmes) console.log(` ${String(notes(c)).padStart(2)}/${PASSAGES} ${c.id}`); +console.log(`CAS OUVERTS : ${ouverts.length}, non notes, a lire`); + +const fichier = 'docs/mesures/campagne-conseiller-' + new Date().toISOString().slice(0,10) + '.json'; +fs.writeFileSync(fichier, JSON.stringify(resultats, null, 2)); +console.log(`\nJournal complet : ${fichier}`); diff --git a/workflows/evcs-advisor-shadow-v1.json b/workflows/evcs-advisor-shadow-v1.json index e8a94ae..f2b5aff 100644 --- a/workflows/evcs-advisor-shadow-v1.json +++ b/workflows/evcs-advisor-shadow-v1.json @@ -75,7 +75,7 @@ 0 ], "parameters": { - "jsCode": "// =====================================================\n// EVCS ADVISOR SHADOW V1 — BUILD_PROMPT\n// Construit le prompt LLM à partir du snapshot HA compact.\n// MODE OMBRE : ce workflow n'écrit que des helpers advisor_*.\n// =====================================================\n\nfunction num(v, d) {\n const n = Number.parseFloat(v);\n return Number.isFinite(n) ? n : d;\n}\nfunction onOff(v) {\n return (v ?? 'off').toString().trim().toLowerCase() === 'on';\n}\n\nconst raw = $input.first().json;\nconst input = typeof raw.data === 'string' ? JSON.parse(raw.data) : (raw.data || raw);\n\nconst ctx = {\n advisorEnabled: onOff(input.advisor_enabled),\n agreeCount: num(input.advisor_agree_count, 0),\n divergeCount: num(input.advisor_diverge_count, 0),\n prevAdvisorStrategy: (input.advisor_prev_strategy || 'unknown').toString(),\n\n soc: num(input.soc_percent, NaN),\n batteryCurrentA: num(input.battery_current_a, NaN),\n pvW: num(input.pv_power_w, 0),\n pvAvg10mW: num(input.pv_power_10m_avg_w, 0),\n houseW: num(input.house_ac_power_w, 0),\n gridOn: onOff(input.grid_state),\n acinAvailable: num(input.acin1_available, 0) === 1,\n\n vehicleConnected: onOff(input.evcs_vehicle_connected),\n evcsCharging: onOff(input.evcs_charging),\n evcsCurrentA: num(input.evcs_current_a, 0),\n surplusState: (input.evcs_surplus_state || '').toString(),\n sourceMode: (input.evcs_source_mode || '').toString(),\n\n userStrategy: (input.user_strategy || 'auto_solar_plus').toString().trim().toLowerCase(),\n allowGridHcNight: onOff(input.allow_grid_hc_night),\n allowGridHcMidday: onOff(input.allow_grid_hc_midday),\n nightTargetActual: num(input.night_target_soc_actual, 35),\n currentMaxAutoA: num(input.current_max_auto_a, 22),\n plafondEdfOnA: num(input.plafond_edf_on_a, 20),\n\n departureTime: (input.departure_time || '').toString(),\n departurePriority: onOff(input.departure_priority_enabled),\n requiredEnergyKwh: num(input.required_energy_kwh, 0),\n\n todayRemainingKwh: num(input.today_remaining_kwh, 0),\n tomorrowKwh: num(input.tomorrow_kwh, 0),\n\n // ── BILAN ENERGETIQUE ────────────────────────────────────────────────\n // Ces grandeurs REMPLACENT les regles de seuil. Elles n'etaient pas\n // transmises jusqu'au 12/09 : le conseiller raisonnait sur des paliers\n // que le bilan avait deja demontres faux, et il ne pouvait pas mieux faire.\n balanceStatus: (input.balance_status || 'indisponible').toString().trim(),\n balanceLastRun: (input.balance_last_run || '').toString().trim(),\n balanceRequiredSoc: num(input.balance_required_soc, NaN),\n balanceRequiredSocPrudent: num(input.balance_required_soc_prudent, NaN),\n balanceEnergyToCoverKwh: num(input.balance_energy_to_cover_kwh, NaN),\n balanceCrossingHour: (input.balance_crossing_hour || '').toString().trim(),\n balanceGridNeeded: onOff(input.balance_grid_needed),\n balanceGridEnergyNeededKwh: num(input.balance_grid_energy_needed_kwh, NaN),\n balancePvCensored: onOff(input.balance_pv_censored),\n balanceCensorReason: (input.balance_censor_reason || '').toString().trim(),\n balanceStorageShortfallKwh: num(input.balance_storage_shortfall_kwh, NaN),\n balanceNextDeficitKwh: num(input.balance_next_deficit_kwh, NaN),\n balanceNextDeficitWindow: (input.balance_next_deficit_window || '').toString().trim(),\n stormLevel: (input.balance_storm_level || 'indisponible').toString().trim(),\n stormReserveSoc: num(input.balance_storm_reserve_soc, NaN),\n\n // ── PARC ET MATERIEL, MESURES ────────────────────────────────────────\n modulesEnService: num(input.modules_en_service, 4),\n bmsMaxDischargeA: num(input.bms_max_discharge_current_a, NaN),\n bmsMaxChargeA: num(input.bms_max_charge_current_a, NaN),\n gridSetpointW: num(input.grid_setpoint_w, NaN),\n vehicleSelected: (input.vehicle_selected || 'inconnu').toString().trim(),\n // Historique recent des transitions, fourni par le snapshot. C est la SUITE\n // des evenements qui revele les contradictions entre automates ; un\n // instantane ne peut pas les montrer.\n evenements: String(input.evenements_recents || '')\n .split('|').map(x => x.trim()).filter(Boolean).slice(0, 12)\n .map(x => `- ${x}`),\n\n mppt: (() => {\n const modes = String(input.mppt_operation_modes || '')\n .split(',').map(x => x.trim().toLowerCase())\n .filter(x => x && x !== 'unavailable' && x !== 'unknown');\n return {\n total: modes.length,\n aFond: modes.filter(x => x === 'mppt_active').length,\n brides: modes.filter(x => x.includes('limited')).length,\n };\n })(),\n};\n\n// Capacite REELLEMENT livree a la maison, deduite de la courbe mesuree le\n// 03/09 sur 576 paliers et du parc declare. Un US5000 compte pour DEUX\n// equivalents US2000C. Aucune constante : si le parc change, ceci suit.\n// GRANDEURS DERIVEES — on les CALCULE pour lui (12/09/2026, iteration 2).\n// Campagne de rejeu : sur le releve du 03/09 19:44 (PV 758 W, maison 1202 W)\n// il a recommande de charger la voiture a 28 A. Les deux nombres etaient dans\n// son prompt ; il n a pas fait la soustraction. Et sur celui du 05/09 20:40\n// (batterie a -97,4 A pour une limite declaree de 100 A) il a repondu « SOC\n// 79 % est suffisant » sans mentionner ni le courant ni la limite.\n// Un modele raisonne bien sur UN nombre, mal sur deux qu il doit combiner.\n// Meme principe que le bilan : on lui donne la grandeur, pas les ingredients.\nconst maisonHorsVoitureW = Math.max(0, ctx.houseW - (ctx.evcsCharging ? ctx.evcsCurrentA * 230 : 0));\nconst excedentSolaireW = Math.round(ctx.pvW - maisonHorsVoitureW);\nconst margeDechargeA = Number.isFinite(ctx.bmsMaxDischargeA) && Number.isFinite(ctx.batteryCurrentA)\n ? Math.round(ctx.bmsMaxDischargeA - Math.abs(Math.min(0, ctx.batteryCurrentA)))\n : null;\nconst partDuPlafond = Number.isFinite(ctx.bmsMaxDischargeA) && ctx.bmsMaxDischargeA > 0\n ? Math.round(100 * Math.abs(Math.min(0, ctx.batteryCurrentA)) / ctx.bmsMaxDischargeA)\n : null;\n\nconst kwhParPointHaut = 0.169 * ctx.modulesEnService / 7;\nconst kwhParPointBas = 0.097 * ctx.modulesEnService / 7;\nconst capaciteUtileKwh = (67 * kwhParPointHaut + 11 * kwhParPointBas) * 0.955;\n\n// Heure Paris\nconst parisFmt = new Intl.DateTimeFormat('fr-FR', {\n timeZone: 'Europe/Paris',\n weekday: 'long', day: '2-digit', month: '2-digit',\n hour: '2-digit', minute: '2-digit', hour12: false,\n});\nconst nowParis = parisFmt.format(new Date());\n\nconst systemPrompt = [\n \"Tu es le PLANIFICATEUR ENERGIE d'une maison en autoconsommation, en Bretagne.\",\n 'Tu es en MODE OBSERVATION : tes reponses sont enregistrees et comparees au reel,',\n 'elles ne pilotent rien.',\n '',\n 'INSTALLATION, CHIFFRES MESURES (pas des ordres de grandeur) :',\n `- Batterie : ${ctx.modulesEnService} equivalents US2000C, soit ${capaciteUtileKwh.toFixed(1)} kWh`,\n ` reellement livres a la maison entre 100 % et le plancher de securite de 22 %.`,\n ` Un point de SOC vaut ${Math.round(kwhParPointHaut * 1000)} Wh au-dessus de 33 %,`,\n ` ${Math.round(kwhParPointBas * 1000)} Wh en dessous.`,\n '- Champ PV 16,1 kWc sur QUATRE orientations (sud-est 40, sud 35, ouest 45, un suiveur).',\n '- Victron ESS, AUCUNE injection possible : la production est bridee des que rien',\n ' ne peut l absorber. Une PV mesuree basse ne veut donc PAS dire ressource faible.',\n '- Borne EVCS 6-28 A. Reseau EDF commutable, heures creuses 01:24-07:24 et 12:24-14:24.',\n '- Chaque fermeture du contacteur coute 50 a 150 Wh de transitoire : une session',\n ' longue et dimensionnee vaut mieux que des creneaux repetes.',\n '',\n 'LA MAISON, telle qu elle consomme vraiment :',\n '- Quatre personnes. Les gros appels sont BREFS et cales sur les repas :',\n ' bouilloire vers 05:45, grille-pain vers 08:00, cuisson du soir entre 20 h et 23 h.',\n \"- L heure du diner varie de TROIS HEURES d un jour a l autre : un profil horaire\",\n ' moyen ne represente ni l un ni l autre.',\n '',\n 'CE QUI REMPLACE LES REGLES DE SEUIL :',\n 'un bilan energetique tourne toutes les 5 minutes et te donne, pour l instant present,',\n 'l heure de croisement ou la production repassera au-dessus de la consommation,',\n 'l energie que la batterie doit couvrir d ici la, et le SOC qui serait necessaire.',\n 'RAISONNE SUR CES CHIFFRES. Il n existe plus de palier du type',\n '\"prevision forte => cible basse\" : cette regle a ete mesuree fausse sur cette maison.',\n 'Si le bilan est indisponible ou perime, dis-le dans ta raison et reste prudent.',\n '',\n 'CE QUE TU DOIS SAVOIR ET QUE PERSONNE NE TE DIRA AUTREMENT :',\n '- SANS VEHICULE BRANCHE IL Y A QUAND MEME QUELQUE CHOSE A DECIDER : c est la MAISON',\n ' qui doit traverser la nuit. Une batterie au plancher pendant les heures creuses,',\n ' alors que le bilan reclame davantage, est une occasion manquee qui se paiera au',\n ' plein tarif le matin.',\n '- Les chargeurs solaires declarent eux-memes s ils se BRIDENT. Si certains se',\n ' brident, il reste de la ressource REFUSEE : lui donner un preneur (voiture,',\n ' batterie) ne coute rien. S ils sont tous a fond, la production mesuree EST la',\n ' ressource.',\n '- L hiver la nuit a couvrir est plus longue de deux heures en temps solaire : la',\n ' cible du matin y monte naturellement bien plus haut qu en ete.',\n '',\n 'DEUX REGLES QUI PRIMENT SUR TOUT LE RESTE :',\n '1. EXCEDENT SOLAIRE. Charger un vehicule ne se decide pas sur la production',\n ' mais sur ce qui RESTE une fois la maison servie. Cet excedent t est donne',\n ' plus bas. S il est NEGATIF, charger la voiture revient a vider la batterie',\n ' solaire : ne le fais pas, quelle que soit la prevision. S il est nul ou a',\n ' peine positif ALORS QUE DES CHARGEURS SE BRIDENT, la ressource existe mais',\n ' est refusee : la charger est gratuit.',\n '2. LIMITE DU PARC. La marge de decharge restante t est donnee plus bas. Si la',\n ' batterie depasse 80 % de ce que le parc declare accepter, c est un sujet de',\n ' PROTECTION DU MATERIEL, pas de confort : il faut appeler le reseau meme si',\n ' le SOC parait confortable et meme hors heures creuses. Le proprietaire a un',\n ' abonnement 12 kVA et prefere payer quelques kWh plutot que fragiliser le parc.',\n '',\n // <<< CARTE GENEREE — ne pas editer a la main, voir tools/carte-decisions.mjs\n 'QUI ECRIT SUR QUOI (carte generee depuis les sources) :',\n '- Contacteur reseau EDF : proprietaire = Battery / Grid Hysteresis Fix V1, AUTRES ECRIVAINS : EVCS Surplus Controller V2.6, automations, scripts',\n '- Courant de la borne : proprietaire = EVCS Surplus Controller V2.6, AUTRES ECRIVAINS : scripts',\n '- Verrou hysteresis : proprietaire = Battery / Grid Hysteresis Fix V1, AUTRES ECRIVAINS : scripts',\n 'SEUILS DE SOC FIGES dans le code : 20, 22, 25, 35, 40, 60, 80, 85, 90, 95, 100 % — chacun peut contredire le bilan.',\n 'Quand un actionneur bascule de facon incoherente, le coupable le plus probable',\n 'est un ecrivain AUTRE QUE SON PROPRIETAIRE. Nomme-le.',\n // CARTE GENEREE >>>\n '',\n 'TU NE PILOTES RIEN ET TU NE CHOISIS AUCUNE STRATEGIE.',\n 'La planification energetique est faite par le bilan, qui est calcule et mesure.',\n 'Ton seul travail est de REGARDER LE SYSTEME SE COMPORTER et de dire ce qui cloche.',\n '',\n 'Reponds UNIQUEMENT avec un objet JSON valide, sans texte autour, au format EXACT :',\n '{\"constat\":\"ce que tu observes, factuel, max 200 caracteres\",',\n '\"gravite\":\"aucune|faible|moyenne|haute\",',\n '\"ce_qui_cloche\":\"la contradiction ou l incoherence, ou \\'\\' si rien\",',\n '\"piste\":\"ce qu il faudrait verifier ou corriger, ou \\'\\' si rien\",',\n '\"confidence\":<0.0-1.0>}',\n '',\n 'ECHELLE DE GRAVITE, ancree sur des cas reels de cette installation :',\n '- aucune : tout est coherent. C EST LE CAS LE PLUS FREQUENT ET DE LOIN.',\n ' N invente pas un probleme pour justifier une reponse.',\n '- faible : un ecart sans consequence mesurable — une valeur un peu hors cible,',\n ' un etat transitoire qui se resorbe seul.',\n '- moyenne : quelque chose coute de l energie ou de l argent sans danger materiel.',\n ' Exemple reel : la consigne reseau laissee haute en plein soleil, qui',\n ' evince la production — 5,6 kW de solaire remplaces par du reseau.',\n '- haute : un actionneur bascule de facon repetee, OU le materiel est sollicite',\n ' pres de ses limites, OU un automate defait ce qu un autre vient de',\n ' faire. Exemple reel : le contacteur reseau qui bascule six fois en',\n ' dix minutes le 12/09 — chaque bascule coute 50 a 150 Wh et use le',\n ' relais, et aucun automate ne le voyait.',\n 'UNE OSCILLATION EST TOUJOURS DE GRAVITE HAUTE, meme si chaque bascule prise',\n 'isolement parait anodine : c est la repetition qui fait le degat, et c est',\n 'precisement ce qu aucune regle locale ne peut voir.',\n].join('\\n');\n\nfunction nombre(v, unite, defaut) {\n return Number.isFinite(v) ? `${v}${unite}` : (defaut || 'inconnu');\n}\n\nconst bilanLignes = ctx.balanceStatus === 'ok'\n ? [\n `- heure de croisement production/consommation : ${ctx.balanceCrossingHour || 'inconnue'}`,\n `- energie que la batterie doit couvrir d ici la : ${nombre(ctx.balanceEnergyToCoverKwh, ' kWh')}`,\n `- SOC qui serait necessaire : ${nombre(ctx.balanceRequiredSoc, ' %')} (prudent : ${nombre(ctx.balanceRequiredSocPrudent, ' %')})`,\n `- reseau juge necessaire : ${ctx.balanceGridNeeded ? 'OUI' : 'non'}${Number.isFinite(ctx.balanceGridEnergyNeededKwh) ? ` (${ctx.balanceGridEnergyNeededKwh} kWh)` : ''}`,\n `- production actuellement bridee : ${ctx.balancePvCensored ? `OUI (${ctx.balanceCensorReason})` : 'non'}`,\n `- manque de stockage identifie : ${nombre(ctx.balanceStorageShortfallKwh, ' kWh')}`,\n `- prochaine traversee deficitaire : ${nombre(ctx.balanceNextDeficitKwh, ' kWh')} ${ctx.balanceNextDeficitWindow || ''}`,\n `- vigilance orage : ${ctx.stormLevel}${Number.isFinite(ctx.stormReserveSoc) ? `, reserve conseillee ${ctx.stormReserveSoc} %` : ''}`,\n `- calcule a ${ctx.balanceLastRun || 'heure inconnue'}`,\n ]\n : [`- INDISPONIBLE (statut ${ctx.balanceStatus}) : raisonne sans lui, et dis-le.`];\n\nconst userPrompt = [\n `Nous sommes ${nowParis} (heure de Paris).`,\n '',\n 'ETAT MESURE :',\n `- Batterie : SOC ${ctx.soc} %, courant ${ctx.batteryCurrentA} A (positif = charge)`,\n `- PV : ${Math.round(ctx.pvW)} W instantane, ${Math.round(ctx.pvAvg10mW)} W sur 10 min`,\n `- Chargeurs solaires : ${ctx.mppt.aFond}/${ctx.mppt.total} a pleine puissance, ${ctx.mppt.brides} qui se BRIDENT`,\n `- Maison : ${Math.round(ctx.houseW)} W, dont voiture ${ctx.evcsCharging ? Math.round(ctx.evcsCurrentA * 230) : 0} W`,\n `- EXCEDENT SOLAIRE (production moins maison hors voiture) : ${excedentSolaireW} W`,\n `- MARGE DE DECHARGE du parc : ${margeDechargeA === null ? 'inconnue' : `${margeDechargeA} A restants`}${partDuPlafond === null ? '' : ` — la batterie est a ${partDuPlafond} % de son plafond`}`,\n `- Contacteur EDF : ${ctx.gridOn ? 'FERME' : 'ouvert'} (AC-IN ${ctx.acinAvailable ? 'present' : 'absent'})`,\n `- Consigne de puissance reseau : ${nombre(ctx.gridSetpointW, ' W')}`,\n `- Limites declarees par le parc : charge ${nombre(ctx.bmsMaxChargeA, ' A')}, decharge ${nombre(ctx.bmsMaxDischargeA, ' A')}`,\n `- Vehicule : ${ctx.vehicleConnected ? `BRANCHE (${ctx.vehicleSelected})` : 'AUCUN branche'}${ctx.evcsCharging ? `, en charge a ${ctx.evcsCurrentA} A` : ''}`,\n `- Controleur : ${ctx.surplusState} | source ${ctx.sourceMode} | strategie reelle ${ctx.userStrategy}`,\n `- Cible SOC matin actuellement appliquee : ${ctx.nightTargetActual} %`,\n `- Prevision : ${ctx.todayRemainingKwh} kWh restant aujourd hui, ${ctx.tomorrowKwh} kWh demain`,\n '',\n 'BILAN ENERGETIQUE :',\n ...bilanLignes,\n '',\n 'DERNIERS EVENEMENTS DU SYSTEME (le plus recent en premier) :',\n ...(ctx.evenements.length ? ctx.evenements : ['- aucun evenement transmis']),\n '',\n 'Quelle est ta recommandation ? JSON uniquement.',\n].join('\\n');\n\nreturn [{\n json: {\n enabled: ctx.advisorEnabled,\n messages: [\n { role: 'system', content: systemPrompt },\n { role: 'user', content: userPrompt },\n ],\n context: ctx,\n }\n}];\n" + "jsCode": "// =====================================================\n// EVCS ADVISOR SHADOW V1 — BUILD_PROMPT\n// Construit le prompt LLM à partir du snapshot HA compact.\n// MODE OMBRE : ce workflow n'écrit que des helpers advisor_*.\n// =====================================================\n\nfunction num(v, d) {\n const n = Number.parseFloat(v);\n return Number.isFinite(n) ? n : d;\n}\nfunction onOff(v) {\n return (v ?? 'off').toString().trim().toLowerCase() === 'on';\n}\n\nconst raw = $input.first().json;\nconst input = typeof raw.data === 'string' ? JSON.parse(raw.data) : (raw.data || raw);\n\nconst ctx = {\n advisorEnabled: onOff(input.advisor_enabled),\n agreeCount: num(input.advisor_agree_count, 0),\n divergeCount: num(input.advisor_diverge_count, 0),\n prevAdvisorStrategy: (input.advisor_prev_strategy || 'unknown').toString(),\n\n soc: num(input.soc_percent, NaN),\n batteryCurrentA: num(input.battery_current_a, NaN),\n pvW: num(input.pv_power_w, 0),\n pvAvg10mW: num(input.pv_power_10m_avg_w, 0),\n houseW: num(input.house_ac_power_w, 0),\n gridOn: onOff(input.grid_state),\n acinAvailable: num(input.acin1_available, 0) === 1,\n\n vehicleConnected: onOff(input.evcs_vehicle_connected),\n evcsCharging: onOff(input.evcs_charging),\n evcsCurrentA: num(input.evcs_current_a, 0),\n surplusState: (input.evcs_surplus_state || '').toString(),\n sourceMode: (input.evcs_source_mode || '').toString(),\n\n userStrategy: (input.user_strategy || 'auto_solar_plus').toString().trim().toLowerCase(),\n allowGridHcNight: onOff(input.allow_grid_hc_night),\n allowGridHcMidday: onOff(input.allow_grid_hc_midday),\n nightTargetActual: num(input.night_target_soc_actual, 35),\n currentMaxAutoA: num(input.current_max_auto_a, 22),\n plafondEdfOnA: num(input.plafond_edf_on_a, 20),\n\n departureTime: (input.departure_time || '').toString(),\n departurePriority: onOff(input.departure_priority_enabled),\n requiredEnergyKwh: num(input.required_energy_kwh, 0),\n\n todayRemainingKwh: num(input.today_remaining_kwh, 0),\n tomorrowKwh: num(input.tomorrow_kwh, 0),\n\n // ── BILAN ENERGETIQUE ────────────────────────────────────────────────\n // Ces grandeurs REMPLACENT les regles de seuil. Elles n'etaient pas\n // transmises jusqu'au 12/09 : le conseiller raisonnait sur des paliers\n // que le bilan avait deja demontres faux, et il ne pouvait pas mieux faire.\n balanceStatus: (input.balance_status || 'indisponible').toString().trim(),\n balanceLastRun: (input.balance_last_run || '').toString().trim(),\n balanceRequiredSoc: num(input.balance_required_soc, NaN),\n balanceRequiredSocPrudent: num(input.balance_required_soc_prudent, NaN),\n balanceEnergyToCoverKwh: num(input.balance_energy_to_cover_kwh, NaN),\n balanceCrossingHour: (input.balance_crossing_hour || '').toString().trim(),\n balanceGridNeeded: onOff(input.balance_grid_needed),\n balanceGridEnergyNeededKwh: num(input.balance_grid_energy_needed_kwh, NaN),\n balancePvCensored: onOff(input.balance_pv_censored),\n balanceCensorReason: (input.balance_censor_reason || '').toString().trim(),\n balanceStorageShortfallKwh: num(input.balance_storage_shortfall_kwh, NaN),\n balanceNextDeficitKwh: num(input.balance_next_deficit_kwh, NaN),\n balanceNextDeficitWindow: (input.balance_next_deficit_window || '').toString().trim(),\n stormLevel: (input.balance_storm_level || 'indisponible').toString().trim(),\n stormReserveSoc: num(input.balance_storm_reserve_soc, NaN),\n\n // ── PARC ET MATERIEL, MESURES ────────────────────────────────────────\n modulesEnService: num(input.modules_en_service, 4),\n bmsMaxDischargeA: num(input.bms_max_discharge_current_a, NaN),\n bmsMaxChargeA: num(input.bms_max_charge_current_a, NaN),\n gridSetpointW: num(input.grid_setpoint_w, NaN),\n vehicleSelected: (input.vehicle_selected || 'inconnu').toString().trim(),\n // Historique recent des transitions, fourni par le snapshot. C est la SUITE\n // des evenements qui revele les contradictions entre automates ; un\n // instantane ne peut pas les montrer.\n evenements: String(input.evenements_recents || '')\n .split('|').map(x => x.trim()).filter(Boolean).slice(0, 12)\n .map(x => `- ${x}`),\n\n mppt: (() => {\n const modes = String(input.mppt_operation_modes || '')\n .split(',').map(x => x.trim().toLowerCase())\n .filter(x => x && x !== 'unavailable' && x !== 'unknown');\n return {\n total: modes.length,\n aFond: modes.filter(x => x === 'mppt_active').length,\n brides: modes.filter(x => x.includes('limited')).length,\n };\n })(),\n};\n\n// Capacite REELLEMENT livree a la maison, deduite de la courbe mesuree le\n// 03/09 sur 576 paliers et du parc declare. Un US5000 compte pour DEUX\n// equivalents US2000C. Aucune constante : si le parc change, ceci suit.\n// GRANDEURS DERIVEES — on les CALCULE pour lui (12/09/2026, iteration 2).\n// Campagne de rejeu : sur le releve du 03/09 19:44 (PV 758 W, maison 1202 W)\n// il a recommande de charger la voiture a 28 A. Les deux nombres etaient dans\n// son prompt ; il n a pas fait la soustraction. Et sur celui du 05/09 20:40\n// (batterie a -97,4 A pour une limite declaree de 100 A) il a repondu « SOC\n// 79 % est suffisant » sans mentionner ni le courant ni la limite.\n// Un modele raisonne bien sur UN nombre, mal sur deux qu il doit combiner.\n// Meme principe que le bilan : on lui donne la grandeur, pas les ingredients.\nconst maisonHorsVoitureW = Math.max(0, ctx.houseW - (ctx.evcsCharging ? ctx.evcsCurrentA * 230 : 0));\nconst excedentSolaireW = Math.round(ctx.pvW - maisonHorsVoitureW);\nconst margeRechargeW = ctx.gridOn && Number.isFinite(ctx.gridSetpointW)\n ? Math.round(ctx.gridSetpointW - maisonHorsVoitureW)\n : null;\n// Le bilan dit lui-meme si la batterie doit monter. A defaut de bilan\n// exploitable on ne tranche pas, et la marge reste un simple constat.\nconst batterieDoitMonter = Number.isFinite(ctx.balanceRequiredSoc) && Number.isFinite(ctx.soc)\n ? ctx.soc < ctx.balanceRequiredSoc\n : null;\nconst margeDechargeA = Number.isFinite(ctx.bmsMaxDischargeA) && Number.isFinite(ctx.batteryCurrentA)\n ? Math.round(ctx.bmsMaxDischargeA - Math.abs(Math.min(0, ctx.batteryCurrentA)))\n : null;\nconst partDuPlafond = Number.isFinite(ctx.bmsMaxDischargeA) && ctx.bmsMaxDischargeA > 0\n ? Math.round(100 * Math.abs(Math.min(0, ctx.batteryCurrentA)) / ctx.bmsMaxDischargeA)\n : null;\n\nconst kwhParPointHaut = 0.169 * ctx.modulesEnService / 7;\nconst kwhParPointBas = 0.097 * ctx.modulesEnService / 7;\nconst capaciteUtileKwh = (67 * kwhParPointHaut + 11 * kwhParPointBas) * 0.955;\n\n// Heure Paris\nconst parisFmt = new Intl.DateTimeFormat('fr-FR', {\n timeZone: 'Europe/Paris',\n weekday: 'long', day: '2-digit', month: '2-digit',\n hour: '2-digit', minute: '2-digit', hour12: false,\n});\nconst nowParis = parisFmt.format(new Date());\n\nconst systemPrompt = [\n \"Tu es le PLANIFICATEUR ENERGIE d'une maison en autoconsommation, en Bretagne.\",\n 'Tu es en MODE OBSERVATION : tes reponses sont enregistrees et comparees au reel,',\n 'elles ne pilotent rien.',\n '',\n 'INSTALLATION, CHIFFRES MESURES (pas des ordres de grandeur) :',\n `- Batterie : ${ctx.modulesEnService} equivalents US2000C, soit ${capaciteUtileKwh.toFixed(1)} kWh`,\n ` reellement livres a la maison entre 100 % et le plancher de securite de 22 %.`,\n ` Un point de SOC vaut ${Math.round(kwhParPointHaut * 1000)} Wh au-dessus de 33 %,`,\n ` ${Math.round(kwhParPointBas * 1000)} Wh en dessous.`,\n '- Champ PV 16,1 kWc sur QUATRE orientations (sud-est 40, sud 35, ouest 45, un suiveur).',\n '- Victron ESS, AUCUNE injection possible : la production est bridee des que rien',\n ' ne peut l absorber. Une PV mesuree basse ne veut donc PAS dire ressource faible.',\n '- Borne EVCS 6-28 A. Reseau EDF commutable, heures creuses 01:24-07:24 et 12:24-14:24.',\n '- Chaque fermeture du contacteur coute 50 a 150 Wh de transitoire : une session',\n ' longue et dimensionnee vaut mieux que des creneaux repetes.',\n '',\n 'LA MAISON, telle qu elle consomme vraiment :',\n '- Quatre personnes. Les gros appels sont BREFS et cales sur les repas :',\n ' bouilloire vers 05:45, grille-pain vers 08:00, cuisson du soir entre 20 h et 23 h.',\n \"- L heure du diner varie de TROIS HEURES d un jour a l autre : un profil horaire\",\n ' moyen ne represente ni l un ni l autre.',\n '',\n 'CE QUI REMPLACE LES REGLES DE SEUIL :',\n 'un bilan energetique tourne toutes les 5 minutes et te donne, pour l instant present,',\n 'l heure de croisement ou la production repassera au-dessus de la consommation,',\n 'l energie que la batterie doit couvrir d ici la, et le SOC qui serait necessaire.',\n 'RAISONNE SUR CES CHIFFRES. Il n existe plus de palier du type',\n '\"prevision forte => cible basse\" : cette regle a ete mesuree fausse sur cette maison.',\n 'Si le bilan est indisponible ou perime, dis-le dans ta raison et reste prudent.',\n '',\n 'CE QUE TU DOIS SAVOIR ET QUE PERSONNE NE TE DIRA AUTREMENT :',\n '- SANS VEHICULE BRANCHE IL Y A QUAND MEME QUELQUE CHOSE A DECIDER : c est la MAISON',\n ' qui doit traverser la nuit. Une batterie au plancher pendant les heures creuses,',\n ' alors que le bilan reclame davantage, est une occasion manquee qui se paiera au',\n ' plein tarif le matin.',\n '- Les chargeurs solaires declarent eux-memes s ils se BRIDENT. Si certains se',\n ' brident, il reste de la ressource REFUSEE : lui donner un preneur (voiture,',\n ' batterie) ne coute rien. S ils sont tous a fond, la production mesuree EST la',\n ' ressource.',\n '- L hiver la nuit a couvrir est plus longue de deux heures en temps solaire : la',\n ' cible du matin y monte naturellement bien plus haut qu en ete.',\n '',\n 'DEUX REGLES QUI PRIMENT SUR TOUT LE RESTE :',\n '1. EXCEDENT SOLAIRE. Charger un vehicule ne se decide pas sur la production',\n ' mais sur ce qui RESTE une fois la maison servie. Cet excedent t est donne',\n ' plus bas. S il est NEGATIF, charger la voiture revient a vider la batterie',\n ' solaire : ne le fais pas, quelle que soit la prevision. S il est nul ou a',\n ' peine positif ALORS QUE DES CHARGEURS SE BRIDENT, la ressource existe mais',\n ' est refusee : la charger est gratuit.',\n '2. LIMITE DU PARC. La marge de decharge restante t est donnee plus bas. Si la',\n ' batterie depasse 80 % de ce que le parc declare accepter, c est un sujet de',\n ' PROTECTION DU MATERIEL, pas de confort : il faut appeler le reseau meme si',\n ' le SOC parait confortable et meme hors heures creuses. Le proprietaire a un',\n ' abonnement 12 kVA et prefere payer quelques kWh plutot que fragiliser le parc.',\n '',\n // <<< CARTE GENEREE — ne pas editer a la main, voir tools/carte-decisions.mjs\n 'QUI ECRIT SUR QUOI (carte generee depuis les sources) :',\n '- Contacteur reseau EDF : proprietaire = Battery / Grid Hysteresis Fix V1, AUTRES ECRIVAINS : EVCS Surplus Controller V2.6, automations, scripts',\n '- Courant de la borne : proprietaire = EVCS Surplus Controller V2.6, AUTRES ECRIVAINS : scripts',\n '- Verrou hysteresis : proprietaire = Battery / Grid Hysteresis Fix V1, AUTRES ECRIVAINS : scripts',\n 'SEUILS DE SOC FIGES dans le code : 20, 22, 25, 35, 40, 60, 80, 85, 90, 95, 100 % — chacun peut contredire le bilan.',\n 'Quand un actionneur bascule de facon incoherente, le coupable le plus probable',\n 'est un ecrivain AUTRE QUE SON PROPRIETAIRE. Nomme-le.',\n // CARTE GENEREE >>>\n '',\n 'TU NE PILOTES RIEN ET TU NE CHOISIS AUCUNE STRATEGIE.',\n 'La planification energetique est faite par le bilan, qui est calcule et mesure.',\n 'Ton seul travail est de REGARDER LE SYSTEME SE COMPORTER et de dire ce qui cloche.',\n '',\n 'Reponds UNIQUEMENT avec un objet JSON valide, sans texte autour, au format EXACT :',\n '{\"constat\":\"ce que tu observes, factuel, max 200 caracteres\",',\n '\"gravite\":\"aucune|faible|moyenne|haute\",',\n '\"ce_qui_cloche\":\"la contradiction ou l incoherence, ou \\'\\' si rien\",',\n '\"piste\":\"ce qu il faudrait verifier ou corriger, ou \\'\\' si rien\",',\n '\"confidence\":<0.0-1.0>}',\n '',\n 'ECHELLE DE GRAVITE, ancree sur des cas reels de cette installation :',\n '- aucune : tout est coherent. C EST LE CAS LE PLUS FREQUENT ET DE LOIN.',\n ' N invente pas un probleme pour justifier une reponse.',\n '- faible : un ecart sans consequence mesurable — une valeur un peu hors cible,',\n ' un etat transitoire qui se resorbe seul.',\n '- moyenne : quelque chose coute de l energie ou de l argent sans danger materiel.',\n ' Exemple reel : la consigne reseau laissee haute en plein soleil, qui',\n ' evince la production — 5,6 kW de solaire remplaces par du reseau.',\n '- haute : un actionneur bascule de facon repetee, OU le materiel est sollicite',\n ' pres de ses limites, OU un automate defait ce qu un autre vient de',\n ' faire. Deux exemples reels : le contacteur reseau qui bascule six',\n ' fois en dix minutes le 12/09 — chaque bascule coute 50 a 150 Wh et',\n ' use le relais, et aucun automate ne le voyait ; et le 05/09 a 20:40,',\n ' le parc a -97,4 A pour une limite declaree de 100 A, soit 3 A de',\n ' marge, pendant que le reseau restait disponible et inutilise.',\n 'UNE OSCILLATION EST TOUJOURS DE GRAVITE HAUTE, meme si chaque bascule prise',\n 'isolement parait anodine : c est la repetition qui fait le degat, et c est',\n 'precisement ce qu aucune regle locale ne peut voir.',\n].join('\\n');\n\n// Les etats du controleur sont des identifiants internes. Le conseiller n'a\n// aucune raison de savoir que `day_vehicle_full_idle` veut dire « le vehicule\n// est plein, il n'absorbera plus rien » — et sans le savoir il signale comme\n// une anomalie un systeme qui a raison.\nconst ETATS = {\n vehicle_not_connected: 'aucun vehicule branche',\n idle_wait_conditions: 'a l arret, conditions de demarrage non reunies',\n idle_wait_source: 'a l arret, en attente d une source',\n day_vehicle_full_idle: 'vehicule PLEIN, il n absorbera plus rien (memoire du jour)',\n night_recovery_done_idle: 'charge de nuit terminee ET batterie a la cible',\n night_session_done_idle: 'charge de nuit terminee, batterie encore sous la cible',\n departure_done_idle: 'charge avant depart terminee',\n vehicle_full_or_paused: 'le vehicule ne demande plus de courant',\n start_min_current: 'demarrage au courant minimal',\n start_grid_hc_min_current: 'demarrage sur le reseau en heures creuses',\n start_manual_local_min_current: 'demarrage manuel au courant minimal',\n charging_hold_grid: 'en charge sur le reseau, consigne tenue',\n charging_hold_manual_local: 'en charge, consigne manuelle',\n charging_hold_cloud_tolerance: 'en charge, tolerance nuage en cours',\n charging_step_up_battery: 'en charge, courant en hausse sur le solaire',\n charging_step_up_grid_hc: 'en charge, courant en hausse sur le reseau',\n charging_step_down_battery: 'en charge, courant en baisse',\n charging_step_down_system_cap: 'en charge, courant ramene au plafond du systeme',\n battery_current_hard_stop: 'ARRET : la batterie se dechargeait trop fort',\n stop_conditions_lost: 'ARRET : conditions de maintien perdues',\n stop_source_lost: 'ARRET : la source a disparu',\n hold_min_run: 'maintenu le temps de la duree minimale de marche',\n};\nconst etatLisible = (e) => ETATS[e] ? `${ETATS[e]} (${e})` : e;\n\nfunction nombre(v, unite, defaut) {\n return Number.isFinite(v) ? `${v}${unite}` : (defaut || 'inconnu');\n}\n\nconst bilanLignes = ctx.balanceStatus === 'ok'\n ? [\n `- heure de croisement production/consommation : ${ctx.balanceCrossingHour || 'inconnue'}`,\n `- energie que la batterie doit couvrir d ici la : ${nombre(ctx.balanceEnergyToCoverKwh, ' kWh')}`,\n `- SOC qui serait necessaire : ${nombre(ctx.balanceRequiredSoc, ' %')} (prudent : ${nombre(ctx.balanceRequiredSocPrudent, ' %')})`,\n `- reseau juge necessaire : ${ctx.balanceGridNeeded ? 'OUI' : 'non'}${Number.isFinite(ctx.balanceGridEnergyNeededKwh) ? ` (${ctx.balanceGridEnergyNeededKwh} kWh)` : ''}`,\n `- production actuellement bridee : ${ctx.balancePvCensored ? `OUI (${ctx.balanceCensorReason})` : 'non'}`,\n `- manque de stockage identifie : ${nombre(ctx.balanceStorageShortfallKwh, ' kWh')}`,\n `- prochaine traversee deficitaire : ${nombre(ctx.balanceNextDeficitKwh, ' kWh')} ${ctx.balanceNextDeficitWindow || ''}`,\n `- vigilance orage : ${ctx.stormLevel}${Number.isFinite(ctx.stormReserveSoc) ? `, reserve conseillee ${ctx.stormReserveSoc} %` : ''}`,\n `- calcule a ${ctx.balanceLastRun || 'heure inconnue'}`,\n ]\n : [`- INDISPONIBLE (statut ${ctx.balanceStatus}) : raisonne sans lui, et dis-le.`];\n\nconst userPrompt = [\n `Nous sommes ${nowParis} (heure de Paris).`,\n '',\n 'ETAT MESURE :',\n `- Batterie : SOC ${ctx.soc} %, courant ${ctx.batteryCurrentA} A (positif = charge)`,\n `- PV : ${Math.round(ctx.pvW)} W instantane, ${Math.round(ctx.pvAvg10mW)} W sur 10 min`,\n `- Chargeurs solaires : ${ctx.mppt.aFond}/${ctx.mppt.total} a pleine puissance, ${ctx.mppt.brides} qui se BRIDENT`,\n `- Maison : ${Math.round(ctx.houseW)} W, dont voiture ${ctx.evcsCharging ? Math.round(ctx.evcsCurrentA * 230) : 0} W`,\n `- EXCEDENT SOLAIRE (production moins maison hors voiture) : ${excedentSolaireW > 0 ? `+${excedentSolaireW} W, il RESTE du solaire` : excedentSolaireW < 0 ? `${excedentSolaireW} W` : '0 W, exactement a l equilibre'}${ctx.mppt.brides > 0 ? ` — ATTENTION, ce chiffre est CENSURE : ${ctx.mppt.brides} chargeurs se retiennent, la ressource reelle est PLUS HAUTE${excedentSolaireW < 0 ? ' et ce chiffre negatif ne prouve PAS qu il manque du soleil' : ''}` : excedentSolaireW < 0 ? ', DEFICIT reel : la batterie porte deja la maison' : ''}`,\n `- MARGE DE DECHARGE du parc : ${margeDechargeA === null ? 'inconnue' : `${margeDechargeA} A restants`}${partDuPlafond === null ? '' : ` — la batterie est a ${partDuPlafond} % de son plafond`}`,\n `- Reseau EDF : ${ctx.gridOn ? 'PRESENT, il peut alimenter la maison' : 'ABSENT, la maison vit sur batterie et solaire'} (contacteur ${ctx.gridOn ? 'ferme' : 'ouvert'}, AC-IN ${ctx.acinAvailable ? 'present' : 'absent'})`,\n `- Consigne de puissance reseau : ${nombre(ctx.gridSetpointW, ' W')}${margeRechargeW === null ? '' : batterieDoitMonter === false && margeRechargeW > 0 ? ` — la batterie n a PAS besoin de monter (SOC ${ctx.soc} %, bilan ${ctx.balanceRequiredSoc} %), donc ces ${margeRechargeW} W de demande reseau n ont aucune destination : ils ne peuvent que remplacer du solaire` : margeRechargeW > 0 ? ` — il reste ${margeRechargeW} W pour RECHARGER la batterie, qui en a besoin` : ' — une fois la maison servie il ne reste RIEN pour recharger la batterie'}`,\n `- Limites declarees par le parc : charge ${nombre(ctx.bmsMaxChargeA, ' A')}, decharge ${nombre(ctx.bmsMaxDischargeA, ' A')}`,\n `- Vehicule : ${ctx.vehicleConnected ? `BRANCHE (${ctx.vehicleSelected})` : 'AUCUN branche'}${ctx.evcsCharging ? `, en charge a ${ctx.evcsCurrentA} A` : ''}`,\n `- Controleur : ${etatLisible(ctx.surplusState)} | source ${ctx.sourceMode} | strategie reelle ${ctx.userStrategy}`,\n `- Cible SOC matin actuellement appliquee : ${ctx.nightTargetActual} %`,\n `- Prevision : ${ctx.todayRemainingKwh} kWh restant aujourd hui, ${ctx.tomorrowKwh} kWh demain`,\n '',\n 'BILAN ENERGETIQUE :',\n ...bilanLignes,\n '',\n 'DERNIERS EVENEMENTS DU SYSTEME (le plus recent en premier) :',\n ...(ctx.evenements.length ? ctx.evenements : ['- aucun evenement transmis']),\n '',\n 'Quelle est ta recommandation ? JSON uniquement.',\n].join('\\n');\n\nreturn [{\n json: {\n enabled: ctx.advisorEnabled,\n messages: [\n { role: 'system', content: systemPrompt },\n { role: 'user', content: userPrompt },\n ],\n context: ctx,\n }\n}];\n" } }, {