Skip to content

Commit 393340a

Browse files
committed
add bat state
1 parent 36592e0 commit 393340a

4 files changed

Lines changed: 15 additions & 2 deletions

File tree

‎packages/control/bat.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class Get:
2323
power_limit_controllable: bool = field(default=False, metadata={"topic": "get/power_limit_controllable"})
2424
max_charge_power: float = field(default=0, metadata={"topic": "get/max_charge_power"})
2525
max_discharge_power: float = field(default=0, metadata={"topic": "get/max_discharge_power"})
26+
state_str: str = field(default="Keine Steuerung", metadata={"topic": "get/state_str"})
2627

2728

2829
def get_factory() -> Get:

‎packages/control/bat_all.py‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,30 +236,37 @@ def _set_bat_power_active_control(self, power):
236236
# Falls keine leistung übergeben wird greift die Eigenregelung der Speicher
237237
if power is None:
238238
power_limit = None
239+
bat_component_data.get.state_str = "Keine Steuerung"
239240
log.debug(("Aktive Speichersteuerung: Eigenregelung - Speicher "
240241
f"(ID: {bat_component.component_config.id}) auf Eigenregelung gesetzt."))
241242
elif power == 0:
242243
power_limit = 0
244+
bat_component_data.get.state_str = "Entladesperre"
243245
log.debug((f"Aktive Speichersteuerung: Kein Laden/Entladen - "
244246
f"Speicher (ID: {bat_component.component_config.id}) auf 0W gesetzt."))
245247
elif power < 0:
246248
# Eigenregelung aller Speicher, da Entladung nicht möglich
247249
if max_discharge_power_total == 0:
248250
power_limit = None
251+
bat_component_data.get.state_str = ("Keine Steuerung - alle Speicher "
252+
"befinden sich unterhalb minimal SoC")
249253
log.debug(("Aktive Speichersteuerung: Entladung - alle Speicher befinden sich unterhalb minimal "
250254
f"SoC. Speicher (ID: {bat_component.component_config.id}) auf Eigenregelung gesetzt."))
251255
else:
252256
# unterhalb des minimal SoC greift die Eigenregelung
253257
# das verhindert Tiefenentladung
254258
if bat_component_data.get.soc <= self.data.config.bat_control_min_soc:
255259
power_limit = None
260+
bat_component_data.get.state_str = ("Keine Steuerung - dieser Speicher "
261+
"befindet sich unterhalb minimal SoC")
256262
log.debug(("Aktive Speichersteuerung: Entladung - "
257263
f"Speicher (ID: {bat_component.component_config.id}) "
258264
"befindet sich unterhalb minimal SoC - auf Eigenregelung gesetzt."))
259265
# setze Entladeleistung als Bruchteil der möglichen Entladeleistung
260266
else:
261267
factor = min(power / max_discharge_power_total, 1)
262268
power_limit = bat_component_data.get.max_discharge_power * factor
269+
bat_component_data.get.state_str = f"Entladung mit {power_limit}W"
263270
log.debug(("Aktive Speichersteuerung: Entladung - "
264271
f"Speicher (ID: {bat_component.component_config.id}) "
265272
f"entlädt mit {power_limit} ({factor} x "
@@ -268,17 +275,18 @@ def _set_bat_power_active_control(self, power):
268275
# oberhalb des max_soc soll Speicher nicht entladen wenn andere Speicher laden
269276
if bat_component_data.get.soc >= self.data.config.bat_control_max_soc:
270277
power_limit = 0
278+
bat_component_data.get.state_str = ("Speicher befindet sich oberhalb "
279+
"des maximalen SoC - Ladung gesperrt")
271280
log.debug(("Aktive Speichersteuerung: Ladung - "
272281
f"Speicher (ID: {bat_component.component_config.id}) "
273282
"befindet sich oberhalb maximal SoC - Speicher sperren."))
274283
else:
275284
factor = min(power / max_charge_power_total, 1)
276285
power_limit = bat_component_data.get.max_charge_power * factor
286+
bat_component_data.get.state_str = f"Ladung mit {power_limit}W"
277287
log.debug(("Aktive Speichersteuerung: Ladung - "
278288
f"Speicher (ID: {bat_component.component_config.id}) "
279289
f"lädt mit {power_limit} ({factor} x {bat_component_data.get.max_charge_power})"))
280-
281-
# power_limit = self._limit_bat_power_discharge(power_limit)
282290
data.data.bat_data[f"bat{bat_component.component_config.id}"].data.set.power_limit = power_limit
283291
log.debug(f"Power Limit {power_limit}W an Speicher übergeben!")
284292

‎packages/helpermodules/setdata.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,8 @@ def process_bat_topic(self, msg: mqtt.MQTTMessage):
671671
elif (re.search("openWB/set/bat/[0-9]+/get/max_charge_power$", msg.topic) is not None or
672672
re.search("openWB/set/bat/[0-9]+/get/max_discharge_power$", msg.topic) is not None):
673673
self._validate_value(msg, float, [(0, float("inf"))])
674+
elif (re.search("openWB/set/bat/[0-9]+/get/state_str$", msg.topic) is not None):
675+
self._validate_value(msg, str)
674676
elif ("openWB/set/bat/config/price_limit" in msg.topic or
675677
"openWB/set/bat/config/charge_limit" in msg.topic):
676678
self._validate_value(msg, float, [(0, 99.99)])

‎packages/helpermodules/update_config.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class UpdateConfig:
7373
"^openWB/bat/config/charge_limit$",
7474
"^openWB/bat/[0-9]+/get/max_charge_power$",
7575
"^openWB/bat/[0-9]+/get/max_discharge_power$",
76+
"^openWB/bat/[0-9]+/get/state_str$",
7677

7778
"^openWB/bat/config/configured$",
7879
"^openWB/bat/set/charging_power_left$",
@@ -534,6 +535,7 @@ class UpdateConfig:
534535
("openWB/bat/config/charge_limit$", 0.3),
535536
("openWB/bat/[0-9]+/get/max_charge_power", 0),
536537
("openWB/bat/[0-9]+/get/max_discharge_power", 0),
538+
# ("openWB/bat/[0-9]+/get/state_str", "Eigenregelung"),
537539
("openWB/bat/config/configured", False),
538540
("openWB/bat/get/fault_state", 0),
539541
("openWB/bat/get/fault_str", NO_ERROR),

0 commit comments

Comments
 (0)