TapHome

OKTE Spotpreise

Packet Parser → HTTP
Eingereicht von
Zuletzt aktualisiert: 03. 2026

OKTE (Organizátor krátkodobého trhu s elektrinou) ist der slowakische Strommarktbetreiber. Er veröffentlicht Day-Ahead-Markt (DAM) Spotpreise — den stündlichen Großhandelspreis für Elektrizität in EUR/MWh, der durch die Auktion des Vortages bestimmt wird.

Die TapHome-Vorlage ruft diese Preise über HTTP Packet Parser von der öffentlichen OKTE-API (isot.okte.sk) ab. Sie liefert den Preis der aktuellen Stunde, Preisrankings, Min/Max/Durchschnittsberechnungen und Zeitfensteranalysen — alles wird automatisch jede Stunde aktualisiert. Keine Authentifizierung erforderlich.

Konfiguration

Die Vorlage verbindet sich mit isot.okte.sk über HTTPS (Port 443). Keine IP-Adresse oder Zugangsdaten erforderlich — der Endpunkt ist eine öffentliche API.

Beim Vorlagenimport können zwei optionale benutzerdefinierte Variablen festgelegt werden:

  • Von — Startstunde eines benutzerdefinierten Zeitfensters (0–23, Standard: 9)
  • Bis — Endstunde eines benutzerdefinierten Zeitfensters (0–23, Standard: 17)

Diese Variablen steuern die Gerätevarianten „im Zeitfenster". Die Standardwerte (9–17) decken die üblichen Arbeitszeiten ab. Falls nicht benötigt, belassen Sie sie auf den Standardwerten — die Ganztagesgeräte funktionieren unabhängig.

Funktionsweise

Das Modul fragt die OKTE-DAM-API einmal pro Stunde ab (Intervall 3600 s). Die API-Anfrage verwendet das heutige Datum:

1
GET /api/v1/dam/results?deliveryDayFrom={today}&deliveryDayTo={today}

Die Antwort enthält ein Array von Preisobjekten, jeweils mit einer period-Nummer und einem price in EUR/MWh. Je nach Tageszeit und OKTE-Veröffentlichungszeitplan kann die Antwort Preise nur für heute (24 Perioden) oder für bis zu 3 Tage (72 Perioden) enthalten.

Jedes Geräteskript parst dieses JSON-Array mit PARSEJSON(output, "$..price") und wendet Sortier-, Filter- oder Aggregationsfunktionen an, um seinen Wert abzuleiten.

Gerätefähigkeiten

Die Vorlage stellt 13 Sensorgeräte bereit. Alle sind schreibgeschützt — sie leiten Werte aus derselben API-Antwort ab.

Aktueller Preis und Rang
  • Aktueller Preis — der Spotpreis für die aktuelle Stundenperiode in EUR/MWh. Das Skript bestimmt den aktuellen Periodenindex aus NOW() und gibt den entsprechenden Preis aus dem Array zurück.
  • Aktueller Periodenrang — der Rang des Preises der aktuellen Stunde unter allen verfügbaren Perioden (1 = günstigste). Nützlich für Automatisierungsregeln wie „Wärmepumpe nur einschalten, wenn die aktuelle Stunde zu den 8 günstigsten gehört."
  • Aktueller Periodenrang im Zeitfenster — wie oben, aber begrenzt auf das benutzerdefinierte Von–Bis-Fenster. Gibt NaN zurück, wenn die aktuelle Stunde außerhalb des Fensters liegt oder wenn Von >= Bis.
Preisextreme
  • Höchster Tagespreis — maximaler Spotpreis über alle verfügbaren Perioden
  • Niedrigster Tagespreis — minimaler Spotpreis über alle verfügbaren Perioden
  • Höchster Preis im Zeitfenster — maximaler Preis innerhalb des Von–Bis-Fensters
  • Niedrigster Preis im Zeitfenster — minimaler Preis innerhalb des Von–Bis-Fensters
Durchschnitte
  • Durchschnittlicher Tagespreis — arithmetisches Mittel aller verfügbaren Periodenpreise
  • Durchschnittlicher Preis im Zeitfenster — arithmetisches Mittel innerhalb des Von–Bis-Fensters
