Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions packages/control/process.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"""
import logging
from threading import Thread
from typing import List
from typing import List, Optional

from control.bat_all import get_bat_components_by_controllability
from control.chargelog import chargelog
Expand Down Expand Up @@ -91,7 +91,9 @@ def process_algorithm_results(self) -> None:
else:
consumer.data.get.state_str = "Verbraucher wird gestartet... "

modules_threads.append(self._start_consumer(consumer))
consumer_thread = self._start_consumer(consumer)
if consumer_thread is not None:
modules_threads.append(consumer_thread)
except Exception:
log.exception("Fehler im Process-Modul für Verbaucher "+str(consumer))
for action in data.data.io_actions.actions.values():
Expand Down Expand Up @@ -192,12 +194,14 @@ def _update_state_consumer(self, consumer: Consumer) -> None:
log.info(f"Verbraucher{consumer.num}: set current {consumer.data.set.current} A, "
f"state {ChargepointState(control_parameter.state).name}")

def _start_consumer(self, consumer: Consumer) -> Thread:
if consumer.data.usage.type in (ConsumerUsage.CONTINUOUS,
ConsumerUsage.SUSPENDABLE_ONOFF):
def _start_consumer(self, consumer: Consumer) -> Optional[Thread]:
if consumer.data.usage.type == ConsumerUsage.METER_ONLY:
return None
elif consumer.data.usage.type in (ConsumerUsage.CONTINUOUS,
ConsumerUsage.SUSPENDABLE_ONOFF):
return Thread(
target=consumer.module.switch_on if consumer.data.set.current > 0 else consumer.module.switch_off,
name=f"set current consumer{consumer.num}")
name=f"set state consumer{consumer.num}")
elif consumer.data.usage.type == ConsumerUsage.SELF_CONTROLLED:
current_values = CurrentValues(
bat_power=data.data.bat_all_data.data.get.power,
Expand All @@ -210,8 +214,11 @@ def _start_consumer(self, consumer: Consumer) -> Thread:
return Thread(target=consumer.module.send_values,
args=(current_values,),
name=f"send values consumer{consumer.num}")
else:
elif consumer.data.usage.type == ConsumerUsage.SUSPENDABLE_TUNABLE:
set_limit_data = SetLimitData(max_power=consumer.data.config.max_power)
return Thread(target=consumer.module.set_power_limit,
args=(consumer.data.set.power, set_limit_data),
name=f"set current consumer{consumer.num}")
name=f"set power consumer{consumer.num}")
else:
log.error(f"Verbraucher{consumer.num}: Unbekannter usage.type {consumer.data.usage.type}")
return None
9 changes: 6 additions & 3 deletions packages/modules/loadvars.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from typing import List

from control import data
from control.consumer.usage import ConsumerUsage
from modules.common.abstract_io import AbstractIoDevice
from modules.common.store._tariff import get_price_value_store
from modules.utils import wait_for_module_update_completed
Expand Down Expand Up @@ -64,9 +65,11 @@ def _set_values(self) -> List[str]:
log.exception(f"Fehler im loadvars-Modul bei Element {cp.num}")
for consumer in data.data.consumer_data.values():
try:
modules_threads.append(Thread(target=consumer.module.update,
args=(),
name=f"set values consumer{consumer.data.module.id}"))
if ConsumerUsage.METER_ONLY.value in consumer.module.config.usage:
# Nur Verbraucher mit eingebautem Zähler haben eine update-Funktion.
modules_threads.append(Thread(target=consumer.module.update,
args=(),
name=f"set values consumer{consumer.data.module.id}"))
except Exception:
log.exception(f"Fehler im loadvars-Modul bei Element {consumer.num}")
return joined_thread_handler(modules_threads, data.data.general_data.data.control_interval/3)
Expand Down