장치(스마트폰, GPS 추적기)에서 GPS 위치를 수집하고 SQLite 데이터베이스에 저장하고 지도(OSM 또는 Google)에 표시할 수 있습니다.
js/GM_utils/
) docker
폴더를 서버에 복사합니다(예: gps-server
로 이름 바꾸기).webapp
폴더(및 필요한 경우 tcp_udp_http_bridge
)를 gps-server
디렉토리에 복사하세요.auth/.htpasswd
파일에는 비밀번호 changeme
있는 단일 사용자 admin
포함되어 있습니다.admin/.htaccess
에서 조정되어야 합니다. 절대 경로가 필요합니다!htpasswd /path-to-htpasswd-file/.htpasswd myusername mypassword
또는 온라인 생성기https://www.j-berkemeier.de/GPXViewer/
에서 자바스크립트 GPXViewer를 다운로드하고 GM_Utils 폴더를 gpstracker/js/
에 복사하세요.google maps api key application
검색./js/GM_Utils/GPX2GM_Defs.js
파일을 편집하고 JB.GPX2GM.GM_Api_key
포함된 줄의 주석 처리를 해제하고 API 키를 값으로 추가합니다.1 * * * * /usr/bin/wget -O /dev/null -o /dev/null https://servername/gpstracker?checkserver=SECRETKEY >/dev/null 2>&1
owntracks/<username>
예: owntracks/gps
mqtt-bridge
에서 사용할 수 있습니다.docker-compose.yml
파일을 설정에 맞게 조정하거나 해당 환경 변수(서버, 비밀번호, 비밀 ...)를 설정하세요.docker-compose build
의 컨테이너 빌드docker-compose up -d
sudo docker exec gps-mqtt sh -c "mosquitto_passwd -b mosquitto/config/password.txt <username> <password>"
devices.config
./exe/ 디렉터리에 복사합니다. 여기에는 다양한 형식(예: OpenGTS, TK103)에 대한 정규 표현식이 포함되어 있습니다.devices.config
에 추가하세요.html/gpxviewer_html.template
의 html 템플릿에 선택적 매개변수(위 웹 페이지에 나열됨)를 추가하여 모양과 동작을 제어할 수 있습니다.js/GM_utils/GPX2GM_Defs.js
스크립트에 입력되어야 합니다. GO 코드는 포트를 열고 TCP 및 UDP를 통한 연결을 허용합니다. 서버는 패킷을 소화하기만 하고 (보통) 응답하지 않습니다. 수신된 데이터는 알려진 장치 형식(./exe/devices.config)의 정규식과 일치합니다. 일치하는 항목이 발견되고 장치 ID가 알려진 경우 GPS 데이터는 PHP 코드에서 예상하는 형식으로 변환되고 HTTP 연결을 통해 서버에 전달됩니다(예: localhost/gpstracker/index.php). 그러면 GPS 위치가 데이터베이스에 저장됩니다. 서버에 전달할 매개변수:
-port <portnumber>
-httpserver <server name - e.g. localhost>
-urlpath <path on server>
-key <secret key in order to check the status of the server - used by PHP>
-verbose - print raw messages, which allows to determine the format send by the device
예시 통화
nohup tcp_udp_http_bridge -port 20202 -httpserver localhost -urlpath /gpstracker/index.php -key 123456
tcp/udp 서버는 AES 암호화된 패킷을 처리할 수 있습니다. 이를 위해서는 ./exe/encrypt_psk.config
에 서버 전체 PSK가 필요합니다. 현재 이 기능은 Android용 GPS 로거의 비공개 버전에서만 구현됩니다.
대부분의 장치는 데이터를 NMEA GPRMC 레코드로 제공합니다(https://de.wikipedia.org/wiki/NMEA_0183 참조).
$GPRMC,162614,A,5230.5900,N,01322.3900,E,10.0,90.0,131006,1.2,E,A*13
identifier, time, Active/Void, latitude, N/S, longitude, E/W, speed, angle, date, magnetic deviation, E/W, signal integrity, check sum
위도와 경도는 도와 분(ddmm.mmmm)으로 제공되며 서버에 도 단위로 저장됩니다. 속도는 노트로 지정되고 서버에 m/초로 저장됩니다.
장치 유형에 대한 추가 식별자, 장치 식별과 함께 축소된 GPRMC 기록이 사용되는 경우가 많습니다(자기 편차 없음). 식별되는 번호는 종종 장치의 IMEI 번호입니다. GPRMC는 고도와 정밀도/정확도가 부족하여 가끔 추가되기도 합니다. 체크섬은 $와 * 사이의 모든 문자(ASCII 코드)를 XOR하여 계산됩니다.
HTTP 형식
https://my-server.com?time=UTC&lat=LATITUDE&lon=LONGITUDE&alt=ALTITUDE&acc=ACCURACY&id=DEVICEID (lat and lon given in degree 0-180 and 0-360, respectively) or
https://my-server.com?id=DEVICEID&gprmc=<GPRMC-RECORD> or
TCP/UDP 형식
Android용 GPS 로거(OpenGTS 형식)
uabcde/Y0xXyY/$GPRMC,180725,A,5637.37477,N,1211.26495,E,0.000000,0.000000,021017,,*20
username/deviceid/GPRMC-RECORD
고도가 추가된 Android용 GPS 로거
uabcde/Y0xXyY/$GPRMC,180725,A,5637.37477,N,1211.26495,E,0.000000,0.000000,021017,,*20,alt=100.5
상업용 장치(TCP/UDP)
다양한 형식이 존재합니다. 일반적으로 2~3자의 짧은 헤더 뒤에는 장치의 IMEI/장치 식별 번호, 2자의 상태 및 다소 완전한 GPRMC 기록($GPRMC 헤더 없음)이 옵니다. 일부 상태 비트는 끝에 추가될 수 있습니다. 대부분의 장치는 형식이 다른 하트비트 메시지도 추가로 보냅니다. 일부 장치에서는 통신을 시작하려면 로그인이 필요합니다. 이 프로토콜은 서버 및 장치 구성에 포함되어 있지만 현재 테스트되지 않았습니다. 현재 TK103B H02 장치만 devices.config에 포함되어 있습니다.
UDP를 통한 GPS 위치 메시지 예시
*HQ,7893267561,V1,050316,A,2212.8745,N,11346.6574,E,14.28,028,220902,FFFFFFFF#
HQ는 제조업체 ID이고 그 뒤에 식별 번호와 메시지 유형 "V1"이 옵니다. GPRMC 레코드에 $GPRMC 헤더, 자기 편차 및 체크섬이 누락되었습니다. 메시지 끝에 상태 정보가 제공됩니다.