GeoStops.
Od danych GPS do przeglądu postojów.

Jak sprawnie przejrzeć postoje z całego miesiąca? Aplikacja porządkuje dane z GBoxa i pokazuje wybrane miejsca na zdjęciach satelitarnych oraz w Street View.

Zobacz, jak działa

Firma transportowa, 8 pojazdów | Budowa aplikacji i wdrożenie | Uruchomiona u użytkownika w lutym 2026

OD DANYCH GPS DO OCENY MIEJSCAGEOSTOPS
  1. 01GBoxdane GPS, synchronizacja w tle
  2. 02Postojegrupowanie i próg czasu
  3. 03Widok satelitarnypytanie: co to za miejsce?
  4. 04Street Viewodpowiedź w kilka sekund
Ocena miejscaBez kopiowania współrzędnych między aplikacjami.
Uproszczony przepływ danych w aplikacji GeoStops.

Setki postojów. Jak je sprawnie przejrzeć?

Firma transportowa z taborem ośmiu pojazdów, zajmująca się przewozem paliw i bitumów, korzysta z systemu telematyki EUROWAG GBox. Właściciel sam pilnuje rozliczania tras kierowców.

Pierwszym problemem nie były postoje, tylko rentowność zleceń. Zleceniodawca przysyła zestawienia w Excelu i PDF-ie, a właściciel ręcznie ustala, które auto wykonało które zlecenie i czy się opłaciło. Kilka godzin tygodniowo. Aby to zautomatyzować, trzeba najpierw rozumieć trasę, a więc wiedzieć, jaką funkcję pełnią miejsca, w których pojazd miał postój. Stąd potrzeba oznaczania punktów jako baza, załadunek, rozładunek.

W październiku 2025 pojawiło się podejrzenie, że paliwo znika w trasie. Właściciel miał w GBoxie komplet danych GPS, ale to nie wystarczyło. Problemem nie był brak danych, tylko brak sposobu, żeby je efektywnie przejrzeć. Pojazd zatrzymuje się w miesiącu setki razy, a pytanie brzmi: które postoje były uzasadnione, a które nie.

Wcześniejsze narzędzie, które powstawało do rozliczeń (wtedy jeszcze w wersji roboczej), użyte do tej sprawy wskazało podejrzane miejsca w parę minut. Przy okazji obnażyło nieścisłości w samym procesie obsługi zleceń. To przesunęło uwagę projektu na wykrywanie postojów, a automatyzacja rozliczeń została w miejscu, w którym była.

Co jeszcze wchodziło w grę

  • Raporty z samego GBoxa.

    Pierwsza opcja brana pod uwagę to wbudowany raport postojów w GBoxie. W sprawdzanym wariancie wymagał wcześniej zdefiniowanych punktów użytkownika i zwracał tabelę z adresem tekstowym.

    Odpowiada na pytanie „czy pojazd był tam, gdzie miał być”, a nie na odwrotne: „w jakich miejscach bywał poza tymi, o których wiem”, bo takiego miejsca z definicji nie ma na liście.

    Adres „ulica Hutnicza 40C” nie mówi, czy to stacja paliw, czyjś plac, czy pole za miastem. Żeby to ocenić, trzeba zobaczyć. Klient próbował sam odtworzyć trasę podejrzanego kursu w GBoxie i po długim szukaniu nie znalazł konkretnego punktu.

  • Nakładka w arkuszu.

    Dane z automatyzacji zbudowanej przy rozliczeniach trafiały do Excela, więc stosowna nakładka operująca na już dostępnych danych wydawała się dobrym pomysłem.

    Opcja ta została odrzucona z prostego powodu: działała dramatycznie wolno. Arkusz nie nadawał się do przeglądania setek punktów postojów z dynamicznie ładowaną mapą.

  • Zostawić to jako doraźne narzędzie do własnego użytku.

    Najtańsza opcja i przez chwilę najrozsądniejsza. Odrzucona, bo narzędzie działało wyłącznie w moich rękach: bez logowania, bez własnej bazy, bez prostego sposobu oddania go do użytku komukolwiek.

    Żeby ktoś inny mógł z tego narzędzia skorzystać, trzeba było zacząć konfigurację od nowa.

