Moduł synchronizacji danych GPSDR posiada wbudowane API pozwalające na bezpośredni dostęp do danych zarejestrowanych przez urządzenia GPS. Oprogramowanie jak i usługa są bezpłatne dla użytkownika.
Aplikacja wymaga systemu operacyjnego Windows XP lub nowszego, innego kompatybilnego z Windows XP, emulowanego bądź wirtualnego, pozwalającego na pracę aplikacji Win32 (może nie działać poprawnie na Windows 10s).
Dane GPS w systemie pogrupowane są wg numerów rejestratorów, poszczególne dane z każdego z nich mają unikalny numer rekordu (próbki). Każda pojedyncza próbka prócz numeru posiada takie parametry jak czas, współrzędne, prędkość, kierunek oraz szereg dodatkowych wartości zależnych od rejestratora i firmware w nim.
W celu aktywacji API v3 należy:
{app}\network\
c:\ProgramData\Navisoft\NaviCar2\
c:\Document and Settings\All Users\Application Data\Navisoft\NaviCar2\
Jeśli plik występuje w więcej niż 1 z powyższych lokalizacji - edycja dotyczy pliku z lokalizacji wymienionej w pierwszej kolejności.
Parametry w konfiguracji pliku navicar.ini |
[GPSDR] ... LocalHttp=1234 API=3 ... |
W sekcji GPSDR pliku navicar.ini należy dodać następujące wartości:
LocalHttp - numer portu TCP na którym usługa zostanie aktywowana. Wartość 0 lub brak klucza - usługa nieaktywna
API - numer wersji API. Dopuszczalne wartości to 2 i 3. Aktywacja API v3 wymaga wartości API=3 bądź usunięcia klucza. API w wersji 1 zostało usunięte i nie jest wspierane
Dostęp do API odbywa się za pomocą standardowego protokołu HTTP aktywowanego na wybranym porcie TCP. Odpowiedź zawsze jest tekstowa, w formacie JSON, zgodnym ze specyfikacją RFC 8259. Kodowanie znaków: UTF-8
Podstawowe zapytanie do usługi:
http://server:port/api/command/authkey/configname/?params
adres serwera i numer portu ustalane są podczas konfiguracji usług
command to polecenie wykonywane przez API
authkey - klucz autoryzacyjny / dostępowy do API
configname - nazwa konfiguracji dostępnej z API
params - dodatkowe opcjonalne parametry, można podawać jako parametry GET lub opcjonalnie jako POST
Polecenie służy do testowania poprawności konfiguracji (aktywacji usługi). Jako jedyne nie wymaga podania poprawnych parametrów do autoryzacji konta. Zwraca wersję API oraz podane parametry wejściowe.
/api/test/key/configname/?param1=abc¶m2=xyz
Odpowiedź na polecenie TEST |
{ "apiVer":3, "auth":"KEY/CONFIGNAME", "params":{ "param1":"abc", "param2":"xyz" } } |
Polecenie zwraca listę urządzeń dla danej konfiguracji:
/api/devices/apiKey/configName/
Odpowiedź na polecenie DEVICES przy braku urządzeń w konfiguracji |
{ "command":"devices", "count":0 } |
Odpowiedź na polecenie DEVICES przy niezerowej liczbie urządzeń |
{ "command":"devices", "count":57, "vehicles":[ { "gpsID":1234, "name":"SK 12345" }, { "gpsID":1235, "name":"SK 12346" }, ... ] } |
Parametr |
Typ |
Zakres |
Domyślne |
Opis |
unix |
integer |
0,1 |
0 |
UnixTime - format zwracanego czasu (date and time format) 0 - string YYYY-MM-DD hh:mm:ss 1 - integer UnixTime (UTC) |
local |
integer |
0,1 |
1 |
0 - UTC 1 - czas lokalny w Polsce (local time in Poland) Parametr jest ignorowany jeśli unix=1 |
values |
integer |
0,1 |
0 |
Pokazywanie szczegółowych wartości dodatkowych urządzeń w których skonfigurowano API 0 - nie (no) 1 - tak (yes) |
descr |
integer |
0,1 |
0 |
Pokazywanie tekstowych nazw wartości przy włączonej opcji values=1 0 - nie (no) 1 - tak (yes) |
devices |
string |
--- |
lista urządzeń, patrz opis parametru poniżej |
|
dlimit |
integer |
1-1000 |
10 |
limit odsyłanych rekordów dla 1 urządzenia |
limit |
integer |
1-1000 |
100 |
łączny limit odsyłanych próbek dla 1 zapytania |
Struktura przedstawia się następująco:
ID1[:pack1],ID2[:pack2],ID3[:pack3],....,ID[n,packn]
gdzie:
ID oznacza numer ID urządzenia
pack oznacza numer pierwszego pakietu danych który jest żądany, parametr jest opcjonalny
brak numeru pakietu oznacza prośbę o ostatni (najświeższy) pakiet danych dostępny na serwerze
ujemna wartość oznacza ilość ostatnich (najświeższych) pakietów danych
brak listy oznacza: ostatni pakiet z każdego z urządzeń
Przykłady:
wszystkie dane od rekordu 12345 dla urządzenia 1000
ostatni rekord z urządzenia 1000
3 ostatnie rekordy z urządzenia 1000
z urządzenia 1000 wszystkie rekordy od 12345
z urządzenia 1001 wszystkie rekordy od 22222
z urządzenia 1002 wszystkie rekordy od początku danych
z urządzenia 1003 najświeższy rekord
z urządzenia 1004 - 3 ostatnie
po jednej ostatniej próbce dla każdego z urządzeń
Polecenie dostępu do danych przedstawia się w następujący sposób:
/api/history/key/configname/?parametry
Odpowiedź na zapytanie history |
{ "command":"history", "data":[ /* array of devices data */ ] } |
Struktura pojedynczego elementu z tablicy danych z urządzeń |
{ "id":1374, /* device ID */ "from":-1, /* record ID from query */ "max":5660621, /* last available record ID */ "records":[ /* array od records */
] } |
pusta tablica records oznacza brak danych spełniających warunek zapytania
jeśli numer ostatniego rekordu (pack) w tablicy records pokrywa się z wartością last oznacza to, że odczytano wszystkie dane
jeśli numer pierwszego rekordu (pack) w tablicy records jest większy niż żądany zapytaniem (from) oznacza to, że serwer nie posiada tych danych
jeśli numer from jest ujemny (zgodnie z zapytaniem) - oznacza to, że pytamy o dane od końca
Struktura pojedynczego rekordu danych z urządzeń przy wyłączonej opcji pokazywania wartości (values=0) |
{ "pack":5662166, "date":"2020-04-15 08:04:35", "lon":18.760576, "lat":49.502390, "speed":66 } |
Struktura pojedynczego rekordu danych z urządzeń przy włączonej opcji pokazywania wartości (values=1) |
{ "pack":5662205, "date":"2020-04-15 08:11:22", "lon":18.753036, "lat":49.568370, "speed":10, "akumulator":28.39, /* detailed values */ "droga":50.45, "status":2, "zdarzenie":7, "antena":8, "gsm":0, "gps":0, "kartaKierowcy":0 } |
Urządzenia cyfrowe oraz wielostanowe 1 z N zwracają wartość integer
Urządzenia licznikowe oraz analogowe zwracają wartość float
W przypadku braku możliwości obliczenia należy oczekiwać wartości null
Struktura pojedynczego rekordu danych z urządzeń przy włączonej opcji pokazywania wartości i opisów (values=1 & descr=1) |
{ "pack":5662243, "date":"2020-04-15 08:16:43", "lon":18.736575, "lat":49.570159, "speed":55, "akumulator":28.39, "droga":53.30, "status":{ "state":2, "name":"st. włączona" }, "zdarzenie":{ "state":7, "name":"Terminal" }, "antena":{ "state":8, "name":"8 satelitów" }, "gsm":{ "state":0, "name":"Transmisja OK" }, "gps":{ "state":0, "name":"Pozycja OK" }, "kartaKierowcy":{ "state":0, "name":"BRAK KARTY" } } |
urządzenia cyfrowe oraz wielostanowe 1 z N zwracają obiekt zawierający stan (state) jako integer oraz nazwę stanu jako name
w przypadku braku możliwości obliczenia należy oczekiwać wartości null
Struktura pojedynczego rekordu w przypadku próby dostępu do niedostępnych danych |
{ "id":1374, "from":5668000, "max":5662425 } |
Kod |
Nazwa |
Przyczyna |
200 |
OK |
Wszystko OK All OK |
400 |
Bad Request |
Błędny link zapytania Wrong query link |
401 |
Unauthorized |
Brak uprawnień No rights |
404 |
Not found |
Błędne polecenie Wrong query / link |
500 |
Unknown error |
Błąd serwera (np. zapytanie dla którego nie można zrealizować poprawnej odpowiedzi) Server error (e.h. a query for which the correct answer cannot be completed)
|
Pliki konfiguracji określają listę dostępnych urządzeń i parametrów, ich nazw oraz formatu. Pliki tworzy się za pomocą dostępnej aplikacji navicarSetup.
Folder dla konfiguracji API znajduje się w podfolderze wg poniższej ściezki:
….plik.exe\APIv3\configs\
poszczególne konfiguracje jako pliki o rozszerzeniu .file należy umieścić w podfolderach
podfolder odpowiada parametrowi authkey
nazwa pliku po usunięciu rozszerzenia - to configname
Przykład:
….\APIv3\configs\XyZ5ai5ad\client1.file
authkey=XyZ5ai5ad
configname=client1
Prztkładowy link dla listy urządzeń: http://127.0.0.1:1234/api/devices/XyZ5ai5ad/client1/
Producent urządzeń GPS, systemu lokalizacji i monitorowania pojazdów. Sprzęt do śledzenia, kontroli, wykrywania kradzieży paliwa. Monitoring pracy pojazdów komunalnych, zimowego utrzymania dróg. Wypożyczanie GPS, lokalizacja pojazdów.