Browse Source

max. Einspeiseleistung einstellbar machen

pull/1155/head
DanielR92 2 years ago
parent
commit
e4e94b8184
  1. 14
      src/app.cpp
  2. 7
      src/config/settings.h
  3. 1
      src/web/RestApi.h
  4. 5
      src/web/html/setup.html
  5. 1
      src/web/web.h

14
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";

7
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<uint8_t>(obj, F("Iv"), &mCfg.plugin.zexport.Iv);
getVal<uint8_t>(obj, F("count_avg"), &mCfg.plugin.zexport.count_avg);
getVal<double>(obj, F("max_power"), &mCfg.plugin.zexport.max_power);
getVal<float>(obj, F("power_avg"), &mCfg.plugin.zexport.power_avg);

1
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;

5
src/web/html/setup.html

@ -342,6 +342,9 @@
<div class="col-8 col-sm-3">2% protection: </div>
<div class="col-4 col-sm-9"><input type="checkbox" name="two_percent"/></div>
<br>
<div class="col-8 col-sm-3">Max Power: </div>
<div class="col-4 col-sm-9"><input type="number" name="max_power" min="8" ></div>
<br>
<div class="col-12 col-sm-3 my-2">Refresh rate (sec.)<input type="number" name="count_avg" min="0" max="255"></div>
<div class="col-12 col-sm-3 my-2">Power tolerances (Watt)<input type="number" name="power_avg" min="0" max="255"></div>
</div>
@ -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]];

1
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();

Loading…
Cancel
Save