Open Source im professionellen Einsatz
Linux-Magazin 10/2016
© Angela Waye, 123RF

© Angela Waye, 123RF

Fahrdaten am On-Board-Diagnose-Port auslesen

Wege zum Connected Car

Ein in den Diagnose-Port von Michael Schillis Auto(s) gestöpselter Stecker sendet an das mitreisende Mobiltelefon per Bluetooth aktuelle Informationen wie Geschwindigkeit, Beschleunigung, Benzinverbrauch. Eine App und ein programmierbares API lesen die Daten aus und stellen sie ansprechend dar.

883

Wer wie ich den Gedanken absurd findet, ein halbes Jahresgehalt in ein neues Auto zu investieren, und statt teurer deutscher Wertarbeit lieber gebrauchte japanische "Opel Manta"-ähnliche Boliden aus den 90er Jahren fährt, bekommt leider nicht den elektronischen Schnickschnack unter dem Motto "Connected Car" geboten, der heutzutage üblich ist. In meiner Wahlheimat San Francisco hat sich daher bereits vor einiger Zeit eine Startup-Firma namens Automatic aufgemacht, einen Stecker für den On-Board-Diagnose-Port (OBD) zu entwickeln, der laufend Daten aus dem Autocomputer ausliest und per Bluetooth in eine auf dem mitgeführten Handy laufende App einspeist ([2], Abbildung 1).

Abbildung 1: Der Automatic-Adapter steckt im OBD-Port des Autos und übermittelt drahtlos per Bluetooth Motordaten an das Handy.

Diese fasst die Daten nach Abschluss der Autofahrt zusammen, übermittelt sie bei vorliegender Internetverbindung an den Automatic-Server, wo der erstaunte Fahrer dann später nachsehen kann, wo er langgefahren ist, wie oft er wie ein Irrer Gas gegeben, stark gebremst, wie viel Benzin er verbraucht hat und was der Trip demnach gekostet hat.

Abbildung 2 zeigt, dass mein Integra GSR unter meiner Obhut 27,3 Meilen pro Gallone gefahren ist, also 11,6 Liter auf 100 Kilometer verbraucht hat. Die schwache Wertung von nur 29 von maximal 100 möglichen Punkten für sparsames Fahren ist also noch stark verbesserungsfähig.

Abbildung 2: Die Automatic-App auf dem Handy gibt dem Schnellfahrer nur 29 von 100 Punkten in puncto Verbrauchseffizienz.

Sogar für Fuhrparks

Falls jemand wie ich mehrere Autos besitzt, benötigt jedes einen eigenen Automatic-Stecker. Der OBD-Port findet sich oft unter dem Armaturenbrett im Bereich des Fußraums, meist auf der Fahrer-, manchmal aber auch auf der Beifahrerseite (Abbildung 3). Einmal registrierte Adapter ticken dann aber alle nahtlos mit verschiedenen Familienhandys zusammen, auf denen die Automatic-App installiert ist.

Abbildung 3: Der OBD-Port zum Einstecken des Adapters befindet sich meist unterhalb des Armaturenbretts.

Ohne dass der jeweilige Fahrer des jeweiligen Autos etwas tun müsste, verbindet sich das Handy in der Hosentasche nach dem Starten des Motors automatisch mit dem Stecker, der dies durch eine fröhlich klingende Tonsequenz kundtut, und speichert die aktuellen geografischen Koordinaten als Anfangsort der Reise.

Nach der Ankunft am Ziel bemerkt das Handy, dass sich das Auto nicht mehr fortbewegt, speichert die aktuelle Adresse als Zielort des Trips und lädt die Daten automatisch übers Internet zum Server hoch, ohne dass dies der Fahrer überhaupt mitbekommt – die mobile App läuft im Hintergrund.

Die Tripdaten lassen sich später entweder über die App oder auf Wunsch auch im Browser eines Desktop-Computers anzeigen (Abbildungen 4 und 5), auch ein API bietet Automatic, das angemeldeten Usern per Json maschinenlesbare Daten zurückliefert, die weitere Skripte aufbereiten und anzeigen können.

Abbildung 4: Auf der Automatic-Webseite kann der User nachsehen, wann er mit welchem Auto wohin gefahren ist, wie viel Benzin er verbraucht hat und wie sein Fahrverhalten bewertet wurde.
Abbildung 5: Die Fahrt zum Strand in Pacifica hat 18 Minuten gedauert, für die zurückgelegten 13,4 Meilen fielen 1,28 Dollar an Benzin an.

Wo hab ich geparkt?