Co wybrałem i dlaczego

Aplikacja webowa (Django, PostgreSQL), nie skrypt na własnym komputerze. Narzędzie ma być łatwo dostępne dla klienta, bez instalowania czegokolwiek.

  • Własna kopia danych zamiast odpytywania GBoxa na bieżąco.

    Aplikacja pobiera dane historyczne raz i trzyma je w bazie danych, nowe pozycje są synchronizowane na bieżąco. Przeglądanie tysięcy punktów przez zewnętrzne API byłoby wolne i zawodne, a osiągnięcie limitu zapytań bardzo realne.

    Pierwsza synchronizacja sięga rok wstecz, a potem historia narasta. Po roku korzystania klient ma pod ręką dwa lata danych, od razu, bez występowania o archiwum. Im dłużej narzędzie działa, tym jego wartość diagnostyczna rośnie.

  • Mapa satelitarna i Street View

    Pytanie brzmi „gdzie jest punkt” i „co ten pojazd tam robił”. Kluczowa funkcja, przeniesiona wprost z pracy ręcznej, w której ocena jednego miejsca oznaczała kopiowanie współrzędnych do przeglądarki, punkt po punkcie.

  • Filtr długości postoju jako parametr, nie sztywna liczba.

    Sam czas nie pozwoli odróżnić planowanego rozładunku od postoju bez powodu: próg daje możliwość zawężenia listy postojów, natomiast o znaczeniu miejsca decyduje lokalizacja.

  • Rozdzielenie danych klientów

    To samo rozwiązanie da się postawić zarówno wspólnie, jak i osobno na serwerze klienta, wyłącznie z jego danymi.

Świadome uproszczenie

Przy grupowaniu postojów porzuciłem rozróżnianie kierowców, bo ich identyfikator w danych z GBoxa często bywał pusty. Przyczyna jest natury ludzkiej, nie technicznej: identyfikacja wymaga przyłożenia taga, a to czynność, którą ktoś musi wykonać i nie zawsze wykonuje.

To uproszczone podejście w tym przypadku nie stanowiło problemu, ponieważ danym pojazdem najczęściej porusza się wybrany kierowca, a ewentualne zmiany są łatwe do sprawdzenia.

Pierwsza wersja powstała w n8n, nie jako aplikacja.

Synchronizacja z GBoxem działała jako zestaw przepływów na platformie do automatyzacji i był to dobry wybór na start, który umożliwił sprawne zapoznanie się z udostępnionym API.

Z biegiem czasu logiki w przepływach było tyle, że większość i tak była umieszczona w blokach kodu. Całość rozrosła się do kilku współpracujących ze sobą przepływów, które dzieliły stan i wzajemnie się wywoływały, a każda kolejna funkcja dokładała powiązań.

W tym miejscu edytor wizualny przestał pomagać: zmianę trzeba wyklikać zamiast przeczytać, a pół roku później odtworzyć z pamięci, co się z czym łączy. Skoro i tak pracuję z kodem, to decyzja o aplikacji na tym etapie była jasna.

Jak powstała aplikacja i jak wygląda

Kolejność była następująca: najpierw szkielet i pobieranie danych z GBoxa, potem grupowanie pozycji w postoje i przechodzenie punkt po punkcie, mapa, Street View. Następnie dopracowana została synchronizacja, bo to ona decyduje o tym, czy dane są aktualne i prawidłowe. Na koniec aplikacja została uruchomiona na serwerze produkcyjnym.

Interfejs jest prosty i skupiony na określonej funkcjonalności, a logika pod spodem odpowiada za sprawne działanie. Wszystko to wymagało zaplanowania. Kolejne funkcje układałem w kamienie milowe, a pracę prowadziłem w dwutygodniowych cyklach. Każda zmiana wchodziła osobnym zadaniem, żeby dało się śledzić postęp, z przeglądem kodu i testami przed włączeniem do wersji głównej. Błędy w interfejsie i w samej logice oraz awarie takie jak zatrzymująca się synchronizacja czy nieładujące się dane trafiały do tego samego miejsca, żeby nie zginęły i żeby dało się zaplanować naprawę według priorytetu. Część z nich wyszła dopiero w środowisku produkcyjnym po wdrożeniu, na działającej instalacji.

  1. 01

    718 postojów

    Jeden pojazd, czerwiec, bez filtra

  2. 02

    396 miejsc

    Po odfiltrowaniu pozycji zerowych

  3. 03

    Próg czasu

    Lista zawężona do dłuższych postojów

  4. 04

    Ocena miejsca

    Widok satelitarny i Street View

