TapHome

OTE-CR Ceny spot

Packet Parser → HTTP
Dodane przez
Ostatnia aktualizacja: 03. 2026

OTE-CR (Operátor trhu s elektřinou) to czeski operator rynku energii elektrycznej i gazu. Szablon TapHome pobiera ceny spot z rynku dnia następnego z publicznego API OTE-CR i udostępnia je jako urządzenia — aktualna cena, statystyki dzienne, ranking i warianty z oknem czasowym. Ceny są publikowane w EUR za MWh, a szablon zawiera wbudowaną zmienną do przeliczania walut w celu wyświetlania wartości w CZK.

Szablon odpytuje API OTE-CR raz na godzinę i pobiera do 96 godzinowych okresów cenowych (4 dni danych). Nie jest wymagane żadne uwierzytelnianie — punkt końcowy API jest publiczny.

Konfiguracja

Podczas importu szablonu TapHome łączy się z www.ote-cr.cz przez HTTPS (port 443). Nie jest potrzebny adres IP ani dane logowania — punkt końcowy jest stały.

Dwa opcjonalne parametry importu sterują urządzeniami z oknem czasowym:

  • From — godzina początkowa (0–23, domyślnie: 9) dla filtra okna czasowego
  • To — godzina końcowa (0–23, domyślnie: 17) dla filtra okna czasowego

Wartości domyślne (9–17) obejmują standardowe godziny pracy. Dostosuj je do preferowanego okna analizy.

Po imporcie zmienna Kurs wymiany walut (kurz) jest domyślnie ustawiona na 1 — co oznacza, że wszystkie urządzenia cenowe wyświetlają surowe wartości w EUR/MWh. Ustaw ją na aktualny kurs EUR/CZK (np. 25,2), aby wszystkie urządzenia cenowe wyświetlały wartości w CZK. Kurs możesz ustawić ręcznie w szczegółach urządzenia lub powiązać go z szablonem Kurs wymiany ČNB w celu automatycznych dziennych aktualizacji (patrz poniżej).

Możliwości urządzeń

Aktualna cena

Urządzenie Aktualna cena odczytuje cenę spot dla bieżącej godziny. Szablon określa aktywny okres na podstawie zegara systemowego i mnoży wartość w EUR przez kurs wymiany, aby wyświetlić cenę w CZK.

Ranking cen
  • Ranking bieżącego okresu — pozycja ceny bieżącej godziny wśród wszystkich okresów dnia (1 = najtańszy, 24 = najdroższy)
  • Ranking bieżącego okresu w oknie czasowym — ten sam ranking, ale ograniczony do zdefiniowanego przez użytkownika okna czasowego (From–To). Zwraca NaN, jeśli bieżąca godzina znajduje się poza oknem.
Dzienne statystyki cenowe
  • Najwyższa cena dnia — maksymalna cena spot ze wszystkich okresów, przeliczona na CZK
  • Najniższa cena dnia — minimalna cena spot ze wszystkich okresów, przeliczona na CZK
  • Średnia cena dnia — średnia arytmetyczna ze wszystkich okresów, przeliczona na CZK
Statystyki cenowe okna czasowego

Każda statystyka dzienna ma odpowiednik z oknem czasowym, który filtruje okresy do zakresu From–To:

  • Najwyższa cena w oknie czasowym
  • Najniższa cena w oknie czasowym
  • Średnia cena w oknie czasowym

Wszystkie urządzenia z oknem czasowym zwracają NaN, jeśli From >= To.

Nawigacja po okresach
  • Najtańszy okres dnia — numer okresu (od 1) najtańszej godziny dnia
  • Najtańszy pozostały okres — najtańsza godzina od bieżącego momentu
  • Liczba okresów — łączna liczba dostępnych okresów cenowych (zazwyczaj 96)
  • Liczba okresów w oknie czasowym — liczba okresów w zakresie From–To
Kurs wymiany walut

