From e4e94b818439d5af50145217a12ab1561832ba90 Mon Sep 17 00:00:00 2001 From: DanielR92 Date: Thu, 28 Sep 2023 20:45:37 +0200 Subject: [PATCH] max. Einspeiseleistung einstellbar machen --- src/app.cpp | 14 ++++++++------ src/config/settings.h | 7 +++++-- src/web/RestApi.h | 1 + src/web/html/setup.html | 5 ++++- src/web/web.h | 1 + 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index ba40eef8..4ecfe57e 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -597,7 +597,7 @@ void app::updateLed(void) { void app::zeroexport() { if (!mConfig->plugin.zexport.enabled) return; // check if plugin is enabled && indicate to send new value - if (millis() - mConfig->plugin.zexport.lastTime < mConfig->plugin.zexport.count_avg * 1000UL) + if (millis() - mConfig->plugin.zexport.lastTime > mConfig->plugin.zexport.count_avg * 1000UL) { Inverter<> *iv = mSys.getInverterByPos(mConfig->plugin.zexport.Iv); @@ -606,12 +606,14 @@ void app::zeroexport() { double nValue = round(mzExport.getPowertoSetnewValue()); double twoPerVal = nValue <= (iv->getMaxPower() / 100 * 2 ); - if(mConfig->plugin.zexport.two_percent && (nValue <= twoPerVal)) { - object["val"] = twoPerVal; - } else { - object["val"] = nValue; - } + if(mConfig->plugin.zexport.two_percent && (nValue <= twoPerVal)) + nValue = twoPerVal; + + if(mConfig->plugin.zexport.max_power <= nValue) + nValue = mConfig->plugin.zexport.max_power; + + object["val"] = nValue; object["id"] = mConfig->plugin.zexport.Iv; object["path"] = "ctrl"; object["cmd"] = "limit_nonpersistent_absolute"; diff --git a/src/config/settings.h b/src/config/settings.h index dfa7e150..27f68761 100644 --- a/src/config/settings.h +++ b/src/config/settings.h @@ -147,7 +147,7 @@ typedef struct { uint8_t count_avg; double total_power; unsigned long lastTime; // tic toc - + double max_power; bool two_percent; // ask if not go lower then 2% } cfgzeroExport_t; #endif @@ -463,6 +463,7 @@ class settings { mCfg.plugin.zexport.power_avg = 10; mCfg.plugin.zexport.Iv = 0; + mCfg.plugin.zexport.max_power = 600; // Max 600W to stay safe mCfg.plugin.zexport.two_percent = true; #endif @@ -668,8 +669,9 @@ class settings { obj[F("Iv")] = mCfg.plugin.zexport.Iv; obj[F("power_avg")] = mCfg.plugin.zexport.power_avg; obj[F("count_avg")] = mCfg.plugin.zexport.count_avg; + obj[F("max_power")] = mCfg.plugin.zexport.max_power; obj[F("total_power")] = mCfg.plugin.zexport.total_power; - obj[F("two_percent")] = mCfg.plugin.zexport.two_percent; + obj[F("two_percent")] = (bool)mCfg.plugin.zexport.two_percent; } else { @@ -681,6 +683,7 @@ class settings { getVal(obj, F("Iv"), &mCfg.plugin.zexport.Iv); getVal(obj, F("count_avg"), &mCfg.plugin.zexport.count_avg); + getVal(obj, F("max_power"), &mCfg.plugin.zexport.max_power); getVal(obj, F("power_avg"), &mCfg.plugin.zexport.power_avg); diff --git a/src/web/RestApi.h b/src/web/RestApi.h index 24f91229..85003f94 100644 --- a/src/web/RestApi.h +++ b/src/web/RestApi.h @@ -489,6 +489,7 @@ class RestApi { obj[F("monitor_url")] = String(mConfig->plugin.zexport.monitor_url); obj[F("json_path")] = String(mConfig->plugin.zexport.json_path); obj[F("count_avg")] = (uint8_t)mConfig->plugin.zexport.count_avg; + obj[F("max_power")] = (double)mConfig->plugin.zexport.max_power; obj[F("Iv")] = (uint8_t)mConfig->plugin.zexport.Iv; obj[F("power_avg")] = (float)mConfig->plugin.zexport.power_avg; obj[F("total_power")] = (double)mConfig->plugin.zexport.total_power; diff --git a/src/web/html/setup.html b/src/web/html/setup.html index 71699ad7..1e30a630 100644 --- a/src/web/html/setup.html +++ b/src/web/html/setup.html @@ -342,6 +342,9 @@
2% protection:

+
Max Power:
+
+
Refresh rate (sec.)
Power tolerances (Watt)
@@ -973,7 +976,7 @@ getAjax("/api/inverter/list", parseZeroIv); - for(var i of [["monitor_url", "monitor_url"], ["power_avg", "power_avg"], ["count_avg", "count_avg"], ["json_path", "json_path"]]) + for(var i of [["monitor_url", "monitor_url"], ["power_avg", "power_avg"], ["count_avg", "count_avg"], ["json_path", "json_path"], ["max_power", "max_power"]]) if(null != obj[i[1]]) document.getElementsByName(i[0])[0].value = obj[i[1]]; diff --git a/src/web/web.h b/src/web/web.h index 05a14024..2fb95287 100644 --- a/src/web/web.h +++ b/src/web/web.h @@ -607,6 +607,7 @@ class Web { mConfig->plugin.zexport.two_percent = (request->arg("two_percent") == "on"); mConfig->plugin.zexport.Iv = request->arg("Iv").toInt(); mConfig->plugin.zexport.count_avg = request->arg("count_avg").toInt(); + mConfig->plugin.zexport.max_power = request->arg("max_power").toDouble(); mConfig->plugin.zexport.power_avg = request->arg("power_avg").toFloat(); mConfig->plugin.zexport.total_power = request->arg("total_power").toDouble();