Energie & Mobilität · Praxisbericht

Wie dynamische BKW-Tarife in Loxone nutzbar werden.

Eine API liefert Zahlen. Für eine Automation müssen daraus ein eindeutiger Tag, 24 geprüfte Stundenwerte und eine sichere Freigabeentscheidung werden.

Praxisbericht · BKW API · Loxone

Vom öffentlichen Datensatz zur sicheren Entscheidung

Die Preise sind nur ein Teil der Integration. Ebenso wichtig sind Zeitmodell, Datenqualität und Rückfallebene.

01 · BKW API

96 Viertelstunden

Öffentliche Werte der dynamischen Einspeisevergütung bilden den Ausgangspunkt.

02 · Lokaler Proxy

Prüfen und ordnen

Einheit, Tarifdatum, Zeitzone und Vollständigkeit werden kontrolliert.

03 · Tagesvektor

24 Stunden + Status

Loxone erhält absolute Stundenwerte und eine getrennte Qualitätsentscheidung.

04 · Loxone

Dynamisch mit Fallback

Der Guard schützt den Optimierer; EMS Classic bleibt manuell verfügbar.

So sieht das Ergebnis in Loxone aus

Die Screenshots zeigen historische App-Ansichten aus dem produktiven Aufbau. Sie enthalten bewusst keine Netzwerk-, Zugangs- oder Konfigurationsdetails.

Loxone-Tagesübersicht der dynamischen Einspeisevergütung mit Preisstufen, EMS-Modus und geprüftem BKW-API-Status
Die Tagesübersicht verdichtet 24 Stunden in Preisstufen und zeigt zugleich den dynamischen EMS-Modus sowie den geprüften BKW-API-Status.
Loxone-Diagramm mit 24 farblich eingeordneten Stundenwerten der dynamischen BKW-Einspeisevergütung
Der Tarifverlauf zeigt die 24 absoluten Stundenwerte. Die Farben ordnen sie in relative Preisbereiche ein.
Loxone Spotpreis-Automatik mit Bedarf, Zeithorizont und ausgewählten günstigen Stunden
Die Spotpreis-Automatik wählt innerhalb des verfügbaren Horizonts die günstigsten Stunden für den konfigurierten Bedarf.

Samstag: Tarif und Wirkung nebeneinander

Diese beiden historischen Ansichten stammen vom selben Samstag. Sie zeigen keine Modellrechnung, sondern die reale Wirkung der Steuerungslogik.

Loxone-Tarifverlauf vom Samstag mit tagsüber sehr niedriger bis leicht negativer Einspeisevergütung
Am Samstag fiel die Einspeisevergütung im Solarfenster bis leicht ins Negative. Genau dann wird Einspeisung unattraktiv und Eigenverbrauch wertvoll.
Loxone-Energieflussmonitor vom selben Samstag mit 90 Prozent Eigenproduktion, 5 Prozent Speicher und 5 Prozent Netzbezug
Die Wirkung im Energiefluss: 69,2 von 77 kWh Verbrauch kamen aus der Eigenproduktion. Die App weist 90 Prozent Eigenproduktion, 5 Prozent Speicher und 5 Prozent Netzbezug aus.
Wichtig: Dieser Beitrag behandelt dynamische BKW-Einspeisevergütungen, nicht Strombezugs- oder Verbrauchspreise.

BKW veröffentlicht dynamische Einspeisevergütungen über eine öffentliche API. Loxone kann solche Daten grundsätzlich für eine tarifabhängige Optimierung verwenden – BKW ist dort aber keine direkt verfügbare Preisquelle. Zwischen «die API liefert Werte» und «die Hausautomation darf danach entscheiden» fehlte deshalb ein zuverlässiger Übersetzer.

Patrick gab Ziel, Anlagenkontext und Freigabegrenzen vor. Rootkeeper entwickelte daraus einen selbst gehosteten Dienst, der die BKW-Daten abruft, prüft, auf Schweizer Lokalstunden abbildet und in einem für Loxone verlässlich lesbaren Format bereitstellt. Ebenso wichtig wie die Preise selbst ist die Frage: Darf die Automation diesen Datensatz überhaupt verwenden?

Warum ein direkter API-Abruf nicht genügt

Die Schnittstelle liefert Viertelstundenwerte. Ein normaler Schweizer Tag besteht damit aus 96 Intervallen. Für den Loxone Spotpreis-Optimierer werden daraus 24 absolute Stundenwerte.

Dafür müssen Tarifdatum, Vollständigkeit, Einheit, Zeitintervalle und Zeitzone zweifelsfrei stimmen. Auch negative Preise und echte Nullwerte sind zulässig. Ein HTTP-Status 200 sagt nur, dass ein Server geantwortet hat – nicht, dass die Daten für eine Automation sicher sind.

