Integrator dla flot jako warstwa zbierająca dane z wielu źródeł

Firma transportowa rzadko korzysta z jednego dostawcy lokalizacji. Część pojazdów ma lokalizator zamontowany przez producenta, część własny, dokupiony później, a pojazdy podwykonawców raportują pozycję do systemów, do których spedytor nie ma dostępu. Każdy ma osobny panel i konto, a układ danych bywa inny. Integrator dla flot zbiera te informacje w jednym miejscu i udostępnia je w ujednoliconej postaci.

Według opisów na stronie producenta Linkway.INTEGRATOR łączy dane GPS i telematyki z różnych systemów w jednej platformie, niezależnie od dostawcy lokalizatorów. Ta warstwa nie zastępuje systemu TMS. Dostarcza mu pozycje pojazdów, a TMS wykorzystuje je do planowania i rozliczeń, o czym pisze artykuł o programie TMS Linkway.

Źródło danychCo zwykle dostarczaNa co uważać
Lokalizator własnego pojazdupozycję z prędkością i czasem zdarzeniazakres pól zależy od dostawcy urządzenia
System GPS podwykonawcypozycję wybranych pojazdów udostępnioną partnerowizgoda na udostępnianie i zakres danych
Telematyka producenta pojazdudane z pojazdu, jeśli producent je udostępniaróżne nazwy parametrów przy różnych markach
Aplikacja mobilna kierowcypozycję z telefonu i statusy zleceńzasięg oraz ustawienia energooszczędne telefonu

Czego integrator nie robi

Integrator nie poprawia jakości danych, które dostaje. Jeśli lokalizator raportuje pozycję co kilka minut, warstwa zbierająca nie odtworzy dokładniejszej trasy. Nie zastępuje też decyzji o tym, które dane naprawdę są potrzebne, bo im więcej pól, tym więcej trzeba mapować i kontrolować.

Normalizacja danych z różnych systemów GPS

Normalizacja polega na sprowadzeniu danych z wielu źródeł do jednego modelu. Bez niej dwa pojazdy tej samej firmy mają w raporcie różne jednostki oraz strefy czasowe, a do tego inne sposoby identyfikacji. Porównanie ich lub sumowanie przebiegów daje wtedy wyniki, które wyglądają poprawnie, choć nie są.

Różnica między źródłamiPrzykładSposób normalizacji
Strefa czasowajedno źródło podaje czas lokalny, inne UTCzapis w jednej strefie z zachowaniem oryginału
Identyfikator pojazdunumer rejestracyjny w jednym systemie, numer urządzenia w innymtabela mapowania urządzenia na pojazd
Jednostkikilometry lub metry, prędkość w różnych jednostkachprzeliczenie przy zapisie do jednostek modelu
Brakujące polaczęść źródeł nie przekazuje prędkości albo stanu zapłonuwartość pusta zamiast zera, żeby nie zafałszować średniej

Reguła: brak danych zapisuje się jako pustą wartość, nigdy jako zero, ponieważ zero jest wynikiem pomiaru, a brak pomiaru nim nie jest.

Przeliczenie czasu należy do najprostszych, a zarazem najczęściej pomijanych kroków. Poniższa funkcja w C# zamienia czas lokalny zapisany bez strefy na wartość z jawnym przesunięciem UTC. Dokumentacja konwersji między strefami czasowymi opisuje pułapki związane z czasem letnim.

public record Pozycja(int PojazdId, DateTimeOffset CzasUtc, double Szerokosc, double Dlugosc, double? PredkoscKmh);

static DateTimeOffset DoUtc(DateTime czasLokalny, TimeZoneInfo strefa)
{
    // czasLokalny ma Kind = Unspecified, bo źródło nie podaje strefy
    var utc = TimeZoneInfo.ConvertTimeToUtc(czasLokalny, strefa);
    return new DateTimeOffset(utc, TimeSpan.Zero);
}

Pole PredkoscKmh jest typu nullable z tego samego powodu, dla którego brak danych zapisuje się jako pustą wartość. Kod przykładowy nie jest fragmentem produktu, tylko ilustracją mechanizmu, który każdy integrator musi w jakiś sposób realizować.

Mapowanie urządzeń na pojazdy

