Wróć do bloga
Agenci AI

Strażnik Paliwa – projekt naszego kursanta

Cennik hurtowy Orlenu jest publiczny na dobę przed tym, zanim trafi na pylon stacji. Strażnik Paliwa to automat w Pythonie, który pilnuje go co godzinę i wysyła alert na Discorda i Telegrama, zanim zatankujesz drożej.

6 min czytania
case study, Python, GitHub Actions, automatyzacja, monitoring cen

Cenę na stacji widać dopiero wtedy, gdy już się przy niej stoi. Wtedy jest za późno – albo tankujesz drożej, albo zawracasz. A informacja, że jutro będzie drożej, istnieje publicznie już dziś. Tylko prawie nikt jej nie czyta.

Z tego spostrzeżenia powstał Strażnik Paliwa – automat w Pythonie, który zbudował jeden z naszych kursantów. Kod jest publiczny na GitHubie.

Skąd wiadomo, co będzie jutro

Cena paliwa w Polsce powstaje w łańcuchu, w którym każdy element wyprzedza następny.

1

Ropa Brent (USD/baryłkę)

Reaguje na notowania w ciągu minut.

2

Hurt Orlenu (PLN/m³ netto)

Jawny cennik, publikowany codziennie.

3

Pylon stacji (PLN/litr brutto)

Zmienia się z opóźnieniem 1–2 dni.

Kluczowa jest środkowa kolumna. Cennik hurtowy Orlenu jest jawny i publikowany codziennie, a stacje przenoszą go na pylony z opóźnieniem mniej więcej doby. W momencie publikacji cennika wiadomo więc, co będzie jutro na dystrybutorze.

Strażnik nie zgaduje ceny, tylko jej zmianę:

zmiana na pylonie ≈ zmiana hurtu netto × 1,23 (VAT)

To celowa decyzja. Bezwzględnej ceny nie da się przewidzieć, bo nikt z zewnątrz nie zna marży konkretnej stacji. Ale ta marża zmienia się wolno, więc w różnicy się skraca. Prognoza zmiany jest odporna na to, czego automat nie wie.

≥2 gr/l
próg hurtu, od którego leci alert
co godzinę
sprawdzanie cennika, 5:00–21:00
19
testów jednostkowych, bez dostępu do sieci
0
zewnętrznych zależności – sama biblioteka standardowa

Przykładowy alert

28 lipca rafineria podniosła cenę dla stacji. Strażnik wychwycił to w hurcie i wysłał taki raport:

text
TANKUJ TERAZ

Rafineria podniosła cenę dla stacji.
Na pylonach zobaczysz to zwykle w ciągu 1-2 dni.

Pb95: hurt 6.44 zł/l netto (7.92 z VAT)
na pylonie: +22 gr/l (+11.07 zł za bak 50 l)

ON:   hurt 7.21 zł/l netto (8.87 z VAT)
na pylonie: +20 gr/l (+9.96 zł za bak 50 l)

Ropa Brent: 99.10 USD/bbl (+2.9%)
Kurs USD: 3.7080 zł
Sama ropa w litrze paliwa: 2.31 zł

Ostatnia linia to wsad surowcowy: ile w litrze paliwa kosztuje sama ropa, bez rafinacji, akcyzy, opłaty paliwowej i VAT. Zwykle to około jednej czwartej ceny na pylonie.

Cztery sygnały, nie jeden

SygnałKiedyCo robić
TANKUJhurt w górę o ≥ 2 gr/lzatankuj dziś, jutro będzie drożej
CZEKAJhurt w dół o ≥ 2 gr/lodłóż tankowanie o dzień, dwa
UWAGABrent ±3%, hurt jeszcze śpiwczesne ostrzeżenie
SPOKÓJruchy poniżej progucisza, żadnego powiadomienia

Próg 2 gr/l netto odsiewa szum. Mniejsze ruchy i tak nie docierają na pylon, a automat, który codziennie pisze „bez zmian”, zostaje wyciszony po tygodniu.

Wyłącznie publiczne źródła

DaneŹródłoCzęstotliwość
Hurtowe ceny paliwORLEN S.A. – tool.orlen.plcodziennie
Kurs USD/PLNNBP, tabela Adni robocze
Ropa Brent (ICE)Yahoo Finance, symbol BZ=Fna bieżąco

Żadnych kluczy API, żadnej rejestracji. Endpoint Orlenu jest tym samym, z którego korzysta oficjalna strona „Hurtowe ceny paliw”.

Brent akurat sprawił niespodziankę. Pierwotnym źródłem był Stooq, ale w marcu 2026 zamknęli darmowe pobieranie za kluczem API – dokładnie w trakcie budowy projektu. Zamiast podmienić jeden adres na drugi, Strażnik dostał łańcuch źródeł zapasowych: próbuje kolejnych kandydatów, dopóki któryś nie odpowie.

„Źródło, które działa dziś, nie musi działać jutro” – pierwsza rzecz, jakiej ten projekt nauczył jego autora.

Jak to jest zbudowane

Pięć plików, każdy z jednym zadaniem: zrodla.py pobiera dane z trzech API, analiza.py liczy progi i decyduje o sygnale, powiadomienia.py wysyła Discorda i Telegrama, straznik.py spina to w całość i pamięta stan, diagnostyka.py sprawdza po kolei, które źródła jeszcze żyją.

Rozdzielenie na warstwy nie jest dla ozdoby. Dzięki temu, że analiza.py nie wie nic o internecie, całą logikę decyzyjną dało się przetestować deterministycznie – 19 testami, bez czekania na to, aż Orlen zmieni cennik. Całość stoi na samej bibliotece standardowej Pythona: nie ma requirements.txt, bo nie ma czego instalować.

Automat ma też pilnować się w awarii: padnięcie jednego źródła nie przerywa raportu, stary punkt odniesienia nie znika przy chwilowym błędzie (inaczej po każdej awarii Strażnik zgłaszałby fałszywą wielką zmianę), a uszkodzony plik stanu jest wykrywany i odbudowywany od zera.

Repozytorium Strażnika Paliwa na GitHubie – pięć modułów Pythona, testy i historia commitów

Efekt uboczny: otwarty zbiór danych

Przy każdym uruchomieniu Strażnik dopisuje wiersz do historia.csv i commituje go z powrotem. Po kilku tygodniach powstał z tego mały, publiczny szereg czasowy: hurt trzech paliw, Brent, kurs dolara i wyliczony wsad surowcowy, próbkowane co godzinę.

Nikt nie planował tego jako celu projektu. Może się jednak okazać, że to z niego zostanie najwięcej.

Zastrzeżenie autora

Prognoza jest szacunkiem opartym na jawnym cenniku hurtowym. Cena na konkretnej stacji zależy dodatkowo od lokalizacji, sieci i konkurencji. To nie jest porada finansowa, tylko automat, który czyta za kogoś publiczne dane.

Strażnik Paliwa chodzi sam na GitHub Actions co godzinę między 5:00 a 21:00 – w nocy cenniki i tak się nie zmieniają. Nie wymaga włączonego komputera.

To jeden z projektów, jakie kursanci StormIT budują dla siebie w trakcie nauki. Zobacz pozostałe albo sprawdź, jak zacząć swój.

Chcesz wdrożyć to u siebie?

Praktyczne kursy i wdrożenia AI oraz automatyzacji. Albo zapisz się na newsletter, żeby nie przegapić nowych treści.