Wir Großstädter zirkeln ja schon mal eine Viertelstunde um den Block, bis wir endlich einen freien Parkplatz finden. Später kommt dann aber oft die Frage auf: "Wo hab ich jetzt nochmal geparkt?" Dank des Automatic-Stöpsels ist das nun sonnenklar, denn am jeweiligen geografischen Ende eines Trips in der Automatic-Welt muss auch das Auto stehen, falls es nicht gerade schon wieder in der Gegend herumfährt.

Das Einholen der Daten funktioniert mit Hilfe des Automatic-API auch mit einem Perl-Skript von der Kommandozeile aus. Dazu muss der User die Applikation zunächst auf der Developer-Seite von Automatic unter https://developer.automatic.com anmelden, er erhält dann nach dem so genannten Oauth-Token-Dance einen Access-Token zugeteilt, mit dem ein API-Client wie etwa das Skript in Listing 1 im Auftrag des Users private Daten vom Server geschickt bekommt.

Listing 1

wheresmycar

01 #!/usr/local/bin/perl -w
02 use strict;
03 use OAuth::Cmdline::Automatic;
04 use JSON qw( from_json );
05
06 my $oa = OAuth::Cmdline::Automatic->new();
07 $oa->raise_error( 1 );
08
09 my $vehicles =
10   from_json $oa->http_get(
11      "https://api.automatic.com/vehicle" );
12
13 for my $car (
14     @{ $vehicles->{ results } } ) {
15
16   my $trips =
17     from_json $oa->http_get(
18         "https://api.automatic.com/trip",
19         [ vehicle => $car->{ id } ]
20     );
21
22   for my $trip (
23       @{ $trips->{ results } } ) {
24     printf "%20s: %s\n",
25       "$car->{ make }-$car->{ model }-" .
26       "$car->{ year }",
27       $trip->{ end_address }->{ name };
28     last;
29   }
30 }

Listing 1 holt zunächst mit dem API-Call »vehicle« in Zeile 10 die Beschreibungen aller registrierten Autos des Users ein. Die For-Schleife ab Zeile 13 iteriert dann durch den Fuhrpark und ruft für jedes Fahrzeug in den Zeilen 17 und 18 die API-Methode »trip« mit der ID des aktuellen Fahrzeugs auf. Die API-Aufrufe liefern Daten im Json-Format an den Client, diese wandelt die aus dem CPAN-Modul »JSON« exportierte Funktion »from_json()« in Perl-Daten um, in denen der Code per Hash- oder Array-Zugriff herumstöbern kann.

Die Ausgabe in Abbildung 6 zeigt, dass der Acura Integra GSR, der Opel Manta Amerikas, gerade auf der 24. Straße in San Francisco parkt, während der Honda Fit, das Pendlerfahrzeug der Perlmeisterfrau, gerade im benachbarten Oakland weilt, wo sie arbeitet.

Abbildung 6: Ein Perl-Skript holt die Autodaten vom Automatic-Server und bestimmt, wo die Fahrzeuge des Users geparkt sind.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Perl-Snapshot

    Der Musikstreaming-Service Spotify pumpt gegen eine monatliche Gebühr Musik auf den Desktop und aufs Smartphone. Noch mehr Groove hat, dass Perl-Hacker Michael Schilli per Oauth-geschütztem Web-API seine Spotify-Playlisten für die Ewigkeit archiviert.

  • Perl-Snapshot

    Ein neuer Service auf Travis-ci.org listet fein säuberlich Github-Projekte eines Entwicklers auf, schickt den Code bei jedem Push durch deren Testsuites und gibt Rückmeldung, falls der Build bricht. In den zurückgelieferten Testergebnissen machen neugierige Perl-Skripte Zusatzinformationen sichtbar.

  • Der Lauscher an der Wand

    Ein Lausch-Bot in einem IRC-Kanal springt bei bestimmten Schlüsselwörtern an und benachrichtigt einen definierten User via Instant Messaging über das Gehörte.

  • Perl-Snapshot

    Mit einer chinesischen Guillotine und einem Einzugsscanner bewaffnet geht Perlmeister Michael Schilli diesmal seinen Büchern an den Leim. Die Grundlage seiner bibliophoben Tat liefert Google Drive, das mit 5 GByte genug Speicherplatz für ein Online-PDF-Lager mit eingescannten Büchern bietet.

  • Perl-Snapshot Linux-Magazin 04/2013

    USB-Sticks und SD-Karten verlieren schnell an Wert. Verteilt ein Perlskript Daten auf mehrere solcher Speicher, taugen Flashspeicher trotz begrenzter Kapazität als schnelle und zudem stoßsichere Backupmedien.

comments powered by Disqus

Ausgabe 04/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.