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
99 changes: 82 additions & 17 deletions packages/helpermodules/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
from control.chargepoint import chargepoint
from control.chargepoint.chargepoint_template import get_autolock_plan_default, get_chargepoint_template_default

# ToDo: move to module commands if implemented
from control.ev.charge_template import get_new_charge_template
from control.ev.ev_template import EvTemplateData
from helpermodules import pub
from helpermodules.abstract_plans import ScheduledChargingPlan, TimeChargingPlan
from helpermodules.utils.run_command import run_command
# ToDo: move to module commands if implemented
from modules.backup_clouds.onedrive.api import generateMSALAuthCode, retrieveMSALTokens

from helpermodules.broker import BrokerClient
Expand Down Expand Up @@ -342,13 +342,26 @@ def removeChargepoint(self, connection_id: str, payload: dict) -> None:
def addChargepointTemplate(self, connection_id: str, payload: dict) -> None:
""" sendet das Topic, zu dem ein neues Ladepunkt-Profil erstellt werden soll.
"""
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"]:
new_chargepoint_template = asdict(data.data.cp_template_data[f'cpt{payload["data"]["copy"]}'].data).copy()
new_chargepoint_template["name"] = f'Kopie von {new_chargepoint_template["name"]}'
else:
new_chargepoint_template = get_chargepoint_template_default()
new_id = self.max_id_chargepoint_template + 1
default = get_chargepoint_template_default()
default["id"] = new_id
Pub().pub(f'openWB/set/chargepoint/template/{new_id}', default)
new_chargepoint_template["id"] = new_id
Pub().pub(f'openWB/set/chargepoint/template/{new_id}', new_chargepoint_template)
self.max_id_chargepoint_template = self.max_id_chargepoint_template + 1
Pub().pub("openWB/set/command/max_id/chargepoint_template",
self.max_id_chargepoint_template)
# if copying a template, copy autolock plans
if "data" in payload and "copy" in payload["data"]:
for _, plan in data.data.cp_template_data[f'cpt{payload["data"]["copy"]}'].data.autolock.plans.items():
new_plan = asdict(plan).copy()
new_plan["id"] = self.max_id_autolock_plan + 1
Pub().pub(f'openWB/set/chargepoint/template/{new_id}/autolock/{new_plan["id"]}', new_plan)
self.max_id_autolock_plan += 1
Pub().pub("openWB/set/command/max_id/autolock_plan", new_id)
pub_user_message(
payload, connection_id,
f'Neues Ladepunkt-Profil mit ID \'{new_id}\' hinzugefügt.',
Expand All @@ -374,10 +387,16 @@ def removeChargepointTemplate(self, connection_id: str, payload: dict) -> None:
def addAutolockPlan(self, connection_id: str, payload: dict) -> None:
""" sendet das Topic, zu dem ein neuer Zielladen-Plan erstellt werden soll.
"""
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"]:
new_autolock_plan = asdict(data.data.cp_template_data[f'cpt{payload["data"]["template"]}']
.data.autolock.plans[f'{payload["data"]["copy"]}']).copy()
new_autolock_plan["name"] = f'Kopie von {new_autolock_plan["name"]}'
else:
new_autolock_plan = get_autolock_plan_default()
new_id = self.max_id_autolock_plan + 1
default = get_autolock_plan_default()
Pub().pub(f'openWB/set/chargepoint/template/{payload["data"]["template"]}/autolock/{new_id}',
default)
new_autolock_plan)
self.max_id_autolock_plan = new_id
Pub().pub("openWB/set/command/max_id/autolock_plan", new_id)
pub_user_message(
Expand Down Expand Up @@ -407,13 +426,40 @@ def removeAutolockPlan(self, connection_id: str, payload: dict) -> None:
def addChargeTemplate(self, connection_id: str, payload: dict) -> None:
""" sendet das Topic, zu dem ein neues Lade-Profil erstellt werden soll.
"""
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"]:
new_charge_template = asdict(data.data.ev_charge_template_data[f'ct{payload["data"]["copy"]}'].data).copy()
new_charge_template["chargemode"]["scheduled_charging"].pop("plans")
new_charge_template["time_charging"].pop("plans")
new_charge_template["name"] = f'Kopie von {new_charge_template["name"]}'
else:
new_charge_template = get_new_charge_template()
new_id = self.max_id_charge_template + 1
charge_template_default = get_new_charge_template()
charge_template_default["id"] = new_id
new_charge_template["id"] = new_id
Pub().pub("openWB/set/vehicle/template/charge_template/" +
str(new_id), charge_template_default)
str(new_id), new_charge_template)
self.max_id_charge_template = new_id
Pub().pub("openWB/set/command/max_id/charge_template", new_id)
# if copying a template, also copy schedule plans and time charging plans
if "data" in payload and "copy" in payload["data"]:
for _, plan in (data.data.ev_charge_template_data[f'ct{payload["data"]["copy"]}']
.data.chargemode.scheduled_charging.plans.items()):
new_plan = asdict(plan).copy()
new_plan["id"] = self.max_id_charge_template_scheduled_plan + 1
Pub().pub(f'openWB/set/vehicle/template/charge_template/{new_id}/'
f'chargemode/scheduled_charging/plans/{new_plan["id"]}',
new_plan)
self.max_id_charge_template_scheduled_plan += 1
Pub().pub("openWB/set/command/max_id/charge_template_scheduled_plan", new_id)
for _, plan in (data.data.ev_charge_template_data[f'ct{payload["data"]["copy"]}']
.data.time_charging.plans.items()):
new_plan = asdict(plan).copy()
new_plan["id"] = self.max_id_charge_template_time_charging_plan + 1
Pub().pub(f'openWB/set/vehicle/template/charge_template/{new_id}/'
f'time_charging/plans/{new_plan["id"]}',
new_plan)
self.max_id_charge_template_time_charging_plan += 1
Pub().pub("openWB/set/command/max_id/charge_template_time_charging_plan", new_id)
pub_user_message(payload, connection_id,
f'Neues Lade-Profil mit ID \'{new_id}\' hinzugefügt.',
MessageType.SUCCESS)
Expand All @@ -437,13 +483,21 @@ def removeChargeTemplate(self, connection_id: str, payload: dict) -> None:
def addChargeTemplateSchedulePlan(self, connection_id: str, payload: dict) -> None:
""" sendet das Topic, zu dem ein neuer Zielladen-Plan erstellt werden soll.
"""
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"]:
new_charge_template_schedule_plan = (
data.data.ev_charge_template_data[f'ct{payload["data"]["template"]}']
.data.chargemode.scheduled_charging.plans[f'{payload["data"]["copy"]}']
)
new_charge_template_schedule_plan.name = f'Kopie von {new_charge_template_schedule_plan.name}'
else:
new_charge_template_schedule_plan = ScheduledChargingPlan()
new_id = self.max_id_charge_template_scheduled_plan + 1
charge_template_default = ScheduledChargingPlan()
charge_template_default.id = new_id
new_charge_template_schedule_plan.id = new_id
Pub().pub(
f'openWB/set/vehicle/template/charge_template/{payload["data"]["template"]}'
f'/chargemode/scheduled_charging/plans/{new_id}',
dataclass_utils.asdict(charge_template_default))
dataclass_utils.asdict(new_charge_template_schedule_plan))
self.max_id_charge_template_scheduled_plan = new_id
Pub().pub(
"openWB/set/command/max_id/charge_template_scheduled_plan", new_id)
Expand Down Expand Up @@ -474,13 +528,19 @@ def removeChargeTemplateSchedulePlan(self, connection_id: str, payload: dict) ->
def addChargeTemplateTimeChargingPlan(self, connection_id: str, payload: dict) -> None:
""" sendet das Topic, zu dem ein neuer Zeitladen-Plan erstellt werden soll.
"""
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"]:
new_time_charging_plan = (data.data.ev_charge_template_data[f'ct{payload["data"]["template"]}']
.data.time_charging.plans[f'{payload["data"]["copy"]}'])
new_time_charging_plan.name = f'Kopie von {new_time_charging_plan.name}'
else:
new_time_charging_plan = TimeChargingPlan()
new_id = self.max_id_charge_template_time_charging_plan + 1
time_charging_plan_default = TimeChargingPlan()
time_charging_plan_default.id = new_id
new_time_charging_plan.id = new_id
Pub().pub(
f'openWB/set/vehicle/template/charge_template/{payload["data"]["template"]}'
f'/time_charging/plans/{new_id}',
dataclass_utils.asdict(time_charging_plan_default))
dataclass_utils.asdict(new_time_charging_plan))
self.max_id_charge_template_time_charging_plan = new_id
Pub().pub(
"openWB/set/command/max_id/charge_template_time_charging_plan", new_id)
Expand Down Expand Up @@ -560,9 +620,14 @@ def removeComponent(self, connection_id: str, payload: dict) -> None:
def addEvTemplate(self, connection_id: str, payload: dict) -> None:
""" sendet das Topic, zu dem ein neues Fahrzeug-Profil erstellt werden soll.
"""
# check if "payload" contains "data.copy"
if "data" in payload and "copy" in payload["data"]:
new_ev_template = asdict(data.data.ev_template_data[f"et{payload['data']['copy']}"].data).copy()
new_ev_template["name"] = f'Kopie von {new_ev_template["name"]}'
else:
new_ev_template = dataclass_utils.asdict(EvTemplateData())
new_id = self.max_id_ev_template + 1
ev_template_default = dataclass_utils.asdict(EvTemplateData())
Pub().pub(f'openWB/set/vehicle/template/ev_template/{new_id}', ev_template_default)
Pub().pub(f'openWB/set/vehicle/template/ev_template/{new_id}', new_ev_template)
self.max_id_ev_template = new_id
Pub().pub("openWB/set/command/max_id/ev_template", new_id)
pub_user_message(
Expand Down
Loading