Anbinden der aWATTar hourly API

Stromanbieter aWATTar 

Die aWATTar GmbH mit Sitz in Wien ist ein Anbieter von 100% erneuerbarer Energie auf dem österreichischen Strommarkt, sowie seit 2018 unter www.awattar.de mit Sitz in Berlin für Deutschland.

Die Besonderheit dieses Anbieters sind die Tarife hourly bzw. hourly-cap, bei denen der Stromtarif, gekoppelt an den EPEX Spot Börsenpreis, stundenweise variiert. 

Es ist dabei auch möglich, dass der Strompreis negativ werden kann. Mittels einer API von aWATTar ist es möglich, den kommenden Strompreis der nächsten 24 Stunden abzurufen und auf diese Weise Verbraucher im Haushalt gezielt zu steuern.

Für die Nutzung des Tarifs hourly ist ein SmartMeter erforderlich. Die Tarife monthly und yearly können mit einem klassischen Stromzähler verwendet werden.

LoxBerry

Für LoxBerry-Benutzer gibt es auch ein aWATTar Plugin.

Einfache API

aWATTar bietet neben der hier beschriebenen API auch eine JSON-API an, die sich für Systeme mit höheren Programmiersprachen und Mathematikfunktionen besser eignet.

Die hier dokumentierte API wurde von RobertS und Christian Fenzl speziell für den Betrieb mit dem Loxone Miniserver bzw. anderer Systeme mit reduziertem Funktionsumgang spezifiziert und von aWATTar umgesetzt.

Abfragelimit

Derzeit besteht ein Fair-Use-Limit von 100 Requests pro Tag. Nach Rücksprache mit aWATTar ist eine Abfrage im 5-Minuten-Takt (entspricht ca. 288 Abfragen pro Tag) für Loxone-Benutzer erlaubt.

API-Stand 13.04.2016 

Einbinden als Vorlage (aWATTar Österreich)

Österreich: Es ist kein Token erforderlich.

Template: VI_aWATTar hourly_AT.xml (Template aktualisiert am 29.08.2019 für API-Version vom 13.04.2016)

So bindest du das Tempate ein: Templates in Loxone Config einbinden

UPDATE 21.07.2020: Ein Token ist auch für Österreich nicht mehr erforderlich. Bitte ändere nach dem Einbinden der Vorlage die URL des virtuellen HTTP-Eingangs folgendermaßen ab:

URL ändern auf http://api.awattar.at/v1/marketdata/current.yaml

Einbinden als Vorlage (aWATTar Deutschland)

Deutschland: Es ist kein Token erforderlich.

Template: VI_aWATTar hourly_DE.xml (Template DE erstellt am 29.08.2019 für API-Version vom 13.04.2016)

So bindest du das Tempate ein: Templates in Loxone Config einbinden

Manuelle Einrichtung (alternativ)

Virtuellen HTTP Eingang mit folgender URL anlegen:

Österreich: http://api.awattar.at/v1/marketdata/current.yaml

Deutschland: http://api.awattar.de/v1/marketdata/current.yaml

Rückgabe der API

