diff --git a/packages/control/chargelog/chargelog.py b/packages/control/chargelog/chargelog.py index 466662d00a..40cc291ade 100644 --- a/packages/control/chargelog/chargelog.py +++ b/packages/control/chargelog/chargelog.py @@ -319,16 +319,19 @@ def write_new_entry(new_entry): def calc_energy_costs(cp, create_log_entry: bool = False): - if cp.data.set.log.imported_since_plugged != 0 and cp.data.set.log.imported_since_mode_switch != 0: - processed_entries, reference_entries = _get_reference_entries() - charged_energy_by_source = calculate_charged_energy_by_source( - cp, processed_entries, reference_entries, create_log_entry) - _add_charged_energy_by_source(cp, charged_energy_by_source) - log.debug(f"charged_energy_by_source {charged_energy_by_source} " - f"total charged_energy_by_source {cp.data.set.log.charged_energy_by_source}") - costs = _calc_costs(charged_energy_by_source, reference_entries[-1]["prices"]) - cp.data.set.log.costs += costs - Pub().pub(f"openWB/set/chargepoint/{cp.num}/set/log", asdict(cp.data.set.log)) + try: + if cp.data.set.log.imported_since_plugged != 0 and cp.data.set.log.imported_since_mode_switch != 0: + processed_entries, reference_entries = _get_reference_entries() + charged_energy_by_source = calculate_charged_energy_by_source( + cp, processed_entries, reference_entries, create_log_entry) + _add_charged_energy_by_source(cp, charged_energy_by_source) + log.debug(f"charged_energy_by_source {charged_energy_by_source} " + f"total charged_energy_by_source {cp.data.set.log.charged_energy_by_source}") + costs = _calc_costs(charged_energy_by_source, reference_entries[-1]["prices"]) + cp.data.set.log.costs += costs + Pub().pub(f"openWB/set/chargepoint/{cp.num}/set/log", asdict(cp.data.set.log)) + except Exception: + log.exception(f"Fehler beim Berechnen der Ladekosten für Ladepunkt {cp.num}") def calculate_charged_energy_by_source(cp, processed_entries, reference_entries, create_log_entry: bool = False): diff --git a/packages/control/optional.py b/packages/control/optional.py index 54bbf37ed9..e3286d9603 100644 --- a/packages/control/optional.py +++ b/packages/control/optional.py @@ -152,16 +152,21 @@ def remove(price_data: Dict) -> Dict: if float(price[0]) > now - (price_timeslot_seconds - 1) } - if self.data.electricity_pricing.configured: - ep = self.data.electricity_pricing - ep.get.prices = remove(ep.get.prices) - Pub().pub("openWB/set/optional/ep/get/prices", ep.get.prices) - if self._flexible_tariff_module: - ep.flexible_tariff.get.prices = remove(ep.flexible_tariff.get.prices) - Pub().pub("openWB/set/optional/ep/flexible_tariff/get/prices", ep.flexible_tariff.get.prices) - if self._grid_fee_module: - ep.grid_fee.get.prices = remove(ep.grid_fee.get.prices) - Pub().pub("openWB/set/optional/ep/grid_fee/get/prices", ep.grid_fee.get.prices) + try: + if self.data.electricity_pricing.configured: + if len(self.data.electricity_pricing.get.prices) == 0: + return + ep = self.data.electricity_pricing + ep.get.prices = remove(ep.get.prices) + Pub().pub("openWB/set/optional/ep/get/prices", ep.get.prices) + if self._flexible_tariff_module: + ep.flexible_tariff.get.prices = remove(ep.flexible_tariff.get.prices) + Pub().pub("openWB/set/optional/ep/flexible_tariff/get/prices", ep.flexible_tariff.get.prices) + if self._grid_fee_module: + ep.grid_fee.get.prices = remove(ep.grid_fee.get.prices) + Pub().pub("openWB/set/optional/ep/grid_fee/get/prices", ep.grid_fee.get.prices) + except Exception: + log.exception("Fehler beim Entfernen veralteter Preise") def __get_current_timeslot_start(self) -> int: timestamp = self.__get_first_entry()[0]