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