Periodenidentifikation
  • Günstigste Periode des Tages — die 1-basierte Periodennummer der günstigsten Stunde (z.B. 3 bedeutet 02:00–03:00)
  • Günstigste verbleibende Periode — die günstigste Stunde ab der aktuellen Stunde. Aktualisiert sich dynamisch im Tagesverlauf.
Anzahlen
  • Periodenanzahl — Gesamtzahl der Preisperioden in der API-Antwort (typischerweise 24 oder 72)
  • Periodenanzahl im Zeitfenster — Anzahl der Perioden innerhalb des Von–Bis-Fensters

Dienstattribute

Das Modul stellt bis zu 96 Dienstattribute bereit (Periode 1 bis Periode 96), die jeweils den Spotpreis für die jeweilige Stundenperiode als Zeichenkette mit „EUR"-Suffix anzeigen. In der Praxis sind 24 Attribute für einen Tag oder 72 für drei Tage ausgefüllt.

Diese Attribute bieten einen vollständigen Preisplan, der in der TapHome-Moduldetailansicht sichtbar ist.

Benutzerdefinierte Variablen (Von / Bis)

Mehrere Geräte haben Varianten „im Zeitfenster", die die Preisdaten auf eine Teilmenge von Stunden filtern. Das Fenster wird durch zwei benutzerdefinierte Variablen definiert, die beim Vorlagenimport festgelegt werden:

  • Von — die Startstunde (einschließlich), Wert 0–23
  • Bis — die Endstunde (ausschließlich), Wert 0–23

Zum Beispiel analysiert die Einstellung Von=8 und Bis=16 Preise nur zwischen 08:00 und 16:00. Dies ist nützlich, wenn Sie den Energieverbrauch zu bestimmten Zeiten optimieren möchten — etwa Geräte nur während der günstigsten Stunden Ihres Arbeitstages laufen lassen.

Wenn Von >= Bis, geben alle Fenstergeräte NaN zurück.

Automatisierungsbeispiele

Geräte während der günstigsten Stunden betreiben

Verwenden Sie das Gerät Aktueller Periodenrang in einer smart rule Bedingung. Um beispielsweise eine Poolpumpe nur während der 6 günstigsten Stunden des Tages zu betreiben:

  • Bedingung: Aktueller Periodenrang <= 6
  • Aktion: Poolpumpe einschalten
Spitzenpreise vermeiden

Verwenden Sie das Gerät Aktueller Preis mit einem Schwellenwert:

  • Bedingung: Aktueller Preis > 150 (EUR/MWh)
  • Aktion: Nicht wesentliche Verbraucher ausschalten
Zeitfensteroptimierung

Setzen Sie Von=22, Bis=6, um ein Nachtfenster zu definieren, und verwenden Sie dann Niedrigster Preis im Zeitfenster oder Aktueller Periodenrang im Zeitfenster, um das Laden der Batterie oder den Betrieb des Warmwasserbereiters während der günstigsten Nachtstunden zu planen.

Fehlerbehebung

Alle Geräte zeigen Null oder keine Daten an
  1. Prüfen Sie die Internetverbindung am TapHome Core — die Vorlage erfordert ausgehenden HTTPS-Zugang zu isot.okte.sk
  2. Überprüfen Sie, ob die API antwortet — öffnen Sie https://isot.okte.sk/api/v1/dam/results?deliveryDayFrom=2026-03-28&deliveryDayTo=2026-03-28 im Browser
  3. DAM-Preise für den nächsten Tag werden typischerweise nach 12:45 CET veröffentlicht. Vor der Veröffentlichung liefern Anfragen für das morgige Datum leere Ergebnisse.
Fenstergeräte geben NaN zurück
  1. Überprüfen Sie, dass Von < Bis in den Vorlagenimport-Parametern
  2. Prüfen Sie, ob die aktuelle Stunde in den Von–Bis-Bereich fällt (für Aktueller Periodenrang im Zeitfenster)
  3. Beachten Sie, dass Von und Bis das 24-Stunden-Format verwenden (0–23)
Preiswerte erscheinen falsch

OKTE veröffentlicht Preise in EUR/MWh. Zur Umrechnung in EUR/kWh (Haushaltsmaßstab) teilen Sie durch 1000. Die Vorlage zeigt Rohwerte aus der API ohne Umrechnung an.

Verfügbare Geräte