Urządzenie Kurs wymiany walut jest jedynym urządzeniem do odczytu i zapisu w szablonie. Przechowuje kurs przeliczeniowy EUR na CZK używany przez wszystkie urządzenia cenowe. Ustaw go ręcznie lub połącz z szablonem Kurs wymiany ČNB w celu automatycznych dziennych aktualizacji.

Gdy kurs wymiany jest ustawiony na 1, wszystkie urządzenia cenowe wyświetlają surowe wartości w EUR.

Atrybuty serwisowe

Szablon udostępnia 96 atrybutów serwisowych (Okres 1–Okres 96), z których każdy pokazuje surową cenę spot w EUR dla odpowiedniego slotu godzinowego. Obejmują one około 4 dni danych z rynku dnia następnego i są przydatne do diagnostyki lub tworzenia niestandardowych automatyzacji, które sprawdzają konkretne przyszłe okresy.

Połączenie z kursem ČNB

Aby zautomatyzować przeliczanie EUR na CZK:

  1. Zaimportuj szablon Kurs wymiany ČNB (Kurzy ČNB) do TapHome
  2. W szablonie OTE-CR utwórz formułę, która odczytuje kurs EUR/CZK z urządzenia ČNB i zapisuje go w urządzeniu Kurs wymiany walut
  3. Szablon ČNB aktualizuje kurs codziennie, więc wszystkie ceny OTE-CR automatycznie odzwierciedlają aktualny kurs wymiany

Przykłady automatyzacji

Ceny spot są najbardziej przydatne w połączeniu z TapHome smart rules:

  • Grzanie wody w najtańszych godzinach — porównaj ranking bieżącego okresu z progiem (np. ranking <= 4) i włącz podgrzewacz wody tylko podczas 4 najtańszych godzin dnia
  • Ładowanie baterii poza szczytem — użyj urządzenia Aktualna cena do uruchomienia ładowania baterii, gdy cena spadnie poniżej konfigurowalnego limitu
  • Przesunięcie obciążenia urządzeń — użyj urządzenia Najtańszy pozostały okres do zaplanowania pralek, zmywarek lub ładowania EV na następny najtańszy slot
  • Optymalizacja okna czasowego — ogranicz automatyzację do określonych godzin (np. 6:00–22:00) za pomocą urządzeń z oknem czasowym, aby okresy nocne zostały wykluczone z rankingu

Rozwiązywanie problemów

Wszystkie ceny pokazują zero lub NaN
  1. Sprawdź, czy TapHome CCU ma dostęp do internetu (szablon łączy się z www.ote-cr.cz przez HTTPS)
  2. Sprawdź urządzenie Liczba okresów — jeśli pokazuje 0, odpowiedź API jest pusta lub parsowanie nie powiodło się
  3. Upewnij się, że urządzenie Kurs wymiany walut jest ustawione na wartość różną od zera — kurs 0 pomnoży wszystkie ceny przez zero
Urządzenia z oknem czasowym zwracają NaN
  1. Sprawdź, czy parametry importu From i To są prawidłowo ustawione (From musi być mniejsze niż To)
  2. Jeśli bieżąca godzina jest poza zakresem From–To, urządzenie rankingu w oknie zwraca NaN zgodnie z projektem
Ceny wydają się nieaktualne

Szablon odpytuje API OTE-CR co godzinę (3600 sekund). Ceny rynku dnia następnego są publikowane przez OTE dzień wcześniej, zazwyczaj około 12:45 CET. Jeśli ceny nowego dnia nie są jeszcze widoczne, poczekaj do czasu publikacji.

Dostępne urządzenia

