Tarife & Vorhersagen
Optimiere deine Ladung verbessere deine Statiken indem du Stromtarife (grid
, feedin
) und Vorhersagen (co2
, solar
) integrierst.
Hier die Grundstruktur:
tariffs:
currency: # Währung (default EUR)
grid: # Netzbezugspreis
feedin: # Einspeisevergütung
co2: # CO₂ Vorhersage für Netzbezug
solar: # PV Produktionsvorhersage
Fester Strompreis
Der einfachste Fall sind feste Werte für Netzbezug (grid
) und Einspeisung (feedin
).
tariffs:
currency: EUR # (default EUR)
grid:
type: fixed
price: 0.294 # EUR/kWh
feedin:
type: fixed
price: 0.08 # EUR/kWh
Zeitabhängiger Strompreis
Stromtarife mit festen zeitabhängigen Preisen können ebenfalls definiert werden.
tariffs:
grid:
type: fixed
price: 0.294 # EUR/kWh (default)
zones:
- days: Mo-Fr
hours: 2-5
price: 0.2 # EUR/kWh
- days: Sa,So
price: 0.15 # EUR/kWh
Unter zones
kann eine Liste von Preiszonen definiert werden.
Der Geltungszeitraum wird durch days
und/oder hours
definiert.
Ist für einen Zeitpunkt keine Preiszone definiert, wird der Standardpreis verwendet.
Der Befehl evcc tariff
zeigt die Preisliste der kommenden Stunden an.
$ ./evcc tariff
grid:
From To Price/Cost
2026-05-03 00:00:00 2026-05-03 01:00:00 0.399
...
feedin:
From To Price/Cost
2026-05-03 00:00:00 2026-05-03 01:00:00 0.080
...
Börsenstrompreise
Du hast einen Vertrag der nach Börsenpreisen berechnet wird? Für viele Anbieter haben wir eine eigene Schnittstelle angebunden (z. B. Awattar oder Tibber). Die Liste aller verfügbaren Anbieter findest du im Abschnitt Dynamischer Strompreis.
Gebühren und Steuern
Falls dein Anbieter nicht dabei ist, kannst du deinen Tarif auf Basis der Day-Ahead-Preise der europäischen Strombörse selbst berechnen. Die Energy-Charts API vom Fraunhofer ISE liefert aktuelle und prognostizierte Preise. Diese werden von fast allen Anbietern als Grundlage für die Berechnung ihrer Energiepreise verwendet.
tariffs:
grid:
type: template
template: energy-charts-api
bzn: DE-LU # Gebotszone, siehe https://api.energy-charts.info/#/prices/day_ahead_price_price_get
charges: 0.22 # Fester Aufschlag pro kWh (z. B. 20ct Netzentgelt, 2ct Gebühren)
tax: 0.19 # Prozentualer Aufschlag (z. B. 19% MwSt.)
Die Schnittstelle liefert die Börsenpreise in Euro ohne lokale Gebühren oder Steuern.
Mit den Parametern charges
und tax
kannst du einen zusätzlichen festen und prozentualen Aufschlag pro kWh definieren.
Die genauen Werte kannst du deinem Vertrag entnehmen.
Eigene Berechnungsformeln
Falls das Modell des festen und prozentualen Aufschlags nicht ausreicht, kannst du eine individuelle Formel definieren.
Verwende dafür den formula
Parameter.
tariffs:
grid:
type: template
template: energy-charts-api
bzn: DE-LU
charges: 0.22 # Fester Aufschlag pro kWh
tax: 0.19 # Prozentualer Aufschlag
formula: math.Min(0.5, (price + charges) * (1 + tax))
Im obigen Beispiel wird eine Preisobergrenze von 50 ct/kWh definiert.
Die Formel wird in Go-Syntax geschrieben.
Neben den Werten price
, charges
und tax
steht dir die math
-Bibliothek zur Verfügung.
Der Fantasie sind hier keine Grenzen gesetzt.
Der formula
Mechanismus funktioniert auch für viele andere Datenquellen.
Schau dir die Konfigurationsoptionen der jeweiligen Quellen an.
Der CLI Befehl evcc tariff
ist hilfreich um die Berechnungsergebnisse zu überprüfen.
Beispiel: Börsenpreise mit Zeitkomponente
Die Formel wird für den aktuellen Strompreis und jeden Zeitslot in der Prognose ausgeführt.
Ist die Berechnung zeitabhängig, kannst du über ts
auch auf die Zeit des jeweiligen Slots zugreifen.
tariffs:
grid:
type: template
template: energy-charts-api
bzn: DE-LU
formula: extra := 0.1; if ts.Hour() < 6 || ts.Hour() > 22 { extra = 0.0 }; price + extra
In diesem Beispiel gibt es einen Aufschlag von 10 ct/kWh. In der Zeit von 22:00 Uhr bis 06:00 Uhr wird kein Aufschlag berechnet.
Beispiel: Tarif mit jahreszeit- und zeitabhängigen Netzgebühren
Dynamischer dänischer Stromtarif, dessen Gebühren sich über das Jahr hinweg (Sommer, Winter) und im Tagesverlauf (Hoch-, Tiefpreiszonen) verändern.
tariffs:
currency: DKK
grid:
type: energinet
region: dk1
charges: 0.81
tax: 0.25
formula: |
// setzte Standardgebühren (Winter)
gridfee := 0.2929 // normale Zone
if ts.Hour() < 6 {
gridfee = 0.0976 // niedrige Zone
} else if ts.Hour() >= 17 && ts.Hour() < 21 {
gridfee = 0.8788 // hohe Zone
}
// Anpassung der Gebühren für Sommer (April - September)
if ts.Month() >= 4 && ts.Month() <= 9 {
gridfee = 0.1467 // normale Zone
if ts.Hour() < 6 {
gridfee = 0.0976 // niedrige Zone
} else if ts.Hour() >= 17 && ts.Hour() < 21 {
gridfee = 0.3808 // hohe Zone
}
}
( price + charges + gridfee ) * ( 1 + tax )
Der Netzgebührenanteil (gridfee
) unterscheidet sich im Winter (Oktober - März) und im Sommer (April - September).
Zudem gibt es Normal- (6-17 Uhr, 21-24 Uhr), Niedrig- (0-6 Uhr) und Hochlastzonen (17-21 Uhr).
In diesem Beispiel betragen die Gebühren im Juni um 4 Uhr 0,1467 DKK/kWh.
Dynamischer Strompreis
Eigenes Plugin
Über den Plugin Mechanismus kann eine eigene Tarif-Quelle angebunden werden.
Beispiel: Aktueller Preis via HTTP
tariffs:
grid:
type: custom
price:
source: http
uri: https://example.com/api/price
Der vom Endpunkt zurückgegebene Wert wird als Netzbezugspreis verwendet.
Beispiel: Vorhersagen via HTTP
tariffs:
grid:
type: custom
forecast:
source: http
uri: https://api.allinpower.nl/troodon/api/p/spot_market/prices/?product_type=ELK
jq: '[.timestamps, .prices] | transpose | map({ "start": (.[0] | strptime("%Y-%m-%dT%H:%M:%S.%f%z") | strftime("%Y-%m-%dT%H:%M:%SZ")), "end": (.[0] | strptime("%Y-%m-%dT%H:%M:%S.%f%z") | mktime + 3600 | strftime("%Y-%m-%dT%H:%M:%SZ")), "price": .[1] }) | tostring'
Das Plugin muss eine JSON-Struktur zurückgeben, welches eine Liste von Zeiträumen und Preisen enthält.
Die Datumsfelder müssen in der Form YYYY-MM-DDTHH:MM:SSZ
und der Preis in der korrekten Währungseinheit (bspw. EUR) angegeben werden.
Siehe nachfolgendes Beispiel:
[
{ "start": "2025-01-01T00:00:00Z", "end": "2025-01-01T01:00:00Z", "price": 25.0 },
{ "start": "2025-01-01T01:00:00Z", "end": "2025-01-01T02:00:00Z", "price": 30.0 },
]
Das Plugin wird einmal pro Stunde aktualisiert.
Amber Electric
tariffs:
grid:
type: template
template: amber
token: # optional
siteid: # optional
channel: # optional
Awattar
tariffs:
grid:
type: template
template: awattar
region: AT # [DE, AT]
Energinet
tariffs:
grid:
type: template
template: energinet
region: dk1 # [dk1, dk2]
Enever
tariffs:
grid:
type: template
template: enever
token:
provider: # [, AA, AIP, ANWB, BE, EE, EN, EVO, EZ, FR, GSL, MDE, NE, TI, VDB, VON, WE, ZG, ZP]
ENTSO-E
Day-ahead-Preise für den europäischen Strommarkt. Siehe https://transparency.entsoe.eu für weitere Informationen. Basis für viele dynamische Tarife.
tariffs:
grid:
type: template
template: entsoe
securitytoken: # Registrierung und anschließende Helpdesk-Anfrage erforderlich. Details zum Ablauf gibts hier https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html#_authentication_and_authorisation (optional)
domain: BZN|DE-LU # siehe https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html#_areas (optional)
Fraunhofer ISE
Day-ahead Energiepreise (je kWh) an der Börse. Kann ohne vorherige Anmeldung auf https://api.energy-charts.info/ abgerufen werden. Nutzbar u.a. für dynamische Stromtarife, wo der Anbieter bis dato auf der Kundenschnittstelle noch kein Preis-Vorhersagen anbietet.
tariffs:
grid:
type: template
template: energy-charts-api
bzn: DE-LU # Gebotszonen - https://api.energy-charts.info/#/prices/day_ahead_price_price_get [AT, BE, CH, CZ, DE-LU, DE-AT-LU, DK1, DK2, FR, HU, IT-NORTH, NL, NO2, PL, SE4, SI]
Groupe E Vario Plus
tariffs:
grid:
type: template
template: groupe-e
Nordpool spot prices
Nordpool Spot Preise im Day-Ahead-Markt für alle Märkte in der Nordpool-Region.
tariffs:
grid:
type: template
template: nordpool
region: GER # [EE, LT, LV, AT, BE, FR, GER, NL, PL, DK1, DK2, FI, NO1, NO2, NO3, NO4, NO5, SE1, SE2, SE3, SE4, TEL, SYS] (optional)
currency: EUR # [DKK, EUR, NOK, PLN, RON, SEK]
Octopus Energy
API
Den API-Key bekommst du im Octopus Portal https://octopus.energy/dashboard/new/accounts/personal-details/api-access
tariffs:
grid:
type: template
template: octopus-api
apiKey: # Octopus Energy API Key.
Product Code
tariffs:
grid:
type: template
template: octopus-productcode
productCode: AGILE-FLEX-22-11-25 # Der Tarifcode für Ihren Energievertrag. Stellen Sie sicher, dass dieser auf Ihren Importtarifcode eingestellt ist.
region: # Die DNO-Region, in der Sie sich befinden. Weitere Informationen: https://www.energy-stats.uk/dno-region-codes-explained/ [A, B, C, D, E, F, G, H, J, K, L, M, N, P]
directDebit: true # Ich benutze den BACS-Lastschrifttarif. (optional)
Ostrom
Erzeuge einen 'Production Client' im Ostrom-Entwicklerportal: https://developer.ostrom-api.io/
tariffs:
grid:
type: template
template: ostrom
clientid: 476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4
clientsecret: 476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4a
contract: 100523456 # Nur erforderlich, wenn mehrere Verträge unter einem Benutzer existieren (optional)
PUN Orario
Preisdaten von https://www.mercatoelettrico.org/it/. Wird oft zur Einspeisung ins Netz verwendet.
tariffs:
grid:
type: template
template: pun
SmartEnergy smartCONTROL
tariffs:
grid:
type: template
template: smartenergy
Spotty Energie
tariffs:
grid:
type: template
template: spottyenergy
contractid: ffffffff-4444-6666-2222-aaaaaabbbbbb # Die Vertragsnummer bekommst du im Kundenportal https://i.spottyenergie.at/
pricetype: CONSUMPTION # Preistyp, entweder Börsenpreis, Verbrauchspreis oder Einspeisevergütung (falls vereinbart), siehe https://www.spottyenergie.at/blog/energie-smart-produzieren [MARKET, CONSUMPTION, GENERATION]
Tibber
Hol dir deinen API-Token aus dem Tibber-Entwicklerportal: https://developer.tibber.com/
tariffs:
grid:
type: template
template: tibber
token: 476c477d8a039529478ebd690d35ddd80e3308ffc49b59c65b142321aee963a4
homeid: cc83e83e-8cbf-4595-9bf7-c3cf192f7d9c # Nur erforderlich, wenn du mehrere Häuser in deinem Tibber-Konto hast. (optional)
CO₂ Vorhersage
Electricity Maps
Commercial API
CO₂-Daten für viele Länder von electricitymaps.com. Der 'Free Personal Tier' beinhaltet leider keine Prognosedaten. Dafür benötigst du einen kommerziellen Account von portal.electricitymaps.com. Kostenloser Testmonat verfügbar.
tariffs:
co2:
type: template
template: electricitymaps
uri: https://api-access.electricitymaps.com/2w...1g/ # HTTP(S) Adresse
token:
zone: DE # siehe https://api.electricitymap.org/v3/zones
Free API
CO₂-Daten für viele Länder von electricitymaps.com. Der 'Free Personal Tier' beinhaltet leider keine Prognosedaten. Dafür benötigst du einen kommerziellen Account von portal.electricitymaps.com. Kostenloser Testmonat verfügbar.
tariffs:
co2:
type: template
template: electricitymaps-free
token:
zone: DE # siehe https://api.electricitymap.org/v3/zones
Green Grid Compass
Europäische CO₂-Intensitätsdaten von greengrid-compass.eu. Liefert Vorhersagen der nächsten Stunden und ist nach Registrierung kostenlos nutzbar.
tariffs:
co2:
type: template
template: green-grid-compass
apiKey: # Erstelle eine App in https://api-portal.eco2grid.com und kopiere den Key
zone: DE_LU # [AL, AT, BA, BE, BG, BY, CH, CZ, DE_LU, DK_1, DK_2, EE, ES, FI, FR, GB, GR, HR, HU, IE_SEM, IT_CALA, IT_CNOR, IT_CSUD, IT_NORD, IT_SACO_AC, IT_SACO_DC, IT_SARD, IT_SICI, IT_SUD, LT, LV, MD, ME, MK, MT, NL, NO_1, NO_2, NO_3, NO_4, NO_5, PL, PT, RO, RS, RU, RU_KGD, SE_1, SE_2, SE_3, SE_4, SI, SK, TR, UA, UA_IPS, XK]
Grünstromindex
Regionale Emissionsdaten von https://gruenstromindex.de
tariffs:
co2:
type: template
template: grünstromindex
zip:
token: # Token für den Zugriff auf die API von https://console.corrently.io/ (optional)
National Grid ESO
tariffs:
co2:
type: template
template: ngeso
region: 1 # Ungenauer als die Verwendung eines Postleitzahl. Siehe https://carbon-intensity.github.io/api-definitions/#region-list (optional)
postalcode: SW1 # Postleitzahl z.B. RG41 oder SW1 oder TF8. Nicht die vollständige Postleitzahl, nur die ersten Stellen. (optional)
PV Vorhersage
Wenn du Vorhersagedaten konfiguriert hast, wird dir die geschätzte Restproduktion für den aktuellen Tag im UI angezeigt. Zudem bekommst du eine Diagramm-Ansicht mit den Daten der nächsten Tage.
Es ist auch möglich, mehrere PV-Vorhersagen zu kombinieren, um mehrere Dachflächen abzudecken. Die Werte werden dafür aufsummiert. Verwende dafür die folgende Syntax:
tariffs:
solar:
- type: template
template: ...
# ...
- type: template
template: ...
# ...
Viele Anbieter haben ein Ratelimit.
Daher musst du ggf. das Update-Intervall (interval
) erhöhen.
Akkudoktor API
Akkudoktor API bietet kostenlos Solarproduktionsprognosen basierend auf Systemparametern und Standort.
tariffs:
solar:
- type: template
template: api.akkudoktor.net
lat: 55.7351
lon: 9.1275
dec: 25 # 0 = horizontal, 90 = vertikal
kwp: 9.8
az: 0 # Ausrichtung der PV-Module im Azimut in Grad. -180 = Norden, -90 = Osten, 0 = Süden, 90 = Westen, 180 = Norden
Forecast.Solar
forecast.solar kann kostenlos verwendet werden. Kostenpflichtige Pläne können ebenfalls verwendet werden, indem ein API-Key angegeben wird.
tariffs:
solar:
- type: template
template: forecast-solar
lat: 55.7351
lon: 9.1275
dec: 25 # 0 = horizontal, 90 = vertikal
kwp: 9.8
az: 180 # -180 = Norden, -90 = Osten, 0 = Süden, 90 = Westen, 180 = Norden
Open-Meteo
Freie Wetter API open-meteo.com Open-Meteo ist eine Open-Source-Wetter-API und bietet kostenlosen Zugriff für nicht-kommerzielle Nutzung. Kein API-Schlüssel erforderlich.
tariffs:
solar:
- type: template
template: open-meteo
lat: 55.7351
lon: 9.1275
dec: 25 # 0 = horizontal, 90 = vertikal
kwp: 9.8
az: 0 # -180 = Norden, -90 = Osten, 0 = Süden, 90 = Westen, 180 = Norden
Solcast
Benötigt einen solcast.com-Account. Der kostenlose "Home User" Tarif ist für private Anwendungen oft ausreichend. Dieser Plan hat ein API-Limit von 10 Anfragen pro Tag.
tariffs:
solar:
- type: template
template: solcast
site: # Ressource ID deiner Anlage
token: # Solcast API Token