date_now: 2016-04-13 15:35:28 date_now_epoch: 1460554528067 date_now_day: 13 date_now_month: 4 date_now_year: 2016 date_start: 2016-04-13 00:00:00 date_end: 2016-04-13 23:59:59 price_low: 2.14100 price_high: 3.94100 price_median: 2.84500 price_average: 2.85379 price_current: 2.60000 price_unit: Cent/kWh price_threshold_01: 2.14100 price_threshold_02: 2.16800 price_threshold_03: 2.16800 price_threshold_04: 2.17100 price_threshold_05: 2.27700 price_threshold_06: 2.29300 price_threshold_07: 2.35900 price_threshold_08: 2.59600 price_threshold_09: 2.60000 price_threshold_10: 2.63300 price_threshold_11: 2.70100 price_threshold_12: 2.80000 price_threshold_13: 2.89000 price_threshold_14: 2.90000 price_threshold_15: 3.13100 price_threshold_16: 3.13500 price_threshold_17: 3.19400 price_threshold_18: 3.23700 price_threshold_19: 3.32300 price_threshold_20: 3.38600 price_threshold_21: 3.44200 price_threshold_22: 3.49900 price_threshold_23: 3.50600 price_threshold_24: 3.94100 data_price_hour_rel_-15_amount: 2.29300 data_price_hour_abs_00_amount: 2.29300 data_price_hour_rel_-14_amount: 2.16800 data_price_hour_abs_01_amount: 2.16800 data_price_hour_rel_-13_amount: 2.16800 data_price_hour_abs_02_amount: 2.16800 data_price_hour_rel_-12_amount: 2.14100 data_price_hour_abs_03_amount: 2.14100 data_price_hour_rel_-11_amount: 2.17100 data_price_hour_abs_04_amount: 2.17100 data_price_hour_rel_-10_amount: 2.27700 data_price_hour_abs_05_amount: 2.27700 data_price_hour_rel_-09_amount: 3.13500 data_price_hour_abs_06_amount: 3.13500 data_price_hour_rel_-08_amount: 3.49900 data_price_hour_abs_07_amount: 3.49900 data_price_hour_rel_-07_amount: 3.94100 data_price_hour_abs_08_amount: 3.94100 data_price_hour_rel_-06_amount: 3.50600 data_price_hour_abs_09_amount: 3.50600 data_price_hour_rel_-05_amount: 3.32300 data_price_hour_abs_10_amount: 3.32300 data_price_hour_rel_-04_amount: 3.19400 data_price_hour_abs_11_amount: 3.19400 data_price_hour_rel_-03_amount: 2.89000 data_price_hour_abs_12_amount: 2.89000 data_price_hour_rel_-02_amount: 2.70100 data_price_hour_abs_13_amount: 2.70100 data_price_hour_rel_-01_amount: 2.59600 data_price_hour_abs_14_amount: 2.59600 data_price_hour_rel_+00_amount: 2.60000 data_price_hour_abs_15_amount: 2.60000 data_price_hour_rel_+01_amount: 2.63300 data_price_hour_abs_16_amount: 2.63300 data_price_hour_rel_+02_amount: 2.90000 data_price_hour_abs_17_amount: 2.90000 data_price_hour_rel_+03_amount: 3.23700 data_price_hour_abs_18_amount: 3.23700 data_price_hour_rel_+04_amount: 3.38600 data_price_hour_abs_19_amount: 3.38600 data_price_hour_rel_+05_amount: 3.44200 data_price_hour_abs_20_amount: 3.44200 data_price_hour_rel_+06_amount: 3.13100 data_price_hour_abs_21_amount: 3.13100 data_price_hour_rel_+07_amount: 2.80000 data_price_hour_abs_22_amount: 2.80000 data_price_hour_rel_+08_amount: 2.35900 data_price_hour_abs_23_amount: 2.35900

Satzbeschreibung

Label

Format

Beschreibung

Label

Format

Beschreibung

Daten zur aktuellen Stunde und anbieterseitig vorberechnete Werte des Kalendertages  

date_now

yyyy-mm-dd hh:mm:ss

Uhrzeit des Abrufs

date_now_epoch

<Unix-Time> (Zahl)

Die Uhrzeit des Abrufs in Unixzeit mit Millisekunden. Dient zur Validierung der Aktualität.

date_now_day

<1-31>

Aktueller Tag

date_now_month

<1-12>

Aktuelles Monat

date_now_year

<yyyy>

Aktuelles Jahr

date_start

yyyy-mm-dd hh:mm:ss

Startdatum und -zeit der gelieferten Daten (aktuell immer der aktuelle Kalendertag 0:00 Uhr)

date_end

yyyy-mm-dd hh:mm:ss

Enddatum und -zeit der gelieferten Daten (aktuell immer der aktuelle Kalendertag 23:59 Uhr)

price_low

x.yyyyy

Niedrigster Preis des aktuellen Kalendertages (ct/kWh)

price_high

x.yyyyy

Höchster Preis des aktuellen Kalendertages (ct/kWh)

price_median

x.yyyyy

Preis-Median des aktuellen Kalendertages (ct/kWh)

price_average

x.yyyyy

Arithmetischer Mittelwert des aktuellen Kalendertages (ct/kWh)

price_current

x.yyyyy

Preis dieser Stunde (ct/kWh)

price_unit

<String>

Preiseinheit, derzeit fix "Cent/kWh"

price_threshold_xx

x.yyyyy

xx von 00 bis 23. Dabei handelt es sich um eine aufsteigend sortierte Liste der Preise (niedrigst bis höchst).

Daten der Zukunft und Vergangenheit

