Fahrerkarte auslesen und auswerten unter Linux
Ich hatte schon lange die Nase voll davon, für sowas immer eine Virtuelle Maschine mit Wintendo starten zu müssen und habe daher heute mal ein wenig gefummelt und mir die passende Software unter Linux installiert. Da ich annehme, daß es noch mehr Fahrer gibt, die unter Linux vor dem gleichen Problem stehen, versuche ich mal, meinen Weg dorthin zu zeigen.
Dieses Howto bezieht sich auf Debian Lenny, wird aber wohl so ähnlich auch für andere Distributionen einsetzbar sein. Zusätzlich zu diesem Blogeintrag werde ich es bei den Unixfreunden in der Howto-Sektion veröffentlichen.
Ich habe mir einen SCR331 USB-Kartenleser mal vor Urzeiten über Ebay für kleines Geld besorgt. Für diesen müssen jetzt die passenden Softwarepakete installiert werden:
apt-get install libusb-0.1-4 libpcsclite1 libpcsclite-dev pcscd pcsc-tools build-essential autoconf xlibs-dev libccid
Auf der Rückseite des Kartenlesers ist eine Teilenummer angegeben, liegt diese unter PN: 904622, so muß er geflasht werden, um unter Linux zu laufen. Das Flash-Utilty für Linux gibt es hier, die Firmware ist hier zu bekommen. Das Binary aus dem Firmware-Archiv extrahieren, dann den Firmware-Updater installieren und mit einem Editor /usr/local/scm/ini/fwupdate.ini
öffnen und folgendermaßen editieren:
<fwupdate>
<key>DevIdMatch</key>
<value>False</value>
<key>UpgradeOnly</key>
<value>False</value>
<key>UpdateClParams</key>
<value>True</value>
<key>ForceDw</key>
<value>False</value>
<key>SkipVerifyDw</key>
<value>False</value>
</fwupdate>
Danach lässt sich die neue Firmware problemlos in den Reader flashen. Achtung! pcscd darf nicht laufen!
Nach dem Flashen den Reader abziehen und neu einstecken, pcscd starten mit /etc/init.d/pcscd start
, der Reader sollte jetzt bei Eingabe von pcsc_scan
angezeigt werden.
Wenn bis hierhin alles glatt gelaufen ist, können wir ja zum Eingemachten übergehen: dem Auslesen der Fahrerkarte, noch dazu archivierungsfähig und auswertbar.
Zuerst brauchen wir noch einige Pakete aus dem Debian-Repository:
apt-get install swig1.3 python-wxgtk2.8
Dann laden wir uns pyscard herunter und entpacken es, wechseln in das Verzeichnis und rufen /usr/bin/python setup.py build_ext install
auf.
Zum Auslesen der Fahrerkarte gibt es seit kurzem ein Python-Skript: FahrLinux, das laden wir uns auch herunter und entpacken es in ein Verzeichnis. FahrLinux ist noch beta, geht aber schon prima.
Nun stecken wir unsere Fahrerkarte und rufen Fahrlinux auf:
./fahrlinx
Ein Doppelklick auf die angezeigte Fahrerkarte und danach ein Klick auf „Start“ lesen die Karte aus und legen eine archivierbare .DDD-Datei im Fahrlinux-Verzeichnis ab.
Diese kann man prima von unterwegs per Email ans Büro schicken 😉
Nun zur Auswertung der Daten, man möchte ja auch gerne wissen, was man falsch gemacht hat unterwegs. Für solche Dinge gibt es readesm. Zuerst ziehen wir noch einige Pakete aus dem Repository nach:
apt-get install libboost-program-options-dev libgcrypt11-dev libgmp3-dev
Dann entpacken wir readesm und kompilieren es:
make
make install
Praktischerweise bringt es gleich einige Skripte mit, als KDE-Nutzer habe ich mir die Endung .DDD mit /usr/local/bin/readesm-wrap-kde
verknüpft, das konvertiert die Daten in HTML und ruft sie gleich im Standardbrowser auf, so daß man bequem seine Verstöße kontrollieren kann.
/usr/local/bin/readesm-wrap-firefox
ruft die Seite im Firefox auf.
Für alle, die das gerne noch ausweiten möchten, hier noch der Hinweis auf opendtacho.org. Das Projekt arbeitet an einer Lösung für Speditionen, die auf Linux basiert. Die mit FahrLinux gezogenen Daten lassen sich dort importieren, es wird mit einem Tomcat gearbeitet und eine hierarchische Nutzerverwaltung ist ebenfalls möglich, so daß man seine Fahrer die Karten auslesen lassen und in die Software einpflegen kann. Es lassen sich Tätigkeitsberichte erstellen, etc.