Woher Ihr Preis kommt
Ihr Versorger berechnet alle 15 Minuten einen anderen Preis, und die meisten Energiemonitore rechnen alles zu einem festen Satz ab. Jede Kostenzahl, die sie anzeigen, ist dann eine Schätzung – nicht um ein wenig falsch, sondern auf einer Zahl aufgebaut, die nie Ihr Preis war. Wenn Ihr Vertrag dem Markt folgt, ist nur eine Kostenangabe lesenswert, die den Preis der Periode verwendet, in der die Energie gemessen wurde.
Darum geht es auf dieser Seite: woher der Hub diesen Preis nimmt, was er damit macht und wie Sie sehen, welchen Preis er verwendet hat. Was der Bildschirm anzeigt und was zu tun ist, wenn eine Zahl falsch aussieht, steht auf Dynamic prices.
⚠️ Der Hub bepreist die Energie. Er schaltet nichts. Hier gibt es keine Laststeuerung: kein Relais, kein Ladegerät, kein Wechselrichter und keine Automatik „günstigste Stunde“ auf dem Gerät. Wenn etwas laufen soll, wenn Energie günstig ist, veröffentlicht der Hub eine Benachrichtigung, und Home Assistant handelt danach – siehe Cheap windows and the price notification.
Die Kurzfassung
- Dynamische Preise sind standardmäßig aus. Ist es aus, bepreist Ihr Tarif jede Periode genau wie bisher.
- Ist es an, bekommt jede 15-Minuten-Periode ihren Preis von Ihrer primären Quelle; hat diese Quelle für die Periode keinen Preis, von Ihrer Backup-Quelle; hat keine von beiden einen, von Ihrem Tarif.
- Der Hub erfasst für jede Periode, welche der drei verwendet wurde, und bewahrt diesen Eintrag 40 Tage auf.
- Ihr Tarif bleibt wichtig: Er ist der Ersatzwert, er liefert die Steuern und die MwSt., die einem Marktpreis hinzugefügt werden, und seine Währung ist die Geldwährung.
Die Kette, in Reihenfolge
Für jede 15-Minuten-Periode bestimmt der Hub einen Preis:
| Quelle | Bedeutung | |
|---|---|---|
| 1 | Primär | der Anbieter, den Sie für Ihre Zone gewählt haben |
| 2 | Backup | optional, und muss ein anderer Anbieter sein; wird nur für Perioden verwendet, die der primäre Anbieter nicht abdeckt |
| 3 | Ihr Tarif | der Zonensatz, der für diese Periode gilt – siehe Tariffs |
Hier wird nichts vermischt: eine Periode, ein Preis, eine Quelle. Die Quelle wird mit der Periode gespeichert, sodass sich eine Zahl, die Sie nächste Woche lesen, immer noch auf ihre Preisquelle zurückführen lässt.
Warum sich ein Backup lohnt
Ein Day-ahead-Markt veröffentlicht den nächsten Tag einmal täglich. Ist diese Veröffentlichung verspätet, schlägt der Abruf fehl oder fehlt Ihre Zone in einer Antwort, hat der primäre Anbieter für diese Perioden schlicht keinen Preis. Ohne Backup springt der Tarif ein – das ist korrekt, aber es ist ein anderer Preis, und Ihre Kosten für diesen Abschnitt werden nicht zum Markt passen. Ein Backup von einem zweiten Anbieter für dieselbe Zone hält den Marktpreis aufrecht.
Nicht jede Zone hat eine zweite Quelle. Zwölf Gebiete werden von der Liste unten zweifach oder öfter abgedeckt: SE1-4 und NO1-5 (Nord Pool neben der nationalen Quelle), DK1-2 und NL (Energy-Charts neben einer zweiten), wobei SE4 und NO2 dreifach abgedeckt sind. Für AT, BE, CH, CZ, DE-LU, EE, FI, FR, HU, IT-North, LT, LV, PL, SI und die UK-Regionen gibt es hier keinen zweiten Anbieter – entweder dient also ein Push aus Home Assistant als Backup, oder diese Perioden fallen auf den Zonensatz des Tarifs zurück.
Die Quellen
| Quelle | Art | Auflösung | Gebiete | Währung |
|---|---|---|---|---|
| Energy-Charts (Fraunhofer ISE) | Spot | 15 minutes | AT, BE, CH, CZ, DE-LU, DK1, DK2, FR, HU, IT-North, NL, NO2, PL, SE4, SI | EUR |
| Nord Pool (inoffizielles Datenportal) | Spot | 15 minutes | SE1–4, NO1–5, DK1–2, FI, EE, LV, LT | die des Gebiets: SEK, NOK, DKK oder EUR |
| Elpriset just nu (SE) | Spot | 15 minutes | SE1–4 | SEK |
| Hva koster strømmen (NO) | Spot | 1 hour | NO1–5 | NOK |
| EnergyZero (NL) | All-in | 15 minutes | NL | EUR |
| Octopus Agile (UK) | All-in | 30 minutes | die 14 GSP-Regionen, A–P | GBP |
| Home Assistant | Sie wählen: Spot oder All-in | was gepusht wird | — | Ihr Tarif |
Keine Quelle braucht in dieser Version ein Token oder ein Konto.
Die Auflösung ist nicht der Abrechnungsschritt. Ein 30-Minuten- oder Stundenpreis gilt für jede 15-Minuten-Periode darin, sodass Ihre Kosten weiterhin pro 15-Minuten-Periode berechnet werden – vier davon teilen sich einfach einen Preis. Den Schritt, in dem Sie abgerechnet werden, legen Sie separat fest; siehe Bill at the hourly mean.
Spot oder All-in ist das Wichtigste, das Sie richtig einstellen müssen, und es wird unten erklärt, weil eine falsche Angabe der häufigste Grund für eine zu hohe Kostenzahl ist.
⚠️ Die Währung wird nicht umgerechnet. Der Hub macht aus SEK kein EUR. Eine Zone, deren Währung von der Ihres Tarifs abweicht, wird beim Speichern abgelehnt (das Feld kommt als Fehler zurück), und eine Quelle in einer anderen Währung wird übersprungen statt angenähert. Nord Pool SE3 braucht einen Tarif in SEK; Energy-Charts DE-LU braucht einen Tarif in EUR. Stellen Sie zuerst die Währung Ihres Tarifs ein und wählen Sie dann eine Zone, die dazu passt.
Die Quellenangabe wird angezeigt, und das ist Absicht
Jede Quelle trägt den Wortlaut, den ihre eigene Lizenz verlangt – zum Beispiel Bundesnetzagentur | SMARD.de /
Energy-Charts (CC BY 4.0) – und der Hub zeigt ihn auf der Seite Prices an. Das ist keine Verzierung: Es ist die Bedingung, unter der die Daten verwendet werden dürfen, und sie sagt Ihnen, was Sie vor sich haben. Energy-Charts wird nur für die Zonen bereitgestellt, die unter CC BY 4.0 veröffentlicht werden.
Nord Pool wird über ein inoffizielles Datenportal erreicht, und der Hub sagt das dort, wo er die Quelle nennt. Dahinter steht kein Dienstleistungsvertrag: Es kann sich ohne Ankündigung ändern oder enden. Nutzen Sie es bewusst, und geben Sie ihm ein Backup, wo eines existiert: SE1-4, NO1-5 und DK1-2 sind auch von einer anderen Quelle in dieser Liste abgedeckt, aber für FI, EE, LV und LT ist Nord Pool die einzige – dort ist ein Push aus Home Assistant das einzige verfügbare Backup.
Was Ihr Vertrag mit dem Preis macht
Ein Marktpreis ist nicht das, was Sie zahlen. Die beiden Arten von Quellen unterscheiden sich darin, wie viel vom Rest bereits in der Zahl enthalten ist.
Eine Spot-Quelle: der Preis ist der Anfang der Kette
buy = ( spot × factor
+ markup
[ + your plan's zone rate, if "zones stack" is on ]
+ your plan's per-kWh energy tax
+ grid fee
+ renewable levy )
× ( 1 + your plan's VAT )
factor und markup sind die Bedingungen Ihres Vertrags: ein Multiplikator und ein Aufschlag pro kWh. Alles Übrige kommt aus dem Tarif, den Sie bereits auf Tariffs eingegeben haben – deshalb bleibt der Tarif auch bei dynamischem Preis wichtig.
Zulässige Bereiche: factor 0 bis 10, markup −100 bis 100. Ein Wert außerhalb davon wird abgelehnt statt begrenzt.
Eine All-in-Quelle: der Preis ist die ganze Kette
buy = the provider's price
Aus dem Tarif wird nichts hinzugefügt – keine Steuer, kein Netzentgelt, keine Umlage, keine MwSt.
⚠️ Das ist der Mechanismus, der den häufigsten Kostenfehler verhindert. Ein All-in-Preis enthält die Steuern und die MwSt. bereits. Liefe er durch die Spot-Formel, würde jeder dieser Posten ein zweites Mal hinzugerechnet, und Ihre Kosten fielen sichtbar zu hoch aus. EnergyZero und Octopus Agile sind deshalb als All-in markiert – die Klasse eines Netzanbieters setzt der Hub, nicht Sie; Sie sehen sie in der Anbieterliste als · all-in und in der Formelzeile. Die einzige Stelle, an der die Klasse Ihre Wahl ist, ist Home Assistant: Dort geben Sie an, welche Art Sie pushen. Wenn Ihre Kosten überhöht wirken, der Preis selbst aber richtig aussieht, ist das das Erste, was Sie lesen sollten.
Home Assistant als Quelle
Home Assistant – oder jeder andere Client – kann dem Hub Preise senden, statt dass der Hub sie abruft: bis zu 200 Perioden auf einmal, gespeichert im eigenen Speicher des Hubs. Sie geben an, ob das, was Sie senden, ein Spot-Preis oder ein All-in-Preis ist, und von da an wird es genau wie ein Anbieter dieser Art behandelt. Das ist der Weg für einen Versorger, für den der Hub keine Quelle hat, oder für einen Preis, den Sie selbst berechnen.
In der ESPHome-Version ist Home Assistant von Anfang an unter den Quellen aufgeführt; auf der eigenständigen Firmware erscheint es in der Liste, sobald ein Push eingegangen ist. In beiden Fällen sind dynamische Preise aus, bis Sie sie einschalten, und die Quelle wählen Sie selbst – Home Assistant ist eine Option in der Liste, nicht die bereits gewählte.
Alles auf dieser Seite gilt für beide Versionen: Der ESPHome-Hub läuft mit demselben Kern und demselben Abrufmodul, mit denselben Anbietern, Zeitplan und Ersatzkette. Unterschiedlich ist nur, wo Sie es einstellen – in der ESPHome-Version ist das das RBgrid-Panel in Home Assistant statt der Web-App.
Die Verkaufsseite
Der Export wird separat bepreist und nie mit derselben Zahl wie der Bezug. Drei Modi:
| Modus | Der Verkaufspreis ist |
|---|---|
| From the provider (Standard) | der eigene Exportpreis der Quelle, wo es ihn gibt, sonst der Verkaufssatz der Zone Ihres Tarifs |
| From the tariff plan | der Verkaufssatz der Zone Ihres Tarifs |
| Market price × factor − fee | spot × export factor − export fee |
Der Export-Faktor akzeptiert 0 bis 10, die Export-Gebühr −100 bis 100 (k_sell und die Einspeisegebühr in der API). Auf die Verkaufsseite wird keine Steuer und keine MwSt. angewendet.
Der Exportwert wird nie von Ihren Kosten abgezogen. Bezogene Energie und ihre Kosten, eingespeiste Energie und ihr Wert, nebeneinander – siehe Economics. Ein dynamischer Preis ändert die Zahlen, nicht diese Regel.
Abrechnung zum Stundenmittel: wenn Ihr Vertrag stündlich abrechnet
Manche Verträge folgen dem Markt, rechnen aber pro Stunde ab, obwohl der Markt alle 15 Minuten veröffentlicht. Schalten Sie Bill at the hourly mean ein, wird jede 15-Minuten-Periode einer Stunde zum Mittel der Preise dieser Stunde abgerechnet.
Das ist eine Eigenschaft Ihres Vertrags, nicht Ihrer Quelle. Eine 15-Minuten-Quelle mit stündlicher Abrechnung braucht es eingeschaltet; eine stündliche Quelle braucht es gar nicht, weil ihre vier Perioden ohnehin einen Preis teilen. Es einzuschalten, „weil mein Anbieter stündlich ist“, ändert nichts; es auszulassen, obwohl Ihr Vertrag stündlich ist, lässt jede Periode um ein wenig von der Rechnung Ihres Versorgers abweichen.
So abgerechnete Perioden sind im Preisprotokoll als hourly_mean markiert, damit Sie sie hinterher unterscheiden können.
Negative Preise und Untergrenzen
Wenn der Markt ins Negative geht, behält der Hub den negativen Preis und bucht für diese Periode negative Kosten. Das ist die ehrliche Lesart: In diesen Perioden werden Sie für den Verbrauch unter einem Vertrag, der dem Markt folgt, gutgeschrieben.
Gibt Ihr Vertrag negative Preise nicht weiter, setzen Sie eine Untergrenze: Lowest buy price und Lowest sell price (−100 bis 100 oder keine; floor_buy und floor_sell in der API). Ist sie ausgelassen, steht bei jeder «None: negative prices pass through». Die Untergrenze wird zuletzt angewendet, nach allem anderen.
Bei ausgeschalteten dynamischen Preisen gehen Tarifsätze nie unter null, wie bisher. Untergrenzen gibt es, weil ein Marktpreis das kann, Ihr Vertrag aber vielleicht nicht.
Wann Preise eintreffen
- Die heutigen Preise werden abgerufen, sobald der Tag nicht vollständig abgedeckt ist.
- Die morgigen werden ab 11:00 UTC abgerufen, wenn die Day-ahead-Veröffentlichung beginnt; die App formuliert es so, wie ein Leser es erlebt – «they usually arrive after 13:00 CET».
- Schlägt ein Abruf fehl oder sind die morgigen Preise noch nicht da, versucht der Hub es alle 15 Minuten bis 15:00 UTC, danach stündlich. Nach 15:00 UTC sagt die Seite es zusätzlich ausdrücklich: Der Zustand wird zu «Tomorrow's prices not in yet».
Eine leere zweite Hälfte des Diagramms vor Mittag ist also normal und kein Fehler: Morgen gibt es noch nicht.
Beide Ergebnisse werden im Protokoll des Hubs festgehalten, und Sie können sie unter Events lesen:
price: state A -> B (source …)
FAIL price: <provider> <zone> fetch failed (<reason>), retry in N min
Der Grund ist einer von fetch_failed, http_status, parse, auth, no_data_for_zone oder rate_limited – und welcher es ist, bestimmt, was zu tun ist (siehe unten). Der aktuelle Zustand und wie weit die Preise bekannt sind, stehen auf der Seite Prices und in der API als price_state und valid_until.
Das Protokoll: welcher Preis für jede Periode verwendet wurde
Der angewendete Preis jeder 15-Minuten-Periode wird mit seiner Quelle protokolliert und 40 Tage lang aufbewahrt – auch wenn dynamische Preise aus sind; dort steht im Eintrag einfach plan. Laden Sie es als CSV von der Seite Prices herunter.
prov |
der Preis stammt von |
|---|---|
source |
Ihrer primären Quelle |
backup |
Ihrer Backup-Quelle |
ha_push |
von Home Assistant oder einem anderen Client gesendet |
hourly_mean |
dem Mittel dieser Stunde, gemäß Ihrer Vertragseinstellung |
plan |
dem Zonensatz Ihres Tarifs |
🔑 Dadurch wird eine Kostenzahl überprüfbar statt glaubwürdig. Ein Monitor, der Ihnen eine Kosten zeigt, verlangt, dass Sie ihm glauben. Ein Monitor, der Ihnen den Preis zeigt, den er pro Periode verwendet hat, mit der Quelle dieses Preises, gibt Ihnen die Rechnung in die Hand – und 40 Tage reichen, um eine Frage mit der Monatsabrechnung in der Hand zu klären.
Die Verlaufseinträge selbst bleiben im Format unverändert: Geld wird mit dem eigenen Preis jeder Periode berechnet, und was bereits den Verlauf oder die CSV des Hubs liest, braucht keine Änderung.
Wo der Preis sonst auftaucht
- Dynamic prices – der Bildschirm: Preis jetzt, heute und morgen, Ihre Quelle und Formel, günstige Fenster, Spitzen, das Protokoll.
- Why this hour costs what it costs – die vollständige Kette von Energie zu Geld, jetzt mit einem Marktpreis darin.
- Cheap windows and the price notification – was der Hub veröffentlicht, damit etwas anderes auf einen günstigen Abschnitt reagieren kann.
- Import peaks – der höchste 15-Minuten- und Stundenbezug eines Abrechnungszyklus. Gemessen, ob Sie dynamische Preise nutzen oder nicht.
- Home Assistant und MQTT – die Live-Telemetrie enthält den Zustand, die verwendete Quelle, wie weit die Preise bekannt sind, sowie den aktuellen Bezugs- und Einspeisesatz; siehe MQTT broker.
Auf Firmware v1.2.0? Aktualisieren Sie
Die eigenen Versionshinweise des Hubs enthalten eine Empfehlung, die Sie beachten sollten, statt darüber hinwegzulesen: Aktualisieren Sie von v1.2.0, wenn Sie dynamische Preise nutzen.
Auf v1.2.0 wurden die abgerufenen Preisperioden im kleinen Einstellungsspeicher des Hubs gehalten – demselben Speicher, der die laufende Stunde und die Energie-Anker enthält. Mit eingeschalteten dynamischen Preisen konnten die Preise ihn füllen, und dann konnte ein Neustart einen Teil der gerade gemessenen Stunde verlieren. Der Hub meldet das, wenn es passiert: Das Hub-Log zeigt FAIL hour persist …: ESP_ERR_NVS_NOT_ENOUGH_SPACE.
v1.2.1 verschiebt die Preisperioden in das Dateisystem des Hubs und gibt diesen Platz beim ersten Start frei; dabei wird price: stores moved from NVS to the file system protokolliert. Nichts, was ein Leser tut, ändert sich, und nichts auf dieser Seite liest sich auf einer der beiden Versionen anders – aber der oben beschriebene Fehler wird unmöglich.
Die Regeln für günstige Fenster und die Werte für Importspitzen sind klein und bleiben auf beiden Versionen im Einstellungsspeicher: „Die Preisspeicher sind umgezogen“ heißt nicht, dass alles Preisbezogene umgezogen ist.
Was es nicht tut
Ausdrücklich gesagt, weil jeder dieser Punkte etwas ist, das ein Leser vernünftigerweise erwarten könnte:
- Kein Tibber, kein Amber. Nicht implementiert. Ist Ihr Versorger einer davon, senden Sie den Preis aus Home Assistant.
- Keine Währungsumrechnung. Die Währung Ihres Tarifs und die Währung Ihrer Zone müssen dieselbe sein.
- Kein Dienstleistungsvertrag hinter Nord Pool. Der Endpunkt ist ein inoffizielles Datenportal und kann sich ohne Ankündigung ändern.
- Keine Laststeuerung. Der Hub misst und bepreist; er schaltet nichts. Die Benachrichtigung ist der Übergabepunkt.
- Keine Abrechnung von Leistungspreisen. Spitzen werden gemessen, nicht in Ihre Kosten eingepreist.
Wenn die Zahl falsch ist: was zu prüfen ist
Meine Kosten sind viel zu hoch, und der Preis selbst sieht richtig aus. Ihre Quelle ist All-in, wird aber als Spot behandelt, sodass die Steuern und die MwSt. des Tarifs auf einen Preis aufgeschlagen werden, der sie bereits enthielt. Bei einem Netzanbieter ist die Klasse die des Hubs, nicht Ihre: Lesen Sie sie in der Anbieterliste ab, wo eine All-in-Quelle mit · all-in angezeigt wird, und in der Formelzeile. Bei Home Assistant ist die Klasse Ihre – prüfen Sie What Home Assistant sends.
Meine Kosten wirken zu niedrig, oder der Preis liegt unter dem der App meines Versorgers.
Das Gegenteil: ein Spotpreis ohne die Vertragsbedingungen dahinter. Prüfen Sie, ob factor und markup zu Ihrem Vertrag passen und ob der dahinterliegende Tarif Ihre Energiesteuer, Ihr Netzentgelt, Ihre Umlage und die MwSt. enthält. Ein nackter Spotpreis ist eine Großhandelszahl, keine Endkundenzahl.
Die Hälfte des Diagramms ist leer.
Liegt es vor dem Nachmittag, sind die morgigen Preise noch nicht da – der Hub beginnt um 11:00 UTC zu fragen, und sie kommen meist nach 13:00 CET. Liegt es danach, suchen Sie unter Events nach einer Zeile FAIL price: und lesen Sie deren Grund.
FAIL price: … no_data_for_zone.
Der Anbieter hat geantwortet, aber nicht für Ihre Zone. Entweder steht die Zone nicht in der Liste dieser Quelle, oder die Quelle liefert sie nicht mehr. Ändern Sie die Zone oder die Quelle.
FAIL price: … parse oder http_status, wiederholt.
Die Quelle hat sich geändert oder ist ausgefallen. Dafür gibt es ein Backup: Wählen Sie einen Backup-Anbieter eines anderen Anbieters für dieselbe Zone – sofern die Liste einen für Ihre Zone hat; siehe oben Warum sich ein Backup lohnt.
FAIL price: … rate_limited.
Von Ihrer Adresse aus sind zu viele Anfragen beim Anbieter angekommen. Der Hub zieht sich selbst zurück – alle 15 Minuten bis 15:00 UTC, danach stündlich –, daher löst sich das von selbst. Hält es einen Tag an, fragt etwas anderes in Ihrem Netzwerk denselben Endpunkt ab.
Ich habe eine Zone gespeichert, und sie wurde abgelehnt. Die Währung der Zone stimmt nicht mit der Ihres Tarifs überein, und der Hub rechnet nicht um. Stellen Sie die Währung des Tarifs auf die ein, in der Ihr Markt handelt, und speichern Sie dann die Zone.
Der Preis stimmt, aber die Kosten werden weiterhin aus meinem Tarif berechnet.
Sehen Sie im Preisprotokoll für diese Perioden nach: Ein Eintrag plan bedeutet, dass weder die primäre noch die Backup-Quelle sie abgedeckt haben. Entweder waren für diesen Abschnitt noch keine Preise eingetroffen, oder die dynamischen Preise waren zu dieser Zeit aus. Die Einstellung gilt ab dem Moment, in dem sie gespeichert wird, und bereits gemessene Energie behält den Preis, mit dem sie bepreist wurde.
Meine Zahlen weichen von denen meines Versorgers um einen kleinen, gleichbleibenden Betrag ab. Prüfen Sie hourly mean gegen Ihren Vertrag: Rechnet Ihr Versorger pro Stunde ab und der Hub bepreist pro 15-Minuten-Periode, weicht jede Stunde in beide Richtungen leicht ab. Schalten Sie es ein, dann bepreist der Hub jede Periode der Stunde mit dem Mittel dieser Stunde.
Eine Periode kostete weniger als null.
Der Marktpreis war negativ, und Ihr Vertrag gibt das weiter, sodass der Hub negative Kosten gebucht hat. Gibt Ihr Vertrag es nicht weiter, setzen Sie floor_buy auf den niedrigsten Preis, den Ihnen tatsächlich berechnet werden kann.
Ich habe die Quelle geändert, und alte Kosten haben sich nicht geändert. Das tun sie nie. Eine Periode wird einmal bepreist, mit dem Preis, der galt, als sie gemessen wurde, und die Zahl bleibt – siehe Why this hour costs what it costs. Eine Änderung der Quelle wirkt sich auf das aus, was danach passiert.
⚠️ Für jede Arbeit innerhalb eines Elektrokastens wenden Sie sich an einen qualifizierten Elektriker.