Skip to end of metadata
Go to start of metadata
Autor
Logo

Status

BETA

Version0.1.4
Min. LB Version

LB 2.0

Download

Pre-Release: https://github.com/christianTF/LoxBerry-Plugin-aWATTar/archive/0.1.4.zip

ZweckRuft die stündlichen Strompreise von aWATTar Österreich/Deutschland ab und übermittelt diese, sowie im Plugin berechnete Werte/Kennzeichen an MQTT/Miniserver.
LanguagesDE
Diskussionhttps://www.loxforum.com/forum/projektforen/loxberry/plugins/228766-awattar-plugin
 Version History...

Version 0.1.1

  • Erster Commit im Repo

Version 0.1.2 BETA

  • Adviser-Webinterface
  • Adviser-Config-Datenformat angepasst

Version 0.1.3 BETA

  • Added price/spread, price/diff2median and price/diff2average

Version 0.1.4 BETA

  • Buttons to generate Loxone Templates for prices and Advisor devices

Inhalt



Languages

As aWATTar is only present on the Austrian and German energy market, the plugin is only available in German. 

Download

Direkter Download-Link: Siehe Tabelle oben

Beta-Version bedeutet:

Nichts ist endgültig, alles kann sich noch ändern. Bitte Fehler berichten!

Funktion des Plugins

Das Plugin bezieht die stündlichen Strompreisdaten von aWATTar (wahlweise Österreich oder Deutschland). Es werden die Strompreisdaten erhoben, sowie zusätzliche Werte berechnet. Außerdem ist es möglich, für eigene Geräte Zeitpläne zu erstellen, um diese zum günstigsten Zeitpunkt zu starten.

Die Übermittlung der Daten erfolgt ausschließlich per MQTT-Protokoll an einen MQTT-Broker. Nutzt man als Broker das MQTT Gateway Plugin, werden diese Änderungen direkt an den Miniserver übertragen. 

Preisanpassung

Die von aWATTar übermittelten Preise sind reine Energiepreise, exklusive Netzgebühren und Steuern. Mit der Preisanpassung können alle übermittelten Preise mit einer eigenen Formel angepasst werden, um näher an die Realität des tatsächlichen Strompreises zu kommen.

  • Der Buchstabe p ist die Variable des Strompreises, wie er von aWATTar geliefert wird.
  • Es können normale Formeln angegeben werden, inklusive Klammernsetzung.
  • Als Dezimaltrennzeichen muss ein Punkt (statt eines Kommas) verwendet werden.

Beispiel: p*1.19

Weitere Beispiele unten.

Adviser

Mit dem Adviser können beliebige Geräte mit einer bestimmten Laufzeit und definierbaren Ausnahmen angelegt werden. 

Als Beispiel nehmen wir das Gerät aus dem Screenshot, einen Geschirrspüler:

Unser Geschirrspüler hat eine Laufzeit von über zwei Stunden, meist knapp unter drei Stunden. Ich möchte wissen, zu welcher Zeit es am günstigsten ist, das Gerät für drei Stunden laufen zu lassen. 

Das Plugin berechnet den Durchschnittspreis für drei Stunden Laufzeit, und gibt die optimale Startstunde und weitere Datensätze dafür zurück.  

Wir möchten jedoch nicht, dass unser Geschirrspüler in der Nacht bzw. in der Früh läuft - am Wochenende darf er erst später starten als unter der Woche. 

Im Plugin können die Stunden angegeben werden, die ausgenommen werden sollen. Sprich: Ein Häkchen steht dafür, dass in dieser Stunde das Gerät nicht laufen soll. Die ausgenommenen Stunden inkludieren auch die Gerätelaufzeit. Das heißt, die Optimal-Startzeit wird im Beispiel niemals um 20 oder 21 Uhr (beide nicht ausgewählt, also erlaubt) sein, weil die Laufzeit bis über 22:00 Uhr wäre, was aber exkludiert ist.

Der Adviser gibt pro Gerät zurück:

  • Die Startstunde
  • Die Stunden bis zur Startstunde (z.B. um manuell eine Startverzögerung am Geschirrspüler einzustellen)
  • Ein Kennzeichen, dass wir gerade in der günstigsten Zeit sind (bleibt für die Dauer der Laufzeit aktiv)
  • Der Durchschnittspreis über die Laufzeit