OKTE Spotpreise Modul
Serviceattribute
Period 1
Period 2
Period 3
Period 4
Period 5
Period 6
Period 7
Period 8
Period 9
Period 10
Period 11
Period 12
Period 13
Period 14
Period 15
Period 16
Period 17
Period 18
Period 19
Period 20
Period 21
Period 22
Period 23
Period 24
Period 25
Period 26
Period 27
Period 28
Period 29
Period 30
Period 31
Period 32
Period 33
Period 34
Period 35
Period 36
Period 37
Period 38
Period 39
Period 40
Period 41
Period 42
Period 43
Period 44
Period 45
Period 46
Period 47
Period 48
Period 49
Period 50
Period 51
Period 52
Period 53
Period 54
Period 55
Period 56
Period 57
Period 58
Period 59
Period 60
Period 61
Period 62
Period 63
Period 64
Period 65
Period 66
Period 67
Period 68
Period 69
Period 70
Period 71
Period 72
Period 73
Period 74
Period 75
Period 76
Period 77
Period 78
Period 79
Period 80
Period 81
Period 82
Period 83
Period 84
Period 85
Period 86
Period 87
Period 88
Period 89
Period 90
Period 91
Period 92
Period 93
Period 94
Period 95
Period 96
Benutzerdefinierte Variablen
From (numeric) = 9Start hour (0–23) of the time window for windowed price ranking and statistics
To (numeric) = 17End hour (0–23) of the time window for windowed price ranking and statistics

okte.sk

Lesen (Modul)
VAR today := tostring(NOW(), "yyyy-MM-dd");;
VAR response := SENDHTTPREQUEST("/api/v1/dam/results?deliveryDayFrom=" + today + "&deliveryDayTo=" + today);
IF response.IsSuccess
    output := response.Content;
ELSE
    ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Serviceattribute
