Lastmanagement · Tibber · Nordpool · Dynamiktarif · KNX · 10 Min. Lesezeit

Tibber- und Nordpool-Dynamiktarif-Integration mit KNX

Die Verbindung von Tibber- und Nordpool-Echtzeitstrompreisen mit KNX ermöglicht der Gebäudeautomation, flexible Lasten – Wärmepumpe, EV-Ladegerät, Geschirrspüler, Batterieladung – automatisch in günstige Preiszeitfenster zu verschieben, wodurch Stromkosten gesenkt werden, ohne den Wohnkomfort zu beeinträchtigen.

Tibber API: GraphQL-Endpunkt und Preisabfrage

Tibber bietet Echtzeit- und prognostizierte Strompreise über eine GraphQL-API am Endpunkt https://api.tibber.com/v1-beta/gql an. Die Authentifizierung erfolgt über ein Bearer-Token, das über das Tibber-Entwicklerportal (developer.tibber.com) ausgestellt wird. Das Token ist kontospezifisch und läuft nicht ab, es sei denn, es wird widerrufen.

Die nützlichste Abfrage für die KNX-Integration ruft den aktuellen Stundenpreis und die Klassifizierung CHEAP/NORMAL/EXPENSIVE ab, die Tibber basierend auf der Spotpreisverteilung der nächsten 24 Stunden berechnet. Diese Klassifizierung ist direkt für die Zuordnung zu einer KNX-Tarifstufen-Gruppenadresse geeignet, ohne zusätzliche Schwellenwertberechnung.

Tibber GraphQL-Abfrage – aktueller Preis und Stufe

POST https://api.tibber.com/v1-beta/gql
Authorization: Bearer <your-tibber-token>
Content-Type: application/json

{
  "query": "{ viewer { homes { currentSubscription { priceInfo { current { total level } } } } } }"
}

Response:
{
  "data": {
    "viewer": {
      "homes": [{
        "currentSubscription": {
          "priceInfo": {
            "current": {
              "total": 0.1842,
              "level": "CHEAP"
            }
          }
        }
      }]
    }
  }
}

Possible level values: VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE

Das Feld total gibt den Gesamtpreis in lokaler Währung pro kWh inklusive Netzentgelte, Steuern und Tibber-Aufschlag an. Das Feld level ist die Klassifizierung für die KNX-Logik – es macht eine manuelle Schwellenwertkalibrierung pro Region überflüssig. Abfragefrequenz: Einmal pro Stunde ist ausreichend, da sich der Preis zur vollen Stunde ändert. Fügen Sie eine Verzögerung von 2 Minuten nach der vollen Stunde hinzu (Abfrage um HH:02), um sicherzustellen, dass Tibber den neuen Preis veröffentlicht hat, bevor das KNX-System ihn liest.

Python-Bridge auf Raspberry Pi: Abfrage und KNX-Schreiben

Ein Python-Skript, das auf einem Raspberry Pi (beliebiges Modell mit Ethernet) läuft, fungiert als Brücke zwischen der Tibber-API und dem KNX-Bus. Das Skript verwendet die knxpy-Bibliothek, um Gruppentelegramme über eine KNX-IP-Schnittstelle (z. B. MDT SCN-IP100.02 oder Weinzierl KNX IP Interface 731) oder über einen knxd-Daemon auf demselben Pi, der mit einer KNX-USB-Schnittstelle verbunden ist, zu schreiben.

Python-Bridge – Tibber zu KNX DPT 5.010

#!/usr/bin/env python3
import requests, time, schedule
import knxpy

TIBBER_TOKEN = "your-tibber-token"
KNX_IP = "192.168.1.50"   # KNX IP Interface address
TARIFF_GA = "5/0/1"       # DPT 5.010 — tariff level GA

LEVEL_MAP = {
    "VERY_CHEAP":  1,
    "CHEAP":       1,
    "NORMAL":      2,
    "EXPENSIVE":   3,
    "VERY_EXPENSIVE": 3,
}

def get_tibber_level():
    query = '{"query":"{ viewer { homes { currentSubscription { priceInfo { current { level } } } } } }"}'
    r = requests.post(
        "https://api.tibber.com/v1-beta/gql",
        headers={"Authorization": f"Bearer {TIBBER_TOKEN}", "Content-Type": "application/json"},
        data=query, timeout=10
    )
    level = r.json()["data"]["viewer"]["homes"][0]["currentSubscription"]["priceInfo"]["current"]["level"]
    return LEVEL_MAP.get(level, 2)

