geringster_preis preisdurchschnitt stunde geringster_preis_stunde TIBBERpreise_abholen stundenpreise preis_hysterese_stunden preis_hysterese zeitraum stundenpreise_heute zeitraum_json stundenpreise_morgen preis_-1 max_preis wert abholzeit result abholzeit_merker preis_0 1. Variablen einmalig bei Start setzen. geringster_preis val 0_userdata.0.Tibber.Geringster_Preis geringster_preis_stunde val 0_userdata.0.Tibber.Geringster_Preis_Stunde preis_hysterese val 0_userdata.0.Tibber.Preis_Hysterese preis_hysterese_stunden val 0_userdata.0.Tibber.Preis_Hysterese_Stunden abholzeit val 0_userdata.0.Tibber.Abholzeit stundenpreise_heute val 0_userdata.0.Tibber.Stundenpreise_heute stundenpreise_morgen val 0_userdata.0.Tibber.Stundenpreise_morgen 2. Für manuellen Aufruf zeitraum !! nach der manuellen Nutzung die Bausteine wieder deaktivieren !! Durch eintragen von "heute" oder "morgen" wird entschieden, aus welchem Datenpunkt die Preise verarbeitet werden: - "heute" --> 0_userdata.0.Tibber.Stundenpreise_heute - "morgen" --> 0_userdata.0.Tibber.Stundenpreise_morgen Ebenso wie entschieden, in welche Datenpunkte die Preise gesplittet werden sollen: - "heute" --> 0_userdata.0.Tibber.EPEX_Spot_DE_heute.ESDE_heute_1 (bis 23) - "morgen" --> 0_userdata.0.Tibber.EPEX_Spot_DE_morgen_ESDE_morgen_1 (bis 23) heute 3. Werte bei Änderung neu ermitteln Durch das Aktualisieren der Werte nach einer Änderung, kann das Script durchlaufen und muss nicht neu gestartet werden, um aktuelle Werte zu berücksichtigen. 0_userdata.0.Tibber.Preis_Hysterese ne preis_hysterese val 0_userdata.0.Tibber.Preis_Hysterese Die Änderung des Aufschlags kann vor oder nach Abholen der TIBBER-Preise erfolgen. Erfolgt die Änderung vor der Preis-Aktualisierung finden sich die aktuellen Preise in "stundenpreise_morgen". Erfolgt die Änderung nach der Preis-Aktualisierung finden sich die aktuellen Preise in "stundenpreise_heute". TRUE < 12:00 abholzeit zeitraum morgen zeitraum heute 0_userdata.0.Tibber.Abholzeit ne abholzeit val 0_userdata.0.Tibber.Abholzeit TIBBERpreise_abholen 4. um "abholzeit" Preise von Tibber abholen Preise von "today" und "tomorrow" abholen und auf Tage und Stunden splitten 5. zu Tagesbeginn aktuelle Werte ermitteln 2 0 * * * zeitraum Die Preis-/Stunden-Ermittlung findet zu Beginn des neuen Tages statt. zu diesem Zeitpunkt befinden sich sie TIBBER-Preise in "stundenpreise_morgen". morgen 6. ausgelagerte Routinen 6.1 Abrufen der TIBBER-JSON-Daten preise_holen Beschreibe diese Funktion … Preise von "today" abholen TIBBERpreise_abholen * * * * * FALSE FALSE * * * * FIRST FROM_START abholzeit 2 * FROM_START FROM_START abholzeit 4 5 TRUE curl \ -H "Authorization: Bearer *****" \ Anstatt der 5 ***** ist das TIBBER-Token einzusetzen. -H "Content-Type: application/json" \ -d '{ "query": "{viewer {homes {currentSubscription {priceInfo {today {total energy tax startsAt }}}}}}" }' https://api.tibber.com/v1-beta/gql stundenpreise_heute result abholzeit_merker abholzeit 0_userdata.0.Tibber.Stundenpreise_heute FALSE result zeitraum heute 2 sec Preise von "tomorrow" abholen TRUE Die Preise vom kommenden Tag könnten auch abgeholt werden. Ist aber im Anwendungsfall nicht relevant und daher deaktiviert. curl \ -H "Authorization: Bearer *****" \ Anstatt der 5 ***** ist das TIBBER-Token einzusetzen. -H "Content-Type: application/json" \ -d '{ "query": "{viewer {homes {currentSubscription {priceInfo {tomorrow {total energy tax startsAt }}}}}}" }' https://api.tibber.com/v1-beta/gql stundenpreise_morgen result 0_userdata.0.Tibber.Stundenpreise_morgen FALSE result zeitraum morgen 6.2 Neue Preise auf Tage und Stunden aufsplitten - für VIS stundenpreise_splitten Beschreibe diese Funktion … preisdurchschnitt 0 Im TIBBER-JSON wird heute/morgen mit "today"/"tomorrow" geschrieben. Die Datenpunkte unterscheiden aber in "heute/morgen". Beim Auslesen des JSON muss daher das englische Wort verwendet werden :-( Schlechtes Anfangsdesign! Ich hätte die Datenpunkte ebenfalls mit "today"/"tomorrow" unterscheiden müssen, dann wäre diese Abfrage überflüssig. EQ zeitraum heute stundenpreise stundenpreise_heute zeitraum_json today stundenpreise stundenpreise_morgen zeitraum_json tomorrow stunde 0 23 1 wert data.viewer.homes[0].currentSubscription.priceInfo. zeitraum_json Hier wird das englische Wort benötigt. [ stunde ].total stundenpreise preisdurchschnitt ADD 1 preisdurchschnitt 1 wert true FALSE Object ID 0_userdata.0.Tibber.EPEX_Spot_DE_ zeitraum .ESDE_ zeitraum _ stunde TRUE wert 0 preisdurchschnitt 4 3.1234 DIVIDE 1 preisdurchschnitt 24 true FALSE Object ID 0_userdata.0.Tibber.EPEX_Spot_DE_ zeitraum .ESDE_ zeitraum _Mittel_ungewichtet TRUE preisdurchschnitt 0 6.3. Geringsten Stundenpreis ermitteln guenstigster_preis Zuerst wird der geringste Preis und damit die günstigste Stunde ermittelt. Beide Werte müssten nicht als Datenpunkt in den Objekten abgebildet werden. Habe ich nur gemacht, um das Ergebnis zu sehen. EQ zeitraum heute stundenpreise stundenpreise_heute zeitraum_json today stundenpreise stundenpreise_morgen zeitraum_json tomorrow stunde 0 preis_-1 data.viewer.homes[0].currentSubscription.priceInfo. zeitraum_json Hier wird das englische Wort benötigt. [ stunde ].total stundenpreise stunde 1 23 1 preis_0 data.viewer.homes[0].currentSubscription.priceInfo. zeitraum_json Hier wird das englische Wort benötigt. [ stunde ].total stundenpreise Der Vergleich der Stundenpreise (Schleife) fängt mit der 1ten Stunde an - 01:00 bis 01:59 -, da zur 0ten Stunde kein vorheriger Vergleichspreis vorliegt. Daher muss aber die 0'te Stunde separat behandelt werden. EQ stunde 1 LT preis_0 preis_-1 geringster_preis preis_0 geringster_preis_stunde 1 geringster_preis preis_-1 geringster_preis_stunde 0 LT preis_0 geringster_preis geringster_preis preis_0 geringster_preis_stunde stunde 0_userdata.0.Tibber.Geringster_Preis FALSE geringster_preis 0_userdata.0.Tibber.Geringster_Preis_Stunde FALSE geringster_preis_stunde 6.4. Stunden mit günstigen Preisen ermitteln guenstige_stunden Mit dem vorab ermittelten geringsten Stundenpreis + Hysterese, wird jeder Stundenpreis verglichen und die günstigen Stunden ermittelt. Diese günstigen Stunden werden als Datenpunkt weggeschrieben, um für die EPEX-Freigabe im Geräte-Script herangezogen zu werden. EQ zeitraum heute stundenpreise stundenpreise_heute zeitraum_json today stundenpreise stundenpreise_morgen zeitraum_json tomorrow preis_hysterese_stunden max_preis DIVIDE 1 MULTIPLY 1 geringster_preis 1 ADD 100 1 preis_hysterese 100 stunde 0 23 1 preis_0 data.viewer.homes[0].currentSubscription.priceInfo. zeitraum_json [ stunde ].total stundenpreise LTE preis_0 max_preis INSERT LAST preis_hysterese_stunden stunde 0_userdata.0.Tibber.Preis_Hysterese_Stunden FALSE preis_hysterese_stunden 6.5. Bei Tageswechsel Preise umziehen epex_preise_kopieren Beschreibe diese Funktion … stunde 0 23 1 true FALSE Object ID 0_userdata.0.Tibber.EPEX_Spot_DE_heute.ESDE_heute_ stunde TRUE val 0_userdata.0.Tibber.EPEX_Spot_DE_morgen.ESDE_morgen_ stunde 0 true FALSE Object ID 0_userdata.0.Tibber.EPEX_Spot_DE_morgen.ESDE_morgen_ stunde TRUE 0 0