From bf2bd773f656279f977d481b98d3e36b49340e7f Mon Sep 17 00:00:00 2001 From: Patrick Amrhein Date: Mon, 1 Apr 2024 13:42:07 +0200 Subject: [PATCH] =?UTF-8?q?Bugfix:=20Fallschirm=20(Keine=20Daten=C3=BCbern?= =?UTF-8?q?ahme=20solange=20waitForAck=20l=C3=A4uft)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/zeroExport/zeroExport.h | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/plugins/zeroExport/zeroExport.h b/src/plugins/zeroExport/zeroExport.h index b3941edd..8b8c5475 100644 --- a/src/plugins/zeroExport/zeroExport.h +++ b/src/plugins/zeroExport/zeroExport.h @@ -367,9 +367,28 @@ class ZeroExport { for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) { for (uint8_t inv = 0; inv < ZEROEXPORT_GROUP_MAX_INVERTERS; inv++) { + // Keine Datenübernahme wenn falscher Inverter + if (iv->id != mCfg->groups[group].inverters[inv].id) continue; + + // Keine Datenübernahme wenn nicht enabled if (!mCfg->groups[group].inverters[inv].enabled) continue; - if (iv->id != mCfg->groups[group].inverters[inv].id) continue; + // Keine Datenübernahme wenn setReboot läuft + if (mCfg->groups[group].inverters[inv].waitRebootAck > 0) continue; + + // Keine Datenübernahme wenn setPower läuft + if (mCfg->groups[group].inverters[inv].waitPowerAck > 0) continue; + + // Keine Datenübernahme wenn setLimit läuft + if (mCfg->groups[group].inverters[inv].waitLimitAck > 0) continue; + + int32_t ivLp = iv->actPowerLimit; + int32_t ivPm = iv->getMaxPower();; + int32_t ivL = (ivPm * ivLp) / 100; + int32_t zeL = mCfg->groups[group].inverters[inv].limit; + + // Keine Datenübernahme wenn zeL gleich ivL + if (zeL == ivL) continue; unsigned long bTsp = millis(); @@ -377,11 +396,10 @@ class ZeroExport { mLog["g"] = group; mLog["i"] = inv; mLog["id"] = iv->id; - mLog["ivL%"] = iv->actPowerLimit; - mLog["ivPm"] = iv->getMaxPower(); - uint16_t ivL = (iv->getMaxPower() * iv->actPowerLimit) / 100; + mLog["ivL%"] = ivLp; + mLog["ivPm"] = ivPm; mLog["ivL"] = ivL; - mLog["zeL"] = (uint16_t)mCfg->groups[group].inverters[inv].limit; + mLog["zeL"] = zeL; mCfg->groups[group].inverters[inv].limit = ivL; if (mCfg->debug) {