• Hallo!
    Da es mich interessiert hat, habe ich einen Logger für das MZD gebastelt.
    Einfach diese Zip-Datei runterladen und auf einen Stick entpacken.
    Damit der Logger funktioniert, muss der AUTORUN Patch vom AIO aktiviert sein. Nur dann wird das Script "run.sh" beim Start des MZD gelesen und ausgeführt.
    Das Programm hat die Version 0.2, ist also sicher nicht perfekt. Issues sind unten angeführt. Am System selbst wird nichts verändert und nur auf den Stick wird schreibend zugegriffen.
    Bis jetzt habe ich es ca. 2 Wochen bei mir laufen und keine Beeinträchtigungen in der Performance festestellt.
    Wenn jemand interessiert ist, Pascal kann und sich durch meinen Codewahnsinn quälen will, kann ich den Quellcode gerne zur Verfügung stellen


    Funktion:
    Wenn der Patch aktiv ist und das MZD gestartet wird, wird das Script run.sh gelesen und ausgeführt. Dieses initialsiert einige Varablen und startet das Programm "logger". Ich habe versucht diesen Logger rein als Script zu realisieren, bin aber an der Performance des MZD gescheitert. Um die Koordinaten für die diversen Dateiformate richtig umzurechnen habe ich ca 15 Sekunden gebraucht. Das war eher sinnlos. Deshalb habe ich es in Pascal programmiert. (Nebenbei für alle interessierten: Der Raspberry Pi ist binärkompatibel. Ich habe das Programm dort geschrieben und kompiliert)
    Beim Start wird das beigefügte Configfile eingelesen und die Werte initialisiert. Die Bedeutung der Variablen ist im File selbst kurz erklärt. Nähere Infos stehen weiter unten.
    Wenn nicht vorhanden wird am Stick ein Verzeichnis mit dem Namen "daten" angelegt. In dieses werden die Logfiles geschrieben.
    Beim Programmstart wird ein Infowindow angezeigt. Dies kann im Konfigfile geändert werden.
    Leider wird beim Abschalten der Zündung der Strom vom USB Anschluss hart abgedreht. Wenn gerade auf den Stick geschrieben wird kann das zu Problemen führen. Am Besten einen leeren Stick, der zur Not formatiert werden kann,verwenden.
    Wird der Stick im laufenden Betrieb abgezogen, wird das Programm beendet.


    Ich verwende zur Visualisierung der Daten das Freewareprogramm "RouteConverterWindows.exe".


    Es werden (je nach Konfigurationseinstellungen) 3 Dateitypen geschrieben:


    CSV mit folgenden Datenfeldern:
    TIMESTAMP: Zeitstempel im Format YYYY-MM-DD hh:mm:ss
    LAT: Geopgrafische Breite (Positive Werte bedeuten Nord, negative Werte Süd)
    LON: Geografische Länge (Positive Werte bedeuten Ost, negative Werte West)
    GPSSPEED: GPS Geschwindigkeit in km/h
    ALTITUDE: Höhe in Metern
    HEADING: Kompasskurs in Grad
    Ein Datensatz hat ca. 60 Bytes (plus Header mit ca. 60 Bytes)



    NMEA mit folgenden Datensätzen:
    RMC und GGA: Da sind alle, für eine sinnvolle Navigation, erforderlichen Daten enthalten
    Ein Datensatz hat ca. 120 Bytes



    GPX:
    Version 1.0
    Es werden nur Datensätze geschrieben wenn ein gültiges GPS Signal vorhanden ist.
    Ein Datensatz hat ca. 230 Bytes (plus Header und schliessende Tags, diese haben ca. 200 Bytes)



    Beim CSV File wären noch einige Datenfelder mehr möglich (z.B. Motorumdrehung, Geschwindigkeit vom KFZ, usw.). Könnte ich gerne machen. Im MZD werden eine Unmenge Daten gespeichert. Diese werden auch vom Speedometer verwendet.



    Konfigfile:
    Ein "#" am Beginn einer Zeile bedeutet einen Kommentar der ignoriert wird.


    LOGINT: Hier wird der Logintervall in Sekunden eingestellt. Alles unter 5 Sekunden macht wenig Sinn, da für die Berechnung und das Schreiben auf den Stick ca. 2 Sekunden benötigt werden.


    DELAYINFOWINDOW: Das ist ein "Angstparameter" von mir. Diese Zeit wird gewartet bis das Programm aktiv wird. So kann das MZD fertig hochfahren. Es geht auch ohne dem Delay, aber ich wollte sichergehen
    Mit "0" wird der Delay deaktiviert.


    INFOWINDOW: Zeit in Sekunden bis das Infowindow beim Start ausgeblendet wird. Durch antippen von "OK" kann es sofort ausgeblendet werden. Bei "0" wird keine Infowindow angezeigt.


    CSV, NMEA, GPX: Welche Files geschrieben werden sollen.
    1 = schreiben, 0 = nicht schreiben


    DAILYNEW: Wenn dieser Wert gesetzt ist, wird für jeden Tag ein neues File angelegt, sonst wird ein File fortgeschrieben.
    1 = Tägliches File (Format logger_YYYY-MM-DD.xxxx)
    0 = Kein täglihes File (Format logger.xxxx)
    xxxx steh für das Suffix csv, nmea oder gpx



    Bekannte Issues:
    Wenn das MZD nur kurz aus ist. Also Zündung abgedreht und neu gestartet wird das Script run.sh nicht ausgeführt und auch nicht geloggt. Ich habe mit dem Entwickler vom AIO gemailt und er weiss auch nicht warum das so ist. Ich konnte auch noch keine sinnvolle Autostartfunkton finden. Wenn es die gibt muss aber, wie bei den AIO Patches, ins MZD System eingegriffen werden. Das wollte ich vermeiden.



    GPX File
    Das ist mein Sorgenkind. Da das GPX Format eine XML Struktur hat müssen nach jedem Schreibvorgang die schliessenden Tags geschrieben und bei jedem Schreibvorgang gelöscht werden. Deshab existiert das File "logger.gpx.tmp" in dem der schliessende Tag fehlt und das fortgeschrieben wird. Manchmal hat das File die Grösse Null oder kann nicht geöffnet werden. Bei CSV und NMEA passiert das nie. Da tüftel ich noch. Falls jemand Ideen hat, bitte her damit.
    Wenn das File die Grösse Null hat, können einach die Zeilen aus dem File close.gpx an das Ende der Datei "logger.gpx.tmp" kopiert werden und das File hat dann die richtige XML Struktur.


    ToDo:
    GPX Issue fixen
    Ich möchte noch gerne die Daten auf meinen Server senden um im Falle eines Diebstahles ein Tracking zu haben. Derzeit ist die Funktion inaktiv, aber ich habe es schon getestet. Dazu wird natürlich ein Script am Server und eine Datenbank benötigt.


    Es würde mich freuen wen sich jemand drüber traut und das mal testet.

    lgr


    Jetzt noch ein paar Beispieldatensätze.


    Beispieldatensätze:


    CSV:
    2017-09-22 04:16:57;0;0;0;0;0;
    2017-09-22 04:17:07;48.3263;16.0552;15.9;173;32;
    2017-09-22 04:17:16;48.3272;16.055;42.3804;177;351.065;
    2017-09-22 04:17:26;48.3281;16.0549;32.0349;180;66.8471;
    2017-09-22 04:17:37;48.3281;16.0565;33.948;178;106.697;


    NMEA:
    $GPRMC,041657,V,0.0000,N,0.0000,E,0.0,0,220917,,N*64
    $GPGGA,041657,0.0000,N,0.0000,E,0,0,,0,M,,M,,*6C
    $GPRMC,041707,A,4819.5780,N,1603.3120,E,8.9,32,220917,,A*42
    $GPGGA,041707,4819.5780,N,1603.3120,E,1,5,,173,M,,M,,*63
    $GPRMC,041716,A,4819.6320,N,1603.3000,E,23.3,351.065,220917,,A*54
    $GPGGA,041716,4819.6320,N,1603.3000,E,1,5,,177,M,,M,,*69
    $GPRMC,041726,A,4819.6860,N,1603.2940,E,17.8,66.8471,220917,,A*56
    $GPGGA,041726,4819.6860,N,1603.2940,E,1,5,,180,M,,M,,*61
    $GPRMC,041737,A,4819.6860,N,1603.3900,E,18.9,106.697,220917,,A*58
    $GPGGA,041737,4819.6860,N,1603.3900,E,1,5,,178,M,,M,,*63



    GPX:
    <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <gpx version="1.0" creator="MX-5 Logger (C) RG Saftware" xmlns="http://www.topografix.com/GPX/1/0">
    <trk>
    <trkseg>
    <trkpt lat="48.3233" lon="16.0506" >
    <name>trkpt_2017-23-09 03:27:50</name>
    <desc></desc>
    <time>2017-09-23T03:27:50.000Z</time>
    <speed>11.7</speed>
    <course>174.4</course>
    <ele>174</ele>
    </trkpt>
    <trkpt lat="48.3223" lon="16.0506" >
    <name>trkpt_2017-23-09 03:27:59</name>
    <desc></desc>
    <time>2017-09-23T03:27:59.000Z</time>
    <speed>5.2</speed>
    <course>171.8</course>
    <ele>182</ele>
    </trkpt>

  • Brauch zwar nicht wirklich einen Logger die Idee ist aber sexy. :thumbup:


    Probiere ich gerne aus. Source würde mich auch interessieren. Ich dachte heutzutage gäbe es niemanden mehr der Pascal programmiert.


    Ich schicke Dir eine PN.