OTE-CR Ceny spot Moduł
Atrybuty serwisowe
Period 1Cena spot za godzinę 1 (EUR)
Period 2Cena spot za godzinę 2 (EUR)
Period 3Cena spot za godzinę 3 (EUR)
Period 4Cena spot za godzinę 4 (EUR)
Period 5Cena spot za godzinę 5 (EUR)
Period 6Cena spot za godzinę 6 (EUR)
Period 7Cena spot za godzinę 7 (EUR)
Period 8Cena spot za godzinę 8 (EUR)
Period 9Cena spot za godzinę 9 (EUR)
Period 10Cena spot za godzinę 10 (EUR)
Period 11Cena spot za godzinę 11 (EUR)
Period 12Cena spot za godzinę 12 (EUR)
Period 13Cena spot za godzinę 13 (EUR)
Period 14Cena spot za godzinę 14 (EUR)
Period 15Cena spot za godzinę 15 (EUR)
Period 16Cena spot za godzinę 16 (EUR)
Period 17Cena spot za godzinę 17 (EUR)
Period 18Cena spot za godzinę 18 (EUR)
Period 19Cena spot za godzinę 19 (EUR)
Period 20Cena spot za godzinę 20 (EUR)
Period 21Cena spot za godzinę 21 (EUR)
Period 22Cena spot za godzinę 22 (EUR)
Period 23Cena spot za godzinę 23 (EUR)
Period 24Cena spot za godzinę 24 (EUR)
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
Zmienne niestandardowe
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
kurz (numeric) = 1EUR to CZK exchange rate multiplier — all prices are multiplied by this value (set to current rate, e.g. 25.2)

ote-cr

Odczyt (moduł)
VAR today := tostring(NOW(), "yyyy-MM-dd");
VAR response := SENDHTTPREQUEST("/cs/kratkodobe-trhy/elektrina/denni-trh/chart-data");
IF response.IsSuccess
    output := response.Content;
ELSE
    ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Atrybuty serwisowe
