---
title: "OKTE Ceny spot"
description: "Godzinowe ceny spot OKTE (EUR/MWh) w TapHome z publicznego API isot.okte.sk: bieżąca cena, ranking, min/max/średnia. Bez logowania."
url: "https://taphome.com/pl/compatibility/okte-spot-prices/"
language: pl
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["http","data-service","data-pp","spot-prices","electricity-market","energy-management","packet-parser"]
  questions: ["Jak zintegrować ceny spot OKTE z TapHome?","Co oferuje szablon OKTE Ceny spot w TapHome?","Jak automatyzować urządzenia na podstawie ceny spot energii elektrycznej?","Jak działa funkcja okna czasowego (Od/Do) w cenach spot OKTE?","Jak znaleźć najtańszą godzinę dnia w TapHome?","Czym jest ranking aktualnego okresu w cenach spot OKTE?"]
---

# OKTE Ceny spot

Komunikacja: Packet Parser → HTTP

- [Oficjalna strona OKTE](https://www.okte.sk/)
- [Dane rynkowe OKTE ISOT](https://isot.okte.sk/)

## Poradnik integracji

OKTE (Organizátor krátkodobého trhu s elektrinou) to słowacki operator rynku energii elektrycznej. Publikuje ceny spot na rynku dnia następnego (DAM) — godzinową cenę hurtową energii elektrycznej w EUR/MWh, ustalaną na aukcji dnia poprzedniego.

Szablon TapHome pobiera te ceny z publicznego API OKTE (`isot.okte.sk`) przez HTTP Packet Parser. Udostępnia cenę za bieżącą godzinę, rankingi cen, obliczenia min/max/średniej oraz analizę okna czasowego — wszystko aktualizowane automatycznie co godzinę. Nie jest wymagane żadne uwierzytelnianie.

## Konfiguracja

Szablon łączy się z `isot.okte.sk` przez HTTPS (port 443). Nie jest potrzebny adres IP ani dane logowania — endpoint jest publicznym API.

Podczas importu szablonu można ustawić dwie opcjonalne zmienne niestandardowe:

- **Od** — godzina początkowa niestandardowego okna czasowego (0–23, domyślnie: 9)
- **Do** — godzina końcowa niestandardowego okna czasowego (0–23, domyślnie: 17)

Te zmienne kontrolują warianty urządzeń „w oknie czasowym". Wartości domyślne (9–17) obejmują standardowe godziny pracy. Jeśli nie są potrzebne, pozostaw wartości domyślne — urządzenia całodzienne działają niezależnie.

## Jak to działa

Moduł odpytuje API OKTE DAM raz na godzinę (interwał 3600 s). Żądanie API używa dzisiejszej daty:

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

Odpowiedź zawiera tablicę obiektów cenowych, każdy z numerem `period` i ceną `price` w EUR/MWh. W zależności od pory dnia i harmonogramu publikacji OKTE, odpowiedź może zawierać ceny tylko za dzisiaj (24 okresy) lub za maksymalnie 3 dni (72 okresy).

Każdy skrypt urządzenia parsuje tę tablicę JSON za pomocą `PARSEJSON(output, "$..price")` i stosuje funkcje sortowania, filtrowania lub agregacji do wyprowadzenia wartości.

## Możliwości urządzeń

Szablon udostępnia 13 urządzeń sensorowych. Wszystkie są tylko do odczytu — wartości wyprowadzają z tej samej odpowiedzi API.

### Aktualna cena i ranking

- **Aktualna cena** — cena spot za bieżący okres godzinowy w EUR/MWh. Skrypt określa aktualny indeks okresu z `NOW()` i zwraca odpowiednią cenę z tablicy.
- **Ranking aktualnego okresu** — pozycja ceny bieżącej godziny wśród wszystkich dostępnych okresów (1 = najtańsza). Przydatne do reguł automatyzacji, takich jak „uruchom pompę ciepła tylko gdy bieżąca godzina jest wśród 8 najtańszych."
- **Ranking aktualnego okresu w oknie czasowym** — tak samo jak wyżej, ale ograniczone do zdefiniowanego przez użytkownika okna Od–Do. Zwraca NaN, jeśli bieżąca godzina jest poza oknem lub jeśli Od >= Do.

### Ekstrema cenowe

- **Najwyższa cena dnia** — maksymalna cena spot ze wszystkich dostępnych okresów
- **Najniższa cena dnia** — minimalna cena spot ze wszystkich dostępnych okresów
- **Najwyższa cena w oknie czasowym** — maksymalna cena w ramach okna Od–Do
- **Najniższa cena w oknie czasowym** — minimalna cena w ramach okna Od–Do

### Średnie

- **Średnia cena dnia** — średnia arytmetyczna wszystkich dostępnych cen okresów
- **Średnia cena w oknie czasowym** — średnia arytmetyczna w ramach okna Od–Do

### Identyfikacja okresów

- **Najtańszy okres dnia** — numer okresu oparty na 1 dla najtańszej godziny (np. 3 oznacza 02:00–03:00)
- **Najtańszy pozostały okres** — najtańsza godzina od bieżącej godziny wzwyż. Aktualizuje się dynamicznie w ciągu dnia.

### Liczniki

- **Liczba okresów** — łączna liczba okresów cenowych w odpowiedzi API (zazwyczaj 24 lub 72)
- **Liczba okresów w oknie czasowym** — liczba okresów w ramach okna Od–Do

## Atrybuty usługi

Moduł udostępnia do 96 atrybutów usługi (Okres 1 do Okres 96), każdy pokazujący cenę spot dla danego okresu 15-minutowego jako ciąg znaków z przyrostkiem „EUR". Odkąd OKTE przeszło na rynku dnia następnego na okresy 15-minutowe, dla jednego dnia wypełnionych jest wszystkich 96 atrybutów.

Te atrybuty zapewniają pełny harmonogram cenowy widoczny w widoku szczegółowym modułu TapHome.

## Zmienne niestandardowe (Od / Do)

Kilka urządzeń ma warianty „w oknie czasowym", które filtrują dane cenowe do podzbioru godzin. Okno jest definiowane przez dwie zmienne niestandardowe ustawiane podczas importu szablonu:

- **Od** — godzina początkowa (włącznie), wartość 0–23
- **Do** — godzina końcowa (wyłącznie), wartość 0–23

Na przykład ustawienie Od=8 i Do=16 analizuje ceny tylko między 08:00 a 16:00. Jest to przydatne, gdy chcesz zoptymalizować zużycie energii w określonych godzinach — na przykład uruchamiać urządzenia tylko w najtańszych godzinach dnia roboczego.

Jeśli Od >= Do, wszystkie urządzenia okienkowe zwracają NaN.

## Przykłady automatyzacji

### Uruchamianie urządzeń w najtańszych godzinach

Użyj urządzenia **Ranking aktualnego okresu** w warunku smart rule. Na przykład, aby uruchomić pompę basenową tylko w 6 najtańszych godzinach dnia:

- Warunek: Ranking aktualnego okresu <= 6
- Akcja: Włącz pompę basenową

### Unikanie cen szczytowych

Użyj urządzenia **Aktualna cena** z wartością progową:

- Warunek: Aktualna cena > 150 (EUR/MWh)
- Akcja: Wyłącz nieistotne odbiorniki

### Optymalizacja okna czasowego

Ustaw Od=0, Do=6, aby zdefiniować okno nocne (od północy do 06:00), następnie użyj **Najniższa cena w oknie czasowym** lub **Ranking aktualnego okresu w oknie czasowym**, aby zaplanować ładowanie baterii lub pracę podgrzewacza wody w najtańszych godzinach nocnych. Okna przechodzące przez północ (Od >= Do) nie są obsługiwane.

## Rozwiązywanie problemów

### Wszystkie urządzenia pokazują zero lub brak danych

1. Sprawdź połączenie internetowe na TapHome Core — szablon wymaga wychodzącego dostępu HTTPS do `isot.okte.sk`
2. Sprawdź, czy API odpowiada — otwórz `https://isot.okte.sk/api/v1/dam/results?deliveryDayFrom=2026-03-28&deliveryDayTo=2026-03-28` w przeglądarce
3. Ceny DAM na następny dzień są zazwyczaj publikowane po 12:45 CET. Przed publikacją żądania dla jutrzejszej daty zwracają puste wyniki.

### Urządzenia okienkowe zwracają NaN

1. Sprawdź, że Od < Do w parametrach importu szablonu
2. Sprawdź, czy bieżąca godzina mieści się w zakresie Od–Do (dla Rankingu aktualnego okresu w oknie czasowym)
3. Pamiętaj, że Od i Do używają formatu 24-godzinnego (0–23)

### Wartości cen wydają się nieprawidłowe

OKTE publikuje ceny w EUR/MWh. Aby przeliczyć na EUR/kWh (skala gospodarstwa domowego), podziel przez 1000. Szablon wyświetla surowe wartości z API bez przeliczania.

## Dostępne urządzenia 13

Te urządzenia pojawią się w TapHome po imporcie.

OKTE Ceny spot Moduł

Atrybuty serwisowe

|           |
|-----------|
| 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 |

Zmienne niestandardowe

|                      |                                                                              |
|----------------------|------------------------------------------------------------------------------|
| `From` (numeric) = 9 | Godzina początkowa (0–23) okna czasowego do rankingu cen i statystyk w oknie |
| `To` (numeric) = 17  | Godzina końcowa (0–23) okna czasowego do rankingu cen i statystyk w oknie    |

Odczyt (moduł)

```taphome
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
```

Atrybuty serwisowe

Perióda 1

```taphome
PARSEJSON(output, "$[?(@.period == 1)].price") + " EUR"
```

Perióda 2

```taphome
PARSEJSON(output, "$[?(@.period == 2)].price") + " EUR"
```

Perióda 3

```taphome
PARSEJSON(output, "$[?(@.period == 3)].price") + " EUR"
```

Perióda 4

```taphome
PARSEJSON(output, "$[?(@.period == 4)].price") + " EUR"
```

Perióda 5

```taphome
PARSEJSON(output, "$[?(@.period == 5)].price") + " EUR"
```

Perióda 6

```taphome
PARSEJSON(output, "$[?(@.period == 6)].price") + " EUR"
```

Perióda 7

```taphome
PARSEJSON(output, "$[?(@.period == 7)].price") + " EUR"
```

Perióda 8

```taphome
PARSEJSON(output, "$[?(@.period == 8)].price") + " EUR"
```

Perióda 9

```taphome
PARSEJSON(output, "$[?(@.period == 9)].price") + " EUR"
```

Perióda 10

```taphome
PARSEJSON(output, "$[?(@.period == 10)].price") + " EUR"
```

Perióda 11

```taphome
PARSEJSON(output, "$[?(@.period == 11)].price") + " EUR"
```

Perióda 12

```taphome
PARSEJSON(output, "$[?(@.period == 12)].price") + " EUR"
```

Perióda 13

```taphome
PARSEJSON(output, "$[?(@.period == 13)].price") + " EUR"
```

Perióda 14

```taphome
PARSEJSON(output, "$[?(@.period == 14)].price") + " EUR"
```

Perióda 15

```taphome
PARSEJSON(output, "$[?(@.period == 15)].price") + " EUR"
```

Perióda 16

```taphome
PARSEJSON(output, "$[?(@.period == 16)].price") + " EUR"
```

Perióda 17

```taphome
PARSEJSON(output, "$[?(@.period == 17)].price") + " EUR"
```

Perióda 18

```taphome
PARSEJSON(output, "$[?(@.period == 18)].price") + " EUR"
```

Perióda 19

```taphome
PARSEJSON(output, "$[?(@.period == 19)].price") + " EUR"
```

Perióda 20

```taphome
PARSEJSON(output, "$[?(@.period == 20)].price") + " EUR"
```

Perióda 21

```taphome
PARSEJSON(output, "$[?(@.period == 21)].price") + " EUR"
```

Perióda 22

```taphome
PARSEJSON(output, "$[?(@.period == 22)].price") + " EUR"
```

Perióda 23

```taphome
PARSEJSON(output, "$[?(@.period == 23)].price") + " EUR"
```

Perióda 24

```taphome
PARSEJSON(output, "$[?(@.period == 24)].price") + " EUR"
```

Perióda 25

```taphome
PARSEJSON(output, "$[?(@.period == 25)].price") + " EUR"
```

Perióda 26

```taphome
PARSEJSON(output, "$[?(@.period == 26)].price") + " EUR"
```

Perióda 27

```taphome
PARSEJSON(output, "$[?(@.period == 27)].price") + " EUR"
```

Perióda 28

```taphome
PARSEJSON(output, "$[?(@.period == 28)].price") + " EUR"
```

Perióda 29

```taphome
PARSEJSON(output, "$[?(@.period == 29)].price") + " EUR"
```

Perióda 30

```taphome
PARSEJSON(output, "$[?(@.period == 30)].price") + " EUR"
```

Perióda 31

```taphome
PARSEJSON(output, "$[?(@.period == 31)].price") + " EUR"
```

Perióda 32

```taphome
PARSEJSON(output, "$[?(@.period == 32)].price") + " EUR"
```

Perióda 33

```taphome
PARSEJSON(output, "$[?(@.period == 33)].price") + " EUR"
```

Perióda 34

```taphome
PARSEJSON(output, "$[?(@.period == 34)].price") + " EUR"
```

Perióda 35

```taphome
PARSEJSON(output, "$[?(@.period == 35)].price") + " EUR"
```

Perióda 36

```taphome
PARSEJSON(output, "$[?(@.period == 36)].price") + " EUR"
```

Perióda 37

```taphome
PARSEJSON(output, "$[?(@.period == 37)].price") + " EUR"
```

Perióda 38

```taphome
PARSEJSON(output, "$[?(@.period == 38)].price") + " EUR"
```

Perióda 39

```taphome
PARSEJSON(output, "$[?(@.period == 39)].price") + " EUR"
```

Perióda 40

```taphome
PARSEJSON(output, "$[?(@.period == 40)].price") + " EUR"
```

Perióda 41

```taphome
PARSEJSON(output, "$[?(@.period == 41)].price") + " EUR"
```

Perióda 42

```taphome
PARSEJSON(output, "$[?(@.period == 42)].price") + " EUR"
```

Perióda 43

```taphome
PARSEJSON(output, "$[?(@.period == 43)].price") + " EUR"
```

Perióda 44

```taphome
PARSEJSON(output, "$[?(@.period == 44)].price") + " EUR"
```

Perióda 45

```taphome
PARSEJSON(output, "$[?(@.period == 45)].price") + " EUR"
```

Perióda 46

```taphome
PARSEJSON(output, "$[?(@.period == 46)].price") + " EUR"
```

Perióda 47

```taphome
PARSEJSON(output, "$[?(@.period == 47)].price") + " EUR"
```

Perióda 48

```taphome
PARSEJSON(output, "$[?(@.period == 48)].price") + " EUR"
```

Perióda 49

```taphome
PARSEJSON(output, "$[?(@.period == 49)].price") + " EUR"
```

Perióda 50

```taphome
PARSEJSON(output, "$[?(@.period == 50)].price") + " EUR"
```

Perióda 51

```taphome
PARSEJSON(output, "$[?(@.period == 51)].price") + " EUR"
```

Perióda 52

```taphome
PARSEJSON(output, "$[?(@.period == 52)].price") + " EUR"
```

Perióda 53

```taphome
PARSEJSON(output, "$[?(@.period == 53)].price") + " EUR"
```

Perióda 54

```taphome
PARSEJSON(output, "$[?(@.period == 54)].price") + " EUR"
```

Perióda 55

```taphome
PARSEJSON(output, "$[?(@.period == 55)].price") + " EUR"
```

Perióda 56

```taphome
PARSEJSON(output, "$[?(@.period == 56)].price") + " EUR"
```

Perióda 57

```taphome
PARSEJSON(output, "$[?(@.period == 57)].price") + " EUR"
```

Perióda 58

```taphome
PARSEJSON(output, "$[?(@.period == 58)].price") + " EUR"
```

Perióda 59

```taphome
PARSEJSON(output, "$[?(@.period == 59)].price") + " EUR"
```

Perióda 60

```taphome
PARSEJSON(output, "$[?(@.period == 60)].price") + " EUR"
```

Perióda 61

```taphome
PARSEJSON(output, "$[?(@.period == 61)].price") + " EUR"
```

Perióda 62

```taphome
PARSEJSON(output, "$[?(@.period == 62)].price") + " EUR"
```

Perióda 63

```taphome
PARSEJSON(output, "$[?(@.period == 63)].price") + " EUR"
```

Perióda 64

```taphome
PARSEJSON(output, "$[?(@.period == 64)].price") + " EUR"
```

Perióda 65

```taphome
PARSEJSON(output, "$[?(@.period == 65)].price") + " EUR"
```

Perióda 66

```taphome
PARSEJSON(output, "$[?(@.period == 66)].price") + " EUR"
```

Perióda 67

```taphome
PARSEJSON(output, "$[?(@.period == 67)].price") + " EUR"
```

Perióda 68

```taphome
PARSEJSON(output, "$[?(@.period == 68)].price") + " EUR"
```

Perióda 69

```taphome
PARSEJSON(output, "$[?(@.period == 69)].price") + " EUR"
```

Perióda 70

```taphome
PARSEJSON(output, "$[?(@.period == 70)].price") + " EUR"
```

Perióda 71

```taphome
PARSEJSON(output, "$[?(@.period == 71)].price") + " EUR"
```

Perióda 72

```taphome
PARSEJSON(output, "$[?(@.period == 72)].price") + " EUR"
```

Perióda 73

```taphome
PARSEJSON(output, "$[?(@.period == 73)].price") + " EUR"
```

Perióda 74

```taphome
PARSEJSON(output, "$[?(@.period == 74)].price") + " EUR"
```

Perióda 75

```taphome
PARSEJSON(output, "$[?(@.period == 75)].price") + " EUR"
```

Perióda 76

```taphome
PARSEJSON(output, "$[?(@.period == 76)].price") + " EUR"
```

Perióda 77

```taphome
PARSEJSON(output, "$[?(@.period == 77)].price") + " EUR"
```

Perióda 78

```taphome
PARSEJSON(output, "$[?(@.period == 78)].price") + " EUR"
```

Perióda 79

```taphome
PARSEJSON(output, "$[?(@.period == 79)].price") + " EUR"
```

Perióda 80

```taphome
PARSEJSON(output, "$[?(@.period == 80)].price") + " EUR"
```

Perióda 81

```taphome
PARSEJSON(output, "$[?(@.period == 81)].price") + " EUR"
```

Perióda 82

```taphome
PARSEJSON(output, "$[?(@.period == 82)].price") + " EUR"
```

Perióda 83

```taphome
PARSEJSON(output, "$[?(@.period == 83)].price") + " EUR"
```

Perióda 84

```taphome
PARSEJSON(output, "$[?(@.period == 84)].price") + " EUR"
```

Perióda 85

```taphome
PARSEJSON(output, "$[?(@.period == 85)].price") + " EUR"
```

Perióda 86

```taphome
PARSEJSON(output, "$[?(@.period == 86)].price") + " EUR"
```

Perióda 87

```taphome
PARSEJSON(output, "$[?(@.period == 87)].price") + " EUR"
```

Perióda 88

```taphome
PARSEJSON(output, "$[?(@.period == 88)].price") + " EUR"
```

Perióda 89

```taphome
PARSEJSON(output, "$[?(@.period == 89)].price") + " EUR"
```

Perióda 90

```taphome
PARSEJSON(output, "$[?(@.period == 90)].price") + " EUR"
```

Perióda 91

```taphome
PARSEJSON(output, "$[?(@.period == 91)].price") + " EUR"
```

Perióda 92

```taphome
PARSEJSON(output, "$[?(@.period == 92)].price") + " EUR"
```

Perióda 93

```taphome
PARSEJSON(output, "$[?(@.period == 93)].price") + " EUR"
```

Perióda 94

```taphome
PARSEJSON(output, "$[?(@.period == 94)].price") + " EUR"
```

Perióda 95

```taphome
PARSEJSON(output, "$[?(@.period == 95)].price") + " EUR"
```

Perióda 96

```taphome
PARSEJSON(output, "$[?(@.period == 96)].price") + " EUR"
```

Aktualna cena Zmienna Tylko do odczytu

Cena spot za bieżący okres godzinowy w EUR/MWh — dynamicznie ustalana z tablicy cen na podstawie aktualnego czasu

numeric Jednostka: EUR json\_path

Odczyt

```taphome
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)
```

Ranking aktualnego okresu Zmienna Tylko do odczytu

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

numeric json\_path

Odczyt

```taphome
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
```

Ranking aktualnego okresu w oknie czasowym Zmienna Tylko do odczytu

Pozycja ceny bieżącej godziny w ramach zdefiniowanego przez użytkownika okna czasowego Od–Do — zwraca NaN poza oknem

numeric json\_path

Odczyt

```taphome
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
```

Najwyższa cena dnia Zmienna Tylko do odczytu

Maksymalna cena spot ze wszystkich dostępnych okresów (EUR/MWh)

numeric Jednostka: EUR json\_path

Odczyt

```taphome
var prices := PARSEJSON(output, "$..price");
GETAT(ORDERDESC(prices), 0)
```

Najwyższa cena w oknie czasowym Zmienna Tylko do odczytu

Maksymalna cena spot w ramach zdefiniowanego przez użytkownika okna czasowego Od–Do (EUR/MWh)

numeric Jednostka: EUR json\_path

Odczyt

```taphome
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
```

Najniższa cena dnia Zmienna Tylko do odczytu

Minimalna cena spot ze wszystkich dostępnych okresów (EUR/MWh)

numeric Jednostka: EUR json\_path

Odczyt

```taphome
var prices := PARSEJSON(output, "$..price");
GETAT(ORDER(prices), 0)
```

Najniższa cena w oknie czasowym Zmienna Tylko do odczytu

Minimalna cena spot w ramach zdefiniowanego przez użytkownika okna czasowego Od–Do (EUR/MWh)

numeric Jednostka: EUR json\_path

Odczyt

```taphome
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
```

Najtańszy okres dnia Zmienna Tylko do odczytu

Numer okresu oparty na 1 dla najtańszej godziny dnia (np. 3 = 02:00–03:00)

numeric json\_path

Odczyt

```taphome
var prices := PARSEJSON(output, "$..price");
GETAT(ORDERINDEX(prices), 0) +1
```

Najtańszy pozostały okres Zmienna Tylko do odczytu

Numer okresu oparty na 1 dla najtańszej godziny od bieżącej godziny wzwyż

numeric json\_path

Odczyt

```taphome
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
```

Liczba okresów Zmienna Tylko do odczytu

Łączna liczba godzinowych okresów cenowych dostępnych w odpowiedzi API (zazwyczaj 24 lub 72)

numeric json\_path

Odczyt

```taphome
var prices := PARSEJSON(output, "$..price");
LENGTH(prices);
```

Liczba okresów w oknie czasowym Zmienna Tylko do odczytu

Liczba godzinowych okresów cenowych w ramach zdefiniowanego przez użytkownika okna czasowego Od–Do

numeric json\_path

Odczyt

```taphome
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
```

Średnia cena dnia Zmienna Tylko do odczytu

Średnia arytmetyczna wszystkich dostępnych cen okresów (EUR/MWh)

numeric Jednostka: EUR json\_path

Odczyt

```taphome
var prices := PARSEJSON(output, "$..price");
AVG(prices)
```

Średnia cena w oknie czasowym Zmienna Tylko do odczytu

Średnia arytmetyczna cen spot w ramach zdefiniowanego przez użytkownika okna czasowego Od–Do (EUR/MWh)

numeric Jednostka: EUR json\_path

Odczyt

```taphome
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
```

**Połączenie:** Packet Parser → HTTP

## Powiązana dokumentacja

- [Integracja Packet Parser](https://taphome.com/pl/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/pl/docs/integration/packet-parser/)
- [Funkcje Packet parser](https://taphome.com/pl/docs/script/packet-parser/)
- [Funkcje parsowania](https://taphome.com/pl/docs/script/parsing-functions/)

