mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 19:56:30 +00:00
Fix PowerDelta calculation
Fix PowerDelta calculation not detecting zero power (#7515)
This commit is contained in:
parent
016b204cfe
commit
65d1f3aace
@ -289,14 +289,19 @@ void EnergyMarginCheck(void)
|
|||||||
|
|
||||||
if (Settings.energy_power_delta) {
|
if (Settings.energy_power_delta) {
|
||||||
uint16_t delta = abs(Energy.power_history[0] - energy_power_u);
|
uint16_t delta = abs(Energy.power_history[0] - energy_power_u);
|
||||||
uint16_t min_power = (Energy.power_history[0] > energy_power_u) ? energy_power_u : Energy.power_history[0];
|
if (delta > 0) {
|
||||||
|
if (Settings.energy_power_delta < 101) { // 1..100 = Percentage
|
||||||
DEBUG_DRIVER_LOG(PSTR("NRG: Delta %d, Power %d"), delta, min_power);
|
uint16_t min_power = (Energy.power_history[0] > energy_power_u) ? energy_power_u : Energy.power_history[0];
|
||||||
|
if (0 == min_power) { min_power++; } // Fix divide by 0 exception (#6741)
|
||||||
if ((delta > 0) && (min_power > 0)) { // Fix divide by 0 exception (#6741)
|
if (((delta * 100) / min_power) > Settings.energy_power_delta) {
|
||||||
if (((Settings.energy_power_delta < 101) && (((delta * 100) / min_power) > Settings.energy_power_delta)) || // 1..100 = Percentage
|
Energy.power_delta = true;
|
||||||
((Settings.energy_power_delta > 100) && (delta > (Settings.energy_power_delta -100)))) { // 101..32000 = Absolute
|
}
|
||||||
Energy.power_delta = true;
|
} else { // 101..32000 = Absolute
|
||||||
|
if (delta > (Settings.energy_power_delta -100)) {
|
||||||
|
Energy.power_delta = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Energy.power_delta) {
|
||||||
Energy.power_history[1] = Energy.active_power[0]; // We only want one report so reset history
|
Energy.power_history[1] = Energy.active_power[0]; // We only want one report so reset history
|
||||||
Energy.power_history[2] = Energy.active_power[0];
|
Energy.power_history[2] = Energy.active_power[0];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user