Außer der günstigsten Zeit gibt der Adviser für das Gerät auch die teuerste Zeit mit den genannten Daten aus. Vielleicht kann das jemand brauchen, um ein Gerät explizit in dieser Zeit abzuschalten.

Loxone Templates

Auf der "Einstellungen"-Seite können Vorlagen für die unterschiedlichen Daten (date, price, prices, threshold) heruntergeladen werden. Siehe Datenmodell.

Auf der "Advisor"-Seite kann für jedes Gerät einzeln eine Vorlage heruntergeladen werden.

Die Vorlagen werden deswegen einzeln bereitgestellt, weil dies das Ersetzen gegen eine neue Vorlage vereinfacht, und weil nicht zwangsläufig alle Daten benötigt werden.

Einbinden der Vorlagen in die Loxone Config: Templates in Loxone Config einbinden

Datenmodell

Sämtliche Daten werden in Sub-Topics des Basistopic (Standard: awattar) übertragen. Damit ist es möglich, entweder alle Daten (awattar/#) oder nur bestimmte Sub-Topics zu subscriben.

Alle Preisangaben sind cent/kWh.

Die Sub-Topics sind:

  • <Basistopic>/date/# - Listet Zeitinformationen zum Abruf der Daten
  • <Basistopic>/price/# - Der aktuelle Preis und dessen Ranking, die aktuelle Stunde und Wochentag, Durchschnittswerte, Minimum und Maximum des Tages 
  • <Basistopic>/prices/# - Es wird der Preis jeder Stunde des Tages gesendet 
  • <Basistopic>/threshold/# - Die Preise werden aufsteigend sortiert übermittelt. So ist es möglich, z.B. per Vergleich current <= awattar_threshold_05 Preisschwellen in der Logik abzubilden
  • <Basistopic>/advise/<Gerätename>/# - Der "Adviser" (dt. Ratgeber) ist die Spezialität des Plugins: Für jedes Gerät mit definierbaren Laufzeiten wird das günstigste und teuerste Zeitfenster übermittelt. Dabei können für jeden Wochentag auch Stunden ausgeschlossen werden (z.B. Waschmaschine mit einer Laufzeit von 2 Stunden soll im günstigsten, zusammenhängenden 2-Stunden-Zeitfenster laufen, jedoch nicht zwischen 22:00 und 6:00 Uhr)

/date - Zeitinformationen

Topicvia MQTT-GatewayBeschreibung
<Basistopic>/date/fetch<Basistopic>_date_fetchZeit des letzten Online-Abrufs der Daten (yyyy-mm-dd hh:mm)
<Basistopic>/date/fetch_epoch<Basistopic>_date_fetch_epochZeit des letzten Online-Abrufs der Daten (Unix Epoch)
<Basistopic>/date/fetch_loxtime<Basistopic>_date_loxtimeZeit des letzten Online-Abrufs der Daten (Loxone Timestamp)
<Basistopic>/date/now<Basistopic>_date_nowZeit der letzten Übermittlung an den MQTT Broker (yyyy-mm-dd hh:mm)
<Basistopic>/date/now_epoch<Basistopic>_date_now_epochZeit der letzten Übermittlung an den MQTT Broker (Unix Epoch)
<Basistopic>/date/now_loxtime<Basistopic>_date_now_loxtimeZeit der letzten Übermittlung an den MQTT Broker (Loxone Timestamp)
<Basistopic>/date/weekday<Basistopic>_date_weekdayAktueller Wochentag (0...Sonntag, 1...Montag usw. bis 6)

/price - Aktueller Preis und berechnete Werte

Topicvia MQTT-GatewayBeschreibung
<Basistopic>/price/average<Basistopic>_price_averageArithmetischer Mittelwert der Preise des aktuellen Tages
<Basistopic>/price/current<Basistopic>_price_currentAktueller Stundenpreis
<Basistopic>/price/diff2average<Basistopic>_price_diff2averageDie Differenz des aktuellen Preises zum Mittelwert-Preis (negativ: Es ist billiger als Mittelwert, positiv: Es ist teuerer als Mittelwert)
<Basistopic>/price/diff2median<Basistopic>_price_diff2medianDie Differenz des aktuellen Preises zum Median-Preis (negativ: Es ist billiger als Median, positiv: Es ist teuerer als Median)
<Basistopic>/price/high<Basistopic>_price_highHöchster Preis des Tages
<Basistopic>/price/hour<Basistopic>_price_hourAktuelle Stunde des Tages
<Basistopic>/price/low<Basistopic>_price_lowNiedrigster Preis des Tages
<Basistopic>/price/median<Basistopic>_price_medianMedian der Preise des aktuellen Tages
<Basistopic>/price/ranking<Basistopic>_price_rankingDer Rang des aktuellen Preises im Tagesvergleich, z.B. 5 bedeutet fünftgünstigster Preis des Tages
<Basistopic>/price/spread<Basistopic>_price_spreadDas ist die Preis-Spreizung des Tages in ct/kWh (Differenz Höchst zu Niedrigst). Es gibt praktisch die maximal mögliche Ersparnis aus. 

/prices

Topicvia MQTT-GatewayBeschreibung
<Basistopic>/prices/hour_00<Basistopic>_prices_hour_00Preis von 0:00 Uhr bis 1:00 Uhr
<Basistopic>/prices/hour_01<Basistopic>_prices_hour_01Preis von 1:00 Uhr bis 2:00 Uhr
.........
<Basistopic>/prices/hour_23<Basistopic>_prices_hour_23Preis von 23:00 Uhr bis 0:00 Uhr

/threshold - Schwellwerte

Die Schwellwerte sind aufsteigend sortiert (günstigst bis teuerst), d.h. threshold_00 liefert den günstigsten Preis, threshold_23 den teuersten Preis. Damit können in Loxone Vergleiche durchgeführt werden: Wenn in den günstigsten 5 Stunden eingeschaltet werden soll, dann mit einem KLEINER-ODER-GLEICH-Baustein: Wenn current <= threshold_04. Nur wenn der aktuelle Preis den threshold_04 unterschreitet (oder gleich ist), geht der Vergleichsbaustein auf EIN.

Topicvia MQTT-GatewayBeschreibung
<Basistopic>/threshold/00<Basistopic>_threshold_00Günstigster Preis
<Basistopic>/threshold/01<Basistopic>_threshold_01Zweitgünstigster Preis
.........
<Basistopic>/threshold/23<Basistopic>_threshold_23Teuerster Preis

Diese Daten sind kompatibel mit den von der einfachen API übermittelten Schwellen, wer vom Direktabruf umsteigen will auf das Plugin.

Einfacher ist der Vergleich jedoch mit dem Topic Price/ranking (siehe weiter oben!).

/advice/<Gerätename>

Der "Adviser" (dt. Ratgeber) sendet für jedes Gerät die günstigste und teuerste Zeit. 

In der Konfiguration wird die übliche Laufzeit dieses Geräts angegeben (z.B. Geschirrspüler 3 Stunden). Der Adviser sucht in den Tagespreisen die über die Laufzeit durchgehend günstigste Startzeit. Im Falle des Geschirrspülers wird die Startstunde gesucht, in der der Durchschnittspreis von drei aufeinanderfolgenden Stunden am günstigsten (und teuersten) ist. 

Zusätzlich können für jeden Wochentag Stunden ausgenommen werden. Beispielsweise soll der Geschirrspüler Mo-Fr. nicht von 22:00 bis 06:00 Uhr laufen, und am Wochenende nicht von 0:00 bis 09:00 Uhr. Der Adviser gibt keine Stunden zurück, die in diesen Zeitfenstern liegen (der Geschirrspüler darf am Mo. auch nicht um 20:00 Uhr starten, da er nicht bis 22:00 Uhr fertig wäre).

Topicvia MQTT-GatewayBeschreibung
<Basistopic>/advice/<Gerätename>/device<Basistopic>_advice_<Gerätename>_deviceDer Name des Geräts
<Basistopic>/advice/<Gerätename>/deviceuid<Basistopic>_advice_<Gerätename>_deviceuidInterne, eindeutige Nummer (UID) des Geräts
<Basistopic>/advice/<Gerätename>/duration<Basistopic>_advice_<Gerätename>_durationDie konfigurierte Laufzeit des Geräts in Stunden
<Basistopic>/advice/<Gerätename>/high_hour<Basistopic>_advice_<Gerätename>_high_hourDie Start-Stunde mit dem höchsten Preis
<Basistopic>/advice/<Gerätename>/high_in<Basistopic>_advice_<Gerätename>_high_inDie Zeit in Stunden, bis das teuerste Zeitfenster beginnt. Der Wert kann auch negativ sein, wenn das Zeitfenster in der Vergangenheit liegt.
<Basistopic>/advice/<Gerätename>/high_price_active<Basistopic>_advice_<Gerätename>_high_price_active0 oder 1. Das Hochpreis-Fenster ist gerade aktiv. Die 1 bleibt für die gesamte Zeitdauer der eingestellten Geräte-Laufzeit aktiv. (beim Geschirrspüler-Beispiel für 3 Stunden)
<Basistopic>/advice/<Gerätename>/high_price_avg<Basistopic>_advice_<Gerätename>_high_price_avgDer höchste Durchschnittspreis über die Laufzeit
<Basistopic>/advice/<Gerätename>/low_hour<Basistopic>_advice_<Gerätename>_low_hourDie Start-Stunde mit dem niedrigsten Preis
<Basistopic>/advice/<Gerätename>/low_in<Basistopic>_advice_<Gerätename>_low_inDie Zeit in Stunden, bis das günstigste Zeitfenster beginnt. Der Wert kann auch negativ sein, wenn das Zeitfenster in der Vergangenheit liegt.
<Basistopic>/advice/<Gerätename>/low_price_active<Basistopic>_advice_<Gerätename>_low_price_active0 oder 1. Das Tiefpreis-Fenster ist gerade aktiv. Die 1 bleibt für die gesamte Zeitdauer der eingestellten Geräte-Laufzeit aktiv. (beim Geschirrspüler-Beispiel für 3 Stunden)
<Basistopic>/advice/<Gerätename>/low_price_avg<Basistopic>_advice_<Gerätename>_low_price_avgDer günstigste Durchschnittspreis über die Laufzeit

Weitere Informationen

  • Die Aktualisierung der Daten wird jeweils in einem Logfile protokolliert. Siehe Log Manager.
  • Die Übermittlung erfolgt zu jeder vollen Stunde mit 10 Sekunden Verzögerung (10 Sekunden nach jeder vollen Stunde), sowie bei jedem Reboot von LoxBerry per Cron. Außerdem erfolgt eine erneute Übermittlung bei jeder Änderung an der Konfiguration im Webinterface.
  • Die eigentlichen Daten von aWATTar werden nur einmal täglich um Mitternacht abgerufen. Das Datenfile von aWATTar wird in der Ramdisk abgelegt. Nach einem LoxBerry-Reboot (wodurch die RAM-Disk geleert wird) oder beim Ändern des Landes erfolgt immer ein Online-Abruf. Ob die Daten von aWATTar direkt, oder aus dem lokalen Datenfile abgerufen wurden, ist im Logfile sichtbar.
  • Bitte wie immer berücksichtigen: Das MQTT-Gateway cached gleichbleibende Daten. Das Topic <Basistopic>/date/now wird (da sich die Uhrzeit immer ändert) immer neu übertragen. Das kann zum Testen der Übertragung herangezogen werden.
  • <Basistopic>/date/now_loxtime und/oder <Basistopic>/date/fetch_epoch sollte am Miniserver zur Überprüfung herangezogen werden, ob noch Daten übermittelt werden (siehe epochtime (Unix-Zeit) zum Prüfen auf Datenaktualität nutzen).

Preisanpassung Beispiele

Österreich - Linz NETZ (Linz AG)

Tarife und Steuern lt. Preisblatt gültig ab 1.1.2019

  • Netznutzungsentgelt: 3,46 ct/kWh
  • Netzverlustleistung: 0,2 ct/kWh
  • Elektrizitätsabgabe: 1,5 ct/kWh
  • Ökostromförderbeitrag (Arbeit): 0,69 ct/kWh
  • Ökostromförderbeitrag (Verlust): 0,05 ct/kWh
  • MWSt. 20%

Formel: (p+3.46+0.2+1.5+0.69+0.05)*1.2

Vereinfacht: (p+5.9)*1.2

Die Pauschalbeträge pro Jahr (Grundgebühr aWATTar, Leistungspauschale, Messentgelt, Kwk-Pauschale, Ökostrompauschale) sind in der Formel nicht enthalten!

Roadmap

MQTT Gateway

Fragen stellen und Fehler melden

Issues bei GitHub: https://github.com/christianTF/LoxBerry-Plugin-aWATTar/issues

Im Loxforum in diesem Thread: