GPS Datenerfassung und Auswertung
Für die Erfassung der GPS-Daten verwende ich einen GPS-Logger I-BLUE 747 - haupsächlich zum Festhalten meiner Rad - und Moppedtouren. Natürlich verwende ich den Logger auch um die Daten bei http://www.openstreetmap.org abzugleichen und ggf. zu ergänzen und korrigieren. Der Logger hat zwar auch eine Bluetooth Schnittstelle, doch zum Auslesen verwende ich die USB-Schnittstelle, da diese quasi out of the box direkt unterstützt wird.
Aug 22 19:19:24 compaq-evo kernel: usb 2-1: new full speed USB device using uhci_hcd and address 2 Aug 22 19:19:24 compaq-evo kernel: usb 2-1: configuration #1 chosen from 1 choice Aug 22 19:19:24 compaq-evo kernel: usbcore: registered new driver usbserial Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic Aug 22 19:19:24 compaq-evo kernel: usbcore: registered new driver usbserial_generic Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for cp2101 Aug 22 19:19:24 compaq-evo kernel: cp2101 2-1:1.0: cp2101 converter detected Aug 22 19:19:24 compaq-evo kernel: usb 2-1: reset full speed USB device using uhci_hcd and address 2 Aug 22 19:19:24 compaq-evo kernel: usb 2-1: cp2101 converter now attached to ttyUSB0 Aug 22 19:19:24 compaq-evo kernel: usbcore: registered new driver cp2101 Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/cp2101.c: Silicon Labs CP2101/CP2102 RS232 serial adaptor driver v0.07
Der Datenlogger ist nach dem Einstecken über die Gerätedatei /dev/ttyUSB0 ansprechbar.
Auslesesoftware MTKBabel
Zum Auslesen des Datenspeichers unter Linux verwende ich BTKBabel ein kleines Perl-Script. Das Programmarchiv und findet man unter folgender Seite.
benötigte Perl-Pakete nachinstallieren
Damit des Perlscript den Datenlogger richtig ansprechen kann, werden noch ein paar Perl-Pakete benötigt. Wir installieren daher die Pakete perl-Device-SerialPort, perl-DateTime und perl-TimeDate via yum.
yum install perl-Device-SerialPort perl-DateTime perl-TimeDate
MTKBabel installieren
Gemäß den Quellangaben bei rigacci holen wir uns erst einmal das benötigte Programmpaket via wget und entpacken das Archiv an die gewohnte Stelle im System.
cd /usr/local/src/ wget http://www.rigacci.org/wiki/lib/exe/fetch.php/tecnica/download/local_software/mtkbabel-0.7.tar.gz tar zxvf mtkbabel-0.7.tar.gz mtkbabel-0.7/ mtkbabel-0.7/mtkbabel mtkbabel-0.7/MtkExtensionsv1.xsd mtkbabel-0.7/README mtkbabel-0.7/changelog mtkbabel-0.7/copyright mtkbabel-0.7/mtkbabel.1
Anschließend verlinken wird das Perlscript, damit der User das Script direkt aufrufen kann.
ln -s /usr/local/src/mtkbabel-0.7/mtkbabel /usr/local/bin/
Nun können wir das erste mal mtkbabel aufrufen und uns die Programmversion über die Option -v ausgeben lassen.
[luser@host ~]$ mtkbabel -v MTKBabel Version 0.7
User Berechtigungen
Damit der User auch beim Aufruf von mtkbabel auf die Gerätedatei /dev/ttyUSB0 zugreifen kann, benötigt er noch die entsprechenden Lese- und Schreibrechte.
[root@host bin]# ll /dev/ttyU* crw-rw---- 1 root uucp 188, 0 23. Aug 20:19 /dev/ttyUSB0
Wir eränzen also die Gruppe uucp um unseren User django.
usermod -G uucp luser
Ohne Schreib-/Leseberechtigungen würde der Aufruf von mtkbabel mit folgender Fehlermeldung quittiert werden:
[luser@host ~]$ mtkbabel -p /dev/ttyUSB0 -f gpsdata_080822 -t -w Can't call method "baudrate" on an undefined value at /usr/local/bin/mtkbabel line 1647.
Programmaufruf
Das Ausleseprogramm mtkbabel verfügt über folgende Programmoptionen.
[django@host ~]$ mtkbabel -h Usage: mtkbabel [options] Options: -a Read all the log memory (overlapped data) -b filename.bin Do not read device, read a previously saved .bin file -d debug_level Debug level: 0..7 -E Erase data log memory -f filename Base name for saved files (.bin and .gpx) -h Print this message and exit -l {on|off} Turn loggin ON/OFF -m {stop|overlap} Set STOP/OVERLAP recording method on memory full -o log_format Enable or disable log fields (FIELD1,-FIELD2,...), available fields: UTC,VALID,LATITUDE,LONGITUDE,HEIGHT,SPEED,HEADING,DSTA,DAGE,PDOP,HDOP,VDOP NSAT,SID,ELEVATION,AZIMUTH,SNR,RCR,MILLISECOND,DISTANCE -p port Communication port, default: /dev/ttyUSB0 -R Recover from disabled log: erase data and reset recording criteria -r time:distance:speed Set logging criteria (zero to disable): every 1-999 seconds, every 10-9999 meters, over 10-999 km/h -s speed Serial port speed, default 115200 baud -t Create a gpx file with tracks -v Print MTKBabel version and exit -w Create a gpx file with waypoints Example: Download traks and waypoints from GPS device, creating the following files: gpsdata.bin, gpsdata_trk.gpx and gpsdata_wpt.gpx. mtkbabel -s 115200 -f gpsdata -t -w
Datenlogger auslesen
Das Auslesen des Loggers erfolgt über folgenden Aufruf.
[luser@host GPS-Traces]$ mtkbabel -p /dev/ttyUSB0 -f gpsdata_datum_080823 -t -w MTK Test OK MTK Firmware: Version: 1, Release: B-core_1.1, Model ID: 0002 Log format: (0002002F) UTC,VALID,LATITUDE,LONGITUDE,SPEED,RCR Size in bytes of each log record: 30 + (0 * sats_in_view) Logging TIME interval: 1.00 s Logging DISTANCE interval: 0.00 m Logging SPEED limit: 0.00 km/h Recording method on memory full: (2) STOP Log status: (010100000100) AUTOLOG_OFF,STOP_WHEN_FULL,ENABLE_LOG,NEED_FORMAT WARNING! Log status NEED_FORMAT, log data is not valid! Next write address: 512 (0x00000200) Number of records: 0 Memory health status (failed sectors mask): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF >> Retrieving 65536 (0x00010000) bytes of log data from device... Saved log data: 0.00% Saved log data: 3.12% Saved log data: 6.25% Saved log data: 9.38% Saved log data: 12.50% Saved log data: 15.62% Saved log data: 18.75% Saved log data: 21.88% Saved log data: 25.00% Saved log data: 28.12% Saved log data: 31.25% Saved log data: 34.38% Saved log data: 37.50% Saved log data: 40.62% Saved log data: 43.75% Saved log data: 46.88% Saved log data: 50.00% Saved log data: 53.12% Saved log data: 56.25% Saved log data: 59.38% Saved log data: 62.50% Saved log data: 65.62% Saved log data: 68.75% Saved log data: 71.88% Saved log data: 75.00% Saved log data: 78.12% Saved log data: 81.25% Saved log data: 84.38% Saved log data: 87.50% Saved log data: 90.62% Saved log data: 93.75% Saved log data: 96.88% Total record count: 0
Es werden damit folgende Dateien in unserem Zielverzeichnis angelegt.
[luser@host GPS-Traces]$ ll insgesamt 88 -rw-rw-r-- 1 luser luser 65536 23. Aug 22:50 gpsdata_datum_080823.bin -rw-rw-r-- 1 luser luser 665 23. Aug 22:50 gpsdata_datum_080823_trk.gpx -rw-rw-r-- 1 luser luser 665 23. Aug 22:50 gpsdata_datum_080823_wpt.gpx
Datenlogger löschen
Das Löschen des Datenspeichers unserers GPSloggers erfolgt über:
[luser@compaq-evo GPS-Traces]$ mtkbabel -p /dev/ttyUSB0 -E MTK Test OK MTK Firmware: Version: 1, Release: B-core_1.1, Model ID: 0002 >> Erasing log memory...
Der Löschvorgang wird unter Umständen zwar mit folgender fehlermeldung quittiert:
ERROR: Reading from device: Nicht erlaubter Seek at /usr/local/bin/mtkbabel line 610.
Der Speicherinhalt wurde aber erfolgreich gelöscht und der Logger steht für weitere Traces wieder zur Verfügung.