From fe812a7bf5da5359d6c3fda04746746a8d2ea6c3 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 26 Nov 2025 10:18:14 +0100 Subject: [PATCH 1/2] fix tibber remove of outdated prices --- packages/control/optional.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/packages/control/optional.py b/packages/control/optional.py index f562275846..95656c1b16 100644 --- a/packages/control/optional.py +++ b/packages/control/optional.py @@ -4,7 +4,7 @@ from math import ceil import random from threading import Thread -from typing import List, Optional as TypingOptional, Union +from typing import Dict, List, Optional as TypingOptional, Union from datetime import datetime, timedelta from control import data @@ -150,20 +150,25 @@ def __get_first_entry(self) -> tuple[str, float]: return timestamp, first def remove_outdated_prices(self): + def remove(price_data: Dict): + price_timeslot_seconds = self.__calculate_price_timeslot_length(price_data) + now = timecheck.create_timestamp() + price_data = { + price[0]: price[1] + for price in price_data.items() + if float(price[0]) > now - (price_timeslot_seconds - 1) + } if self.data.electricity_pricing.configured: - prices = self.data.electricity_pricing.get.prices - if prices is None or len(prices) == 0: - log.debug("Keine Preisdaten für strompreisbasiertes Laden vorhanden.") - else: - price_timeslot_seconds = self.__calculate_price_timeslot_length(prices) - now = timecheck.create_timestamp() - prices = { - price[0]: price[1] - for price in prices.items() - if float(price[0]) > now - (price_timeslot_seconds - 1) - } - self.data.electricity_pricing.get.prices = prices - Pub().pub("openWB/set/optional/ep/get/prices", prices) + self.data.electricity_pricing.get.prices = remove(self.data.electricity_pricing.get.prices) + Pub().pub("openWB/set/optional/ep/get/prices", self.data.electricity_pricing.get.prices) + if self._flexible_tariff_module: + remove(self.data.electricity_pricing.flexible_tariff.get.prices) + Pub().pub("openWB/set/optional/ep/flexible_tariff/get/prices", + self.data.electricity_pricing.flexible_tariff.get.prices) + if self._grid_fee_module: + remove(self.data.electricity_pricing.grid_fee.get.prices) + Pub().pub("openWB/set/optional/ep/grid_fee/get/prices", + self.data.electricity_pricing.grid_fee.get.prices) def __get_current_timeslot_start(self) -> int: timestamp = self.__get_first_entry()[0] From da440fe6420ea30d7afaea9886f74ecff31fdf4a Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Wed, 26 Nov 2025 11:09:05 +0100 Subject: [PATCH 2/2] fix --- packages/control/optional.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/control/optional.py b/packages/control/optional.py index 95656c1b16..753dfcc0f9 100644 --- a/packages/control/optional.py +++ b/packages/control/optional.py @@ -150,25 +150,25 @@ def __get_first_entry(self) -> tuple[str, float]: return timestamp, first def remove_outdated_prices(self): - def remove(price_data: Dict): + def remove(price_data: Dict) -> Dict: price_timeslot_seconds = self.__calculate_price_timeslot_length(price_data) now = timecheck.create_timestamp() - price_data = { + return { price[0]: price[1] for price in price_data.items() if float(price[0]) > now - (price_timeslot_seconds - 1) } + if self.data.electricity_pricing.configured: - self.data.electricity_pricing.get.prices = remove(self.data.electricity_pricing.get.prices) - Pub().pub("openWB/set/optional/ep/get/prices", self.data.electricity_pricing.get.prices) + 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: - remove(self.data.electricity_pricing.flexible_tariff.get.prices) - Pub().pub("openWB/set/optional/ep/flexible_tariff/get/prices", - self.data.electricity_pricing.flexible_tariff.get.prices) + 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: - remove(self.data.electricity_pricing.grid_fee.get.prices) - Pub().pub("openWB/set/optional/ep/grid_fee/get/prices", - self.data.electricity_pricing.grid_fee.get.prices) + 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) def __get_current_timeslot_start(self) -> int: timestamp = self.__get_first_entry()[0]