fix(ElecPriceEnergyCharts): get history series, update docs (#606)

Signed-off-by: redmoon2711 <redmoon2711@gmx.de>
This commit is contained in:
redmoon2711 2025-06-25 08:26:15 +02:00 committed by GitHub
parent eacd9010e1
commit eb23123bba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 20 deletions

View File

@ -136,11 +136,21 @@ option are added.
### ElecPriceEnergyCharts Provider ### ElecPriceEnergyCharts Provider
The `ElecPriceEnergyCharts` provider retrieves electricity prices directly from **Energy-Charts.info**, The `ElecPriceEnergyCharts` provider retrieves day-ahead electricity market prices from
which supplies price data for the next 24 hours. For periods beyond 24 hours, the provider generates [Energy-Charts.info](https://www.Energy-Charts.info). It supports both short-term and extended forecasting by combining
prices by extrapolating historical price data combined with the most recent actual prices obtained real-time market data with historical price trends.
from Energy-Charts.info. Electricity price charges specified in the `charges_kwh` configuration option
are included in the calculation as `(market price + charges_kwh) * 1.19 VAT`. - For the next 24 hours, market prices are fetched directly from Energy-Charts.info.
- For periods beyond 24 hours, prices are estimated using extrapolation based on historical data and the latest
available market values.
Charges and VAT
- If `charges_kwh` configuration option is greater than 0, the electricity price is calculated as:
`(market price + charges_kwh) * 1.19 VAT` (including 19% VAT).
- If `charges_kwh` is set to 0, the electricity price is simply: `market_price` (no VAT applied).
**Note:** For the most accurate forecasts, it is recommended to set the `historic_hours` parameter to 840.
### ElecPriceImport Provider ### ElecPriceImport Provider

View File

@ -177,18 +177,12 @@ class ElecPriceEnergyCharts(ElecPriceProvider):
# Determine if update is needed and how many days # Determine if update is needed and how many days
past_days = 35 past_days = 35
if self.highest_orig_datetime: if self.highest_orig_datetime:
# Try to get lowest datetime in history history_series = self.key_to_series(
try: key="elecprice_marketprice_wh", start_datetime=self.start_datetime
history = self.key_to_array(
key="elecprice_marketprice_wh",
start_datetime=self.start_datetime,
fill_method="linear",
) )
# If start_datetime lower then history # If history lower, then start_datetime
if history.index.min() <= self.start_datetime: if history_series.index.min() <= self.start_datetime:
past_days = 1 past_days = 0
except AttributeError as e:
logger.error(f"Energy-Charts no Index in history: {e}")
needs_update = end > self.highest_orig_datetime needs_update = end > self.highest_orig_datetime
else: else:
@ -196,9 +190,9 @@ class ElecPriceEnergyCharts(ElecPriceProvider):
if needs_update: if needs_update:
logger.info( logger.info(
f"Update ElecPriceEnergyCharts is needed, last update:{self.highest_orig_datetime}" f"Update ElecPriceEnergyCharts is needed, last in history: {self.highest_orig_datetime}"
) )
# Set Start_date try to take data from 5 weeks back for prediction # Set start_date try to take data from 5 weeks back for prediction
start_date = to_datetime( start_date = to_datetime(
self.start_datetime - to_duration(f"{past_days} days"), as_string="YYYY-MM-DD" self.start_datetime - to_duration(f"{past_days} days"), as_string="YYYY-MM-DD"
) )
@ -213,7 +207,7 @@ class ElecPriceEnergyCharts(ElecPriceProvider):
self.key_from_series("elecprice_marketprice_wh", series_data) self.key_from_series("elecprice_marketprice_wh", series_data)
else: else:
logger.info( logger.info(
f"No update ElecPriceEnergyCharts is needed last update:{self.highest_orig_datetime}" f"No Update ElecPriceEnergyCharts is needed, last in history: {self.highest_orig_datetime}"
) )
# Generate history array for prediction # Generate history array for prediction