Perióda 1
PARSEJSON(output, "$[?(@.period == 1)].price") + " EUR"
Perióda 2
PARSEJSON(output, "$[?(@.period == 2)].price") + " EUR"
Perióda 3
PARSEJSON(output, "$[?(@.period == 3)].price") + " EUR"
Perióda 4
PARSEJSON(output, "$[?(@.period == 4)].price") + " EUR"
Perióda 5
PARSEJSON(output, "$[?(@.period == 5)].price") + " EUR"
Perióda 6
PARSEJSON(output, "$[?(@.period == 6)].price") + " EUR"
Perióda 7
PARSEJSON(output, "$[?(@.period == 7)].price") + " EUR"
Perióda 8
PARSEJSON(output, "$[?(@.period == 8)].price") + " EUR"
Perióda 9
PARSEJSON(output, "$[?(@.period == 9)].price") + " EUR"
Perióda 10
PARSEJSON(output, "$[?(@.period == 10)].price") + " EUR"
Perióda 11
PARSEJSON(output, "$[?(@.period == 11)].price") + " EUR"
Perióda 12
PARSEJSON(output, "$[?(@.period == 12)].price") + " EUR"
Perióda 13
PARSEJSON(output, "$[?(@.period == 13)].price") + " EUR"
Perióda 14
PARSEJSON(output, "$[?(@.period == 14)].price") + " EUR"
Perióda 15
PARSEJSON(output, "$[?(@.period == 15)].price") + " EUR"
Perióda 16
PARSEJSON(output, "$[?(@.period == 16)].price") + " EUR"
Perióda 17
PARSEJSON(output, "$[?(@.period == 17)].price") + " EUR"
Perióda 18
PARSEJSON(output, "$[?(@.period == 18)].price") + " EUR"
Perióda 19
PARSEJSON(output, "$[?(@.period == 19)].price") + " EUR"
Perióda 20
PARSEJSON(output, "$[?(@.period == 20)].price") + " EUR"
Perióda 21
PARSEJSON(output, "$[?(@.period == 21)].price") + " EUR"
Perióda 22
PARSEJSON(output, "$[?(@.period == 22)].price") + " EUR"
Perióda 23
PARSEJSON(output, "$[?(@.period == 23)].price") + " EUR"
Perióda 24
PARSEJSON(output, "$[?(@.period == 24)].price") + " EUR"
Perióda 25
PARSEJSON(output, "$[?(@.period == 25)].price") + " EUR"
Perióda 26
PARSEJSON(output, "$[?(@.period == 26)].price") + " EUR"
Perióda 27
PARSEJSON(output, "$[?(@.period == 27)].price") + " EUR"
Perióda 28
PARSEJSON(output, "$[?(@.period == 28)].price") + " EUR"
Perióda 29
PARSEJSON(output, "$[?(@.period == 29)].price") + " EUR"
Perióda 30
PARSEJSON(output, "$[?(@.period == 30)].price") + " EUR"
Perióda 31
PARSEJSON(output, "$[?(@.period == 31)].price") + " EUR"
Perióda 32
PARSEJSON(output, "$[?(@.period == 32)].price") + " EUR"
Perióda 33
PARSEJSON(output, "$[?(@.period == 33)].price") + " EUR"
Perióda 34
PARSEJSON(output, "$[?(@.period == 34)].price") + " EUR"
Perióda 35
PARSEJSON(output, "$[?(@.period == 35)].price") + " EUR"
Perióda 36
PARSEJSON(output, "$[?(@.period == 36)].price") + " EUR"
Perióda 37
PARSEJSON(output, "$[?(@.period == 37)].price") + " EUR"
Perióda 38
PARSEJSON(output, "$[?(@.period == 38)].price") + " EUR"
Perióda 39
PARSEJSON(output, "$[?(@.period == 39)].price") + " EUR"
Perióda 40
PARSEJSON(output, "$[?(@.period == 40)].price") + " EUR"
Perióda 41
PARSEJSON(output, "$[?(@.period == 41)].price") + " EUR"
Perióda 42
PARSEJSON(output, "$[?(@.period == 42)].price") + " EUR"
Perióda 43
PARSEJSON(output, "$[?(@.period == 43)].price") + " EUR"
Perióda 44
PARSEJSON(output, "$[?(@.period == 44)].price") + " EUR"
Perióda 45
PARSEJSON(output, "$[?(@.period == 45)].price") + " EUR"
Perióda 46
PARSEJSON(output, "$[?(@.period == 46)].price") + " EUR"
Perióda 47
PARSEJSON(output, "$[?(@.period == 47)].price") + " EUR"
Perióda 48
PARSEJSON(output, "$[?(@.period == 48)].price") + " EUR"
Perióda 49
PARSEJSON(output, "$[?(@.period == 49)].price") + " EUR"
Perióda 50
PARSEJSON(output, "$[?(@.period == 50)].price") + " EUR"
Perióda 51
PARSEJSON(output, "$[?(@.period == 51)].price") + " EUR"
Perióda 52
PARSEJSON(output, "$[?(@.period == 52)].price") + " EUR"
Perióda 53
PARSEJSON(output, "$[?(@.period == 53)].price") + " EUR"
Perióda 54
PARSEJSON(output, "$[?(@.period == 54)].price") + " EUR"
Perióda 55
PARSEJSON(output, "$[?(@.period == 55)].price") + " EUR"
Perióda 56
PARSEJSON(output, "$[?(@.period == 56)].price") + " EUR"
Perióda 57
PARSEJSON(output, "$[?(@.period == 57)].price") + " EUR"
Perióda 58
PARSEJSON(output, "$[?(@.period == 58)].price") + " EUR"
Perióda 59
PARSEJSON(output, "$[?(@.period == 59)].price") + " EUR"
Perióda 60
PARSEJSON(output, "$[?(@.period == 60)].price") + " EUR"
Perióda 61
PARSEJSON(output, "$[?(@.period == 61)].price") + " EUR"
Perióda 62
PARSEJSON(output, "$[?(@.period == 62)].price") + " EUR"
Perióda 63
PARSEJSON(output, "$[?(@.period == 63)].price") + " EUR"
Perióda 64
PARSEJSON(output, "$[?(@.period == 64)].price") + " EUR"
Perióda 65
PARSEJSON(output, "$[?(@.period == 65)].price") + " EUR"
Perióda 66
PARSEJSON(output, "$[?(@.period == 66)].price") + " EUR"
Perióda 67
PARSEJSON(output, "$[?(@.period == 67)].price") + " EUR"
Perióda 68
PARSEJSON(output, "$[?(@.period == 68)].price") + " EUR"
Perióda 69
PARSEJSON(output, "$[?(@.period == 69)].price") + " EUR"
Perióda 70
PARSEJSON(output, "$[?(@.period == 70)].price") + " EUR"
Perióda 71
PARSEJSON(output, "$[?(@.period == 71)].price") + " EUR"
Perióda 72
PARSEJSON(output, "$[?(@.period == 72)].price") + " EUR"
Perióda 73
PARSEJSON(output, "$[?(@.period == 73)].price") + " EUR"
Perióda 74
PARSEJSON(output, "$[?(@.period == 74)].price") + " EUR"
Perióda 75
PARSEJSON(output, "$[?(@.period == 75)].price") + " EUR"
Perióda 76
PARSEJSON(output, "$[?(@.period == 76)].price") + " EUR"
Perióda 77
PARSEJSON(output, "$[?(@.period == 77)].price") + " EUR"
Perióda 78
PARSEJSON(output, "$[?(@.period == 78)].price") + " EUR"
Perióda 79
PARSEJSON(output, "$[?(@.period == 79)].price") + " EUR"
Perióda 80
PARSEJSON(output, "$[?(@.period == 80)].price") + " EUR"
Perióda 81
PARSEJSON(output, "$[?(@.period == 81)].price") + " EUR"
Perióda 82
PARSEJSON(output, "$[?(@.period == 82)].price") + " EUR"
Perióda 83
PARSEJSON(output, "$[?(@.period == 83)].price") + " EUR"
Perióda 84
PARSEJSON(output, "$[?(@.period == 84)].price") + " EUR"
Perióda 85
PARSEJSON(output, "$[?(@.period == 85)].price") + " EUR"
Perióda 86
PARSEJSON(output, "$[?(@.period == 86)].price") + " EUR"
Perióda 87
PARSEJSON(output, "$[?(@.period == 87)].price") + " EUR"
Perióda 88
PARSEJSON(output, "$[?(@.period == 88)].price") + " EUR"
Perióda 89
PARSEJSON(output, "$[?(@.period == 89)].price") + " EUR"
Perióda 90
PARSEJSON(output, "$[?(@.period == 90)].price") + " EUR"
Perióda 91
PARSEJSON(output, "$[?(@.period == 91)].price") + " EUR"
Perióda 92
PARSEJSON(output, "$[?(@.period == 92)].price") + " EUR"
Perióda 93
PARSEJSON(output, "$[?(@.period == 93)].price") + " EUR"
Perióda 94
PARSEJSON(output, "$[?(@.period == 94)].price") + " EUR"
Perióda 95
PARSEJSON(output, "$[?(@.period == 95)].price") + " EUR"
Perióda 96
PARSEJSON(output, "$[?(@.period == 96)].price") + " EUR"
Aktueller Preis Variable Nur lesen