Perioda 1
PARSEJSON(output, "$.data.dataLine[1].point[0].y") + " EUR"
Perioda 2
PARSEJSON(output, "$.data.dataLine[1].point[1].y") + " EUR"
Perioda 3
PARSEJSON(output, "$.data.dataLine[1].point[2].y") + " EUR"
Perioda 4
PARSEJSON(output, "$.data.dataLine[1].point[3].y") + " EUR"
Perioda 5
PARSEJSON(output, "$.data.dataLine[1].point[4].y") + " EUR"
Perioda 6
PARSEJSON(output, "$.data.dataLine[1].point[5].y") + " EUR"
Perioda 7
PARSEJSON(output, "$.data.dataLine[1].point[6].y") + " EUR"
Perioda 8
PARSEJSON(output, "$.data.dataLine[1].point[7].y") + " EUR"
Perioda 9
PARSEJSON(output, "$.data.dataLine[1].point[8].y") + " EUR"
Perioda 10
PARSEJSON(output, "$.data.dataLine[1].point[9].y") + " EUR"
Perioda 11
PARSEJSON(output, "$.data.dataLine[1].point[10].y") + " EUR"
Perioda 12
PARSEJSON(output, "$.data.dataLine[1].point[11].y") + " EUR"
Perioda 13
PARSEJSON(output, "$.data.dataLine[1].point[12].y") + " EUR"
Perioda 14
PARSEJSON(output, "$.data.dataLine[1].point[13].y") + " EUR"
Perioda 15
PARSEJSON(output, "$.data.dataLine[1].point[14].y") + " EUR"
Perioda 16
PARSEJSON(output, "$.data.dataLine[1].point[15].y") + " EUR"
Perioda 17
PARSEJSON(output, "$.data.dataLine[1].point[16].y") + " EUR"
Perioda 18
PARSEJSON(output, "$.data.dataLine[1].point[17].y") + " EUR"
Perioda 19
PARSEJSON(output, "$.data.dataLine[1].point[18].y") + " EUR"
Perioda 20
PARSEJSON(output, "$.data.dataLine[1].point[19].y") + " EUR"
Perioda 21
PARSEJSON(output, "$.data.dataLine[1].point[20].y") + " EUR"
Perioda 22
PARSEJSON(output, "$.data.dataLine[1].point[21].y") + " EUR"
Perioda 23
PARSEJSON(output, "$.data.dataLine[1].point[22].y") + " EUR"
Perioda 24
PARSEJSON(output, "$.data.dataLine[1].point[23].y") + " EUR"
Perioda 25
PARSEJSON(output, "$.data.dataLine[1].point[24].y") + " EUR"
Perioda 26
PARSEJSON(output, "$.data.dataLine[1].point[25].y") + " EUR"
Perioda 27
PARSEJSON(output, "$.data.dataLine[1].point[26].y") + " EUR"
Perioda 28
PARSEJSON(output, "$.data.dataLine[1].point[27].y") + " EUR"
Perioda 29
PARSEJSON(output, "$.data.dataLine[1].point[28].y") + " EUR"
Perioda 30
PARSEJSON(output, "$.data.dataLine[1].point[29].y") + " EUR"
Perioda 31
PARSEJSON(output, "$.data.dataLine[1].point[30].y") + " EUR"
Perioda 32
PARSEJSON(output, "$.data.dataLine[1].point[31].y") + " EUR"
Perioda 33
PARSEJSON(output, "$.data.dataLine[1].point[32].y") + " EUR"
Perioda 34
PARSEJSON(output, "$.data.dataLine[1].point[33].y") + " EUR"
Perioda 35
PARSEJSON(output, "$.data.dataLine[1].point[34].y") + " EUR"
Perioda 36
PARSEJSON(output, "$.data.dataLine[1].point[35].y") + " EUR"
Perioda 37
PARSEJSON(output, "$.data.dataLine[1].point[36].y") + " EUR"
Perioda 38
PARSEJSON(output, "$.data.dataLine[1].point[37].y") + " EUR"
Perioda 39
PARSEJSON(output, "$.data.dataLine[1].point[38].y") + " EUR"
Perioda 40
PARSEJSON(output, "$.data.dataLine[1].point[39].y") + " EUR"
Perioda 41
PARSEJSON(output, "$.data.dataLine[1].point[40].y") + " EUR"
Perioda 42
PARSEJSON(output, "$.data.dataLine[1].point[41].y") + " EUR"
Perioda 43
PARSEJSON(output, "$.data.dataLine[1].point[42].y") + " EUR"
Perioda 44
PARSEJSON(output, "$.data.dataLine[1].point[43].y") + " EUR"
Perioda 45
PARSEJSON(output, "$.data.dataLine[1].point[44].y") + " EUR"
Perioda 46
PARSEJSON(output, "$.data.dataLine[1].point[45].y") + " EUR"
Perioda 47
PARSEJSON(output, "$.data.dataLine[1].point[46].y") + " EUR"
Perioda 48
PARSEJSON(output, "$.data.dataLine[1].point[47].y") + " EUR"
Perioda 49
PARSEJSON(output, "$.data.dataLine[1].point[48].y") + " EUR"
Perioda 50
PARSEJSON(output, "$.data.dataLine[1].point[49].y") + " EUR"
Perioda 51
PARSEJSON(output, "$.data.dataLine[1].point[50].y") + " EUR"
Perioda 52
PARSEJSON(output, "$.data.dataLine[1].point[51].y") + " EUR"
Perioda 53
PARSEJSON(output, "$.data.dataLine[1].point[52].y") + " EUR"
Perioda 54
PARSEJSON(output, "$.data.dataLine[1].point[53].y") + " EUR"
Perioda 55
PARSEJSON(output, "$.data.dataLine[1].point[54].y") + " EUR"
Perioda 56
PARSEJSON(output, "$.data.dataLine[1].point[55].y") + " EUR"
Perioda 57
PARSEJSON(output, "$.data.dataLine[1].point[56].y") + " EUR"
Perioda 58
PARSEJSON(output, "$.data.dataLine[1].point[57].y") + " EUR"
Perioda 59
PARSEJSON(output, "$.data.dataLine[1].point[58].y") + " EUR"
Perioda 60
PARSEJSON(output, "$.data.dataLine[1].point[59].y") + " EUR"
Perioda 61
PARSEJSON(output, "$.data.dataLine[1].point[60].y") + " EUR"
Perioda 62
PARSEJSON(output, "$.data.dataLine[1].point[61].y") + " EUR"
Perioda 63
PARSEJSON(output, "$.data.dataLine[1].point[62].y") + " EUR"
Perioda 64
PARSEJSON(output, "$.data.dataLine[1].point[63].y") + " EUR"
Perioda 65
PARSEJSON(output, "$.data.dataLine[1].point[64].y") + " EUR"
Perioda 66
PARSEJSON(output, "$.data.dataLine[1].point[65].y") + " EUR"
Perioda 67
PARSEJSON(output, "$.data.dataLine[1].point[66].y") + " EUR"
Perioda 68
PARSEJSON(output, "$.data.dataLine[1].point[67].y") + " EUR"
Perioda 69
PARSEJSON(output, "$.data.dataLine[1].point[68].y") + " EUR"
Perioda 70
PARSEJSON(output, "$.data.dataLine[1].point[69].y") + " EUR"
Perioda 71
PARSEJSON(output, "$.data.dataLine[1].point[70].y") + " EUR"
Perioda 72
PARSEJSON(output, "$.data.dataLine[1].point[71].y") + " EUR"
Perioda 73
PARSEJSON(output, "$.data.dataLine[1].point[72].y") + " EUR"
Perioda 74
PARSEJSON(output, "$.data.dataLine[1].point[73].y") + " EUR"
Perioda 75
PARSEJSON(output, "$.data.dataLine[1].point[74].y") + " EUR"
Perioda 76
PARSEJSON(output, "$.data.dataLine[1].point[75].y") + " EUR"
Perioda 77
PARSEJSON(output, "$.data.dataLine[1].point[76].y") + " EUR"
Perioda 78
PARSEJSON(output, "$.data.dataLine[1].point[77].y") + " EUR"
Perioda 79
PARSEJSON(output, "$.data.dataLine[1].point[78].y") + " EUR"
Perioda 80
PARSEJSON(output, "$.data.dataLine[1].point[79].y") + " EUR"
Perioda 81
PARSEJSON(output, "$.data.dataLine[1].point[80].y") + " EUR"
Perioda 82
PARSEJSON(output, "$.data.dataLine[1].point[81].y") + " EUR"
Perioda 83
PARSEJSON(output, "$.data.dataLine[1].point[82].y") + " EUR"
Perioda 84
PARSEJSON(output, "$.data.dataLine[1].point[83].y") + " EUR"
Perioda 85
PARSEJSON(output, "$.data.dataLine[1].point[84].y") + " EUR"
Perioda 86
PARSEJSON(output, "$.data.dataLine[1].point[85].y") + " EUR"
Perioda 87
PARSEJSON(output, "$.data.dataLine[1].point[86].y") + " EUR"
Perioda 88
PARSEJSON(output, "$.data.dataLine[1].point[87].y") + " EUR"
Perioda 89
PARSEJSON(output, "$.data.dataLine[1].point[88].y") + " EUR"
Perioda 90
PARSEJSON(output, "$.data.dataLine[1].point[89].y") + " EUR"
Perioda 91
PARSEJSON(output, "$.data.dataLine[1].point[90].y") + " EUR"
Perioda 92
PARSEJSON(output, "$.data.dataLine[1].point[91].y") + " EUR"
Perioda 93
PARSEJSON(output, "$.data.dataLine[1].point[92].y") + " EUR"
Perioda 94
PARSEJSON(output, "$.data.dataLine[1].point[93].y") + " EUR"
Perioda 95
PARSEJSON(output, "$.data.dataLine[1].point[94].y") + " EUR"
Perioda 96
PARSEJSON(output, "$.data.dataLine[1].point[95].y") + " EUR"
Aktualna cena Zmienna Tylko do odczytu

