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
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
4.2 Écriture
-
ha-set-helper : Écrire un helper HA
-
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
11.6 Cycle nuit HC complet — GRAFCET (P7 + P8 + fixes 08/08/2026)
Deux automates coordonnés via les helpers HA (night_grid_takeover_needed,
victron_evcs_surplus_state) :
- G1 = contrôleur EVCS V2.6 (boucle 30 s)
- G2 = hystérésis EDF (« Victron - Battery / Grid Hysteresis Fix V1 », 1 min)
États surplus « fin de nuit » (aucun ne doit matcher les patterns no-demand
de G2 — full_or_paused / not_requesting_power / charge_complete / no_demand) :
night_session_done_idle : charge finie, recovery batterie possible (EDF
maintenu si SOC < cible)
night_recovery_done_idle : charge finie ET batterie à la cible → EDF
relâché définitivement (anti-rebond)
Incident de référence (nuit 07-08/08/2026)
SOC bloqué pile à la cible (35 %) = point dégénéré (engage soc ≤ 35,
release soc > 35) → rebond EDF ON/OFF période ~10 min + flapping ACM 2-4 s,
et EDF maintenu 25 min après débranchement. Corrigé par Fix A (flag collant +
bande 2 pts), Fix B (snapshot relit startSOC/startAt), Fix C (coupure au
débranchement), Fix D (statut charged = fin de charge immédiate).
12. Configuration opencode.json
13. Méthode de travail
13.1 Lecture d'un workflow n8n
- Utiliser
n8n-mcp_get_workflow avec l'ID
- Le fichier est écrit dans
~/.local/share/opencode/tool-output/tool_*
- Attention : Le fichier commence par "Retrieved workflow: " AVANT le JSON
- Extraction par nœud :
13.2 Modification
- TOUJOURS backup avant modification
- Une seule modification à la fois
- Vérifier avec dry-run
- 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
Document généré automatiquement le 17/07/2026