Aktuell werden nur Daten des aktuellen Kalendertages (00:00 bis 23:59 Uhr) ausgegeben. aWATTar prüft die Ausweitung auf weitere zukünftige Werte. Die Syntax der Labels ist dafür vorbereitet.

Präfix

data_price_hour_rel_-<xx>

data_price_hour_rel_+<xx>

-xx: Vergangene Daten

+xx: Aktuelle und zukünftige Daten

data_price_hour_rel bezieht sich auf Daten relativ von der aktuellen Stunde. Das Vorzeichen - (Minus) vor der Zahl ist definiert für Daten der Vergangenheit. Das Vorzeichen + (Plus) für Daten der aktuellen bzw. zukünftige Stunden. Die Zahl <xx> spiegelt dabei den Zeitversatz wider: +00 steht für Werte dieser Stunde, +01 der nächsten Stunde, -01 stellt den Wert der letzten Stunde, -02 der vorletzten Stunde dar.

Die Zahl ist immer zweistellig.

Präfix

data_price_hour_abs_<xx>

xx: Daten der absoluten Stunde

data_price_hour_abs bezieht sich auf die absolute (Tages-)Stunde, z.B. Daten für 09:00 Uhr haben ein Label data_price_hour_abs_09, von 10:00 Uhr data_price_hour_abs_10.

Derzeit liefert die absolute Stunde sowohl Daten der Vergangenheit als auch der Zukunft. Im Falle einer Erweiterung der Daten soll die Schnittstelle für dieses Label nur noch Zukunftsdaten liefern, und Vergangenheitsdaten mit Minus markieren.

Die Zahl ist immer zweistellig.

Präfix

data_price_hour_abs_-<xx>

-xx: Vergangene Daten der absoluten Stunde

Dieses Label ist derzeit nicht implementiert, und soll die Stundenwerte der Vergangenheit repräsentieren.

<präfix>_amount

x.yyyyy

data_price_hour_rel_<xx>_amount bzw. data_price_hour_abs_<xx>_amount liefert den Preis der angegebenen Stunde (ct/kWh)

Anmerkungen zur API vom 13.04.2016:

  • Sobald zukünftige Werte über die Tagesgrenze hinaus implementiert werden, soll bei den Abolutwerten eine Unterscheidung zwischen Vergangenheit und Zukunft eingeführt werden. Die Labels für die vollen Stunde:

    • data_price_hour_abs_-<xx>_amount: beschreibt den Datensatz als den Wert zur Stunde 08 (08:00 Uhr) in der Vergangenheit (-08 = mit Vorzeichen).

    • data_price_hour_abs_<xx>_amount: beschreibt den Datensatz als den Wert zur Stunde 12 (12:00 Uhr) als laufende oder zukünftige Stunde (12 = ohne Vorzeichen).

    • Die Unterscheidung ist erforderlich, da bei mehr als 24 Absolut-Werten Duplikate der Labels existieren, und so mit der Befehlserkennung nicht mehr eindeutig Zukunftswerte abgerufen werden können.

  • Der Abruf sollte so weit wie möglich (bis zu 24 Stunden) in die Zukunft Daten zurückliefern. Durch die Eingrenzung auf die Tagesgrenzen sind z.B. um 23:00 Uhr keine zukünftigen Daten mehr verfügbar. 

Einsatzbeispiele

Prüfen auf Aktualität

Mit dem Eingang Datum_Epoch kann auf Datenaktualität geprüft werden. Siehe dazu folgenden Artikel: epochtime (Unix-Zeit) zum Prüfen auf Datenaktualität nutzen

Ist der Preis hoch? Ist der Preis niedrig?

TESTPHASE Der folgende Weg zur Identifizierung ist noch in der Erprobung und nur ein erster Schritt. Bitte nach eigenen Bedürfnissen anpassen!

Die zwei Formeln berechnen eine Schwelle, was als "hoch" und als "niedrig" anzusehen ist:

Es wird jeweils die Differenz zwischen Median und Höchst- bzw. Tiefstwert berechnet. Die Schwelle entspricht Median plus bzw. minus 50% der Differenz. Mit GRÖSSER/KLEINER wird ermittelt, ob der Preis diese Schwelle über- bzw. unterschreitet.

 

Beispiel: aWATTar Beispiel.Loxone

