La protection regardait la maison, pas ce qu on demande au parc
Deux fermetures ce dimanche midi. Mesurees a l instant de la decision, contacteur encore ouvert donc production non censuree : maison 4025 et 4981 W, mais parc reellement sollicite 1132 et 772 W pour un plafond de 5100. La decharge batterie mesuree aux memes instants — 1345 et 1223 W — colle a maison moins PV, pas a la maison brute. Le solaire couvrait la cuisson ; la regle a ferme le contacteur pour rien, 0,50 kWh importes en plein soleil. Elle n avait bien fonctionne hier soir que parce qu il n y avait plus de PV. Les deux seuils portent desormais sur max(0, maison - PV). Contacteur ouvert cette grandeur EST la decharge batterie ; ferme, un bridage du MPPT la fait surestimer, donc l erreur pousse a rester ferme et jamais a relacher tot. Golden 20 -> 24, dont les deux releves de midi et le contrefactuel du nuage. Le test de mutation a montre que la premiere serie ne couvrait que le seuil de fermeture : il a fallu ecrire le cas du soleil revenu pour qu elle morde. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
@@ -63,6 +63,13 @@ const recoveryBase = {
|
||||
const parcQuatreModules = {
|
||||
battery_max_discharge_a: '100',
|
||||
battery_voltage_v: '51',
|
||||
// ⚠️ PV NULLE, ET C'EST STRUCTUREL. Depuis le 06/09 les deux seuils portent
|
||||
// sur `max(0, maison - PV)`, ce que le parc est REELLEMENT sollicite de
|
||||
// fournir, et non sur la maison brute. Les scenarios de protection decrivent
|
||||
// le soir : le parc est seul, la maison brute EST la demande sur le parc. Les
|
||||
// scenarios `h-midi-*` couvrent le cas diurne, ou le solaire couvre la
|
||||
// cuisson et ou la regle ne doit PAS fermer.
|
||||
pv_power_w: '0',
|
||||
};
|
||||
|
||||
export const scenarios = [
|
||||
@@ -405,6 +412,7 @@ export const scenarios = [
|
||||
...recoveryBase,
|
||||
battery_max_discharge_a: '100',
|
||||
battery_voltage_v: 'unavailable',
|
||||
pv_power_w: '0',
|
||||
soc_percent: '65',
|
||||
house_ac_power_w: '2000',
|
||||
last_on_at: minutesAgo(T_MS, 40),
|
||||
@@ -426,6 +434,7 @@ export const scenarios = [
|
||||
...recoveryBase,
|
||||
battery_max_discharge_a: 'unavailable',
|
||||
battery_voltage_v: 'unavailable',
|
||||
pv_power_w: '0',
|
||||
soc_percent: '65',
|
||||
house_ac_power_w: '2000',
|
||||
last_on_at: minutesAgo(T_MS, 40),
|
||||
@@ -447,6 +456,7 @@ export const scenarios = [
|
||||
...recoveryBase,
|
||||
battery_max_discharge_a: 'unavailable',
|
||||
battery_voltage_v: 'unavailable',
|
||||
pv_power_w: '0',
|
||||
soc_percent: '65',
|
||||
house_ac_power_w: '2000',
|
||||
last_on_at: minutesAgo(T_MS, 40),
|
||||
@@ -459,4 +469,102 @@ export const scenarios = [
|
||||
gridAction: 'turn_off',
|
||||
},
|
||||
},
|
||||
// =====================================================
|
||||
// MIDI ENSOLEILLE : LE SOLAIRE COUVRE LA CUISSON (06/09/2026)
|
||||
// =====================================================
|
||||
// Deux fermetures ce dimanche, mesurees a la resolution native A L'INSTANT
|
||||
// DE LA DECISION, contacteur encore ouvert donc production non censuree :
|
||||
//
|
||||
// 12:07, cuisson seule maison 4 025 W parc sollicite 1 132 W
|
||||
// 13:34, cuisson + JEEP maison 4 981 W parc sollicite 772 W
|
||||
//
|
||||
// Controle croise : la decharge batterie valait 1 345 et 1 223 W aux memes
|
||||
// instants — elle colle a `maison - PV`, pas a la maison brute. Le plafond du
|
||||
// parc est de 5 100 W : il etait a 22 % et 15 % de sa limite, et la regle a
|
||||
// ferme le contacteur pour rien.
|
||||
{
|
||||
id: 'h-midi-solaire-couvre-la-cuisson',
|
||||
label: 'RELEVE 06/09 12:07 : maison 4025 W mais PV 2893 W, le parc ne fournit que 1132 W — aucune fermeture',
|
||||
time: T,
|
||||
overrides: {
|
||||
...recoveryBase,
|
||||
...parcQuatreModules,
|
||||
grid_latch: 'off',
|
||||
grid_state: 'off',
|
||||
soc_percent: '69',
|
||||
house_ac_power_w: '4025',
|
||||
pv_power_w: '2893',
|
||||
},
|
||||
expect: {
|
||||
state: 'observe_only',
|
||||
gridAction: 'none',
|
||||
latchAction: 'none',
|
||||
demandeParcW: 1132,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'h-midi-jeep-en-plus-solaire-couvre-encore',
|
||||
label: 'RELEVE 06/09 13:34 : maison 4981 W dont la JEEP, PV 4209 W, parc a 772 W — aucune fermeture non plus',
|
||||
time: T,
|
||||
overrides: {
|
||||
...recoveryBase,
|
||||
...parcQuatreModules,
|
||||
grid_latch: 'off',
|
||||
grid_state: 'off',
|
||||
soc_percent: '86',
|
||||
house_ac_power_w: '4981',
|
||||
pv_power_w: '4209',
|
||||
evcs_ac_power_w: '1621',
|
||||
evcs_charging: 'on',
|
||||
evcs_surplus_state: 'charging_step_up_battery',
|
||||
evcs_source_mode: 'Solaire',
|
||||
},
|
||||
expect: {
|
||||
state: 'observe_only',
|
||||
gridAction: 'none',
|
||||
demandeParcW: 772,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'h-midi-nuage-le-parc-encaisse-tout',
|
||||
label: 'CONTREFACTUEL : meme cuisson a 4500 W mais le nuage passe, PV 200 W — le parc encaisse 4300 W, on ferme',
|
||||
time: T,
|
||||
overrides: {
|
||||
...recoveryBase,
|
||||
...parcQuatreModules,
|
||||
grid_latch: 'off',
|
||||
grid_state: 'off',
|
||||
soc_percent: '69',
|
||||
house_ac_power_w: '4500',
|
||||
pv_power_w: '200',
|
||||
},
|
||||
expect: {
|
||||
state: 'turn_on_charge_au_dessus_du_parc',
|
||||
gridAction: 'turn_on',
|
||||
latchAction: 'turn_on',
|
||||
demandeParcW: 4300,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'h-midi-soleil-revenu-relache',
|
||||
label: "Le nuage est passe, contacteur ferme : la cuisson continue a 3000 W mais le PV en couvre 2000 — le parc n'est plus sollicite qu'a 1000 W, on rend le reseau",
|
||||
time: T,
|
||||
overrides: {
|
||||
...recoveryBase,
|
||||
...parcQuatreModules,
|
||||
soc_percent: '69',
|
||||
house_ac_power_w: '3000',
|
||||
pv_power_w: '2000',
|
||||
last_on_at: minutesAgo(T_MS, 40),
|
||||
charge_high_last_at: minutesAgo(T_MS, 25),
|
||||
balance_required_soc: '92',
|
||||
balance_last_run: bilanRunAgo(T_MS, 3),
|
||||
},
|
||||
expect: {
|
||||
state: 'turn_off_vehicle_unplugged',
|
||||
gridAction: 'turn_off',
|
||||
demandeParcW: 1000,
|
||||
setChargeHighLastAt: false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user