Identyfikator z zewnętrznego systemu nie zawsze pasuje do numeru rejestracyjnego. Lokalizator można przenieść do innego pojazdu, a wtedy stare pozycje przypisane do numeru urządzenia trafiają do niewłaściwego auta. Dlatego mapowanie ma okres obowiązywania, a nie jest zwykłą parą wartości.

CREATE TABLE dbo.MapowanieUrzadzenia (
    ZrodloId     INT          NOT NULL,
    UrzadzenieId VARCHAR(40)  NOT NULL,
    PojazdId     INT          NOT NULL,
    ObowiazujeOd DATETIME2    NOT NULL,
    ObowiazujeDo DATETIME2    NULL,
    CONSTRAINT PK_MapowanieUrzadzenia PRIMARY KEY (ZrodloId, UrzadzenieId, ObowiazujeOd)
);

Przechowywanie surowych danych

Obok znormalizowanej pozycji opłaca się zachować oryginalną wiadomość ze źródła, przynajmniej przez ustalony okres. Gdy okaże się, że reguła przeliczenia była błędna, na przykład źle zinterpretowano strefę czasową, wystarczy przetworzyć surowe rekordy ponownie. Bez nich poprawka wymaga ponownego pobrania danych, a dostawcy często udostępniają tylko krótką historię.

Koszt tej praktyki to miejsce na dysku, które przy pozycjach rejestrowanych co kilka minut jest niewielkie w porównaniu z kosztem utraty danych historycznych. Okres przechowywania należy ustalić razem z zasadami ochrony danych osobowych, bo pozycje pojazdów mogą wskazywać konkretnego kierowcę.

Częstotliwość odczytu i opóźnienie danych

Integrator pobiera dane z systemów zewnętrznych na dwa sposoby. Może odpytywać je w ustalonym interwale albo przyjmować powiadomienia wysyłane przez dostawcę, gdy pojawi się nowa pozycja. Pierwsza metoda jest prostsza, ale wprowadza opóźnienie równe interwałowi. Druga skraca opóźnienie, lecz wymaga, by dostawca ją obsługiwał.

Częstotliwość ogranicza także sam dostawca. Interfejsy systemów GPS zwykle mają limity liczby zapytań, więc zbyt częste odpytywanie kończy się odrzuceniem albo blokadą konta. Interwał dobiera się do zastosowania, a nie do wartości, którą technicznie da się ustawić.

ZastosowaniePotrzebna świeżość danychSkutek zbyt rzadkiego odczytu
Mapa pojazdów dla spedytorarzędu sekund lub minutpojazd na mapie stoi tam, gdzie był kilka minut temu
Prognoza czasu dotarciarzędu minutopóźnienie zauważone po fakcie
Rozliczenie przebiegówdzień lub okres rozliczeniowyrozbieżność sum przy brakach w danych
Przegląd technicznydzień lub tydzieńbrak wpływu, o ile dane są kompletne

Opóźnienie danych powinno być widoczne dla użytkownika. Spedytor patrzący na pozycję sprzed piętnastu minut podejmuje decyzję na podstawie nieaktualnych danych, choć ekran wygląda tak samo jak przy pozycji sprzed kilku sekund. Zapytanie poniżej wskazuje pojazdy, których ostatnia pozycja jest starsza niż zadany próg.

SELECT  p.Rejestracja,
        DATEDIFF(MINUTE, o.CzasUtc, SYSUTCDATETIME()) AS MinutOdOstatniejPozycji
FROM    dbo.Pojazd AS p
JOIN    dbo.OstatniaPozycja AS o ON o.PojazdId = p.PojazdId
WHERE   DATEDIFF(MINUTE, o.CzasUtc, SYSUTCDATETIME()) > @ProgMinut
ORDER BY MinutOdOstatniejPozycji DESC;

Ta sama lista bywa sygnałem problemu ze źródłem, a nie z pojazdem. Gdy wszystkie pojazdy jednego dostawcy znikną naraz, przyczyną jest zwykle awaria interfejsu lub wygasłe uprawnienia, a nie jednoczesny postój całej floty.

Abstrakcyjny układ paneli z wykresami słupkowymi i liniowymi w pomarańczowych i niebieskich kafelkach na ciemnym tle
Zestawienie wskaźników na jednym ekranie - wartość ma sens, gdy obok widać wiek danych i źródło, z którego pochodzą