Cena spot bieżącej godziny przeliczona na CZK za pomocą zmiennej kursu wymiany

numeric Jednostka: CZK json_path

Aktualna cena

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
VAR date := NOW();
var periodHour := LENGTH(prices) / 24;	
var actualperiod := FLOOR(((date.hour * 60) + date.minute) * periodHour / 60);

ROUND(GETAT(prices, actualperiod)*kurz)
Ranking bieżącego okresu Zmienna Tylko do odczytu

Pozycja bieżącej godziny wśród wszystkich okresów dnia (1 = najtańszy)

numeric json_path

Ranking bieżącego okresu

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
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
Ranking bieżącego okresu w oknie czasowym Zmienna Tylko do odczytu

Pozycja bieżącej godziny w oknie czasowym From–To (NaN jeśli poza zakresem)

numeric json_path

Ranking bieżącego okresu w oknie czasowym

Odczyt
VAR date := NOW();
IF date.hour < From or date.hour > To or From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
	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
Kurs wymiany walut Zmienna

Kurs przeliczeniowy EUR na CZK — odczyt/zapis, używany przez wszystkie urządzenia cenowe

numeric Jednostka: CZK/EUR

Kurs wymiany walut

Odczyt
kurz
Zapis
kurz := Va
Najwyższa cena dnia Zmienna Tylko do odczytu

