Skip to content

Commit

Permalink
Fix possible overflow situation
Browse files Browse the repository at this point in the history
Fix possible overflow situation
  • Loading branch information
arendst committed Nov 28, 2018
1 parent 9738f64 commit e3bff56
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
6 changes: 4 additions & 2 deletions sonoff/xnrg_03_pzem004t.ino
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,10 @@ void PzemEvery200ms(void)
break;
case 4: // Total energy as 99999Wh
if (!energy_start || (value < energy_start)) energy_start = value; // Init after restart and hanlde roll-over if any
energy_kWhtoday += (value - energy_start) * 100;
energy_start = value;
if (value != energy_start) {
energy_kWhtoday += (unsigned long)((value - energy_start) * 100);
energy_start = value;
}
EnergyUpdateToday();
break;
}
Expand Down
8 changes: 5 additions & 3 deletions sonoff/xnrg_05_pzem_ac.ino
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,11 @@ void PzemAcEverySecond(void)
energy_power_factor = (float)((buffer[19] << 8) + buffer[20]) / 100.0; // 1.00
float energy = (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh

if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any
energy_kWhtoday += (energy - energy_start) * 100;
energy_start = energy;
if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and handle roll-over if any
if (energy != energy_start) {
energy_kWhtoday += (unsigned long)((energy - energy_start) * 100);
energy_start = energy;
}
EnergyUpdateToday();
}
}
Expand Down
8 changes: 5 additions & 3 deletions sonoff/xnrg_06_pzem_dc.ino
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,11 @@ void PzemDcEverySecond(void)
energy_active_power = (float)((buffer[9] << 24) + (buffer[10] << 16) + (buffer[7] << 8) + buffer[8]) / 10.0; // 429496729.0 W
float energy = (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh

if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any
energy_kWhtoday += (energy - energy_start) * 100;
energy_start = energy;
if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and handle roll-over if any
if (energy != energy_start) {
energy_kWhtoday += (unsigned long)((energy - energy_start) * 100);
energy_start = energy;
}
EnergyUpdateToday();
}
}
Expand Down

0 comments on commit e3bff56

Please sign in to comment.