Unterstützung für benutzerdefinierte NMEA Daten
Seit der Version 2.75 (iOS, Android folgt noch) unterstütz die Logbuch App die Verarbeitung folgender teilweise nicht standardisierte NMEA Daten:- Batteriespannung
- Motor Betriebsstunden
- Treibstoff-Tankinhalt
- Wasser-Tankinhalt
- Grauwasser-Tankinhalt
- Luftdruck
- Motordrehzahl
- Lufttemperatur
- Krängung (Roll)
- Steigung (Pitch)
$MXPGN,01F211,5810,02841C8A020000FF*1E
In diesem Fall sind die Daten (hexadezimal kodiert) über den aktuellen Füllstand 841C.
Regulärer Ausdruck um die Daten zu extrahieren
Um diese aus dem ganzen Datensatz zu extrahieren, muss ein regulärer Ausdruck in den NMEA Einstellungen für den Füllstand des Dieseltanks hinterlegt werden der zum Beispiel so aussieht:^\$MXPGN,01F211,5810,02(?<extract>[0-9ABCDEF]{4}?)[0-9ABCDEF]{10}\*..$
Wer sich mit regulären Ausdrücken auskennt braucht eigentlich nciht mehr weiterlesen, für alle anderen versuche ich hier eine sehr vereinfachte Erklärung damit Du selbst Regln wie diese erstellen kannst.
- ^\$ Dies ist der Beginn des Datensatzes, der Backslash ist nur nötig, da das $ in regulären Ausdrücken sonst eine andere Funktion hat. Dieser Teil muss immer genau so aussehen!
- MXPGN,01F211,5810,02 Dies ist ein fester Teil der immer genau so aussehen muss, wenn man statt der 5810 einen Platzhalter benötigt, zum Beispiel weil sich dieser Wert ändern kann, könnte 5180 ersetzt werden durch [^,]* Dies gilt dann für eine beliebige Anzahl (auch 0) an Zeichen ausser ein Komma, denn das Kommas ist ja der Feldtrenner in NMEA Datensätzen.
- (?<extract>[0-9ABCDEF]{4}?) Dies ist der wichtige Teil der den Wert extrahiert, alle anderen Daten sind nur zur Indentifizierung! In den Eckigen Klammer sind die Zeichen angegeben die verwendet werden dürfen, da wir hier Hexadezimale Werte erhalten sind ie Zahlen 0123456789 und A, B, C, D, E und F erlaubt. In den geschweiften Klammern befindet sich die genau Anzahl an Zeichen. In diesem Fall genau 4 Stück für 841C.
- [0-9ABCDEF]{10} Danach müssen weiter 10 Hexadezimazeichen kommen
- \*..$ Und zuletzt der Abschluss der wie der Angfang auch immer genau so ausshen muss. Der Backslash entschärft die Sonderfunktion die der Stern sonst in einem regulären Ausdruck hätte. Der Stern ist ja das Trennzeichen am Ende zur NMEA Checksumme. Die zwei Punkte stehen für jeweils ein beliebiges Zeichen (nämlich die NMEA Checksumme, und das Dollar stellt das Ende des Datensatzes dar.
Festlegen des Datentyps
Da dieser Datensatz hexadizimal ist und die Bytereihenfolge umgekehrt ist muss Hex Little Endian ausgewählt werden, um 841C von Little Endian zu Big Endian umzustellen: 1C84 und um dies dann zur Dezimalzahl 7300 umzuwandeln.Multiplikator (optional)
Der Wert 7300 muss laut Dokumentation vom Hersteller nun mit 0,004 multipliziert werden um den aktuellen Füllstand in Prozent zu erhalten. Aber da wir aber den Füllstand in Liter abspeichern wollen, muss dies auch noch umgerechnet werden. Die manuelle Rechnung würde so aussehen da unser Tank 65 Liter groß ist:- 7300 * 0.004 = 29.2%
- 65 Liter * 29.2% = 18.98 Liter
- Da die Logbuch App bei Füllständen intern Milliliter abspeichert muss dieser Wert noch mal 1000 genommen werden: 18980 Milliliter
Also muss der Multiplikator in diesem Fall
2.6
sein!