Garde batterie en charge reseau : voiture bridee au courant mini au lieu d'un arret + 20 min de verrou
This commit is contained in:
11
HANDOFF.md
11
HANDOFF.md
@@ -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*
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user