Opis systemu
Przedstawiony poniżej system służy do rejestracji tras za pomocą urządzeń gps zawartych w popularnych urządzeniach użytku osobistego takich jak smartfon, smartwatch, tracker samochodowy. Rozwiązanie to dostarcza wiedzę na temat lokalizacji przestrzennoczasowej użytkownika posługującego się tym urządzeniem. Mogą to być zastosowania hobbistyczne, turystyka, opieka osób starszych, lokalizacja zwierząt, zarządzanie pojazdami. Poniżej przedstawiony jest schemat blokowy systemu:
Do każdego z tych urządzeń GPS opracowana jest dedykowana aplikacja, która zarządza urządzeniem , jego gps, ewentualnie akcelerometrem i wysyła dane lokalizacyjne do zaplecza w chmurze Azure i tam poprzez dedykowane API dane te są magazynowane w tabelach nierelacyjnej bazy danych Azure Table. Magazyn tabel Azure to ekonomiczny, zarządzany przez firmę Microsoft magazyn danych NoSQL dla dużych wolumenów nierelacyjnych, półustrukturyzowanych danych(magazyn kluczy/atrybutów). Umożliwia szybkie i bezschematyczne tworzenie aplikacji internetowych, danych IoT oraz metadanych, oferując szybki dostęp za pomocą kluczy podstawowych i automatyczne indeksowanie wszystkich właściwości.
Aplikacje dla urządzeń typu: smartfon i smartwatch komunikują się z API w chmurze za pomocą protokołu binarnego gRPC,
otwartoźródłowy, wysokowydajny framework RPC (Remote Procedure Call) od Google, umożliwiający komunikację między usługami.
Wykorzystuje protokół HTTP/2 do przesyłania danych, binarne bufory protokołów (Protobuf) do serializacji oraz
podejście oparte na kontraktach (pliki .proto).
Aplikacje typu Tracker gps np. samochodowy pracujące jako urządzenia IoT
(Internet Rzeczy, ang. Internet of Things) z protokołem MQTT przekazują dane lokalizacyjne poprzez dedykowaną usługę Brokera, Azure function do magazynu danych Azure Table.System zaplecza api podpięty jest także do serwisu zewnętrznego dostawcy płatności, celem ewentualnej monetyzacji wykorzystania systemu. Całość ma zwartą, prostą i niezawodną architekturę.
Aplikacja na smartfonie, oprócz funkcji zarządzania i transmisją gps, jest rozbudowana bardziej do funkcji administracyjnych, wizualizacji tras i konfiguracji elementów systemu.
Całość oprogramowania składającego się na system podzielona jest na 7 modułów:
Oprogramowanie uslugi gRPC (GrpcServiceMaui) instalowane w serwisie chmurowym Microsoft Azure jako zasób "appService".
Konfiguracja usługi Brokera konfigurowane w serwisie chmurowym Microsoft Azure.
Oprogramowanie usługi Azure function instalowane w serwisie chmurowym do translacji danych z brokera i zapisu ich w tabelach azure storage.
Konfiguracja serwisu płatności dostawcy "Stripe".
Instalacja oprogramowania "multiTracker" na smartfonie - nadzór na gps, wykrywanie ruchu, administracja systemem, wizualizacja danych, płatności.
Instalacja oprogramowania "WearGpsNative" na smartwatch - nadzór na gps, wykrywanie ruchu.
Konfiguracja, ew. uppgrade oprogramowania Trackera samochodowego do protokołu MQTT.
Opis usługi gRPC "GrpcServiceMaui"
Jest to autorskie opracowanie od podstaw w technologii programowania C# .Net i zainstalowane w zasobie "appService" chmury Microsoft Azure.
Wykaz dostępnych metod api (w/g syntax = "proto3"):
rpc GetLocations (ReqLocations) returns (RespLocations) rpc InsertLocation (Location) returns (Error) rpc UpdateLocation (Location) returns (Error) rpc DeleteLocation (Location) returns (Error) rpc ClearLocationUser (MyDevice) returns (Error) rpc RegisterUsers (RegisterUser) returns (Error) rpc RegisterNewDevice (RegisterUser) returns (Error) rpc RemoveDevice (MyDevice) returns (Error) rpc ChangePasswords (ChangePassword) returns (Error) rpc ResetPasswordRequest (ResetPasswordReq) returns (Error) rpc ResetPasswordSave (ResetPasswordSav) returns (Error) rpc LoginUser (Login) returns (Error) rpc AddSharedDevice (SharedDevice) returns (Error) rpc RemoveSharedDevice (SharedDevice) returns (Error) rpc GetSharedDevice (MyDevice) returns (SharedDeviceList) rpc GetMyDevice (MyDevice) returns (MyDeviceList) rpc GetMyDeviceCollection (MyDevice) returns (MyDeviceCollectionList) rpc GetSharedDeviceCollection (MyDevice) returns (SharedDeviceCollectionList) rpc SetEnableSharedDevice (SharedDevice) returns (Error) rpc SendEmail (MyEmail) returns (Error) rpc CreatePaymentIntent (CreatePaymentRequest) returns (CreatePaymentResponse) rpc GetPaymentStatus (PaymentStatusRequest) returns (PaymentStatusResponse)
Opis aplikacji "multiTracker" do instalacji na smartfonie:
Jest to autorskie opracowanie od podstaw w technologii programowania C# i XAML. Na teraz aplikacja dostępna jest na smartfony z systemem operacyjnym Android 8 i wyżej do najnowszych. Po uruchomieniu aplikacji, przechodzi ona w stan czuwania, pobierając ok. 2%/dobę energii z baterii. Po włączeniu rejestracji trasy i poruszaniu się urządzenia, załącza się gps, transmitując dane lokalizacyjne do chmury azure. Oczywiście, aby to było możliwe, smartfon musi mieć aktywną transmisję LTE do internetu. W przypadku braku zasięgów sieci radiowej, dane lokalizacyjne są buforowane lokalnie w aplikacji i dostarczane jeśli sieć będzie dostępna. Gdy urządzenie przechodzi w spoczynek , gps jest wyłączany i aplikacja przechodzi do stanu czuwania. Pozwala to efektywnie gospodarować energią pobieraną z baterii tylko na sytuacje konieczne i jest to główna zaleta aplikacji. W czasie rejestracji trasy, jej parametry są sygnalizowane w zasobniku powiadomień. Aplikacja może być zminimalizowana do tła i działa wtedy jako usługa bacground. Można korzystać bez przeszkód z innych aplikacji. Testy wykonano na: smartfon xiaomi redmi note 10 pro.
Omówienie ekranów aplikacji:
Ekran logowania po uruchomieniu aplikacji
Rejestracja nowego użytkownika
Ekran główny aplikacji po zalogowaniu. Można uruchomić/zatrzymać nagrywanie trasy
Wybór opcji ustawień dla aplikacji
Ustawienia aplikacji
Moje zarejestrowane urządzenia gps
Wizualizacja wszystkich tras z wybranego okresu czasu na mapie
Wykaz i statystyka wszystkich tras z wybranego okresu
Wizualizacja i statystyki wybranej trasy
Ekran realizacji płatności karta/blik
Opis aplikacji "wearNativeGps" do instalacji na smartwatch:
Jest to autorskie opracowanie od podstaw w technologii programowania C# i XAML. Aplikacja ta może pracować na zegarkach z systemem operacyjnym Wear oraz Android 8-14 i sprzętowym chipem GPS. Z uwagi na mały ekran zegarka, brak wizualizacji tras. Dane lokalizacyjne gps poprzez radio gsm, transmitowane są do chmury i magazynowane w tabeli azure. Zegarek musi mieć kartę sim (e-sim), aktywną transmisję LTE. Wizualizacja jego trasy dostępna jest w aplikacji "multiTracker" zainstalowanej na smartfonie. Aplikacja po wystartowaniu przechodzi zawsze w stan czuwania jeśli jest brak ruchu i w tym stanie pobiera ok. 2%/dobę energii z baterii. Po wykryciu ruchu dopiero jest uruchamiany gps i pobór prądu wzrasta do ok. 20-30 mA w czasie ruchu i po powrocie do spoczyku wchodzi z powrotem w stan czuwania. Pozwala to w typowych zastosowaniach nie przekraczać 1 ładowanie/dobę baterii zegarka. Testy wykonano na: Samsung Galaxy Watch Ultra LTE.
Omówienie ekranów aplikacji:
Widok ogólny ekranu zegarka
Ekran po instalacji aplikacji
Po pierwszej instalacji należy skalibrować Akcelerometr w zegarku do prawidłowego wykrywania ruchu. Kalibracja odbywa się automatycznie przy pozycji spoczynkowej zegarka
Ekran startowy po starcie aplikacji
Ekran po uruchomieniu rejestracji trasy
Ekran ustawień dla aplikacji Info Gps: włącza informację na ekranie rejestracji trasy o dostępności satelit. W przypadku słabego chipa GPS w zegarku będzie taka informacja. Autostart : startuje aplikację zaraz po włączeniu zasilania.
Czułość po ilu krokach od stanu spoczynku zostanie uruchomiony gps dla rejestracji pozycji.
Czułość przy jakim przyśpieszeniu w pojeździe zostanie uruchomiony gps dla rejestracji trasy.
Wybór trybu uruchamiania gps celem oszczędzania baterii w kompromisie z dokładnością rejestracji trasy.
Wyjście z ekranu "ustawień" jako "POWROT" lub inne opcje jak powtórzenie kalibracji lub wylogowania aplikacji.
Opis oprogramowania "Azure function"
Jest to autorskie oprogramowanie instalowane w serwisie chmury Microsoft Azure. Język programowania to C# .NET.
Służy do przechwytywania danych z Brokera, ich standaryzacji i zapisu do magazynu danych w tabeli Azure table storage.
Konfiguracja oprogramowania Trackera samochodowego do protokołu MQTT
Wykorzystano trackier FMC800 produkowany seryjnie przez popularną firmę Teltonika.
![]() |
|---|
| Rys2. Tracker samochodowy montowany w złączu ODBII |
Wersję firmware zmieniono na wersję obsługującą protokół MQTT za pomocą firmowego oprogramowania konfiguracyjnego j/n:
Możliwe są dowolne trackery, które mają możliwość konfiguracji protokołu MQTT i adresu serwera odbiorczego.
Konfiguracja płatności w serwisie Stripe
Rejestracja i aktywacja konta: W przypadku instalacji systemu pod własną działalność należy wykonać:
- Załóż konto: Wejdź na stronę Stripe i zarejestruj się, podając adres e-mail.
- Zweryfikuj e-mail: Kliknij w link weryfikacyjny wysłany na Twoją pocztę.
- Wypełnij profil firmy: W panelu Stripe uzupełnij dane o swojej działalności (lokalizacja, typ działalności, opis produktów/usług). Możesz sprzedawać jako osoba fizyczna (właściciel jednoosobowej działalności) bez zarejestrowanej spółki.
- Podaj dane bankowe: Wprowadź numer IBAN swojego konta bankowego, na które mają trafiać wypłaty.
- Wybór metod płatności:
- W ustawieniach panelu Stripe przejdź do sekcji metod płatności.
- Aktywuj wybrane opcje: Karta, BLIK (proste do zastosowania w tym projekcie)
- Integracja z Api platformy::
Wymagane klucze API, znajdziesz je w panelu Stripe w zakładce Developers > API keys. Skopiuj Publishable key oraz Secret key i wklej je w API na portalu Azure.
Status projektu
Obecnie projekt jest po kilkumiesięcznych testach wewnętrznych. Przygotowywane jest wdrożenie aplikacji multiTracker na smartfon oraz oraz aplikacji WearNativeGps na zegarek do publikacji w sklepie Play. Backend systemu wdrożony jest w chmurze Azure w planie produkcyjnym B1 i może być skalowany do wyższych w zależności od potrzeb. Przewidywane są wdrożenia całościowe systemu, jak i tylko klienckie na zasadach subskrypcji. Utrzymanie dla planu B1 to ok. 13Euro/miesiąc, co wystarczy do obsługi do 100 urządzeń gps. Poszukujemy chętnych do udzialu w testach systemu. Zgłoszenia i wszelkie szczegółowe pytania na e-mail.