In meiner Installation verwende ich auch ein weiteres Kriterium: Es wird der positive bzw. negative Aufschlag des aktuellen Preises zum Median in Prozent berechnet. Erst wenn der Preis 30% über dem Median liegt und die berechnete Schwelle überschritten ist, gilt der Preis als "teuer", ebenso für "günstig". Dies fängt Situationen ab, wo der Preis über einen Tag hinweg nur gering variiert. Dann könnte die Berechnung auf Basis der Differenz schon schnell ein "teuer" liefern, obwohl der Preis prozentuell nur minimal über dem Median/Mittelwert liegt.

Verwendung der relativen Preise

Wenn ein Verbraucher nach dem Einschalten länger läuft (oder laufen muss), ist es sinnvoll, nicht nur den aktuellen Preis zu prüfen, sondern den Preis über einen längeren Zeitraum.

Mit dieser Beschaltung wird der Taster Waschmaschine nur eingeschaltet, wenn der Mittelwert des aktuellen Preises und jener der nächsten zwei Stunden unter dem Preis_Mittelwert des Tages liegt. 

Der Mittelwert-Baustein kann durch einen Min/Max-Baustein ersetzt werden. Dann wird die Aktion nur gestartet, wenn die drei Preise die Schwelle (hier: Mittelwert) nicht überschreiten. 

Verwendung der Preis-Schwelle

Die Preisschwellwerte (Preis_Schwelle_01 bis Preis_Schwelle_24) sind aufsteigend nach Preisen sortiert. Das ermöglicht Steuerungen aufgrund der Höhe des Preises, zum Beispiel:

Verbraucher beim günstigsten Preis einschalten

Ist der aktuelle Preis kleiner oder gleich der Preis_Schwelle_01 (niedrigster Preis), soll der Strom für die Waschmaschine eingeschaltet werden.

Verbraucher in den teuersten vier Stunden ausschalten

Preis_Schwelle_21 ist der viert-teuerste Preis (24 = am teuersten, 23 = zweitteuersten, usw.). Ist der aktuelle Preis gleich oder größer dem Schwellpreis_21, wird der Regler für die Infrarotheizung deaktiviert. Damit heizt die IR-Heizung nicht bei diesen vier teuersten Tarifen. 

Wohnraumlüftung nach Strompreis steuern

Die Wohnraumlüftung ist mit einem 0-10V Ausgang ausgestattet.

Die beiden Vergleiche links liefern die höchsten vier (Preis_Schwelle_21) und die höchsten acht (Preis_Schwelle_16) zurück. Mit den UND-Bausteinen wird das Ergebnis mit dem "aWATTar Status" (Daten sind aktuell = EIN) verknüpft.

Im Status-Baustein gibt es drei Zustände:

  • Preis_Schwelle_21 ist überschritten --> 0% 

  • Preis_Schwelle_16 ist überschritten --> 20%

  • Normalbetrieb --> 40% (auch wenn die aWATTar-Daten nicht abrufbar sind)

  • Zusätzlich ist am Statusbaustein (AI4) noch ein Radiotasten-Baustein angeschlossen, um manuell einzugreifen. Das könnte auch z.B. für einen Feuchtefühler im Bad benutzt werden.

Preisstatistik anzeigen

Neben der Anzeige der aktuellen Preisdaten in der Loxone-Visualisierung gibt es einen viel schöneren Weg:

aWATTar bietet die dynamische Stundengrafik, die sich auf der Webseite im Hourly-Tarif versteckt, als iframe an, dieser kann direkt als Webpage eingebunden werden:

 

Die dynamische Grafik wird dann in jedem Betriebssystem direkt im Browser geöffnet, ohne sich bei aWATTar "durchklicken" zu müssen.

IDM Wärmepumpe mit aWATTar

Aufgrund meiner Bestrebungen, die IDM Wärmepumpe entsprechend des aWATTar Strompreises (hourly) zu steuern, hat IDM gemeinsam mit aWATTar eine direkte IDM-aWATTar Schnittstelle entwickelt. 

Die Navigator-Software mit aWATTar-Schnittstelle ist bereits verfügbar. Wenn im IDM Navigator die aWATTar-Option nicht verfügbar ist, bitte den IDM-Support kontaktieren. Im IDM Navigator muss aWATTar auf "Ja" gesetzt und die Einstellungen getroffen werden. Inkludiert ist eine Brauchwasser-Zeitverlegung, sowie eine Anhebung der Fußbodenheizungs-Vorlauftemperatur und die Speicheranhebung während der günstigen Stunden.

Das von aWATTar angebotene SmartGrid-Gerät "SYNCER" wird mit dieser Option nicht benötigt.