Jakość danych i kontrola poprawności

Dane z zewnętrznych systemów wymagają kontroli, zanim trafią do raportów. Lokalizator potrafi zgłosić pozycję z błędnymi współrzędnymi, a łączność bywa przerywana, więc zaległe rekordy przychodzą partiami i w innej kolejności niż powstały. Integrator, który przyjmuje wszystko bez kontroli, przenosi te błędy do każdego systemu, który z niego korzysta.

  • Kontrola zakresu - szerokość geograficzna poza przedziałem od -90 do 90 stopni albo długość poza przedziałem od -180 do 180 jest odrzucana.
  • Kontrola skoku pozycji - przesunięcie o setki kilometrów w kilka minut wskazuje błąd źródła, a nie ruch pojazdu.
  • Usuwanie duplikatów - ta sama pozycja pobrana dwa razy nie może zwiększać przebiegu ani liczby zdarzeń.
  • Kolejność zdarzeń - dane spóźnione trafiają w odpowiednie miejsce osi czasu według czasu zdarzenia, nie według czasu odbioru.

Duplikaty najłatwiej zablokować w samej bazie. Unikalny indeks na trzech kolumnach z opcją ignorowania powtórzeń powoduje, że ponowny zapis tego samego zdarzenia jest po cichu pomijany, a pozostałe wiersze partii są zapisywane. Składnię i ograniczenia opisuje dokumentacja instrukcji CREATE INDEX.

CREATE UNIQUE INDEX UX_Pozycja_Zdarzenie
    ON dbo.Pozycja (ZrodloId, UrzadzenieId, CzasUtc)
    WITH (IGNORE_DUP_KEY = ON);

Do pozycji z lokalizatorów dochodzą statusy zgłaszane przez kierowców w aplikacji mobilnej, opisane w artykule o aplikacji dla kierowcy. Oba strumienie łączy się według zlecenia i czasu, więc kontrola kolejności zdarzeń dotyczy obu. Praktyczne zestawienie danych telematycznych z innego źródła zawiera tekst o korzyściach z T Comm Telematics.

Integracje z konkretnymi źródłami danych

Producent publikuje osobne opisy integracji z wybranymi systemami. Integracja z systemem Jarmu.kovetes przekazuje dane telemetryczne pojazdów do wspólnej platformy, co według opisu ogranicza potrzebę pracy w wielu aplikacjach. Podobnie opisana jest integracja z GPS-Poloha oraz integracja z Tracesharing, dzięki której spedytor widzi transporty przewoźników w jednym programie.

Przed decyzją o zakupie warto sprawdzić, czy system GPS, z którego korzysta flota, jest na liście integracji. Opis możliwości integratora zawiera także tekst o linkway.INTEGRATOR, a szersze omówienie roli integratora w pracy floty przedstawia artykuł o integratorze GPS dla flot.

Integrator w pracy spedytora

Dla spedytora najważniejsza jest jedna lista pojazdów z aktualną pozycją, bez konieczności otwierania kolejnych paneli. Ten wątek rozwija tekst o tym, jak integrator dla flot ułatwia pracę spedytora. Z kolei współpraca z systemami podwykonawców wymaga zgody na udostępnianie danych, którą warto zapisać w umowie.

Przykładem źródła sprzętowego są lokalizatory Hertz Systems, których pozycje trafiają do modułów Linkway. Drogę pojedynczej pozycji od urządzenia do ekranu dyspozytora opisuje artykuł o Hertz GPS i Linkway.

Co można policzyć na zintegrowanych danych

Zintegrowane dane dają materiał do kilku obliczeń, które w rozproszonych systemach są niewygodne albo niemożliwe. Zakres zależy od tego, co przekazuje każde ze źródeł. Poniższe cztery zastosowania przedstawiono jako możliwości do sprawdzenia w danym wdrożeniu, a nie jako gwarantowane funkcje.

  • Wybór najbliższego wolnego pojazdu - porównanie pozycji z miejscem załadunku ogranicza dojazd bez ładunku.
  • Włączenie pojazdów podwykonawców - flota mieszana widoczna na jednej mapie, o ile podwykonawca udostępnia dane.
  • Analiza przebiegów - suma kilometrów z różnych źródeł w jednym zestawieniu, jeśli dane są znormalizowane.
  • Parametry pracy pojazdu - przebieg i inne dane telematyczne, o ile źródło je przekazuje, jako materiał do planowania przeglądów.

