+ Der Speicher regelt direkt entsprechend der manuellen Einstellung.
-
- Die Speicherentladung wird komplett gesperrt, sobald ein Fahrzeug lädt! Alle Verbraucher (Fahrzeuge,
- Hausverbrauch) werden durch Netzstrom versorgt.
+
+ Das oben eingestellte Regellimit wird angewendet sobald ein oder mehrere Fahrzeuge Laden.
-
- Fahrzeugladung erzeugt Netzbezug statt Speicherentladung. Weitere Verbraucher (bspw. Hausverbrauch)
- werden durch den Speicher ausgeglichen. Kann die Entladung am Speicher nur komplett gesperrt werden,
- verhält sich diese Einstellung wie "volle Entladesperre".
+
+ Regelung nach Preisgrenze bei variablen Strompreisen.
+
+
+
Manuell
+
+
+
+ Aktive Speichersteuerung deaktivieren (Eigenregelung des Speichers).
+
+
+ Es wird das weiter oben konfigurierte Regellimit angewendet.
+
+
+ Alle Speicher werden mit ihrer eingestellten maximalen Ladeleistung beladen.
+ Befinden sich die Speicher über der oberen Ladeschranke wird der SoC gehalten.
+
+
+
+
+
+ Fahrzeuge laden
+
+ Dieser Modus bietet keine weiteren Einstellungen. Sobald mindestens ein Fahrzeug lädt
+ greift das weiter oben konfigurierte Regellimit.
+
+
+
+ Preisgrenze (Variable Strompreise)
+
+
+ Fällt der variable Strompreis unuter diesen Wert, greift das weiter oben konfigurierte Regellimit.
+
+
+
+
+
+ Fällt der variable Strompreis unter diesen Wert werden alle Speicher mit ihrer
+ eingestellten maximalen Ladeleistung beladen.
+ Befinden sich die Speicher über der oberen Ladeschranke wird der SoC gehalten.
+
+
+
+
@@ -342,8 +604,21 @@ export default {
"openWB/general/chargemode_config/pv_charging/min_bat_soc",
"openWB/general/chargemode_config/pv_charging/max_bat_soc",
"openWB/bat/config/bat_control_permitted",
+ "openWB/bat/config/bat_control_activated",
"openWB/bat/get/power_limit_controllable",
+ "openWB/bat/+/get/max_charge_power",
+ "openWB/bat/+/get/max_discharge_power",
+ "openWB/bat/config/bat_control_min_soc",
+ "openWB/bat/config/bat_control_max_soc",
"openWB/bat/config/power_limit_mode",
+ "openWB/bat/config/power_limit_condition",
+ "openWB/bat/config/manual_mode",
+ "openWB/bat/config/price_limit_activated",
+ "openWB/bat/config/price_limit",
+ "openWB/bat/config/price_charge_activated",
+ "openWB/bat/config/charge_limit",
+ "openWB/system/device/+/component/+/config",
+ "openWB/bat/+/get/power_limit_controllable",
],
};
},
@@ -356,6 +631,76 @@ export default {
this.updateState("openWB/general/chargemode_config/pv_charging/bat_mode", newMode);
},
},
+ numBatteriesInstalled: {
+ get() {
+ return Object.keys(this.batteryConfigs).length;
+ },
+ },
+ batteryConfigs: {
+ get() {
+ if (this.$store.state.mqtt["openWB/general/extern"] === true) {
+ return {};
+ }
+ return this.filterComponentsByType(this.getWildcardTopics("openWB/system/device/+/component/+/config"), "bat");
+ },
+ },
+ controllableBatteryConfigs: {
+ get() {
+ if (this.$store.state.mqtt["openWB/general/extern"] === true) {
+ return {};
+ }
+ return this.filterControllableBatteries(this.getWildcardTopics("openWB/system/device/+/component/+/config"));
+ },
+ },
+ containsNormalBatteries: {
+ get() {
+ if (this.$store.state.mqtt["openWB/general/extern"] === true) {
+ return false;
+ }
+ return Object.keys(this.filterNormalBatteries(this.getWildcardTopics("openWB/system/device/+/component/+/config"))).length > 0;
+ },
+ },
+ },
+ methods: {
+ getLimitControllable(id) {
+ return this.$store.state.mqtt['openWB/bat/'+id+'/get/power_limit_controllable'];
+ },
+ filterComponentsByType(components, type) {
+ return Object.keys(components)
+ .filter((key) => {
+ return components[key].type.includes(type);
+ })
+ .reduce((obj, key) => {
+ return {
+ ...obj,
+ [key]: components[key],
+ };
+ }, {});
+ },
+ filterControllableBatteries(components) {
+ return Object.keys(components)
+ .filter((key) => {
+ return components[key].type.includes("bat") && components[key].configuration.power_limit_controllable === true;
+ })
+ .reduce((obj, key) => {
+ return {
+ ...obj,
+ [key]: components[key],
+ };
+ }, {});
+ },
+ filterNormalBatteries(components) {
+ return Object.keys(components)
+ .filter((key) => {
+ return components[key].type.includes("bat") && this.getLimitControllable(components[key].id) === false;
+ })
+ .reduce((obj, key) => {
+ return {
+ ...obj,
+ [key]: components[key],
+ };
+ }, {});
+ },
},
};