Cześć wszystkim!
Znalazłem bardzo ciekawy projekt, o którym rozpiszę się w tym poście, ale aby wytłumaczyć istotę projektu, najpierw trzeba zacząć od “technicznej gadki”.
Jeśli na urządzeniu mobilnym spróbujesz ustalić obecną lokalizację na zewnątrz – twoje urządzenie odbierze ciągły strumień danych (czas) od kilkudziesięciu satelit i na podstawie odbieranych danych ustali położenie. Zdarza się, że jesteśmy wewnątrz budynku i GPS nie działa najlepiej, bo sygnał satelit ma trudności z dotarciem do urządzenia przez ściany, meble, itd. blokując odbiór sygnału.
W tym drugim przypadku Twoje urządzenie skorzysta z technologi AGPS (Assisted GPS).
Urządzenie zbierze jak największą liczbę informacji, które mogą posłużyć do ustalenia lokalizacji:
- stacje bazowe
- sieci Wi-Fi
- beacony Bluetooth
a następnie przesyła je do Internetowej usługi, która przetwarza te dane i zwraca dokładne współrzędne geograficzne.
Skąd usługa wie, że dana sieć Wi-Fi jest w moim domu?
techniczne wytłumaczenie działania usługi AGPS
Twoje urządzenie wyśle usłudze AGPS listę stacji bazowych, listę sieci Wi-Fi oraz listę beaconów Bluetooth. W przypadku każdej z kategorii urządzenie przekaże również moc sygnału. Dzięki temu możliwe jest obliczenie szacowanej odległości od każdego elementu danej kategorii. Następnie usługa AGPS znajduje w swojej bazie danych lokalizację (współrzędne) danych elementów i wykonuje tzw. triangulację w celu ustalenia położenia:
Dzięki triangulacji – jeśli urządzenie jest w pobliżu przynajmniej 3 elementów – możliwe jest nie tylko określenie, że urządzenie jest “w pobliżu” danej stacji bazowej, sieci Wi-Fi czy beacona BT, ale ustalenie DOKŁADNEJ lokalizacji.
Odległość od elementu jest oszacowana, dlatego im więcej elementów, tym dokładniejszy jest wynik triangulacji.
Te dane nie biorą się z nikąd. Abyś otrzymać współrzędne na podstawie kilku danych, ktoś musiał wcześniej wskazać usłudze, że w danej lokalizacji znajdują się konkretne stacje bazowe, sieci Wi-Fi, czy beacony Bluetooth – proces ten nazywa się “mapowaniem”.
Dostępnych jest kilka usług AGPS:
- Geolocation API od Google
- Core Location od Apple
- Location Services od Mozilla
Plot twist i wtopa
Mozilla Location Services będąc jedyną otwartoźródłową usługą AGPS została zamknięta 10 kwietnia 2024 roku.
Usługi korzystające z MLS (np. microG) z dnia na dzień straciły możliwość ustalania lokalizacji.
Dzięki uprzejmości Mozilli dane gromadzone przez lata zostały udostępnione do pobrania. Powstały serwisy oferujące archiwalne wersje bazy danych jako API, co wydaje się wygodnym rozwiązaniem. Niestety, nie jest ono idealne. Codziennie pojawiają się nowe stacje bazowe, a niektóre (rzadziej) są wycofywane. Archiwalna wersja danych szybko traci aktualność, a usługi te nie oferują możliwości aktualizacji istniejących danych.
Wspaniały projekt
Powstał otwartoźródłowy projekt BeaconDB – ma on na celu stworzenie bazy AGPS “od zera” z możliwością wgrywania danych i ustalania lokalizacji.
W sytuacji, gdy dane miejsce nie zostało jeszcze zmapowane – usługa sięga do archiwalnych danych usługi Mozilla Location Services pobranych tuż przed jej zamknięciem.
W przeciwieństwie do usług Google i Apple – po zamknięciu Mozilla Location Services jest to jedyna otwartoźródłowa usługa, która nie żeruje potajemnie na Twoich danych.
Telefony Google i Apple – jeśli nie zostały zmodyfikowane – domyślnie cyklicznie przesyłają informacje o GPS i stacjach bazowych oraz sieciach Wi-Fi w danej lokalizacji GPS urządzenia, efektywnie mapując cały świat bez wiedzy właścicieli urządzeń. Metoda ta jest bardzo efektywna, ale zarazem gwałci prywatność użytkowników.
Chcesz pomóc?
Możesz pobrać aplikację NeoStumbler z F-Droida lub GitHuba, wybrać w ustawieniach backend BeaconDB i przy okazji wypadu poza dom – wiedząc, że będziesz się poruszać – włączyć mapowanie i zostawić w tle. Aplikacja wszystko robi sama. Pod koniec wyślij wygenerowane raporty do usługi BeaconDB odpowiednim przyciskiem.
Dzięki temu wspierasz rozwój jedynej otwartoźródłowej usługi AGPS.
Prawdopodobnie opcja mapowania zostanie dodana bezpośrednio do microG (oczywiście w formie opt-in), aby jeszcze bardziej poprawić dokładność usługi. Na razie jednak nie liczyłbym na to.
Geek info
- Kod źródłowy usługi można znaleźć tutaj.
- Grafanę projektu znajdziesz tutaj.
- Politykę prywatności znajdziesz tutaj.
Z pewnego źródła wiem, że poza kodem źródłowym, cyklicznie publikowane będą również dumpy bazy danych usługi