def update_knx_tariff():
    level = get_tibber_level()
    knx = knxpy.KNXIPTunnel(KNX_IP, 3671)
    knx.connect()
    knx.group_write(TARIFF_GA, [level], dpt="DPT_Value_1_Ucount")
    knx.close()
    print(f"KNX tariff level written: {level}")

schedule.every().hour.at(":02").do(update_knx_tariff)
update_knx_tariff()  # run on startup
while True:
    schedule.run_pending()
    time.sleep(30)

Der DPT 5.010 (vorzeichenloses Byte, 8-Bit-Zähler) codiert die Tarifstufe als einfache Ganzzahl: 1 für BILLIG, 2 für NORMAL, 3 für TEUER. Dies lässt sich ohne Skalierung sauber auf die Eingänge von KNX-Logikbaustein-Komparatoren abbilden. Führen Sie das Skript als systemd-Dienst aus, um sicherzustellen, dass es beim Neustart des Pi neu startet.

KNX-Logikbausteine: Laststeuerung basierend auf der Tarifstufe

Der MDT SCN-LCRM.01 Logikcontroller empfängt die Tarifstufe (DPT 5.010) auf einer KNX-GA und verwendet Komparatorblöcke, um binäre Steuersignale für jede Last abzuleiten. Drei Komparatoren vergleichen das empfangene Byte mit den Schwellwerten 1, 2 und 3 und erzeugen Ein-/Aus-Telegramme für konfigurierte Gruppenadressen.

TarifstufeAktionGruppenadresseDPT / Wert
1 (BILLIG)Steckdose für Geschirrspüler / Waschmaschine freigeben3/1/1DPT 1.001 / EIN
1 (BILLIG)SG Ready Zustand 3 — WP erhöht Sollwert3/1/2 + 3/1/3DPT 1.001 / AUS + EIN
1 (BILLIG)Batterie-Zwangsladung über Modbus-Schreiben3/1/4DPT 1.001 / EIN
2 (NORMAL)Alle optionalen Lasten NormalbetriebKeine Änderung
3 (TEUER)Steckdose für Geschirrspüler / Waschmaschine deaktivieren3/1/1DPT 1.001 / AUS
3 (TEUER)EV-Ladung am Schuppen (0A an Ladegerät GA schreiben)5/3/1DPT 5.010 / 0
3 (TEUER)Batterie Zwangsentladung3/1/4DPT 1.001 / AUS

SG Ready Zustand 3 Verdrahtung: Die MDT-Logik sendet gleichzeitig DPT 1.001 AUS an das S1-Relais GA und DPT 1.001 EIN an das S2-Relais GA. Der MDT AKD-0800.01 Relaisaktor wandelt diese KNX-Telegramme in 230V-Relaiskontaktschlüsse an den SG-Ready-Klemmen der Wärmepumpe um. Zustand 3 erhöht typischerweise die Warmwassersolltemperatur um 3-5K und die Raumheizungssolltemperatur um 2K.

Nordpool-Spotpreis-Integration: Day-Ahead-Fahrplan

Nordpool veröffentlicht die Day-Ahead-Spotpreise täglich gegen 13:00 Uhr MEZ für die folgenden 24 Stunden. Im Gegensatz zu Tibber (das ein Abonnement und einen Smart Meter erfordert) sind die Nordpool-Preise über die öffentliche Nordpool-API ohne Authentifizierung für die meisten Gebotszonen oder über die ENTSO-E-Transparenzplattform-API (kostenlose Registrierung unter transparency.entsoe.eu erforderlich) verfügbar.

Nordpool-Day-Ahead-Preis-Skript – KNX-Fahrplan für den nächsten Tag

# Runs at 13:30 daily — downloads next-day prices and creates KNX schedule
import requests, json
from datetime import date, timedelta

BIDDING_ZONE = "SE3"   # Sweden zone 3 — change per country
CURRENCY = "SEK"

def fetch_nordpool_prices():
    tomorrow = (date.today() + timedelta(days=1)).strftime("%Y-%m-%d")
    url = f"https://dataportal-api.nordpoolgroup.com/api/DayAheadPrices?market=N2EX_DayAhead&deliveryArea={BIDDING_ZONE}&currency={CURRENCY}&date={tomorrow}"
    r = requests.get(url, timeout=15)
    return r.json()["multiAreaEntries"]