Od wszystkich postojów do miejsc, które warto sprawdzić.
Dwa widoki listy postojów obok siebie: po lewej 718 pozycji bez filtra, po prawej 396 po odsianiu postojów zerowychPowiększ zrzut ↗
Zrzut 1 Czerwiec, jeden pojazd: 718 postojów. Nawet po odfiltrowaniu pozycji zerowych zostaje 396 miejsc do przejrzenia. Ręcznie to godziny kopiowania współrzędnych do przeglądarki. Stąd wziął się cały ten projekt.
Widok satelitarny wybranego postoju: pojazd stał 20 minut przy budynku na skraju lasu, przy drodze krajowejPowiększ zrzut ↗
Zrzut 2 20 minut w środku trasy, przy budynku na skraju lasu. Adres tekstowy z panelu GPS nie mówi tu nic. Pytanie stawia dopiero widok satelitarny.
Ten sam postój w widoku Street View: przydrożny bar z dużym pustym placemPowiększ zrzut ↗
Zrzut 3 Street View odpowiada w kilka sekund: przydrożny bar, duży pusty plac, a pojazd stoi z drugiej strony budynku. Ocena miejsca bez kopiowania współrzędnych do przeglądarki.

Widok satelitarny stawia pytanie. Street View na nie odpowiada.

Zrzuty drugi i trzeci to ta sama chwila w dwóch widokach. Na tym polega cały mechanizm narzędzia.

Ekran synchronizacji z GBoxem: harmonogram co godzinę, status aktywny, historia ostatnich zadańPowiększ zrzut ↗
Zrzut 4 Dane aktualizują się same. Tutaj co godzinę, ale interwał jest do wyboru, od pięciu minut w górę. Aplikacja pracuje na serwerze 24/7 i synchronizuje się z GBoxem w tle, bez udziału użytkownika.

Co się udało i czego się nauczyłem

Co się udało. Demonstracyjne narzędzie do rozliczeń sprawdziło się w sprawie, która uruchomiła ten projekt: wskazało podejrzane miejsca w parę minut. GeoStops trafił do rąk użytkownika w lutym 2026. Klient samodzielnie przeszedł onboarding, skonfigurował dostęp do GBoxa i wykonał pierwszą pełną synchronizację: rok danych wstecz w 14 minut (8 pojazdów). Całą ścieżkę pierwszego uruchomienia przeszedł sam, na własnych danych, bez mojego udziału.

Czego się z tego projektu nauczyłem. Zbudowałem narzędzie wokół jednorazowego zdarzenia, a takie narzędzie nie ma czym przypomnieć o sobie, kiedy sprawa zostaje rozwiązana, a na biurku leży dziesięć pilniejszych tematów. Narzędzie wpięte w pracę, która wraca co tydzień, otwiera się samo, bo wraca powód.

Aplikacja została uruchomiona na serwerze, z własną domeną i logo. Powstała jako produkt, a nie jednorazowa usługa, bo klient sam podsunął myśl, że narzędzie może przydać się także innym. Ta ścieżka wciąż jest otwarta. Narzędzie istnieje i da się je postawić dla kogoś innego: równie dobrze na miesiąc, żeby wyjaśnić jedną konkretną sprawę, jak i na stałe.

Porozmawiajmy o tym, jak pracuje Twoja firma.

Opowiedz, jak wygląda codzienna praca w Twojej firmie. Nie musisz wiedzieć, co można usprawnić. Podczas 30-minutowej rozmowy poznam Twoją sytuację i wspólnie ustalimy, czy warto przejść do audytu.

Umów 30 minut rozmowy

Bezpłatnie i bez zobowiązań. 30 minut przez telefon lub Google Meet.

Napisz do mnie, ustalimy dogodny termin.

Podgląd zrzutu