fix: improve simulation to avoid rounding problems on small time delays

This commit is contained in:
Alexis Fourmaux 2026-05-13 17:17:55 +02:00
parent 1ccb757226
commit 9ae2445863

View file

@ -1,6 +1,6 @@
#include <SimuGaz.h>
#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,10 +41,10 @@ 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;
}