Spotpreis für die aktuelle Stundenperiode in EUR/MWh — dynamisch aus dem Preisarray basierend auf der aktuellen Zeit ermittelt

numeric Einheit: EUR json_path

Aktueller Preis

Lesen
var prices := PARSEJSON(output, "$..price");
VAR date := NOW();
var periodHour := LENGTH(prices) / 24;	
var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);

GETAT(prices, actualperiod)
Aktueller Periodenrang Variable Nur lesen

Rang des Preises der aktuellen Stunde unter allen Perioden (1 = günstigste Stunde des Tages)

numeric json_path

Aktueller Periodenrang

Lesen
var prices := PARSEJSON(output, "$..price");
var byPrice := ORDERINDEX(prices);
VAR date := NOW();
var periodHour := LENGTH(prices) / 24;	
var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);

INDEXOF(byPrice, actualperiod) + 1
Aktueller Periodenrang im Zeitfenster Variable Nur lesen

Rang des Preises der aktuellen Stunde innerhalb eines benutzerdefinierten Von–Bis-Zeitfensters — gibt NaN außerhalb des Fensters zurück

numeric json_path

Aktueller Periodenrang im Zeitfenster

Lesen
VAR date := NOW();
IF date.hour < From or date.hour > To or From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$..price");
	var periodHour := LENGTH(prices) / 24;
	var windowPrices := COPY(prices, From * periodHour, (To - From) * periodHour);
	var byPrice := ORDERINDEX(windowPrices);
	
	var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);

	RETURN(INDEXOF(byPrice, actualperiod - From * periodHour) +1);
