Integrationen

Hol dir die Strompreis-Prognosen in dein Smart Home und lade dein E-Auto automatisch dann, wenn Strom günstig ist.

In 5 Minuten startklar

  1. 1

    Konto anlegen

    Kostenlos registrieren, ohne Zahlungsdaten.

  2. 2

    API-Key erstellen

    Lege dir unter API-Keys einen Token an.

  3. 3

    Plattform wählen

    Passenden Code-Block unten kopieren, einfügen, fertig.

In den Code-Beispielen steht der Platzhalter DEIN_API_TOKEN. Sobald du eingeloggt bist und einen Key angelegt hast, setzen wir ihn beim Kopieren automatisch ein, ohne ihn auf der Seite anzuzeigen: API-Keys

Die Vorhersagen sind in drei Kategorien unterteilt:

  • 2 volle Tage im Voraus (kostenlos)
  • 6 volle Tage im Voraus: Preise
  • 12 volle Tage im Voraus (Business-Tarif) Preise

Bei beiden Varianten werden Daten ab 0 Uhr des aktuellen Tages geliefert. Die Vorhersagen werden täglich zweimal aktualisiert.

🏠

Integration in Home Assistant

Der schnellste Weg ist ein REST-Sensor in der configuration.yaml. Kein HACS, keine Zusatz-Integration.

🚗

Integration in EVCC

Wenn du evcc schon nutzt, ist die Anbindung eine Handvoll Zeilen in der evcc.yaml.

Die Vorhersagen können in evcc integriert werden, um zu steuern wann dein Auto geladen wird.

Und so gehts:

  1. Installiere evcc (siehe Dokumentation von EVCC)
  2. Erstelle einen API-Key unter API-Keys
  3. Stelle deine Fixkosten und Mehrwertsteuer in deinem Profil ein:
    • Gehe zu Profil bearbeiten
    • Trage deine Fixkosten (in Cent pro kWh) ein
    • Trage deinen Mehrwertsteuersatz (in %) ein

    Der Preis wird dann über die Formel <code class="bg-gray-50 px-2 py-1 rounded text-sm font-mono">(Preis + fixed_cost_cent) * (1 + vat / 100.0)</code> berechnet.

  4. Füge den folgenden Code in deine EVCC-Konfigurationsdatei ein: (siehe auch Doku von EVCC.io)
    evcc.yaml
    tariffs:
      grid:
        type: template
        template: energyforecast
        token: DEIN_API_TOKEN
        charges: # Aufschlag, Zusätzlicher fester Aufschlag pro kWh (z.B. 0.05 für 5 Cent) (optional)
        tax: # Steuer, Zusätzlicher prozentualer Aufschlag (z.B. 0.2 für 20%) (optional)
    
  5. Starte EVCC neu und du solltest die Vorhersagen in der App sehen können.

Vor der Integration sind nur die EPEX Spot dayahead Preise verfügbar.

Nach der Integration

🧩

Integration in ioBroker

Prognose per JavaScript-Adapter abrufen und als Datenpunkte bereitstellen.

ioBroker ist eine Open-Source IoT-Plattform, die besonders in Deutschland sehr beliebt ist. Über den JavaScript-Adapter holst du die Prognose ab und stellst sie als Datenpunkte bereit.

