Compare commits

...

2 Commits

Author SHA1 Message Date
Tallagrand Thierry
2f3a66993b Update AGENTS.md with Qwen3-VL screen analysis procedure, add MANUEL_COMPLET.md and vision-notes.md 2026-07-18 02:14:22 +02:00
Tallagrand Thierry
1b032b5a20 Fix: 4 bugs critiques corrigés + backup workflow V2.6
Bugs corrigés (17/07 après-midi) :
1. Typo DECISION_ENGINEV2 : noDemandnightSessionNeedsClearScoreOff → noDemandScoreOff
2. Artefacts WINDOWS_SOURCEV2 : 3 occurrences tool_f6d3316d2001k4aAfEjbKGNUX2 supprimées
3. Session nuit stuck : night_session_active jamais clearé après fenêtre HC
4. EDF rebranché en journée : ajout condition context.profile === 'night_hc'

Config ajustée :
- battery_discharge_soft_a : 0A (au lieu de -8A)
- battery_neutral_band_a : 0A
- soc_start_min : 80% (au lieu de 94%)
- night_target_soc : 70% (au lieu de 85%)

Mode sonde activé pour provoquer production PV en autoconsommation.

Résultat : Jeep en charge à 17A avec soleil, EDF OFF (nuit seulement),
delivery 99.9%, système 100% auto en auto_solar_plus.
2026-07-17 20:10:05 +02:00
18 changed files with 1330 additions and 2 deletions

View File

