diff --git a/packages/control/optional.py b/packages/control/optional.py index e33d9544b5..30b376119c 100644 --- a/packages/control/optional.py +++ b/packages/control/optional.py @@ -220,6 +220,20 @@ def ep_get_current_price(self) -> float: else: raise Exception("Kein Anbieter für strompreisbasiertes Laden konfiguriert.") + def forecast_get_current_value(self) -> TypingOptional[float]: + """Liefert den aktuellen Prognosewert. Anders als bei den Strompreisen enthält + today_values auch bereits vergangene Stunden des Tages, es wird also hier (statt schon + beim Speichern) nach dem letzten Zeitstempel <= jetzt gefiltert.""" + today_values = self.data.forecast.get.today_values + if not today_values: + return None + now = timecheck.create_timestamp() + past_or_current = [timestamp for timestamp in today_values if float(timestamp) <= now] + if not past_or_current: + return None + closest_timestamp = max(past_or_current, key=float) + return today_values[closest_timestamp] + def __calculate_price_timeslot_length(self, prices: dict) -> int: first_timestamps = sorted(list(prices.keys()))[:2] return float(first_timestamps[1]) - float(first_timestamps[0]) diff --git a/packages/helpermodules/measurement_logging/process_log_entry_builder.py b/packages/helpermodules/measurement_logging/process_log_entry_builder.py index bcb653a631..8631ed6e36 100644 --- a/packages/helpermodules/measurement_logging/process_log_entry_builder.py +++ b/packages/helpermodules/measurement_logging/process_log_entry_builder.py @@ -66,6 +66,12 @@ def create_entry(sh_log_data: Optional[LegacySmartHomeLogData], previous_entry: log.exception("Fehler im Werte-Logging-Modul für Preise") prices_dict = {"fault_state": 0} + try: + forecast_value = data.data.optional_data.forecast_get_current_value() + except Exception: + log.exception("Fehler im Werte-Logging-Modul für die PV-Prognose") + forecast_value = None + try: cp_dict = {"all": {"imported": data.data.cp_all_data.data.get.imported, "exported": data.data.cp_all_data.data.get.exported, @@ -190,6 +196,7 @@ def create_entry(sh_log_data: Optional[LegacySmartHomeLogData], previous_entry: "timestamp": current_timestamp, "date": date, "prices": prices_dict, + "forecast": forecast_value, "cp": cp_dict, "ev": ev_dict, "counter": counter_dict,