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
6 changes: 3 additions & 3 deletions packages/control/chargepoint/chargepoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ def _is_phase_switch_required(self) -> bool:
if phase_switch_required:
# Umschaltung fehlgeschlagen
if self.data.set.phases_to_use != self.data.get.phases_in_use:
if data.data.general_data.data.chargemode_config.retry_failed_phase_switches:
if data.data.general_data.data.chargemode_config.pv_charging.retry_failed_phase_switches:
if self.data.control_parameter.failed_phase_switches > self.MAX_FAILED_PHASE_SWITCHES:
phase_switch_required = False
self.set_state_and_log(
Expand Down Expand Up @@ -911,9 +911,9 @@ def hw_supports_phase_switch(self) -> bool:
self.data.set.log.imported_since_plugged == 0))

def failed_phase_switches_reached(self) -> bool:
if ((data.data.general_data.data.chargemode_config.retry_failed_phase_switches and
if ((data.data.general_data.data.chargemode_config.pv_charging.retry_failed_phase_switches and
self.data.control_parameter.failed_phase_switches > self.MAX_FAILED_PHASE_SWITCHES) or
(data.data.general_data.data.chargemode_config.retry_failed_phase_switches is False and
(data.data.general_data.data.chargemode_config.pv_charging.retry_failed_phase_switches is False and
self.data.control_parameter.failed_phase_switches == 1)):
self.set_state_and_log(
"Keine Phasenumschaltung, da die maximale Anzahl an Fehlversuchen erreicht wurde. ")
Expand Down
4 changes: 3 additions & 1 deletion packages/control/chargepoint/chargepoint_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ def test_is_phase_switch_required(params: Params):
cp.data.get.charge_state = params.charge_state
cp.data.control_parameter.failed_phase_switches = params.failed_phase_switches
data.data_init(Mock())
data.data.general_data.data.chargemode_config.retry_failed_phase_switches = params.retry_failed_phase_switches
data.data.general_data.data.chargemode_config.pv_charging.retry_failed_phase_switches = (
params.retry_failed_phase_switches
)

# evaluation
ret = cp._is_phase_switch_required()
Expand Down
3 changes: 1 addition & 2 deletions packages/control/ev/ev.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,13 +314,12 @@ def auto_phase_switch(self,
phases_to_use = control_parameter.phases
phases_in_use = control_parameter.phases
pv_config = data.data.general_data.data.chargemode_config.pv_charging
cm_config = data.data.general_data.data.chargemode_config
if charge_template.data.chargemode.pv_charging.feed_in_limit:
feed_in_yield = pv_config.feed_in_yield
else:
feed_in_yield = 0
all_surplus = data.data.counter_all_data.get_evu_counter().get_usable_surplus(feed_in_yield)
delay = cm_config.phase_switch_delay * 60
delay = pv_config.phase_switch_delay * 60
if phases_in_use == 1:
direction_str = f"Umschaltung von 1 auf {max_phases}"
required_reserved_power = (control_parameter.min_current * max_phases * 230 -
Expand Down
8 changes: 3 additions & 5 deletions packages/control/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ class PvCharging:
"topic": "chargemode_config/pv_charging/max_bat_soc"})
bat_mode: BatConsiderationMode = field(default=BatConsiderationMode.EV_MODE.value, metadata={
"topic": "chargemode_config/pv_charging/bat_mode"})
retry_failed_phase_switches: bool = field(
default=False,
metadata={"topic": "chargemode_config/pv_charging/retry_failed_phase_switches"})
switch_off_delay: int = field(default=60, metadata={
"topic": "chargemode_config/pv_charging/switch_off_delay"})
switch_off_threshold: int = field(default=0, metadata={
Expand All @@ -54,12 +57,7 @@ def pv_charging_factory() -> PvCharging:

@dataclass
class ChargemodeConfig:
phase_switch_delay: int = field(default=5, metadata={
"topic": "chargemode_config/phase_switch_delay"})
pv_charging: PvCharging = field(default_factory=pv_charging_factory)
retry_failed_phase_switches: bool = field(
default=False,
metadata={"topic": "chargemode_config/retry_failed_phase_switches"})
unbalanced_load_limit: int = field(
default=18, metadata={"topic": "chargemode_config/unbalanced_load_limit"})
unbalanced_load: bool = field(default=False, metadata={
Expand Down
31 changes: 16 additions & 15 deletions packages/helpermodules/create_debug.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,21 +111,22 @@ def config_and_state():
if secondary is False:
with ErrorHandlingContext():
chargemode_config = data.data.general_data.data.chargemode_config
parsed_data += ("\n## General Charge Config/ PV ##\n"
f"Phase_Switch_Delay: {chargemode_config.phase_switch_delay} min\n"
f"Retry_Failed_Phase_Switches: {chargemode_config.retry_failed_phase_switches}\n"
f"Control_Range: {chargemode_config.pv_charging.control_range}W\n"
f"Switch_On_Threshold: {chargemode_config.pv_charging.switch_on_threshold}W\n"
f"Switch_On_Delay: {chargemode_config.pv_charging.switch_on_delay}s\n"
f"Switch_Off_Threshold: {chargemode_config.pv_charging.switch_off_threshold}W\n"
f"Switch_Off_Delay: {chargemode_config.pv_charging.switch_off_delay}s\n"
f"Feed_In_Yield: {chargemode_config.pv_charging.feed_in_yield}W\n"
f"Bat_Mode: {chargemode_config.pv_charging.bat_mode}\n"
f"Min_Bat_SoC: {chargemode_config.pv_charging.min_bat_soc}%\n"
f"Bat_Power_Reserve_Active: {chargemode_config.pv_charging.bat_power_reserve_active}\n"
f"Bat_Power_Reserve: {chargemode_config.pv_charging.bat_power_reserve}W\n"
f"Bat_Power_Discharge_Active: {chargemode_config.pv_charging.bat_power_discharge_active}\n"
f"Bat_Power_Discharge: {chargemode_config.pv_charging.bat_power_discharge}W\n")
parsed_data += (
"\n## General Charge Config/ PV ##\n"
f"Phase_Switch_Delay: {chargemode_config.pv_charging.phase_switch_delay} min\n"
f"Retry_Failed_Phase_Switches: {chargemode_config.pv_charging.retry_failed_phase_switches}\n"
f"Control_Range: {chargemode_config.pv_charging.control_range}W\n"
f"Switch_On_Threshold: {chargemode_config.pv_charging.switch_on_threshold}W\n"
f"Switch_On_Delay: {chargemode_config.pv_charging.switch_on_delay}s\n"
f"Switch_Off_Threshold: {chargemode_config.pv_charging.switch_off_threshold}W\n"
f"Switch_Off_Delay: {chargemode_config.pv_charging.switch_off_delay}s\n"
f"Feed_In_Yield: {chargemode_config.pv_charging.feed_in_yield}W\n"
f"Bat_Mode: {chargemode_config.pv_charging.bat_mode}\n"
f"Min_Bat_SoC: {chargemode_config.pv_charging.min_bat_soc}%\n"
f"Bat_Power_Reserve_Active: {chargemode_config.pv_charging.bat_power_reserve_active}\n"
f"Bat_Power_Reserve: {chargemode_config.pv_charging.bat_power_reserve}W\n"
f"Bat_Power_Discharge_Active: {chargemode_config.pv_charging.bat_power_discharge_active}\n"
f"Bat_Power_Discharge: {chargemode_config.pv_charging.bat_power_discharge}W\n")
if secondary is False:
with ErrorHandlingContext():
parsed_data += f"\n## Hierarchy ##\n{get_hierarchy(data.data.counter_all_data.data.get.hierarchy)}\n"
Expand Down
4 changes: 2 additions & 2 deletions packages/helpermodules/setdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ def process_general_topic(self, msg: mqtt.MQTTMessage):
elif "openWB/set/general/chargemode_config/unbalanced_load_limit" in msg.topic:
self._validate_value(msg, int, [(10, 32)])
elif ("openWB/set/general/chargemode_config/unbalanced_load" in msg.topic or
"openWB/set/general/chargemode_config/retry_failed_phase_switches" in msg.topic or
"openWB/set/general/chargemode_config/pv_charging/retry_failed_phase_switches" in msg.topic or
"openWB/set/general/chargemode_config/pv_charging/bat_power_discharge_active" in msg.topic or
"openWB/set/general/chargemode_config/pv_charging/bat_power_reserve_active" in msg.topic):
self._validate_value(msg, bool)
Expand All @@ -742,7 +742,7 @@ def process_general_topic(self, msg: mqtt.MQTTMessage):
self._validate_value(msg, int, [(0, float("inf"))])
elif "openWB/set/general/chargemode_config/pv_charging/switch_off_threshold" in msg.topic:
self._validate_value(msg, float)
elif "openWB/set/general/chargemode_config/phase_switch_delay" in msg.topic:
elif "openWB/set/general/chargemode_config/pv_charging/phase_switch_delay" in msg.topic:
self._validate_value(msg, int, [(5, 60)])
elif "openWB/set/general/chargemode_config/pv_charging/control_range" in msg.topic:
self._validate_value(msg, int, collection=list)
Expand Down
23 changes: 16 additions & 7 deletions packages/helpermodules/update_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
from control.ev.charge_template import EcoCharging, get_charge_template_default
from control.ev import ev
from control.ev.ev_template import EvTemplateData
from control.general import ChargemodeConfig, Prices
from control.general import Prices, PvCharging
from control.optional_data import Ocpp
from modules.common.abstract_vehicle import GeneralVehicleConfig
from modules.common.component_type import ComponentType
Expand All @@ -57,7 +57,7 @@

class UpdateConfig:

DATASTORE_VERSION = 100
DATASTORE_VERSION = 101

valid_topic = [
"^openWB/bat/config/bat_control_permitted$",
Expand Down Expand Up @@ -230,15 +230,15 @@ class UpdateConfig:
"^openWB/general/chargemode_config/pv_charging/switch_on_delay$",
"^openWB/general/chargemode_config/pv_charging/switch_off_threshold$",
"^openWB/general/chargemode_config/pv_charging/switch_off_delay$",
"^openWB/general/chargemode_config/phase_switch_delay$",
"^openWB/general/chargemode_config/pv_charging/phase_switch_delay$",
"^openWB/general/chargemode_config/pv_charging/control_range$",
"^openWB/general/chargemode_config/pv_charging/min_bat_soc$",
"^openWB/general/chargemode_config/pv_charging/max_bat_soc$",
"^openWB/general/chargemode_config/pv_charging/bat_power_discharge$",
"^openWB/general/chargemode_config/pv_charging/bat_power_discharge_active$",
"^openWB/general/chargemode_config/pv_charging/bat_power_reserve$",
"^openWB/general/chargemode_config/pv_charging/bat_power_reserve_active$",
"^openWB/general/chargemode_config/retry_failed_phase_switches$",
"^openWB/general/chargemode_config/pv_charging/retry_failed_phase_switches$",
# obsolet, Daten hieraus müssen nach prices/ überführt werden
"^openWB/general/price_kwh$",
"^openWB/general/prices/bat$",
Expand Down Expand Up @@ -546,9 +546,9 @@ class UpdateConfig:
("openWB/general/chargemode_config/pv_charging/switch_on_delay", 30),
("openWB/general/chargemode_config/pv_charging/switch_on_threshold", 1500),
("openWB/general/chargemode_config/pv_charging/feed_in_yield", 0),
("openWB/general/chargemode_config/phase_switch_delay", 7),
("openWB/general/chargemode_config/retry_failed_phase_switches",
ChargemodeConfig().retry_failed_phase_switches),
("openWB/general/chargemode_config/pv_charging/phase_switch_delay", 7),
("openWB/general/chargemode_config/pv_charging/retry_failed_phase_switches",
PvCharging().retry_failed_phase_switches),
("openWB/general/chargemode_config/unbalanced_load", False),
("openWB/general/chargemode_config/unbalanced_load_limit", 18),
("openWB/general/control_interval", 10),
Expand Down Expand Up @@ -2600,3 +2600,12 @@ def upgrade_datastore_99(self) -> None:

self.__update_topic("openWB/general/chargemode_config/pv_charging/max_bat_soc", min_bat_soc)
self.__update_topic("openWB/system/datastore_version", 100)

def upgrade_datastore_100(self) -> None:
def upgrade(topic: str, payload) -> Optional[dict]:
if "openWB/general/chargemode_config/retry_failed_phase_switches" == topic:
return {"openWB/general/chargemode_config/pv_charging/retry_failed_phase_switches": payload}
if "openWB/general/chargemode_config/phase_switch_delay" == topic:
return {"openWB/general/chargemode_config/pv_charging/phase_switch_delay": payload}
self._loop_all_received_topics(upgrade)
self.__update_topic("openWB/system/datastore_version", 101)