Pierwsze zastosowanie da się zilustrować zapytaniem z użyciem typu przestrzennego SQL Server. Funkcja STDistance zwraca odległość w linii prostej, więc wynik służy do wstępnej selekcji, a nie do planowania trasy.

DECLARE @Zaladunek geography = geography::Point(52.4064, 16.9252, 4326);

SELECT TOP (5)
       p.Rejestracja,
       @Zaladunek.STDistance(geography::Point(o.Szerokosc, o.Dlugosc, 4326)) / 1000.0 AS OdlegloscKm
FROM   dbo.Pojazd AS p
JOIN   dbo.OstatniaPozycja AS o ON o.PojazdId = p.PojazdId
WHERE  p.WolnyDoZlecenia = 1
ORDER BY OdlegloscKm;

Odległość w linii prostej bywa myląca, gdy między pojazdem a załadunkiem jest rzeka albo zamknięty odcinek drogi. Dopiero planowanie trasy po siatce dróg pokazuje rzeczywisty dojazd, dlatego wynik ten uzupełnia plan, a go nie zastępuje. Planowanie tras dla różnych typów pojazdów omawia artykuł o flotach mieszanych.

Kryteria oceny zwrotu z inwestycji w integrator dla flot

Integrator dla flot bywa przedstawiany jako inwestycja, która przynosi oszczędności. Sama obietnica nie wystarcza do decyzji, bo wynik zależy od liczby źródeł oraz wielkości floty, a także sposobu pracy spedytorów. Ocena zwrotu wymaga własnych danych z okresu przed wdrożeniem, inaczej każda późniejsza oszczędność pozostaje deklaracją.

Reguła: okres zwrotu to koszt wdrożenia i utrzymania podzielony przez miesięczną korzyść netto, przy czym korzyść mierzy się na danych zebranych przed uruchomieniem integratora.

PozycjaCzego dotyczyJak zmierzyć przed wdrożeniem
Liczba systemów GPS w użyciutyle paneli i kont do obsługi, ile dostawcówinwentaryzacja dostawców i kosztów abonamentów
Czas przełączania się między panelamipraca spedytora na ustalenie pozycji pojazdówpomiar czasu w kilku dniach roboczych
Puste przebiegikilometry bez ładunku dojazdowe do załadunkuzestawienie z ewidencji przebiegów
Błędy z ręcznego zestawiania danychkorekty rozliczeń przewoźników i klientówliczba poprawek w miesiącu

Im więcej różnych dostawców GPS działa we flocie, tym większy jest potencjał konsolidacji. Firma z jednym dostawcą i jednym panelem ma niewiele do skonsolidowania, więc zwrot będzie wolniejszy albo go nie będzie. Warto to policzyć przed zakupem, a nie po nim.

Koszty po stronie wdrożenia i utrzymania

Do kosztu wchodzą licencje lub abonament, konfiguracja integracji z każdym źródłem oraz praca administratora. Dochodzi obsługa zmian po stronie dostawców GPS. Interfejsy zewnętrzne się zmieniają, więc integracja wymaga utrzymania. Warto zapytać dostawcę, kto odpowiada za dostosowanie połączenia po zmianie interfejsu i w jakim czasie.

Ograniczeniem jest także prywatność. Pozycja pojazdu prowadzonego przez konkretnego kierowcę jest daną, którą można powiązać z osobą, więc firma musi mieć podstawę prawną przetwarzania i poinformować pracowników o zakresie monitoringu. Ma to wpływ na to, jakie dane integrator ma w ogóle zbierać.

Pomarańczowa zębatka z napisem ERP w centrum schematu połączonych ikon, wykresów i dokumentów na granatowym tle
Schemat integracji systemów - integrator dostarcza dane pozycyjne do innych systemów firmy, między innymi do TMS i systemów rozliczeniowych

Wyniki integratora trafiają dalej do systemów, które je wykorzystują. Ogólny obraz wymiany danych z systemami ERP i WMS przedstawia artykuł o integracji TMS z ERP i WMS, a temat monitoringu floty pod kątem kosztów rozwija tekst o monitoringu transportu a koszty floty.