Und so gehts:

  1. Installiere ioBroker (siehe Dokumentation von ioBroker)
  2. Erstelle einen API-Key unter API-Keys
  3. Stelle deine Fixkosten und Mehrwertsteuer in deinem Profil ein:
    • Gehe zu Profil bearbeiten
    • Trage deine Fixkosten (in Cent pro kWh) ein
    • Trage deinen Mehrwertsteuersatz (in %) ein
  4. Installiere den JavaScript-Adapter in ioBroker
  5. Erstelle ein neues Skript mit folgendem Inhalt:
    javascript
    // Datenpunkte anlegen (nur beim ersten Lauf nötig)
    createState("javascript.0.energyforecast.data", "[]", { type: "string" });
    createState("javascript.0.energyforecast.price_now", 0, { type: "number", unit: "ct/kWh" });
    createState("javascript.0.energyforecast.cheap_now", false, { type: "boolean" });
    
    // Prognose abrufen und zwischenspeichern (alle 6 Stunden)
    async function fetchForecast() {
      const res = await httpGetAsync("https://www.energyforecast.de/api/v2/forecast?token=DEIN_API_TOKEN");
      setState("javascript.0.energyforecast.data", JSON.stringify(JSON.parse(res.data).data), true);
    }
    
    // Aus den gespeicherten Daten die aktuelle Viertelstunde bestimmen (alle 15 Minuten)
    function evaluate() {
      const slots = JSON.parse(getState("javascript.0.energyforecast.data").val || "[]");
      const now = Date.now();
      const upcoming = slots.filter(s => new Date(s.end).getTime() > now).slice(0, 96);
      if (upcoming.length === 0) return;
    
      const cheapest = [...upcoming]
        .sort((a, b) => a.total_ct_kwh - b.total_ct_kwh)
        .slice(0, 16)
        .map(s => s.start);
    
      setState("javascript.0.energyforecast.price_now", upcoming[0].total_ct_kwh, true);
      setState("javascript.0.energyforecast.cheap_now", cheapest.includes(upcoming[0].start), true);
    }
    
    schedule("0 */6 * * *", async () => { await fetchForecast(); evaluate(); });
    schedule("*/15 * * * *", evaluate);
    fetchForecast().then(evaluate);
    
  6. Damit hast du die Datenpunkte price_now, cheap_now und data. Die Prognose wird alle sechs Stunden geholt, ausgewertet wird alle 15 Minuten. In Blockly oder JavaScript kannst du damit direkt Geräte zu günstigen Zeiten schalten.

Tipp: Nutze total_ct_kwh für den Gesamtpreis inklusive Fixkosten, Netzentgelt und Steuern. price_ct_kwh enthält den reinen Börsenpreis, falls du selbst weiterrechnen möchtest.

🔴

Integration in Node-RED

Flow-basiert automatisieren, eigenständig oder als Home-Assistant-Add-on.

Der Flow trennt Abruf und Auswertung: Ein Takt holt die Prognose alle sechs Stunden und legt sie im Flow-Kontext ab, ein zweiter wertet sie alle 15 Minuten aus und entscheidet, ob gerade geladen werden soll.

Und so gehts:

  1. Node-RED installieren, eigenständig oder als Home-Assistant-Add-on.
  2. Menü oben rechts, Import, dann den folgenden Flow einfügen.
  3. Den Ausgang des Auswertungs-Nodes mit einem call-service-Node verbinden, der deine Wallbox schaltet.
flow.json
[
  {
    "id": "ef_fetch_tick",
    "type": "inject",
    "name": "Alle 6 Stunden",
    "repeat": "21600",
    "once": true,
    "onceDelay": "5",
    "wires": [["ef_fetch"]]
  },
  {
    "id": "ef_fetch",
    "type": "http request",
    "name": "Energyforecast",
    "method": "GET",
    "ret": "obj",
    "url": "https://www.energyforecast.de/api/v2/forecast?token=DEIN_API_TOKEN",
    "wires": [["ef_store"]]
  },
  {
    "id": "ef_store",
    "type": "function",
    "name": "Prognose zwischenspeichern",
    "func": "flow.set('energyforecast', msg.payload.data);\nreturn null;",
    "outputs": 1,
    "wires": [[]]
  },
  {
    "id": "ef_eval_tick",
    "type": "inject",
    "name": "Alle 15 Minuten",
    "repeat": "900",
    "wires": [["ef_eval"]]
  },
  {
    "id": "ef_eval",
    "type": "function",
    "name": "Günstigste Viertelstunden",
    "func": "const size = 16;\nconst slots = flow.get('energyforecast') || [];\nconst now = Date.now();\nconst upcoming = slots.filter(s => new Date(s.end).getTime() > now).slice(0, 96);\nif (upcoming.length === 0) { return null; }\nconst cheapest = [...upcoming].sort((a, b) => a.total_ct_kwh - b.total_ct_kwh).slice(0, size);\nconst cheapNow = cheapest.some(s => s.start === upcoming[0].start);\nmsg.payload = cheapNow ? 'on' : 'off';\nmsg.priceNow = upcoming[0].total_ct_kwh;\nreturn msg;",
    "outputs": 1,
    "wires": [[]]
  }
]

Danach enthält msg.payload den Wert on oder off, msg.priceNow den aktuellen Gesamtpreis in ct/kWh.