END
Höchster Tagespreis Variable Nur lesen

Maximaler Spotpreis über alle verfügbaren Perioden (EUR/MWh)

numeric Einheit: EUR json_path

Höchster Tagespreis

Lesen
var prices := PARSEJSON(output, "$..price");
GETAT(ORDERDESC(prices), 0)
Höchster Preis im Zeitfenster Variable Nur lesen

Maximaler Spotpreis innerhalb des benutzerdefinierten Von–Bis-Zeitfensters (EUR/MWh)

numeric Einheit: EUR json_path

Höchster Preis im Zeitfenster

Lesen
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$..price");
	var periodHour := LENGTH(prices) / 24;	
	var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);
	var windowPrices := COPY(prices, From * periodHour, (To - From) * periodHour);
	var byPrice := ORDERDESC(windowPrices);

	RETURN(GETAT(byPrice, 0));
END
Niedrigster Tagespreis Variable Nur lesen

Minimaler Spotpreis über alle verfügbaren Perioden (EUR/MWh)

numeric Einheit: EUR json_path

Niedrigster Tagespreis

Lesen
var prices := PARSEJSON(output, "$..price");
GETAT(ORDER(prices), 0)
Niedrigster Preis im Zeitfenster Variable Nur lesen

Minimaler Spotpreis innerhalb des benutzerdefinierten Von–Bis-Zeitfensters (EUR/MWh)

numeric Einheit: EUR json_path

Niedrigster Preis im Zeitfenster

Lesen
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$..price");
	var periodHour := LENGTH(prices) / 24;	
	#var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);
	var windowPrices := COPY(prices, From * periodHour, (To - From) * periodHour);
	var byPrice := ORDER(windowPrices);

	RETURN(GETAT(byPrice, 0));
END
Günstigste Periode des Tages Variable Nur lesen

1-basierte Periodennummer der günstigsten Stunde des Tages (z.B. 3 = 02:00–03:00)

numeric json_path

Günstigste Periode des Tages

Lesen
var prices := PARSEJSON(output, "$..price");
GETAT(ORDERINDEX(prices), 0) +1
Günstigste verbleibende Periode Variable Nur lesen

1-basierte Periodennummer der günstigsten Stunde ab der aktuellen Stunde

numeric json_path

Günstigste verbleibende Periode

Lesen
var prices := PARSEJSON(output, "$..price");
VAR date := NOW();
var periodHour := LENGTH(prices) / 24;	
var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);
var remainingPrices := COPY(prices, actualperiod, LENGTH(prices) - actualperiod);
var byPrice := ORDERINDEX(remainingPrices);

GETAT(byPrice, 0) + actualperiod +1
Periodenanzahl Variable Nur lesen

Gesamtzahl der stündlichen Preisperioden in der API-Antwort (typischerweise 24 oder 72)

numeric json_path

Periodenanzahl

Lesen
var prices := PARSEJSON(output, "$..price");
LENGTH(prices);
Periodenanzahl im Zeitfenster Variable Nur lesen

Anzahl der stündlichen Preisperioden innerhalb des benutzerdefinierten Von–Bis-Zeitfensters

numeric json_path

Periodenanzahl im Zeitfenster

Lesen
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$..price");
	var periodHour := LENGTH(prices) / 24;
	var windowPrices := COPY(prices, From * periodHour, (To - From) * periodHour);

	RETURN(LENGTH(windowPrices));
END
Durchschnittlicher Tagespreis Variable Nur lesen

Arithmetisches Mittel aller verfügbaren Periodenpreise (EUR/MWh)

numeric Einheit: EUR json_path

Durchschnittlicher Tagespreis

Lesen
var prices := PARSEJSON(output, "$..price");
AVG(prices)
Durchschnittlicher Preis im Zeitfenster Variable Nur lesen

Arithmetisches Mittel der Spotpreise innerhalb des benutzerdefinierten Von–Bis-Zeitfensters (EUR/MWh)

numeric Einheit: EUR json_path

Durchschnittlicher Preis im Zeitfenster

Lesen
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$..price");
	var periodHour := LENGTH(prices) / 24;	
	#var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);
	var windowPrices := COPY(prices, From * periodHour, (To - From) * periodHour);

	RETURN(AVG(windowPrices));
END
Verbindung: Packet Parser → HTTP