Browse Source

Correction bug mode soleil

master
scayac 2 months ago
parent
commit
d5cc1c2257
  1. 8
      platformio.ini
  2. 11
      src/main.cpp

8
platformio.ini

@ -30,7 +30,7 @@ build_flags = @@ -30,7 +30,7 @@ build_flags =
-DARDUINO_USB_CDC_ON_BOOT=1
-DBOARD_HAS_PSRAM
; Configuration ArduinoOTA pour firmware et filesystem
;upload_protocol = espota
;upload_port = 192.168.0.29
;upload_flags =
; --auth=password
upload_protocol = espota
upload_port = 192.168.0.29
upload_flags =
--auth=password

11
src/main.cpp

@ -85,6 +85,7 @@ volatile bool pwmNeedRecalc = true; // Flag pour indiquer qu'il faut recalculer @@ -85,6 +85,7 @@ volatile bool pwmNeedRecalc = true; // Flag pour indiquer qu'il faut recalculer
TaskHandle_t enphaseTaskHandle = NULL;
unsigned long lastEnphaseUpdate = 0;
bool enphaseUpdateRequested = false;
bool enphaseDataUpdated = false; // Flag pour indiquer que les données Enphase viennent d'être mises à jour
#ifdef ESP32
hw_timer_t *timer = NULL;
@ -470,6 +471,7 @@ void fetchEnphaseData() { @@ -470,6 +471,7 @@ void fetchEnphaseData() {
Serial.printf("Enphase - Total: %.1fW, Panneaux: %.1fW, Enedis: %.1fW\n",
powerNetConsumption, solarProduction, powerImport);
enphaseConnectionError = false;
enphaseDataUpdated = true; // Signaler que les données viennent d'être mises à jour
} else {
Serial.println("Erreur parsing JSON Enphase");
enphaseConnectionError = true;
@ -526,7 +528,7 @@ void calculateHeaterPower() { @@ -526,7 +528,7 @@ void calculateHeaterPower() {
// Calculer l'excédent solaire et ajuster le pourcentage de chauffe
int calculatedHeaterPowerJour = 0;
int calculatedHeaterPowerSoleil = 0;
static int calculatedHeaterPowerSoleil = 0;
int calculatedHeaterPower = heaterPower;
// Extraire les bits du mode
@ -600,16 +602,17 @@ void calculateHeaterPower() { @@ -600,16 +602,17 @@ void calculateHeaterPower() {
}
}
if (modeSOLEIL) {
if (modeSOLEIL && enphaseDataUpdated) {
// Mode SOLEIL: ajuster selon l'excédent solaire
// 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 = (int)(((abs(powerImport)) * 100) / heaterMaxPower);
calculatedHeaterPowerSoleil = calculatedHeaterPowerSoleil - (int)((powerImport * 100) / heaterMaxPower);
if (calculatedHeaterPowerSoleil > 100) calculatedHeaterPowerSoleil = 100;
} else {
calculatedHeaterPowerSoleil = 0;
}
enphaseDataUpdated = false; // Consommer le flag de mise à jour
}
// Prendre le maximum entre les deux modes
calculatedHeaterPower = max(calculatedHeaterPowerJour, calculatedHeaterPowerSoleil);

Loading…
Cancel
Save