🐝

Integration in openHAB

Prognose per HTTP-Binding holen und den aktuellen Preis in einer Regel ableiten.

openHAB kann unsere API direkt über das HTTP-Binding abfragen, ganz ohne zusätzliches Add-on.

1. Thing anlegen

things/energyforecast.things
Thing http:url:energyforecast "Energyforecast" [
    baseURL="https://www.energyforecast.de/api/v2/forecast?token=DEIN_API_TOKEN",
    refresh=21600,
    timeout=30000
] {
    Channels:
        Type string : forecast "Prognose" [ stateTransformation="JSONPATH:$.data" ]
}

2. Items anlegen

items/energyforecast.items
String Energyforecast_Forecast  "Prognose"
    { channel="http:url:energyforecast:forecast" }
Number Energyforecast_Price_Now "Aktueller Preis [%.2f ct/kWh]"
Switch Energyforecast_Cheap_Now "Günstige Ladezeit"

3. Regel für den aktuellen Preis anlegen

Das HTTP-Binding kann per JSONPATH keine „aktuelle" Viertelstunde bestimmen. Diese Regel im JS-Scripting-Ordner wertet die gespeicherte Liste alle 15 Minuten aus und füllt die beiden abgeleiteten Items.

automation/js/energyforecast.js
rules.JSRule({
  name: "Energyforecast",
  triggers: [triggers.GenericCronTrigger("0 */15 * * * ?")],
  execute: () => {
    const slots = JSON.parse(items.Energyforecast_Forecast.state || "[]");
    const now = Date.now();
    const upcoming = slots
      .filter(s => new Date(s.end).getTime() > now)
      .slice(0, 96);
    if (upcoming.length === 0) return;

    const cheapest = [...upcoming]
      .sort((a, b) => a.total_ct_kwh - b.total_ct_kwh)
      .slice(0, 16)
      .map(s => s.start);

    items.Energyforecast_Price_Now.postUpdate(upcoming[0].total_ct_kwh);
    items.Energyforecast_Cheap_Now.postUpdate(cheapest.includes(upcoming[0].start) ? "ON" : "OFF");
  }
});
⚙️

Integration in dein eigenes Projekt

Rohdaten per REST abrufen und in dein eigenes Projekt einbauen.

Wenn du dich auskennst kannst du über die API die Daten einfach abrufen und in deinem Projekt verwenden. Die API-Dokumentation findest du unter Swagger / Open API-Dokumentation

Endpunkte

Endpunkt Wofür
/api/v2/forecast Aktuell Viertelstundenwerte mit Rohpreis (price_ct_kwh) und Gesamtpreis inklusive Fixkosten, Netzentgelt und Steuern (total_ct_kwh), jeweils in Cent. Alle Beispiele auf dieser Seite nutzen diesen Endpunkt.
/api/v1/predictions/prices_for_ha Legacy Stundenwerte in Euro pro kWh plus einen fertig berechneten aktuellen Preis. Wird durch v2 abgelöst.
/api/v1/predictions/prices Legacy Nur die Preiswerte als flache Liste, praktisch für einfache Skripte. Wird durch v2 abgelöst.
Alle Beispiele auf dieser Seite nutzen API v2. Die v1-Endpunkte funktionieren weiterhin, werden aber langfristig durch v2 abgelöst. Baue neue Integrationen deshalb direkt auf v2 auf.

Parameter

Parameter Bedeutung
token Dein API-Key. Pflichtangabe.
resolution HOURLY oder QUARTER_HOURLY. Gilt nur für die v1-Endpunkte, v2 liefert immer Viertelstundenwerte.
fixed_cost_cent Fixkosten in Cent pro kWh. Überschreibt die Einstellung aus deinem Profil.
vat Mehrwertsteuersatz in Prozent, zum Beispiel 19. Überschreibt die Einstellung aus deinem Profil.
market_zone Marktzone, Standard ist DE-LU.

Schnell ausprobieren

bash
curl "https://www.energyforecast.de/api/v2/forecast?token=DEIN_API_TOKEN"

Falls du eine Integration baust, die für andere Hilfreich sein könnte, lass es uns wissen. Wir freuen uns über jede Integration und helfen gerne bei der Verbreitung.

Kontakt