La consigne de puissance reseau appartient au controleur

Fermer le contacteur ne suffit pas : au-dessus du SOC minimal, l ESS en
autoconsommation ne preleve que sa consigne et laisse la batterie porter
maison et voiture. Nuit du 01/09 : charge HC demarree a 01:25, arretee a
01:26 par le garde batterie, contacteur ferme et inerte jusqu a 02:00.

La consigne a 4200 W du proprietaire n etait pas decorative : c est elle
qui faisait fonctionner la prise de relais nocturne depuis le 07/08. La
retirer le 31/08 a supprime la substitution de journee et casse la nuit.

Le controleur ecrit desormais la consigne lui-meme, a partir du besoin
mesure, seulement pendant une session reseau deliberee, avec une bande
asymetrique : trop basse se corrige tout de suite, trop haute ne coute
rien. Deux ecritures en 25 minutes au lieu d une toutes les 30 s.

Golden 51 -> 56. Verifie en reel : batterie a 0 A, voiture a 3500 W.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-09-01 02:14:57 +02:00
parent 92f07fe885
commit a57ff19ead
8 changed files with 297 additions and 4 deletions

View File

@@ -245,6 +245,13 @@ const parsed = {
gridIsOn: low(input.grid_state || 'off') === 'on',
acInAvailable: num(input.victron_acin1_available ?? input.ac_in1_available, 0) === 1,
// Consigne de puissance réseau de l'ESS, lue telle qu'elle est appliquée.
// C'est ELLE qui décide si un contacteur fermé sert à quelque chose : au-dessus
// du SOC minimal, l'ESS en autoconsommation ne prélève que cette puissance et
// laisse la batterie porter le reste. Nuit du 01/09 : contacteur fermé,
// consigne 50 W, batterie à -803 W pour 761 W de maison.
gridSetpointW: num(input.grid_setpoint_w, NaN),
gridAvailable:
(low(input.grid_state || 'off') === 'on') ||
(num(input.victron_acin1_available ?? input.ac_in1_available, 0) === 1),
@@ -419,6 +426,10 @@ const params = {
// input_number.evcs_grid_settle_seconds ; absent => 180.
gridSettleSeconds: clamp(num(input.grid_settle_seconds, 180), 0, 900),
// Consigne réseau au repos. 50 W est le défaut Victron (légèrement positif
// pour ne jamais injecter), pas une valeur choisie ici.
gridSetpointIdleW: clamp(num(input.grid_setpoint_idle_w, 50), 0, 500),
probeEnabled: low(input.probe_enabled || 'off') === 'on',
probeMinutes: Math.max(1, num(input.probe_minutes, 3)),
probeRetryMinutes: Math.max(5, num(input.probe_retry_minutes, 45)),