From ac011132ee4284a5af8b4a5561a12b3b2a288eec Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:07:59 +0200 Subject: [PATCH] Fix ESP8266 MaxPower edge case --- .../tasmota_xdrv_driver/xdrv_03_energy.ino | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino index d5fe43c4f..ce6341398 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_03_energy.ino @@ -566,21 +566,20 @@ void EnergyMarginCheck(void) { #ifdef USE_ENERGY_POWER_LIMIT // Max Power if (Settings->energy_max_power_limit) { - if (Energy->active_power[0] > Settings->energy_max_power_limit) { + if (energy_power_u > Settings->energy_max_power_limit) { if (!Energy->mpl_hold_counter) { - Energy->mpl_hold_counter = Settings->energy_max_power_limit_hold; - } else { - Energy->mpl_hold_counter--; - if (!Energy->mpl_hold_counter) { - ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); - MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); - EnergyMqttShow(); - SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); - if (!Energy->mpl_retry_counter) { - Energy->mpl_retry_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count - } - Energy->mpl_window_counter = Settings->energy_max_power_limit_window; + Energy->mpl_hold_counter = Settings->energy_max_power_limit_hold +1; + } + Energy->mpl_hold_counter--; + if (!Energy->mpl_hold_counter) { + ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":%d}"), energy_power_u); + MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); + EnergyMqttShow(); + SetAllPower(POWER_OFF_FORCE, SRC_MAXPOWER); + if (!Energy->mpl_retry_counter) { + Energy->mpl_retry_counter = Settings->param[P_MAX_POWER_RETRY] +1; // SetOption33 - Max Power Retry count } + Energy->mpl_window_counter = Settings->energy_max_power_limit_window; } } else if (TasmotaGlobal.power && (energy_power_u <= Settings->energy_max_power_limit)) {