feat: add tibber electricity price provider (#1160)

Signed-off-by: Andreas Schmitz <akkudoktor.net>
Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
This commit is contained in:
Bobby Noelte
2026-07-20 13:43:43 +02:00
committed by GitHub
parent 2ed04d5573
commit cc8193216a
11 changed files with 1027 additions and 40 deletions

View File

@@ -10,6 +10,7 @@ from akkudoktoreos.prediction.elecpriceenergycharts import (
)
from akkudoktoreos.prediction.elecpricefixed import ElecPriceFixedCommonSettings
from akkudoktoreos.prediction.elecpriceimport import ElecPriceImportCommonSettings
from akkudoktoreos.prediction.elecpricetibber import ElecPriceTibberCommonSettings
def elecprice_provider_ids() -> list[str]:
@@ -17,9 +18,14 @@ def elecprice_provider_ids() -> list[str]:
try:
prediction_eos = get_prediction()
except Exception:
# Prediction may not be initialized
# Return at least provider used in example
return ["ElecPriceAkkudoktor"]
# Prediction may not be initialized. Return static built-in provider ids.
return [
"ElecPriceAkkudoktor",
"ElecPriceEnergyCharts",
"ElecPriceFixed",
"ElecPriceImport",
"ElecPriceTibber",
]
return [
provider.provider_id()
@@ -72,6 +78,11 @@ class ElecPriceCommonSettings(SettingsBaseModel):
json_schema_extra={"description": "Energy Charts provider settings."},
)
tibber: ElecPriceTibberCommonSettings = Field(
default_factory=ElecPriceTibberCommonSettings,
json_schema_extra={"description": "Tibber electricity price provider settings."},
)
@computed_field # type: ignore[prop-decorator]
@property
def providers(self) -> list[str]: