Update xnrg_01_hlw8012.ino

Fix rounding error in kWhtoday_delta calculation. 
At 3.6kW load, hlw_len could be as low as 5, so rounding could make the value 20% off. Multiply hlw_len by 1000 and the dividend a few lines below as well fixes this. With integer math only, dividends should keep precision as long as possible.
This commit is contained in:
Povl H. Pedersen 2020-08-25 09:33:27 +02:00 committed by GitHub
parent aa9ef57664
commit e5a02772f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 2 deletions

View File

@ -205,10 +205,10 @@ void HlwEverySecond(void)
unsigned long hlw_len;
if (Hlw.energy_period_counter) {
hlw_len = 10000 / Hlw.energy_period_counter;
hlw_len = 10000 * 1000 / Hlw.energy_period_counter;
Hlw.energy_period_counter = 0;
if (hlw_len) {
Energy.kWhtoday_delta += ((Hlw.power_ratio * Settings.energy_power_calibration) / hlw_len) / 36;
Energy.kWhtoday_delta += ((Hlw.power_ratio * Settings.energy_power_calibration) * 1000 / hlw_len) / 36;
EnergyUpdateToday();
}
}