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 |
---|---|---|
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:
Aus der Kategorie Allgemein den Webpage-Baustein auswählen
Als URL bei allen Auflösungen eintragen: https://testing.awattar.com/awattar-web/product-price-transparency-charts/ (Österreich)
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.