Aus Viertelstunden wird ein Tagesvektor

Der entwickelte Proxy arbeitet tagebasiert in der Zeitzone Europe/Zurich. Er gruppiert die Viertelstundenwerte nach Schweizer Lokalstunden und bildet einen Tagesvektor von h00 bis h23.

Die Identität des Datensatzes ist das lokale Tarifdatum. So werden bereits veröffentlichte Werte für morgen nicht versehentlich als heutige Tarife verwendet. Ein erfolgreich geprüfter Tagesvektor wird persistent gespeichert und bleibt über einen Container-Neustart oder einen vorübergehenden Upstream-Ausfall hinweg verfügbar.

Ein Format, das Loxone zuverlässig versteht

Die erste technisch korrekte Ausgabe war noch nicht automatisch die robusteste Loxone-Ausgabe. Dezimalwerte konnten erkannt, bei der Weiterverarbeitung aber nicht zuverlässig übernommen werden.

Der Proxy transportiert die Werte deshalb als ganze mCHF/kWh. Loxone skaliert sie kontrolliert zurück. Ein einziger Virtual HTTP Input liest den Status und alle 24 Stundenwerte. Der Spotpreis-Optimierer arbeitet im Modus Absolut, wodurch jede Stunde eindeutig ihrem lokalen Zeitpunkt zugeordnet bleibt.

Datenqualität ist ein eigener Eingang

Die Preise allein reichen nicht. Ein zusätzlicher Statuscode trägt die Sicherheitsentscheidung:

Status 0

Vollständig

Der heutige Datensatz ist vollständig geprüft. Dynamische Optimierung ist erlaubt.

Status 10

Kontrolliert degradiert

Genau eine Stunde ist nullgefüllt. Nutzung ist erlaubt, die Warnung bleibt sichtbar.

Alle anderen

Unsicher

Der dynamische Pfad wird gesperrt oder neutralisiert.

Grundsatz

Status vor Zahl

Ein echter Tarifwert 0 ist gültig. Erst Status und Diagnose erklären seine Bedeutung.

Das System bevorzugt einen sichtbaren Ausfall gegenüber einer plausibel aussehenden Vermutung.

Der klassische Betrieb bleibt erhalten

EMS dynamisch verwendet den geprüften Tagesvektor. EMS klassisch umgeht die API-Logik und erhält die klassische Überschussfunktion.

Der manuelle Classic-Fallback besitzt bewusst eine hohe Priorität. Wenn BKW, Proxy, NAS oder Hausnetz nicht verfügbar sind, bleibt ein bekannter und verständlicher Betriebszustand erreichbar.

Was der Tarif in der Steuerung bewirkt

Die Einspeisevergütung wird nicht nur angezeigt. Sie beeinflusst, wie attraktiv Einspeisung im Verhältnis zum Eigenverbrauch ist.

Grundlogik: Je geringer die Einspeisevergütung, desto stärker wird der Eigenverbrauch priorisiert.

Energie, die nur gering vergütet ins Netz fliessen würde, soll nach Möglichkeit im Haus genutzt werden. Die Tarifstufe wird damit zu einem verständlichen Steuerungssignal, während die konkrete Verbraucherlogik weiterhin in Loxone bleibt.

Vom ersten Prototyp zum produktiven Dienst

  1. Schnittstelle, Einheiten und Zeitstempel beobachten.
  2. Schweizer Tarifdatum und absolute Stundenwerte modellieren.
  3. Validierte Tagesvektoren persistent und atomar speichern.
  4. Loxone-Transport mit Integerwerten und flachem JSON robust machen.
  5. Fehlerzustände explizit modellieren und fail-closed behandeln.
  6. Classic-Fallback und Wiederanlauf testen.
  7. Quellcode, Container-Images und anonymisierte Loxone-Artefakte veröffentlichen.

Ein früher MQTT-Tarifpfad wurde nach der Umstellung auf den einfacheren HTTP-Weg entfernt. Produktiv gibt es nur noch einen klaren Datenpfad.

Die wichtigste Erkenntnis

Eine API-Integration ist nicht fertig, wenn der erste Zahlenwert erscheint. Für eine Automation müssen Zeitbezug, Einheit, Vollständigkeit, Fehlerzustände und Rückfallverhalten eindeutig sein.

Die eigentliche Leistung ist deshalb nicht nur die Umrechnung von 96 Viertelstundenwerten in 24 Stundenwerte. Es ist die klar definierte Grenze zwischen Daten vorhanden und Daten sicher genug für eine Entscheidung.

Unabhängiges Community-Projekt

Der BKW Tariff Proxy ist kein offizielles Produkt von BKW oder Loxone. Quellcode und Veröffentlichungen sind auf GitHub dokumentiert.

Projekt auf GitHub

← Zurück zu Haus & Technik