Garde batterie en charge reseau : voiture bridee au courant mini au lieu d'un arret + 20 min de verrou

This commit is contained in:
Tallagrand Thierry
2026-10-07 01:18:13 +02:00
parent c07b885bc9
commit 0e0c0a558d
5 changed files with 97 additions and 6 deletions

View File

@@ -1853,6 +1853,15 @@ orange-cloture (verifie par SPARK : envoye le 05/10 a 17:42).
batterie du mode reseau juge sur UN echantillon, et le blocage anti-cliquetis de 20 min a coute ~40 min
de charge. Deux pistes soumises au proprietaire (tolerance de duree en mode reseau ; brider a 6 A au
lieu de couper), decision en attente.
**Decision du proprietaire (07/10 ~01:10) : brider a 6 A. Deploye 01:15.** `BATTERY_CLOUD_LOCKS.js` :
`gridBatteryHardBreach` (session active, source reseau, batterie < garde dur reseau) ; au-dessus du
courant mini -> `gridBatteryCutToMin` (DECISION_ENGINEV2 : etat `charging_cut_to_min_grid_guard`,
consigne = courant mini TOUT DE SUITE, sans cooldown, ni arret ni verrou ; remontee au pas normal) ;
`gridBatteryProtectionStop` (arret + verrou 20 min, `_no_grid` inchange) seulement si deja AU MINI.
Golden **138/138** : `boost-garde-sans-reseau-emet-no-grid` passe a 6 A (l'arret ne vaut plus qu'au mini),
+ `garde-reseau-bride-a-6a-reseau-absent` et `garde-reseau-bride-a-6a-pointe-maison-0610` (13:46 rejoue) ;
mutations : cut desactive -> 2 scenarios, `>=` au lieu de `>` -> 1 ; acm 20/20, hysteresis 24/24.
Executions n8n en succes apres le PUT. A verifier a la prochaine charge reseau avec pointe maison.
- 14:24:00 echeance de `force_grid_now` en reel (trace « retour auto_solar_plus (sortie de la fenetre
d'heures creuses), SOC 57 % »), EDF ouvert 14:25:03.
@@ -1900,4 +1909,4 @@ orange-cloture (verifie par SPARK : envoye le 05/10 a 17:42).
`concierge-live.js.bak-2h-20261007-011338`.
---
*Document mis a jour le : 06/10/2026 (~23:35) — allers-retours brefs de la borne retrouves dans l'historique HA (echange VW -> JEEP de 20 s), production 14,5 kWh contre 22 prevus, defaut garde batterie en mode reseau a trancher ; voiture a midi : la batterie n'est plus comptee comme du solaire (EDF automatique les jours de depart si le surplus ne couvre pas) ; nuit 05->06 : JEEP chargee sur EDF en complete (6,32 kWh), budget 0 du a la prevision, Windy/ECMWF contre VRM, a comparer ce soir ; concierge aligne sur la preuve fin de trajet ; a verifier : nuit 05->06 et mardi faible, comparaison VRM/Forecast.Solar ; JEEP identifiee aussi par sa fin de trajet, prevision de la nuit 05->06 ; identification JEEP reussie en reel, correction humaine qui prime (refus supprime), session du 04/10 coupee ; EVCS Master en quatre onglets ; Jeep lue par Uconnect et identifiee seule, capacite JEEP 10 kWh, concierge variante (a) ; releve par photo (SPARK), hass-uconnect en attente ; ecart semaine/week-end mesure (pas de profil week-end la nuit) ; nuit du budget : budget borne au plancher prudent, sans EDF = voiture bloquee meme EDF ferme (batterie seule) ; Energie : sauts corriges ; tableau Energie complete (Sud/Ouest, batterie par integration, borne ; aucun redemarrage HA) ; kilometrage des vehicules (km/kWh, capacite, releves de reference, agent cable 15/15) ; a verifier le 04/10 au matin : nuit du budget JEEP ; concierge : vehicule non confirme demande, heure de saisie ; Grafana vehicules en tableau ; Grafana vehicules : ZERO et Invite ajoutes, session 16:46 reetiquetee ZERO ; prevision SOC 10 h ~35 % ; concierge fiable : niveau note par le script, une ligne, dedoublonnage, simulation par drapeau ; agent : message incompris = question, bourse sur demande explicite (banc final 6/6) ; a verifier : nuit du samedi 03 au dimanche 04/10 (budget < besoin JEEP), cron orange-cloture lundi 05/10 apres 17:40, comparaison VRM / Forecast.Solar lundi 05/10*
*Document mis a jour le : 07/10/2026 (~01:20) — garde batterie reseau : voiture bridee a 6 A au lieu d'un arret ; garde-fou concierge 2 h ; allers-retours brefs de la borne retrouves dans l'historique HA (echange VW -> JEEP de 20 s), production 14,5 kWh contre 22 prevus, defaut garde batterie en mode reseau a trancher ; voiture a midi : la batterie n'est plus comptee comme du solaire (EDF automatique les jours de depart si le surplus ne couvre pas) ; nuit 05->06 : JEEP chargee sur EDF en complete (6,32 kWh), budget 0 du a la prevision, Windy/ECMWF contre VRM, a comparer ce soir ; concierge aligne sur la preuve fin de trajet ; a verifier : nuit 05->06 et mardi faible, comparaison VRM/Forecast.Solar ; JEEP identifiee aussi par sa fin de trajet, prevision de la nuit 05->06 ; identification JEEP reussie en reel, correction humaine qui prime (refus supprime), session du 04/10 coupee ; EVCS Master en quatre onglets ; Jeep lue par Uconnect et identifiee seule, capacite JEEP 10 kWh, concierge variante (a) ; releve par photo (SPARK), hass-uconnect en attente ; ecart semaine/week-end mesure (pas de profil week-end la nuit) ; nuit du budget : budget borne au plancher prudent, sans EDF = voiture bloquee meme EDF ferme (batterie seule) ; Energie : sauts corriges ; tableau Energie complete (Sud/Ouest, batterie par integration, borne ; aucun redemarrage HA) ; kilometrage des vehicules (km/kWh, capacite, releves de reference, agent cable 15/15) ; a verifier le 04/10 au matin : nuit du budget JEEP ; concierge : vehicule non confirme demande, heure de saisie ; Grafana vehicules en tableau ; Grafana vehicules : ZERO et Invite ajoutes, session 16:46 reetiquetee ZERO ; prevision SOC 10 h ~35 % ; concierge fiable : niveau note par le script, une ligne, dedoublonnage, simulation par drapeau ; agent : message incompris = question, bourse sur demande explicite (banc final 6/6) ; a verifier : nuit du samedi 03 au dimanche 04/10 (budget < besoin JEEP), cron orange-cloture lundi 05/10 apres 17:40, comparaison VRM / Forecast.Solar lundi 05/10*

View File

@@ -1041,11 +1041,26 @@ const mustStopHard =
derived.vebusAcOutHardReached ||
batteryCurrentHardExceeded;
const gridBatteryProtectionStop =
// 07/10/2026 (proprietaire : « brider a 6 A au lieu de couper »). Le 06/10
// sous force_grid_now, deux pointes de la maison (7,1 et 7,7 kW, voiture
// comprise) ont fait passer la batterie a -41,9 / -47,3 A : la garde coupait la
// voiture puis posait 20 min de verrou — 2,0 kWh donnes au lieu de ~4 en
// 66 min. La voiture est la charge compressible : au-dessus du courant mini, on
// la RAMENE au mini tout de suite (sans attendre le cooldown) ; l'arret et son
// verrou ne restent que si la batterie est encore trop sollicitee AU MINI.
const gridBatteryHardBreach =
sessionObservedActive &&
isGridSource &&
parsed.batteryCurrentA < gridBatteryHardDynamicA;
const gridBatteryCutToMin =
gridBatteryHardBreach &&
derived.currentReferenceA > params.currentMinA;
const gridBatteryProtectionStop =
gridBatteryHardBreach &&
!gridBatteryCutToMin;
// =====================================================
// OUTPUT
// =====================================================
@@ -1192,6 +1207,7 @@ return [{
batteryCurrentHardExceeded,
mustStopHard,
gridBatteryProtectionStop,
gridBatteryCutToMin,
},
conditions: {

View File

@@ -607,6 +607,19 @@ else if (cloud.sessionObservedActive) {
});
}
else if (safeguards.gridBatteryCutToMin) {
// 07/10 : pointe de la maison en charge reseau -> voiture ramenee au
// courant mini, sans arret ni verrou (la remontee reprend au pas normal).
setOn({
stateName: 'charging_cut_to_min_grid_guard',
decisionName: 'step_down',
currentA: params.currentMinA,
reasonText: `Réseau : pointe de la maison, voiture bridée à ${params.currentMinA} A (batterie ${round1(parsed.batteryCurrentA)}A)`,
dynamic: true,
mustStopFlag: false,
});
}
else if (safeguards.gridBatteryProtectionStop) {
setOff({
stateName: 'stop_grid_battery_guard',

View File

@@ -3243,8 +3243,11 @@ export const scenarios = [
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
evcs_charging_switch: 'on', control_latch: 'on', charge_permission_now: 'on',
last_start_at: '2026-08-08 12:58:30',
evcs_current_a: '13', evcs_set_current_a: '13', evcs_command_current_a: '13',
evcs_ac_power_w: '2990',
// 07/10 : deja AU COURANT MINI (6 A) — au-dessus, la voiture est d'abord
// bridee a 6 A (scenarios `garde-reseau-bride-a-6a-*`), l'arret ne vient
// qu'ensuite.
evcs_current_a: '6', evcs_set_current_a: '6', evcs_command_current_a: '6',
evcs_ac_power_w: '1380',
victron_evcs_strategy: 'force_grid_now',
grid_state: 'off', victron_acin1_available: '0', grid_power_w: '0',
// Le releve reel du 13:09:30 : -32,4 A, sous le garde dur de sa bande.
@@ -3265,6 +3268,56 @@ export const scenarios = [
blockReason: 'grid_battery_guard_no_grid',
},
},
{
id: 'garde-reseau-bride-a-6a-reseau-absent',
label: "07/10 : meme garde depasse a 13 A, reseau absent → voiture bridee a 6 A, ni arret ni verrou",
time: MIDDAY,
overrides: {
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
evcs_charging_switch: 'on', control_latch: 'on', charge_permission_now: 'on',
last_start_at: '2026-08-08 12:58:30',
evcs_current_a: '13', evcs_set_current_a: '13', evcs_command_current_a: '13',
evcs_ac_power_w: '2990',
victron_evcs_strategy: 'force_grid_now',
grid_state: 'off', victron_acin1_available: '0', grid_power_w: '0',
soc_percent: '55', pv_power_w: '300', pv_power_10m_avg_w: '400',
house_ac_power_w: '3900', vebus_ac_out_l1_power_w: '3900',
battery_current_a: '-20.5',
},
expect: {
state: 'charging_cut_to_min_grid_guard',
decision: 'step_down',
desiredCharging: true,
currentA: 6,
},
},
{
id: 'garde-reseau-bride-a-6a-pointe-maison-0610',
label: "06/10 13:46 rejoue : force_grid_now a 20 A, reseau present, pointe de cuisine → voiture bridee a 6 A au lieu d'un arret + 20 min de verrou",
time: MIDDAY,
overrides: {
evcs_vehicle_connected: 'on', evcs_device_connected: 'on',
evcs_charging_switch: 'on', control_latch: 'on', charge_permission_now: 'on',
last_start_at: '2026-08-08 12:30:00',
evcs_current_a: '20', evcs_set_current_a: '20', evcs_command_current_a: '20',
evcs_ac_power_w: '3470',
victron_evcs_strategy: 'force_grid_now',
grid_state: 'on', victron_acin1_available: '1', grid_power_w: '3970',
acin1_last_changed_ts: String(Date.parse(MIDDAY) / 1000 - 1800),
grid_switch_last_changed_ts: String(Date.parse(MIDDAY) / 1000 - 1800),
soc_percent: '55', pv_power_w: '1240', pv_power_10m_avg_w: '1500',
house_ac_power_w: '7100', vebus_ac_out_l1_power_w: '7100',
// Meme fenetre etroite que ci-dessus (garde reseau -20, hard general ~-20,9
// dans ce fixture) : en production -41,9 A pour un hard general a -98 A.
battery_current_a: '-20.5',
},
expect: {
state: 'charging_cut_to_min_grid_guard',
decision: 'step_down',
desiredCharging: true,
currentA: 6,
},
},
{
id: 'boost-verrou-no-grid-leve-a-l-arrivee-du-reseau',
label: "Verrou '_no_grid' pose, le reseau ARRIVE → le verrou se leve, la charge repart (le 18/09 elle restait bloquee 20 min)",

File diff suppressed because one or more lines are too long