From 60ac14767cf0c80db9c1f3df5d5e3e637783bf68 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 25 Oct 2019 18:28:35 +0200 Subject: [PATCH] Fix immediate issues Fix immediate issues --- sonoff/settings.ino | 3 ++- sonoff/xdrv_03_energy.ino | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 0a34123df..f49eb9495 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -1199,6 +1199,7 @@ void SettingsDelta(void) } if (Settings.version < 0x06060014) { // Clear unused parameters for future use +/* Settings.flag3.ex_tuya_dimmer_range_255 = 0; Settings.flag3.ex_tuya_dimmer_min_limit = 0; Settings.param[P_ex_TUYA_RELAYS] = 0; @@ -1208,7 +1209,7 @@ void SettingsDelta(void) Settings.param[P_ex_TUYA_POWER_ID] = 0; Settings.ex_baudrate = 0; Settings.ex_sbaudrate = 0; - +*/ Settings.flag3.fast_power_cycle_disable = 0; Settings.energy_power_delta = Settings.ex_energy_power_delta; Settings.ex_energy_power_delta = 0; diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 30b0237e2..aa580421d 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -292,11 +292,13 @@ void EnergyMarginCheck(void) DEBUG_DRIVER_LOG(PSTR("NRG: Delta %d, Power %d"), delta, min_power); - if ( ((Settings.energy_power_delta < 101) && (((delta * 100) / min_power) > Settings.energy_power_delta)) || // 1..100 = Percentage - ((Settings.energy_power_delta > 100) && (delta > (Settings.energy_power_delta -100))) ) { // 101..32000 = Absolute - Energy.power_delta = true; - Energy.power_history[1] = Energy.active_power[0]; // We only want one report so reset history - Energy.power_history[2] = Energy.active_power[0]; + if (delta) { // Fix divide by 0 exception (#6741) + if (((Settings.energy_power_delta < 101) && (((delta * 100) / min_power) > Settings.energy_power_delta)) || // 1..100 = Percentage + ((Settings.energy_power_delta > 100) && (delta > (Settings.energy_power_delta -100)))) { // 101..32000 = Absolute + Energy.power_delta = true; + 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[0] = Energy.power_history[1]; // Shift in history every second allowing power changes to settle for up to three seconds