From 9ae244586367474531ade5a2a57ccd570419ef29 Mon Sep 17 00:00:00 2001 From: Alexis Fourmaux Date: Wed, 13 May 2026 17:17:55 +0200 Subject: [PATCH] fix: improve simulation to avoid rounding problems on small time delays --- lib/SimuGaz/SimuGaz.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/SimuGaz/SimuGaz.cpp b/lib/SimuGaz/SimuGaz.cpp index 31a6e9f..e30e990 100644 --- a/lib/SimuGaz/SimuGaz.cpp +++ b/lib/SimuGaz/SimuGaz.cpp @@ -1,6 +1,6 @@ #include -#define INITIAL_PULSE_CNT 185432 +#define INITIAL_CONSUMPTION 3451.02f #define INITIAL_SECONDS 0 #define AVERAGE_DAILY_CONSUMPTION 2.66f @@ -25,7 +25,7 @@ static const float GRDF_MONTHLY_COEFF[12] = { // - base mensuelle moyenne = 81 m³/mois // - base journalière moyenne = 2.66 m³/j -RTC_DATA_ATTR uint32_t pulseCount = INITIAL_PULSE_CNT; +RTC_DATA_ATTR float consumptionM3 = INITIAL_CONSUMPTION; RTC_DATA_ATTR uint32_t totalSeconds = INITIAL_SECONDS; uint32_t simulateGasPulses(uint32_t intervalSeconds) @@ -41,9 +41,9 @@ uint32_t simulateGasPulses(uint32_t intervalSeconds) // Résolution compteur Gazpar : 0.010 m³ par impulsion float incrementM3 = dailyBase * intervalSeconds / 86400.0f * dailyVariation; + consumptionM3 += incrementM3; + uint32_t pulseCount = (uint32_t)(consumptionM3 / 0.010f); uint32_t incrementPulses = (uint32_t)(incrementM3 / 0.010f); - - pulseCount += incrementPulses; Serial.printf("[GAZ] Incrément de %lu impulsions - Total : %lu impulsions (%.3f m³)\n", incrementPulses, pulseCount, pulseCount * 0.010f); return pulseCount;