====== 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 **Version 0.1.6 BETA** * LoxBerry 3.0 Compatibility * Removed Austrian aWattar Token (not required anymore) ++++ == 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! Dieses Plugin ist LoxBerry 3.0 kompatibel. ===== 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 [[plugins:mqtt_gateway:start|MQTT Gateway Plugin]], werden diese Änderungen direkt an den Miniserver übertragen.  Eine schnelle Übersicht zum Blättern in den //österreichischen// HOURLY-Preisen gibt es hier: https://testing.awattar.com/awattar-web/product-price-transparency-charts/ (Achtung Netto-Preise!) ===== 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 ===== {{plugins:awattar_plugin:1244333541.png?h=250}} 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: [[https://loxwiki.atlassian.net/wiki/spaces/LOX/pages/1522696312/Templates+in+Loxone+Config+einbinden|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: * /date/# - Listet Zeitinformationen zum Abruf der Daten * /price/# - Der aktuelle Preis und dessen Ranking, die aktuelle Stunde und Wochentag, Durchschnittswerte, Minimum und Maximum des Tages  * /prices/# - Es wird der Preis jeder Stunde des Tages gesendet  * /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 * /advise//# - 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 ==== ^Topic ^via MQTT-Gateway ^Beschreibung ^ |/date/fetch |_date_fetch |Zeit des letzten Online-Abrufs der Daten (yyyy-mm-dd hh:mm) | |/date/fetch_epoch |_date_fetch_epoch|Zeit des letzten Online-Abrufs der Daten (Unix Epoch) | |/date/fetch_loxtime|_date_loxtime |Zeit des letzten Online-Abrufs der Daten (Loxone Timestamp) | |/date/now |_date_now |Zeit der letzten Übermittlung an den MQTT Broker (yyyy-mm-dd hh:mm)| |/date/now_epoch |_date_now_epoch |Zeit der letzten Übermittlung an den MQTT Broker (Unix Epoch) | |/date/now_loxtime |_date_now_loxtime|Zeit der letzten Übermittlung an den MQTT Broker (Loxone Timestamp)| |/date/weekday |_date_weekday |Aktueller Wochentag (0...Sonntag, 1...Montag usw. bis 6) | ==== /price - Aktueller Preis und berechnete Werte ==== ^Topic ^via MQTT-Gateway ^Beschreibung ^ |/price/average |_price_average |Arithmetischer Mittelwert der Preise des aktuellen Tages | |/price/current |_price_current |Aktueller Stundenpreis | |/price/diff2average|_price_diff2average|Die Differenz des aktuellen Preises zum Mittelwert-Preis (negativ: Es ist billiger als Mittelwert, positiv: Es ist teuerer als Mittelwert)| |/price/diff2median |_price_diff2median |Die Differenz des aktuellen Preises zum Median-Preis (negativ: Es ist billiger als Median, positiv: Es ist teuerer als Median) | |/price/high |_price_high |Höchster Preis des Tages | |/price/hour |_price_hour |Aktuelle Stunde des Tages | |/price/low |_price_low |Niedrigster Preis des Tages | |/price/median |_price_median |Median der Preise des aktuellen Tages | |/price/ranking |_price_ranking |Der Rang des aktuellen Preises im Tagesvergleich, z.B. 5 bedeutet fünftgünstigster Preis des Tages | |/price/spread |_price_spread |Das ist die Preis-Spreizung des Tages in ct/kWh (Differenz Höchst zu Niedrigst). Es gibt praktisch die maximal mögliche Ersparnis aus.  | ==== /prices ==== ^Topic ^via MQTT-Gateway ^Beschreibung ^ |/prices/hour_00|_prices_hour_00|Preis von 0:00 Uhr bis 1:00 Uhr | |/prices/hour_01|_prices_hour_01|Preis von 1:00 Uhr bis 2:00 Uhr | |... |... |... | |/prices/hour_23|_prices_hour_23|Preis 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. ^Topic ^via MQTT-Gateway ^Beschreibung ^ |/threshold/00|_threshold_00|Günstigster Preis | |/threshold/01|_threshold_01|Zweitgünstigster Preis| |... |... |... | |/threshold/23|_threshold_23|Teuerster 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/ ==== 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). ^Topic ^via MQTT-Gateway ^Beschreibung | |/advice//device |_advice__device |Der Name des Geräts | |/advice//deviceuid |_advice__deviceuid |Interne, eindeutige Nummer (UID) des Geräts | |/advice//duration |_advice__duration |Die konfigurierte Laufzeit des Geräts in Stunden | |/advice//high_hour |_advice__high_hour |Die Start-Stunde mit dem höchsten Preis | |/advice//high_in |_advice__high_in |Die Zeit in Stunden, bis das teuerste Zeitfenster beginnt. Der Wert kann auch negativ sein, wenn das Zeitfenster in der Vergangenheit liegt. | |/advice//high_price_active|_advice__high_price_active|0 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)| |/advice//high_price_avg |_advice__high_price_avg |Der höchste Durchschnittspreis über die Laufzeit | |/advice//low_hour |_advice__low_hour |Die Start-Stunde mit dem niedrigsten Preis | |/advice//low_in |_advice__low_in |Die Zeit in Stunden, bis das günstigste Zeitfenster beginnt. Der Wert kann auch negativ sein, wenn das Zeitfenster in der Vergangenheit liegt. | |/advice//low_price_active |_advice__low_price_active |0 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)| |/advice//low_price_avg |_advice__low_price_avg |Der 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 /date/now wird (da sich die Uhrzeit immer ändert) immer neu übertragen. Das kann zum Testen der Übertragung herangezogen werden. * /date/now_loxtime und/oder /date/fetch_epoch sollte am Miniserver zur Überprüfung herangezogen werden, ob noch Daten übermittelt werden (siehe [[https://loxwiki.atlassian.net/wiki/spaces/LOX/pages/1522696392|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 ===== ===== Links ===== [[plugins:mqtt_gateway:start|MQTT Gateway]] ===== Fragen stellen und Fehler melden ===== Issues bei GitHub: https://github.com/christianTF/LoxBerry-Plugin-aWATTar/issues