Chauffe-eau : Grafana « Le chauffe-eau », historisation (compteur rattrape depuis le 14/08), jour faible = aussi surplus solaire reel et securite douche de 20 h
This commit is contained in:
@@ -269,8 +269,15 @@ if (!forceOffNow && !restoreNow && forcedOffByAdvisorPrev && waterHeaterSwitchOn
|
||||
// comportement d'avant revient, jamais un ballon froid par panne de capteur).
|
||||
// Jour normal : le chauffe-eau coupe par cette regle est remis sous tension.
|
||||
const ECS_EAU_FROIDE_KWH = 1.5;
|
||||
// Douches a 06:00 et 20:00 tous les jours (proprietaire, 07/10) : couper toute
|
||||
// la journee laisserait l'eau froide a 20 h. Un jour faible, il chauffe donc
|
||||
// AUSSI sur un vrai surplus solaire (jamais sur la batterie), et a partir de
|
||||
// 16 h s'il n'a presque pas chauffe depuis 07:24 (securite de la douche du soir).
|
||||
const ECS_SOIR_DEBUT_H = 16;
|
||||
const ECS_SOIR_FIN_H = 20;
|
||||
const {
|
||||
ecsNuit = false, hcSessionCommitted = false, ecs24hKwh = NaN, offJourFaiblePrev = false,
|
||||
ecsNuit = false, hcSessionCommitted = false, ecs24hKwh = NaN, ecsJourKwh = NaN,
|
||||
offJourFaiblePrev = false, pvPowerW = 0, autoPowerW = 1200,
|
||||
} = normalized;
|
||||
let offJourFaible = false;
|
||||
let jourFaibleState = 'none';
|
||||
@@ -278,11 +285,21 @@ if (advisorEnabled && ecsNuit) {
|
||||
const energieConnue = Number.isFinite(ecs24hKwh);
|
||||
const eauFroide = energieConnue && ecs24hKwh < ECS_EAU_FROIDE_KWH;
|
||||
const heuresCreusesEdf = hcSessionCommitted && gridIsOn;
|
||||
const veutChauffer = !energieConnue || heuresCreusesEdf || eauFroide;
|
||||
// Surplus reel : sous tension, la production couvre la maison (chauffe-eau
|
||||
// compris) ; hors tension, il reste de quoi l'alimenter. Reseau ouvert.
|
||||
const solaireCouvre = !gridIsOn && (waterHeaterSwitchOn
|
||||
? pvPowerW >= houseAcPowerW
|
||||
: pvPowerW - houseAcPowerW >= autoPowerW);
|
||||
const heure = Number.isFinite(now.hour) ? now.hour : -1;
|
||||
const securiteSoir = heure >= ECS_SOIR_DEBUT_H && heure < ECS_SOIR_FIN_H
|
||||
&& !(Number.isFinite(ecsJourKwh) && ecsJourKwh >= ECS_EAU_FROIDE_KWH);
|
||||
const veutChauffer = !energieConnue || heuresCreusesEdf || eauFroide || solaireCouvre || securiteSoir;
|
||||
offJourFaible = true;
|
||||
jourFaibleState = !energieConnue ? 'jour_faible_energie_illisible'
|
||||
: heuresCreusesEdf ? 'jour_faible_chauffe_hc_edf'
|
||||
: eauFroide ? 'jour_faible_eau_froide'
|
||||
: securiteSoir ? 'jour_faible_securite_soir'
|
||||
: solaireCouvre ? 'jour_faible_surplus_solaire'
|
||||
: 'jour_faible_coupe';
|
||||
if (veutChauffer !== waterHeaterSwitchOn) {
|
||||
powerSwitchAction = veutChauffer ? 'turn_on' : 'turn_off';
|
||||
@@ -299,6 +316,8 @@ if (advisorEnabled && ecsNuit) {
|
||||
jourFaibleState === 'jour_faible_chauffe_hc_edf' ? 'Jour faible : eau chaude en heures creuses sur EDF (session reseau engagee)'
|
||||
: jourFaibleState === 'jour_faible_eau_froide' ? `Jour faible mais seulement ${round1(ecs24hKwh)} kWh en 24 h : chauffe pour garantir l eau chaude`
|
||||
: jourFaibleState === 'jour_faible_energie_illisible' ? 'Jour faible, energie 24 h illisible : aucune restriction'
|
||||
: jourFaibleState === 'jour_faible_securite_soir' ? 'Jour faible : chauffe pour la douche de 20 h (peu chauffe depuis 07:24)'
|
||||
: jourFaibleState === 'jour_faible_surplus_solaire' ? 'Jour faible : surplus solaire reel, il chauffe sans toucher la batterie'
|
||||
: 'Jour faible : chauffe-eau coupe, il chauffera en heures creuses sur EDF'
|
||||
);
|
||||
} else if (advisorEnabled && offJourFaiblePrev && !waterHeaterSwitchOn) {
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
"ecs_nuit_jour": states("input_text.evcs_balance_ecs_nuit_jour"),
|
||||
"hc_session_committed": states("input_boolean.victron_evcs_night_grid_session_committed"),
|
||||
"ecs_24h_kwh": states("sensor.evcs_chauffe_eau_24h_kwh"),
|
||||
"ecs_jour_kwh": states("sensor.evcs_chauffe_eau_jour_kwh"),
|
||||
"off_jour_faible_prev": states("input_boolean.victron_water_heater_off_jour_faible"),
|
||||
|
||||
"advisor_enabled": states("input_boolean.victron_water_heater_advisor_enabled"),
|
||||
|
||||
@@ -195,6 +195,7 @@ const lastSignature = cleanStateText(input.last_signature);
|
||||
const ecsNuit = low(input.ecs_nuit) === 'on';
|
||||
const hcSessionCommitted = low(input.hc_session_committed) === 'on';
|
||||
const ecs24hKwh = num(input.ecs_24h_kwh, NaN);
|
||||
const ecsJourKwh = num(input.ecs_jour_kwh, NaN);
|
||||
const offJourFaiblePrev = low(input.off_jour_faible_prev) === 'on';
|
||||
const forecastSource = cleanStateText(input.forecast_source) || 'forecast_solar';
|
||||
|
||||
@@ -243,6 +244,7 @@ return [{
|
||||
ecsNuit,
|
||||
hcSessionCommitted,
|
||||
ecs24hKwh,
|
||||
ecsJourKwh,
|
||||
offJourFaiblePrev,
|
||||
forecastSource
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user