Maksymalna cena spot ze wszystkich okresów dnia (CZK)

numeric Jednostka: CZK json_path

Najwyższa cena dnia

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
GETAT(ORDERDESC(prices), 0)*kurz
Najwyższa cena w oknie czasowym Zmienna Tylko do odczytu

Maksymalna cena spot w oknie czasowym From–To (CZK)

numeric Jednostka: CZK json_path

Najwyższa cena w oknie czasowym

Odczyt
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
	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)*kurz);
END
Najniższa cena dnia Zmienna Tylko do odczytu

Minimalna cena spot ze wszystkich okresów dnia (CZK)

numeric Jednostka: CZK json_path

Najniższa cena dnia

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
GETAT(ORDER(prices), 0)*kurz
Najniższa cena w oknie czasowym Zmienna Tylko do odczytu

Minimalna cena spot w oknie czasowym From–To (CZK)

numeric Jednostka: CZK json_path

Najniższa cena w oknie czasowym

Odczyt
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
	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)*kurz);
END
Najtańszy okres dnia Zmienna Tylko do odczytu

Numer okresu (od 1) najtańszej godziny dnia

numeric json_path

Najtańszy okres dnia

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
GETAT(ORDERINDEX(prices), 0) +1
Najtańszy pozostały okres Zmienna Tylko do odczytu

Numer okresu najtańszej godziny od bieżącego momentu

numeric json_path

Najtańszy pozostały okres

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
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
Liczba okresów Zmienna Tylko do odczytu

Łączna liczba dostępnych okresów cenowych (zazwyczaj 96)

numeric json_path

Liczba okresów

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
LENGTH(prices);
Liczba okresów w oknie czasowym Zmienna Tylko do odczytu

Liczba okresów w oknie czasowym From–To

numeric json_path

Liczba okresów w oknie czasowym

Odczyt
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
	var periodHour := LENGTH(prices) / 24;
	var windowPrices := COPY(prices, From * periodHour, (To - From) * periodHour);

	RETURN(LENGTH(windowPrices));
END
Średnia cena dnia Zmienna Tylko do odczytu

Średnia cena spot ze wszystkich okresów dnia (CZK)

numeric Jednostka: CZK json_path

Średnia cena dnia

Odczyt
var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
AVG(prices)*kurz
Średnia cena w oknie czasowym Zmienna Tylko do odczytu

Średnia cena spot w oknie czasowym From–To (CZK)

numeric Jednostka: CZK json_path

Średnia cena w oknie czasowym

Odczyt
VAR date := NOW();
IF From >= To
	RETURN(NaN);
ELSE
	var prices := PARSEJSON(output, "$.data.dataLine[1].point..y");
	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)*kurz);
END
Połączenie: Packet Parser → HTTP