From c6f81806d681acd983918393841d91393b219d84 Mon Sep 17 00:00:00 2001 From: Bernhard Kirchen Date: Sat, 9 Mar 2024 15:39:16 +0100 Subject: [PATCH] DPL: make "IsInverterSolarPowered" configurable through web app --- src/WebApi_powerlimiter.cpp | 2 ++ webapp/src/locales/de.json | 1 + webapp/src/locales/en.json | 1 + webapp/src/locales/fr.json | 1 + webapp/src/types/PowerLimiterConfig.ts | 1 + webapp/src/views/PowerLimiterAdminView.vue | 5 +++++ 6 files changed, 11 insertions(+) diff --git a/src/WebApi_powerlimiter.cpp b/src/WebApi_powerlimiter.cpp index df530ca8..3a7d827a 100644 --- a/src/WebApi_powerlimiter.cpp +++ b/src/WebApi_powerlimiter.cpp @@ -39,6 +39,7 @@ void WebApiPowerLimiterClass::onStatus(AsyncWebServerRequest* request) root["solar_passthrough_losses"] = config.PowerLimiter.SolarPassThroughLosses; root["battery_drain_strategy"] = config.PowerLimiter.BatteryDrainStategy; root["is_inverter_behind_powermeter"] = config.PowerLimiter.IsInverterBehindPowerMeter; + root["is_inverter_solar_powered"] = config.PowerLimiter.IsInverterSolarPowered; root["inverter_id"] = config.PowerLimiter.InverterId; root["inverter_channel_id"] = config.PowerLimiter.InverterChannelId; root["target_power_consumption"] = config.PowerLimiter.TargetPowerConsumption; @@ -128,6 +129,7 @@ void WebApiPowerLimiterClass::onAdminPost(AsyncWebServerRequest* request) config.PowerLimiter.SolarPassThroughLosses = root["solar_passthrough_losses"].as(); config.PowerLimiter.BatteryDrainStategy= root["battery_drain_strategy"].as(); config.PowerLimiter.IsInverterBehindPowerMeter = root["is_inverter_behind_powermeter"].as(); + config.PowerLimiter.IsInverterSolarPowered = root["is_inverter_solar_powered"].as(); config.PowerLimiter.InverterId = root["inverter_id"].as(); config.PowerLimiter.InverterChannelId = root["inverter_channel_id"].as(); config.PowerLimiter.TargetPowerConsumption = root["target_power_consumption"].as(); diff --git a/webapp/src/locales/de.json b/webapp/src/locales/de.json index c751eed3..f8918de2 100644 --- a/webapp/src/locales/de.json +++ b/webapp/src/locales/de.json @@ -610,6 +610,7 @@ "VoltageLoadCorrectionFactor": "DC Spannung - Lastkorrekturfaktor", "BatterySocInfo": "Hinweis: Die Akku SoC (State of Charge) Werte werden nur benutzt, wenn die Batterie-Kommunikationsschnittstelle innerhalb der letzten Minute gültige Werte geschickt hat. Andernfalls werden als Fallback-Option die Spannungseinstellungen verwendet.", "InverterIsBehindPowerMeter": "Welchselrichter ist hinter Leistungsmesser", + "InverterIsSolarPowered": "Wechselrichter wird von Solarmodulen gespeist", "Battery": "DC / Akku", "VoltageLoadCorrectionInfo": "Hinweis: Wenn Leistung von der Batterie abgegeben wird, bricht normalerweise die Spannung etwas ein. Damit nicht vorzeitig der Wechelrichter ausgeschaltet wird sobald der \"Stop\"-Schwellenwert erreicht wird, wird der hier angegebene Korrekturfaktor mit einberechnet. Korrigierte Spannung = DC Spannung + (Aktuelle Leistung (W) * Korrekturfaktor).", "InverterRestart": "Wechselrichter Neustart", diff --git a/webapp/src/locales/en.json b/webapp/src/locales/en.json index 89387032..5aded483 100644 --- a/webapp/src/locales/en.json +++ b/webapp/src/locales/en.json @@ -616,6 +616,7 @@ "VoltageLoadCorrectionFactor": "DC Voltage - Load correction factor", "BatterySocInfo": "Hint: The battery SoC (State of Charge) values are only used if the battery communication interface reported SoC updates in the last minute. Otherwise the voltage thresholds will be used as fallback.", "InverterIsBehindPowerMeter": "Inverter is behind Power meter", + "InverterIsSolarPowered": "Inverter is powered by solar modules", "Battery": "DC / Battery", "VoltageLoadCorrectionInfo": "Hint: When the power output is higher, the voltage is usually decreasing. In order to not stop the inverter too early (Stop treshold), a power factor can be specified here to correct this. Corrected voltage = DC Voltage + (Current power * correction factor).", "InverterRestart": "Inverter Restart", diff --git a/webapp/src/locales/fr.json b/webapp/src/locales/fr.json index 88514e63..90be3c99 100644 --- a/webapp/src/locales/fr.json +++ b/webapp/src/locales/fr.json @@ -699,6 +699,7 @@ "VoltageLoadCorrectionFactor": "DC Voltage - Load correction factor", "BatterySocInfo": "Hint: The battery SoC (State of Charge) values are only used if the battery communication interface reported SoC updates in the last minute. Otherwise the voltage thresholds will be used as fallback.", "InverterIsBehindPowerMeter": "Inverter is behind Power meter", + "InverterIsSolarPowered": "Inverter is powered by solar modules", "Battery": "DC / Battery", "VoltageLoadCorrectionInfo": "Hint: When the power output is higher, the voltage is usually decreasing. In order to not stop the inverter too early (Stop treshold), a power factor can be specified here to correct this. Corrected voltage = DC Voltage + (Current power * correction factor)." }, diff --git a/webapp/src/types/PowerLimiterConfig.ts b/webapp/src/types/PowerLimiterConfig.ts index 594361d7..70fe6084 100644 --- a/webapp/src/types/PowerLimiterConfig.ts +++ b/webapp/src/types/PowerLimiterConfig.ts @@ -5,6 +5,7 @@ export interface PowerLimiterConfig { solar_passthrough_losses: number; battery_drain_strategy: number; is_inverter_behind_powermeter: boolean; + is_inverter_solar_powered: boolean; inverter_id: number; inverter_channel_id: number; target_power_consumption: number; diff --git a/webapp/src/views/PowerLimiterAdminView.vue b/webapp/src/views/PowerLimiterAdminView.vue index 898cd4f6..54cc5adb 100644 --- a/webapp/src/views/PowerLimiterAdminView.vue +++ b/webapp/src/views/PowerLimiterAdminView.vue @@ -77,6 +77,11 @@ + +