From 670a8ccec6974605d63275d896f8b4627509b45f Mon Sep 17 00:00:00 2001 From: scayac Date: Sun, 8 Feb 2026 13:22:00 +0100 Subject: [PATCH] Refactor heater power calculation in SOLEIL mode for improved accuracy --- src/main.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 567c583..8879d76 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -605,13 +605,21 @@ void calculateHeaterPower() { if (modeSOLEIL && enphaseDataUpdated) { // Mode SOLEIL: ajuster selon l'excédent solaire (uniquement quand les données Enphase sont mises à jour) - if (powerImport <= 0) { - // Convertir l'excédent solaire en pourcentage (max = puissance max du chauffe-eau) - calculatedHeaterPowerSoleil = calculatedHeaterPowerSoleil - (int)((powerImport * 100) / heaterMaxPower); - if (calculatedHeaterPowerSoleil > 100) calculatedHeaterPowerSoleil = 100; - } else { + // if (powerImport <= 0) { + // // Convertir l'excédent solaire en pourcentage (max = puissance max du chauffe-eau) + // calculatedHeaterPowerSoleil = calculatedHeaterPowerSoleil - (int)((powerImport * 100) / heaterMaxPower); + // if (calculatedHeaterPowerSoleil > 100) calculatedHeaterPowerSoleil = 100; + // } else { + // calculatedHeaterPowerSoleil = 0; + // } + + calculatedHeaterPowerSoleil = calculatedHeaterPowerSoleil - (int)((powerImport * 100) / heaterMaxPower); + if (calculatedHeaterPowerSoleil > 100){ + calculatedHeaterPowerSoleil = 100; + }else if (calculatedHeaterPowerSoleil <= 0){ calculatedHeaterPowerSoleil = 0; } + enphaseDataUpdated = false; // Consommer le flag de mise à jour } // Prendre le maximum entre les deux modes