def classify_price(price_eur, prices_list):
    sorted_prices = sorted(prices_list)
    p33 = sorted_prices[len(sorted_prices) // 3]
    p66 = sorted_prices[2 * len(sorted_prices) // 3]
    if price_eur <= p33:
        return 1  # CHEAP
    elif price_eur <= p66:
        return 2  # NORMAL
    else:
        return 3  # EXPENSIVE

# Output: list of 24 (hour, level) tuples written to KNX time-scheduled GA
# Use MDT SCN-LCRM.01 weekly timer or Home Assistant KNX time schedule

The classification thresholds (33rd and 66th percentile of tomorrow's 24 prices) ensure that approximately 8 hours are classified as CHEAP, 8 as NORMAL, and 8 as EXPENSIVE each day — balanced regardless of absolute price level. This is preferable to fixed EUR/kWh thresholds that may become stale as energy markets evolve. The resulting 24-entry schedule is written to a KNX time program on the MDT logic controller, replacing the current-hour Tibber poll for installations without a Tibber contract.

KNX-Touchpanel-Preisvisualisierung und Amortisation

Die aktuelle Tarifstufe wird auf einem KNX-Touchpanel (Gira X1 oder MDT Glastaster II) als farbcodierter Indikator angezeigt: grüner Hintergrund für GÜNSTIG (Stufe 1), gelb für NORMAL (Stufe 2), rot für TEUER (Stufe 3). Ein mit der Tarifstufen-GA (5/0/1) verknüpftes KNX-Szenenobjekt ändert die Panel-Hintergrundfarbe über einen Szenenschreibbefehl. Das Panel zeigt auch den aktuellen Spotpreis als DPT 9.002-Wert in EUR/kWh an, abgeleitet aus dem Tibber-API-Gesamtfeld, sodass die Bewohner manuelle Entscheidungen über flexible Lasten treffen können.

Amortisationsberechnung für nordische Märkte: Eine Wärmepumpe mit einem Verbrauch von 10 kWh/Tag für die Raumheizung, die von teuren auf günstige Stunden verlagert wird (Preisspanne typischerweise 0,05-0,15 EUR/kWh in SE3/FI), spart 0,50-1,50 EUR/Tag oder 180-550 EUR/Jahr. Der Raspberry Pi, die KNX-IP-Schnittstelle und der MDT-Logikcontroller kosten insgesamt etwa 300-500 EUR an Hardware – Amortisation in 1-2 Jahren. In Märkten mit hoher Spanne wie Dänemark (DK1/DK2) und Deutschland (DE-LU) mit Spannen über 0,20 EUR/kWh kann die Amortisation unter 12 Monaten liegen.

Tibber vs Nordpool API-Auswahl

Verwenden Sie Tibber, wenn das Gebäude bereits einen Tibber-Stromvertrag hat – die Klassifizierung CHEAP/NORMAL/EXPENSIVE ist vorberechnet und beinhaltet Netznutzungsgebühren. Verwenden Sie Nordpool, wenn das Gebäude einen anderen Anbieter hat, aber dem Spotpreis folgen möchte – erfordert eine manuelle Schwellenwertklassifizierung nach der oben genannten Perzentilmethode.

ENTSO-E als Nordpool-Alternative

Die ENTSO-E-Transparenzplattform-API (transparency.entsoe.eu/api) bietet Day-Ahead-Preise für alle europäischen Gebotszonen. Registrieren Sie sich für einen kostenlosen API-Token. Fragen Sie den Endpunkt für Day-Ahead-Preise ab (documentType=A44, in_Domain und out_Domain mit EIC-Gebietscodes). Nützlich für Länder außerhalb der Nordpool-Abdeckung wie Spanien, Italien und Polen.

Benötigen Sie einen KNX-Schaltschrank mit dynamischer Tarifintegration und HEMS-Logik nach Spezifikation?

Wir entwickeln Niederspannungs-Schaltschränke mit Tibber/Nordpool-API-Bridges, MDT-Logikcontroller-Programmierung, SG-Ready-Relaisausgängen und vollständiger Inbetriebnahmedokumentation – getestet und an Ihren Standort geliefert.

Angebot anfordern →
Lade ...
Zum Seitenanfang