@@ -63,3 +63,70 @@ Quand tu analyses le pipeline complet (plusieurs nœuds), n'extrais que les
lignes pertinentes (grep -n "name"/"jsCode" puis sed sur la plage), jamais
le workflow JSON entier en mémoire Python. Traite un nœud, résume, libère.
## Qwen3-VL — Traitement obligatoire des captures d'ecran
Quand le modele actif est `qwen3-vl` et que l'utilisateur fournit une ou plusieurs captures d'ecran, images d'interface, screenshots, photos d'ecran ou pieces jointes image, tu DOIS systematiquement appliquer cette procedure avant toute autre analyse.
### Procedure obligatoire
Pour chaque image recue, produire une sortie structuree avec exactement les sections suivantes :
1. OCR brut
- Recopier tout le texte visible dans l'image.
- Conserver les chemins, noms de fichiers, commandes, messages d'erreur, URLs visibles, noms de modeles, ports, statuts et valeurs numeriques.
- Ne pas corriger silencieusement le texte : si un caractere est incertain, l'indiquer avec `[incertain]`.
2. Elements UI visibles
- Decrire les boutons, menus, onglets, listes, champs, cases cochees, selection active, panneaux ouverts et zones importantes.
- Indiquer les elements selectionnes ou mis en evidence.
3. Erreurs, warnings et indices techniques
- Lister tous les messages d'erreur, warnings, traces, logs, codes HTTP, statuts Docker/vLLM/OpenCode/MCP ou signaux visuels de probleme.
- Si aucun probleme n'est visible, ecrire : `Aucune erreur visible`.
4. Etat actuel deduit
- Resumer ce que l'image montre concretement.
- Distinguer les faits visibles des hypotheses.
- Ne jamais inventer d'IP, URL, token, nom d'outil MCP ou valeur absente de l'image.
5. Actions recommandees
- Proposer les prochaines actions sous forme courte et operationnelle.
- Si l'image concerne n8n, Home Assistant, Victron, grid ou EVCS, respecter les regles MCP du projet : ne pas proposer de curl/wget/appel HTTP direct.
- Si une information manque, demander a l'utilisateur au lieu de deviner.
### Memoire partagee avec les autres modeles
Apres l'analyse, si la capture contient une information utile pour la suite de la session OpenCode, tu DOIS proposer ou creer un resume exploitable en texte dans :
`docs/vision-notes.md`
Format recommande :
```md
# Vision notes
Source
Image(s) analysee(s) : <description courte>
# OCR brut
...
# Éléments UI
...
# Erreurs visibles
...
# État actuel
...
# Actions recommandées
...
Objectif : permettre a un autre modele texte, par exemple `minimax-m2.5`, de reutiliser l'information extraite sans avoir acces aux pixels de l'image.
### Regle critique
Ne considere jamais que les autres modeles ont acces a l'image originale. Toute information importante vue dans la capture doit etre explicitement convertie en texte dans la reponse ou dans `docs/vision-notes.md`.
Cette analyse doit précéder toute modification de workflow ou configuration.

View File

@@ -207,6 +207,50 @@ Tous les maillons sont corrigés par P1.
prise garage conditionnelle, 33 templates MQTT durcis).
- **12/07/2026** : P6 (override abondance du plancher SOC midi — PV fort + batterie en charge
⇒ démarrage dès SOC 40) ; validation en réel à 12:43, charge Jeep engagée.
- **17/07/2026 (après-midi)** : **Session de débogage majeure** — résolution d'un enchaînement de bugs
bloquants empêchant la charge solaire de la Jeep :
**Bug 1 — Typo critique dans DECISION_ENGINEV2** :
- Ligne ~333 : `noDemandnightSessionNeedsClearScoreOff` (variable inexistante) au lieu de `noDemandScoreOff`
- Conséquence : `evcsVehicleNoDemandSemantic` restait `false` même quand la voiture était pleine
- Le filtre "véhicule plein/pause" ne fonctionnait jamais → blocage du système
**Bug 2 — Artefacts de corruption dans WINDOWS_SOURCEV2** :
- 3 occurrences de `tool_f6d3316d2001k4aAfEjbKGNUX2` (résidu de copier-coller ou debug)
- Provoquaient des erreurs `is not defined` à l'exécution
- Workflow en ERROR continu depuis 14:49
**Bug 3 — Session nuit jamais clearée** :
- `input_boolean.victron_evcs_night_session_active` restait `on` depuis 23:24 la veille
- Même après la fenêtre HC (01:24-07:24), le profil restait `night_hc` → `battery_assist_night`
- En plein jour avec grand soleil, le système pensait être en "assistance batterie nuit"
- Clearé manuellement à 14:45
**Bug 4 — EDF rebranché automatiquement en journée** :
- Condition `edf_general_ok_on` déclenchée dès `sourceMode` = `grid_forced` ou `grid_hc_allowed`
- Même en plein jour avec du soleil, EDF se rebranchait si le workflow passait en ces modes
- Correction : ajout de `context.profile === 'night_hc'` pour ne rebrancher que la nuit
**Configuration ajustée** :
- `battery_discharge_soft_a` : 0A (au lieu de -8A) — permet le démarrage sans décharge batterie
- `battery_neutral_band_a` : 0A (au lieu de -2A) — tolérance nulle
- `soc_start_min` : 80% (au lieu de 94%) — seuil de démarrage plus réaliste
- `night_target_soc` : 70% (au lieu de 85%) — laisse plus de marge pour le PV
**Mode sonde activé** :
- `probe_enabled` : ON — permet le démarrage à 6A pour "provoquer" la production PV
- Particulièrement utile en autoconsommation sans injection où le PV ne produit que si chargé
**Résultat** :
- Workflow réparé et fonctionnel
- Jeep en charge à 17A avec le soleil (16:58)
- EDF OFF (ne se rebranche que la nuit)
- Système 100% auto en `auto_solar_plus`
- DeliveryRatio à 99.9% — charge stable et efficace
**À noter** : Le courant de sonde (`probeCurrentA`) est codé en dur dans le workflow n8n (nœud SETUP/PARAMS),
pas dans un helper HA. Pour le changer de 6A à 10A, modifier directement dans l'interface n8n.
Mais le workflow augmente automatiquement le courant (17A atteints), donc ce n'est pas critique.
## ⚙️ CONFIG LOCALE — Qwen3.6-35B sur DGX Spark (≠ gros modèle cloud)
@@ -298,5 +342,5 @@ Tous les maillons sont corrigés par P1.
---
*Document mis à jour le : 17/07/2026 (~00:20) — ajout du skill n8n-opencode-skill session opencode avec accès HA (REST+WS+NFS) + n8n (API+MCP)*
*État live à la clôture : Jeep en charge solaire (abondance), batterie +114 A, P6 validé en production*
*Document mis à jour le : 17/07/2026 (~17:00) — session de débogage majeure : 4 bugs critiques corrigés (typo DECISION_ENGINEV2, artefacts WINDOWS_SOURCEV2, session nuit stuck, EDF rebranché en journée), configuration ajustée, mode sonde activé, Jeep en charge solaire à 17A*
*État live à la clôture : Système 100% auto fonctionnel, EDF OFF (nuit seulement), delivery 99.9%, SOC target 70%, batterie décharge tolérée à 0A*

420
docs/MANUEL_COMPLET.md Normal file
View File

@@ -0,0 +1,420 @@
# Manuel Utilisateur - Système EVCS Solaire
> Document généré le 17/07/2026
> Projet: n8n / Home Assistant / EVCS Solaire sans injection réseau
---
## 1. Architecture Globale
```
┌─────────────────────────────────────────────────────────────────┐
│ DGX Spark (10.10.10.8) │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Qwen3.6-35B │ │ Qwen3-VL │ │
│ │ (texte, code) │ │ (vision) │ │
│ └────────┬────────┘ └────────┬────────┘ │
└───────────┼──────────────────────┼──────────────────────────────┘
│ │
▼ ▼
┌───────────────────────────────────────────────────────────────────┐
│ opencode (minimax-m2.5) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Skills: n8n-code-javascript, n8n-expression-syntax, │ │
│ │ n8n-mcp-tools-expert, n8n-node-configuration, │ │
│ │ n8n-validation-expert │ │
│ └─────────────────────────────────────────────────────────────┘ │
└───────────┬──────────────────────┬───────────────────────────────┘
│ │
▼ ▼
┌──────────────────────┐ ┌──────────────────────────────────────┐
│ n8n (cloud) │ │ Home Assistant (10.10.10.17:8123) │
│ https://n8n.airtria.pro │ ┌──────────────────────────────────┐ │
│ ┌────────────────┐ │ │ │ Dashboards YAML (17 fichiers) │ │
│ │ 40 workflows │ │ │ │ - evcs_master.yaml │ │
│ │ 13 actifs │ │ │ │ - evcs_mobile.yaml │ │
│ └────────┬───────┘ │ │ │ - victron_master.yaml │ │
│ │ │ │ │ - etc. │ │
│ ▼ │ │ └──────────────────────────────────┘ │
│ ┌────────────────┐ │ └──────────────────────────────────────┘
│ │ MCP Servers │ │
│ │ (6 outils) │ │
│ └────────┬───────┘ │
└───────────┼─────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ Équipements physiques │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ EVCS HQ229 │ │ Victron ESS │ │ MultiPlus │ │
│ │ (borne VE) │ │ (batterie) │ │ (onduleur) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└───────────────────────────────────────────────────────────────────┘
```
---
## 2. Workflows n8n Actifs
### 2.1 Gestion Énergie (EVCS + Grid)
| ID | Nom | Fréquence | Fonction |
|---|---|---|---|
| `ATswvGfG4KJUls0K` | HA Snapshot EVCS Surplus Controller V2.6 | 30s | Pilotage borne EVCS, décision charge solaire/réseau |
| `7iIlu7LLTW7TZA8o` | Victron - Battery / Grid Hysteresis Fix V1 | 1 min | Hystérésis réseau EDF (ON ≤20%, OFF ≥30%) |
| `cTeeHy4ePiVeELLh` | Victron - Auto Charge Manager V1.2 | 30s | Limites DVCC batterie (MaxChargeCurrent/Voltage) |
### 2.2 Gestion Charges
| ID | Nom | Fréquence | Fonction |
|---|---|---|---|
| `2NhrfxuGm4pTUNs9` | SDB Climate & Surplus Manager V2.2 | 1 min | Pilotage chauffage SDB selon surplus |
| `FtPVF7byhtu4o6Oh` | Victron - Garage Thermal Surplus Manager V2.2 | 1 min | Gestion garage thermique |
| `A11aOb50cGtpJmvn` | Water Heater Advisor V2.3 | 10 min | Advisor ballon ECS |
| `yX2j8m04e3pxaoQq` | Water Heater Advisor ECS 6 Nodes + Build + Execute | 10 min | Pilotage ballon ECS |
| `YjiNCpEoVhPT8JMw` | Victron - Flexible Load Advisor V1 | 5 min | Charge flexible |
### 2.3 Advisor / Monitoring
| ID | Nom | Fréquence | Fonction |
|---|---|---|---|
| `U0nRmdS9Pa0qzpWm` | Victron - PV Surplus Advisor V1 | 15 min | Advisor surplus PV |
### 2.4 MCP (Machine Communication Protocol)
| ID | Nom | Fonction |
|---|---|---|
| `76hHlVYIgt1lEHyR` | MCP - ha.get_state | Lecture états HA |
| `eeDmEICJ3ArjwpCt` | MCP - ha.set_helper | Écriture helpers HA |
| `uGZAOJjKegRuRNyb` | MCP - grid-set-state | Pilotage ON/OFF réseau EDF |
| `a92quWH4pokpIqdn` | MCP - victron-set-charge-limits | Limites courant/tension batterie |
| `RVTMdsvR4i8wSc18` | MCP - pv.get_forecast | Prévisions Forecast.Solar |
---
## 3. Skills opencode
| Skill | Chemin | Fonction |
|---|---|---|
| n8n-code-javascript | `.opencode/skills/n8n-code-javascript/SKILL.md` | Analyse/patch code JS dans nodes n8n |
| n8n-expression-syntax | `.opencode/skills/n8n-expression-syntax/SKILL.md` | Validation syntaxe {{ }} |
| n8n-mcp-tools-expert | `.opencode/skills/n8n-mcp-tools-expert/SKILL.md` | Utilisation outils MCP |
| n8n-node-configuration | `.opencode/skills/n8n-node-configuration/SKILL.md` | Configuration nœuds n8n |
| n8n-validation-expert | `.opencode/skills/n8n-validation-expert/SKILL.md` | Interprétation erreurs validation |
---
## 4. MCP - Outils disponibles
### 4.1 Lecture
- **ha-get-state** : Lire un état Home Assistant
- Input: `entity_id` (ex: `sensor.victron_battery_soc`)
- Output: état + attributs
- **pv-get-forecast** : Prévisions solaires
- Input: aucun
- Output: `today_remaining_kwh`, `tomorrow_kwh`, `tomorrow_peak_time`
### 4.2 Écriture
- **ha-set-helper** : Écrire un helper HA
- Input: `entity_id`, `value`
- **grid-set-state** : Piloter le réseau EDF
- Input: `state` ('on' ou 'off')
- **victron-set-charge-limits** : Limites de charge
- Input: `max_charge_current_a`, `max_charge_voltage_v`
### 4.3 Workflows n8n
- **n8n-mcp** : CRUD workflows
- List workflows, get workflow, update workflow, activate/deactivate
---
## 5. Dashboards Home Assistant
### 5.1 Principaux
| Fichier | Titre | Description |
|---|---|---|
| `evcs_master.yaml` | EVCS Master | Dashboard principal borne VE |
| `evcs_mobile.yaml` | EVCS Mobile | Version mobile |
| `victron_master.yaml` | Victron Master | Dashboard principal système Victron |
| `victron_mobile.yaml` | Victron Mobile | Version mobile |
### 5.2 Debug
| Fichier | Titre | Description |
|---|---|---|
| `big_victron_debug.yaml` | Victron Debug (complet) | Debug étendu |
| `victron_debug.yaml` | Victron Debug | Debug standard |
| `EVCS_SOLAR.yaml` | EVCS Solar | Vue solaire EVCS |
### 5.3 Pilotage
| Fichier | Titre | Description |
|---|---|---|
| `ECS_PILOTAGE.yaml` | ECS Pilotage | Pilotage ECS |
| `ECS_PILOTAGE_PREMIUM.yaml` | ECS Pilotage Premium | Pilotage ECS avancé |
| `GARAGE_PREMIUM_PILOTAGE.yaml` | Garage Premium Pilotage | Pilotage garage |
| `SDB_PREMIUM_PILOTAGE.yaml` | SDB Premium Pilotage | Pilotage SDB |
### 5.4 Debug Premium
| Fichier | Titre | Description |
|---|---|---|
| `ECS_DEBUG_REGLAGES.yaml` | ECS Debug Réglages | Debug ECS |
| `ECS_DEBUG_REGLAGES_PREMIUM.yaml` | ECS Debug Réglages Premium | Debug ECS avancé |
| `GARAGE_DEBUG_PREMIUM.yaml` | Garage Debug Premium | Debug garage |
| `SDB_DEBUG_PREMIUM.yaml` | SDB Debug Premium | Debug SDB |
---
## 6. Helpers Home Assistant (principaux)
### 6.1 Configuration EVCS
| Entity ID | Type | Description |
|---|---|---|
| `input_select.victron_evcs_strategy` | select | Stratégie (auto_solar_plus, force_grid_now, etc.) |
| `input_number.victron_evcs_required_energy_kwh` | number | Énergie demandée (kWh) |
| `input_boolean.victron_evcs_departure_priority_enabled` | boolean | Priorité départ |
| `input_datetime.victron_evcs_departure_time` | datetime | Heure de départ |
| `input_boolean.victron_evcs_allow_grid_hc_night` | boolean | Réseau HC nuit |
| `input_boolean.victron_evcs_allow_grid_hc_midday` | boolean | Réseau HC midi |
| `input_boolean.victron_evcs_surplus_auto_enabled` | boolean | Contrôleur surplus actif |
### 6.2 État système
| Entity ID | Type | Description |
|---|---|---|
| `input_text.victron_evcs_operating_mode` | text | Profil actif |
| `input_text.victron_evcs_surplus_state` | text | État interne |
| `input_text.victron_evcs_surplus_current_decision` | text | Décision logique |
| `input_text.victron_evcs_source_mode` | text | Source autorisée (Solaire/Réseau) |
| `input_text.victron_evcs_surplus_reason` | text | Raison courte |
| `input_text.victron_evcs_last_block_reason` | text | Dernier blocage |
### 6.3 Paramètres seuils
| Entity ID | Type | Description | Valeur actuelle |
|---|---|---|---|
| `input_number.victron_evcs_soc_start_min` | number | Seuil SOC démarrage | 80% |
| `input_number.victron_evcs_soc_stop_min` | number | Seuil SOC arrêt | 70% |
| `input_number.victron_evcs_midday_soc_min` | number | Seuil SOC midi | 75% |
| `input_number.victron_evcs_night_target_soc` | number | Cible SOC nuit | 70% |
| `input_number.evcs_plafond_courant_edf_on` | number | Plafond EDF ON | 20A |
| `input_number.victron_evcs_current_max_auto_a` | number | Plafond modes auto | 22A |
### 6.4 Hystérésis réseau
| Entity ID | Type | Description |
|---|---|---|
| `input_boolean.victron_grid_hysteresis_latch` | boolean | Latch hystérésis |
| `input_boolean.victron_evcs_night_session_active` | boolean | Session nuit active |
| `input_boolean.victron_evcs_night_grid_takeover_needed` | boolean | Takeover réseau nuit |
---
## 7. Capteurs clés (lecture seule)
| Entity ID | Description |
|---|---|
| `sensor.victron_battery_soc` | SOC batterie (%) |
| `sensor.victron_battery_current` | Courant batterie (A) |
| `sensor.victron_pv_power_system` | Puissance PV totale (W) |
| `sensor.victron_consumption_power_l1` | Consommation maison (W) |
| `sensor.victron_grid_power_l1` | Puissance réseau (W) |
| `sensor.victron_evcs_current` | Courant EVCS réel (A) |
| `sensor.victron_evcs_set_current` | Consigne lue borne (A) |
| `sensor.victron_evcs_ac_power` | Puissance EVCS (W) |
| `sensor.victron_evcs_charging_time` | Durée de charge |
| `sensor.victron_evcs_statut_fr` | Statut FR borne |
| `sensor.victron_evcs_mode_fr` | Mode FR borne |
| `switch.edf_general_ok_switch` | Interrupteur réseau EDF |
| `binary_sensor.victron_evcs_vehicle_connected` | Véhicule connecté |
| `binary_sensor.victron_evcs_device_connected` | Borne détectée |
---
## 8. Scripts HA
| Script | Fonction |
|---|---|
| `script.evcs_boost_edf` | BOOST EDF 28A (plafonds 28A + force_grid_now) |
| `script.evcs_boost_off` | Retour normal (plafonds 20/22 + auto_solar_plus) |
| `script.edf_urgence_off` | EDF Urgence OFF (hystérésis OFF + latch OFF + stratégie stop) |
| `script.edf_force_on` | EDF forcé ON |
| `script.edf_rendre_la_main` | Rendre la main au système auto |
---
## 9. Stratégies de charge
| Stratégie | Description | SourceMode | Conditions |
|---|---|---|---|---|
| `auto_solar_plus` | Solaire uniquement + assistance batterie haute | solar_only / solar_potential | SOC ≥ 90% + dette nuageuse faible |
| `auto_solar` | Solaire classique | solar_only | - |
| `force_grid_now` | Préservation batterie (remonter à seuil) | grid_forced / grid_hc_allowed | Si SOC < 22% → remonter à 35% été / 50% mi-saison / 75% hiver |
| `force_charge_now` | Charge immédiate (solution de secours manuelle) | solar_only si possible, grid_forced si SOC < 35% | À la discrétion du conducteur qui doit prendre sa voiture |
| `stop` | Arrêt complet | - | - |
---
## 10. Profils temporels
| Profil | Horaire | Description |
|---|---|---|
| `morning_solar` | 07:30 - 11:00 | Fenêtre solaire matin |
| `midday_hc_or_solar` | 12:24 - 14:24 | HC midi ou solaire |
| `evening_high_soc` | 17:00 - 20:30 | Soir haute priorité SOC |
| `night_hc` | 01:24 - 07:24 | Heures creuses nuit |
| `outside_window` | Autres | Hors fenêtres → Mode probe (sonde) pour relancer le PV si besoin |
---
## 11. Logique de décision (DECISION_ENGINEV2)
### 11.1 Garde-fous (Safety)
- **commonSafetyStartOk** : Vérifications sécurité au démarrage
- **commonSafetyHoldOk** : Vérifications sécurité au maintien
- **mustStopHard** : Arrêt d'urgence (batterie basse, surcharge)
### 11.2 Conditions de démarrage
| Condition | Seuil | Description |
|---|---|---|
| `solarStartOk` | SOC ≥ profil + PV ≥ 1000W | Démarrage solaire |
| `gridStartOk` | SOC ≤ 35% + réseau dispo | Démarrage réseau |
| `batteryAssistSolarStartOk` | SOC ≥ 90% + dette nuageuse faible | Assistance batterie solaire |
| `probeStartOk` | Mode probe actif | Sonde PV |
### 11.3 Step-up / Step-down
- **Step-up** : Augmente le courant si PV suffisant ou batterie en charge
- **Step-down** : Diminue si batterie décharge trop ou dette nuageuse
### 11.4 Cloud Debt (Dette Nuageuse) & Probe
#### Problème
Quand les batteries sont pleines (SOC > 90%) et que la maison consomme peu (< 1200W), le MPPT de l'onduleur Victron se bride à la consommation maison uniquement. Le PV visible reste bas tant que l'EVCS ne démarre pas.
#### Dette Nuageuse
- **Définition** : La batterie se décharge pour alimenter la maison + VE sans production PV suffisante
- **Seuil max** : 1.5 kWh
- **Durée max** : 30 min
- Cette dette doit être "remboursée" par du surplus PV ultérieur
#### Mode Probe (Sonde)
- **Principe** : Lancer la borne à 10A pour "provoquer" une production PV qui va s'adapter en quelques secondes
- **Courant probe** : 10A (augmenté de 6A à 10A)
- **Durée probe** : 3 minutes
- **Retry** : 45 minutes si échec
- **Activation** : En dehors des fenêtres définies (`outside_window`) ou lors de passages nuageux
#### Bypass outside_window
En mode `auto_solar_plus` ou `force_charge_now`, le profil `outside_window` ne bloque plus la charge solaire locale si :
- SOC batterie ≥ 90%
- Forecast solaire fort
- Maison consommation faible
### 11.5 Logique Heure de départ (Night EVCS)
#### Objectif
S'assurer que le véhicule est chargé avant l'heure de départ prévue.
#### Comportement
| Scénario | Action |
|---|---|
| Heure départ proche + batteries suffisantes | Charge solaire prioritaire |
| Heure départ proche + batteries insuffisantes | grid_forced (HC) si disponible |
| Heure départ proche + pas de HC | grid_forced (plein tarif) |
#### Paramètres
- **batteryHardFloorPct** : Plancher dur batterie (ex: 22%)
- **batteryMorningTargetPct** : Objectif SOC matin selon forecast
- Forecast fort (> 15 kWh) : 40%
- Forecast moyen (8-15 kWh) : 50%
- Forecast faible (< 8 kWh) : 75%
- **gridTakeoverTriggerPct** : Seuil de basculement réseau
- **batteryRecoveryUrgent** : Si temps restant < temps de charge nécessaire
---
## 12. Configuration opencode.json
```json
{
"provider": {
"openrama": {
"models": {
"minimax-m2.5": { "name": "minimax-m2.5" }
}
},
"qwen-dgx-vl": {
"models": {
"qwen3-vl": { "attachment": true, "modalities": {"input": ["text","image"]} },
"qwen3.6-35b": { "options": { "temperature": 0.15, "reasoningEffort": "none" } }
}
}
},
"mcp": {
"n8n-mcp": { "type": "local", "command": ["npx", "-y", "n8n-mcp-server"] },
"ha-get-state": { "type": "remote", "url": "https://n8n.airtria.pro/mcp/..." },
"ha-set-helper": { "type": "remote", "url": "https://n8n.airtria.pro/mcp/..." },
"grid-set-state": { "type": "remote", "url": "https://n8n.airtria.pro/mcp/grid-set-state/sse" },
"victron-set-charge-limits": { "type": "remote", "url": "https://n8n.airtria.pro/mcp/..." },
"pv-get-forecast": { "type": "remote", "url": "https://n8n.airtria.pro/mcp/..." }
},
"permission": {
"bash": { "curl *": "deny", "wget *": "deny", "*": "ask" }
}
}
```
---
## 13. Méthode de travail
### 13.1 Lecture d'un workflow n8n
1. Utiliser `n8n-mcp_get_workflow` avec l'ID
2. Le fichier est écrit dans `~/.local/share/opencode/tool-output/tool_*`
3. **Attention** : Le fichier commence par "Retrieved workflow: <nom>" AVANT le JSON
4. Extraction par nœud :
```bash
grep -n '"name": "NOM_DU_NOEUD"' <fichier>
sed -n 'DEBUT,FINp' <fichier>
```
### 13.2 Modification
1. **TOUJOURS** backup avant modification
2. Une seule modification à la fois
3. Vérifier avec dry-run
4. Valider en production
### 13.3 Interdiction
- **JAMAIS** de curl/wget direct vers HA/n8n/Victron
- **JAMAIS** d'IP/URL/token inventés
- Utiliser les MCP uniquement
---
## 14. À compléter par l'utilisateur
- [ ] Tableau détaillé des fonctionnalités (entrées/sorties/conditions)
- [ ] Documentation EDF Urgence (créé par FABLE)
- [ ] Liste des incidents récurrents
- [ ] Procédures de dépannage
- [ ] Glossaire des termes techniques
---
*Document généré automatiquement le 17/07/2026*

172
docs/vision-notes.md Normal file
View File

@@ -0,0 +1,172 @@
# OCR brut
[Image 1]
AIRTRIA / MR TALLAGRAND 3,1KW (2X5RECOM) LANNION
Dernière mise à jour: OK 20:14
Temps réel
Temps: 24°C
Charges CA 3615 W
L1 3615 W 49.9 Hz
Charguer VE 1256 W
Statut charge
Véhicule: Guest EV
Temps de charge: 1h, 53m, 43s
Mode: Manual
Courant de charge: 6.0 A
Énergie chargée: 4 kWh
Énergie totale: 3266 kWh
Décharge en cours: 78.0%
Tension: 49.75 V
Courant: -19.9 A
Température: 25°C
Chargeur PV: 2421 W
AIRTRIA MPPT1 164 V 0.9 A 141 W
V1 57.77 V 3.7 A 215 W
V2 - - -
MPPT 450/200 HQ2449YR9PT-Solar 1 257 V 1.6 A 409 W
MPPT 450/200 HQ2449YR9PT-Solar 2 281 V 1.6 A 447 W
MPPT 450/200 HQ2449YR9PT-Solar 3 331 V 1.4 A 456 W
MPPT 450/200 HQ2449YR9PT-Solar 4 68.62 V 5.5 A 375 W
AIRTRIA MP2 78.0% 49.60 V -77.1 A -3605 W Discharging
[Image 2]
EVCS Master
Vue borne / session / stratégie / énergie
Charge EVCS active
État borne
Statut global
EVCS: unavailable - Mode Manuell - 6.0 A
Statut FR: Indisponible
Mode FR: Manuell
Statut brut: 2
Mode brut: 0
EVCS détecté: Connecté
Branché
Durée charge: 1h 54m
Contrôleur surplus actif
Session
Courant / puissance / énergie
Courant EVCS: 6.0 A
Session en cours: 1234 W - 6.0 A - Consigne 6.0 A - 1h 54m
Puissance EVCS: 1234 W
Courant réel: 6.0 A
Consigne lue: 6 A
Durée charge: 1h 54m
Énergie session: Inconnu
Stratégie & décision
Mode utilisateur: auto_solar_plus - Profil: evening_high_soc - Décision: hold - Source: Solaire
Paramètres utilisateur
Véhicule cible: Jeep
Énergie demandée: 10.5 kWh
Priorité départ: On
Heure départ: 8:50
[Image 3]
EVCS Master
Énergie demandée: 10,5 kWh
Priorité départ: On
Heure départ: 8:50
Stratégie EVCS: auto_solar_plus
Réseau HC nuit: On
Réseau HC midi: On
Contrôleur surplus actif: On
Décision contrôleur
Profil actif: evening_high_soc
État interne: hold_min_run
Décision logique: hold
Source autorisée: Solaire
Raison courte: Maintien jusqu'au temps mini ON | VehicleDemandFilter déliv
Dernier blocage: none
Blocqué jusqu'à: 17/07/2026
Contexte énergie
Batterie / PV / réseau
Contexte instantané: SOC 78.0% - PV 2758 W - Maison 3645 W - Grid 0 W
SOC batterie: 78.0%
Courant batterie: -22.70 A
Puissance PV: 2758 W
Charges maison: 3645 W
Puissance réseau: 0 W
Réseau EDF: Off
Actions rapides
Contrôle direct EVCS
Charge: On
Contrôleur surplus: Activé
[Image 4]
EVCS Master
ON
Activé
Véhicule: Branché
Courant demandé: 6 A
Commandes manuelles
Start / Stop charge: On
Courant demandé: 6 A
Permission charge: On
Latch contrôle: On
Auto Start borne (diagnostic): Off
BOOST EDF 28A
Retour normal
Plafonds courant EVCS
Plafond EDF ON tous modes: 28 A
Plafond modes auto: 28 A
Diagnostic
Identité / version / brut
Produit: EV Charging Station
Nom borne: EVCS-HQ229DNT7P
Numéro de série: HQ229DNT7P
Firmware: 13375
Statut brut: 2
Mode brut: 0
Auto Start borne: Off
Dernier start: 17/07/2026 19:54
Dernier stop: 17/07/2026 19:30
Dernier changement courant: 17/07/2026 19:54
Début probe: 31/03/2026 0:00
Début cloud deb: 16/07/2026 19:41
Cloud deb: 0.49 kWh
Signature: hold_min_runprofile=evening_high_socsource=solar_onlych
# Éléments UI
- Charge EVCS active
- Mode: Manual (mais stratégie configurée: auto_solar_plus)
- Courant EVCS: 6.0 A
- SOC batterie: 78.0%
- Puissance PV: 2758 W
- Réseau EDF: Off (autoconsommation sans injection)
- Stratégie: auto_solar_plus
- Profil actif: evening_high_soc
- Contrôleur surplus: Activé
# Erreurs visibles
- Mode Manual actif alors que stratégie auto_solar_plus est configurée
- Statut FR: Indisponible (mode français non disponible)
- EVCS: unavailable (même si charge active)
- Grid 0 W - pas d'injection réseau (configuration recherchée)
- Tension batterie 49.60V - proche de la tension de Floating
# État actuel
- Session de charge en cours (1h 54m)
- Courant de charge: 6.0 A (mode manuel)
- SOC batterie: 78.0% (en décharge: -22.70A)
- Puissance PV: 2758 W
- Grid: 0 W (autoconsommation pure, pas d'injection)
- Maison: 3645 W de consommation
- Contrôleur surplus actif
- Décision: hold (maintien du courant minimum)
- Profil: evening_high_soc
# Actions recommandées
- Vérifier si le passage en mode auto_solar_plus est souhaité (actuellement en Manual)
- Le système est en autoconsommation sans injection - comportement normal avec Grid 0W
- La batterie se décharge (-22.70A) pour alimenter la maison + VE
- PV 2758W couvre partiellement la consommation maison (3645W) + charge VE (1234W)
- Le courant de charge pourrait être augmenté si plus de PV disponible
- Surveiller le SOC pour ne pas descendre sous le seuil critique
# Contexte HANDOFF.md
Suite à la session de débogage du 17/07/2026:
- 4 bugs critiques corrigés (typo DECISION_ENGINEV2, artefacts WINDOWS_SOURCEV2, session nuit stuck, EDF rebranché en journée)
- Configuration actuelle: soc_start_min=80%, night_target_soc=70%, battery_discharge_soft_a=0A
- Mode sonde activé (probe_enabled: ON)
- Système fonctionnel avec delivery 99.9%
- EDF OFF la journée, uniquement la nuit

File diff suppressed because one or more lines are too long