Car Stats Viewer | 0.25.x
Guten Morgen allesamt,
heute habe ich direkt zwei Ankündigungen, die ich mit euch teilen möchte. Es wird also spannend
Wie immer gilt: Allgemeine Infos und Links zu GitHub findet ihr im Wiki → Car Stats Viewer | Informationen
Bitte benutzt auch weiterhin nach Möglichkeit die GitHub-Issues, um Fehler zu melden oder Features vorzuschlagen. Das macht es einfacher für mich, den Überblick zu behalten.
Update 0.25 (23.07.2023)
Los geht es mit der Ankündigung des nächsten Updates. Leider hat es mal wieder etwas länger gedauert, bis das Update fertig war. Das liegt vor allem daran, dass das technische Grundgerüst der App grundlegend überarbeitet wurde. Nun ist die neue Version aber soweit, dass ich sie an diese Wochenende endlich ausrollen möchte. Sobald es live ist, werde ich hier noch mal posten.
Changelog
Zunächst hier erst mal der Changelog mit den größten Änderungen im neuen Update:
0.25.1
- Anpassungen an der UI, insbesondere in der Tripzusammenfassung.
- Die Weitergabe des Standortes kann nun für jede API einzeln festgelegt werden.
- Fahrzeugkonfiguration für MY24 hinzugefügt.
- Kleinere Bugfixes.
0.25.0
- Implementierung einer lokalen Datenbank für eine robustere und leistungsfähigere Speicherung von Trips.
- Tripverlauf hinzugefügt, um vergangene Trips anzeigen zu können.
- Ladevorgänge können nun für bis zu 5 Minuten unterbrochen werden, bevor ein neuer Ladevorgang angelegt wird, sogar, wenn das Auto bewegt wurde.
- Icon hinzugefügt, das den aktuell ausgewählten Trip-Typ symbolisiert. Tippen auf die Trip-Statistiken wechselt zum nächsten Trip-Typ.
- Einstellung hinzugefügt, welche API den Verbindungsstatus in der Hauptansicht anzeigen soll.
- Der manuelle Trip kann nun direkt aus der Hauptansicht heraus zurückgesetzt werden.
- Der Datensatz für den HTTP-Webhook wurde an die neue Datenstruktur angepasst.
- Allgemeine Bugfixes und Stabilitätsverbesserungen.
Im Folgenden gehe ich auf ein paar der wichtigsten Punkte ein.
Lokale Datenbank
Bis 0.24 hat CSV sämtliche Trip-Daten in separaten JSON-Dateien gespeichert. Jeder Trip-Typ (Automatisch, Monatlich, seit Laden, Manuell) hatten eine eigene Datei, die mitunter sehr groß werden konnte. In einigen Fällen kam es dann auch dazu, dass diese Dateien korrumpiert wurden, weil beim Schreiben etwas schiefgegangen ist. Danach waren dann alle Speicherdaten unwiderruflich verloren.
Mit 0.25 ändert sich dies grundlegend. An Stelle der JSON-Dateien tritt nun eine lokale Datenbank. Diese Datenbank erlaubt wesentlich schnellere, sicherere und flexiblere Zugriffe auf die gespeicherten Daten. Zudem werden nicht sämtliche Daten 4x gespeichert. Jeder Datenpunkt ist einzigartig und wird von den Trips referenziert. Gleiches gilt für die Ladesessions.
In dem Zuge wurde auch die Art und Weise, wie die App Daten erfasst, komplett überarbeitet, um besser auf die neue Methode der Datenspeicherung angepasst zu sein. Alles in allem bringt das signifikante Stabilitäts- und Performance-Verbesserungen mit sich.
Tripverlauf
Die wohl sichtbarste Neuerung ist der Tripverlauf. Dieser profitiert ebenfalls von der neuen Datenbank und wäre ohne sie in seiner jetzigen Form nicht denkbar gewesen.
Bisher wurden Trips beim Zurücksetzen unwiderruflich gelöscht (Ausnahme sind die monatlichen Trips. Eine Migrationsstrategie dafür gibt es aber noch nicht. Das liefere ich dann irgendwann nach, wenn ich die Muße dazu habe ). Nun ist es so, dass Trips in der Datenbank angelegt werden und bei einem Reset gespeichert bleiben. Da die Fahrdatenpunkte eine fortlaufende Liste darstellen, können diese auch nach dem Abschließen eines Trips problemlos referenziert werden.
Diese Umstellung hat zur Folge, dass nach dem Update alle eure Trips zurückgesetzt werden! Es geht also alles bei Null los. Schaut euch eure Trips also noch mal vorher an, wenn ihr die aktuellen Daten notieren woll. Ich hoffe, dass sowas in Zukunft nicht noch mal nötig sein wird. Ich bin aber zuversichtlich, dass die Datenbank zukunftssicher genug ist und keine derart einschneidenden Änderungen mehr erforderlich werden.
Nun aber zum praktischen Teil:
-
Der Tripverlauf kann über das neue Symbol oben rechts neben den Einstellungen aufgerufen werden.
-
Die ersten 4 Einträge sind immer die aktuell laufenden Trips (Manuell, seit Laden, Automatisch und Monat). Von diesen 4 kann regulär nur der manuelle Trip zurückgesetzt werden. Sollte es aus irgendwelchen Gründen notwendig sein, können die anderen Trips mit einem Longpress ebenfalls manuell zurückgesetzt werden.
-
Danach folgen die vergangenen Trips, sortiert nach dem Start-Datum. Diese können über das Mülltonensymbol gelöscht werden. Durch einen Longpress auf eine Mülltonne startet man den Auswahlmodus, um mehrere Trips gleichzeitig zu löschen.
-
Über das Filter-Symbol oben rechts lässt sich nach Trip-Typen und Frühestem Startdatum filtern. Ein Oranges Filter-Symbol zeigt an, dass ein Filter vom Standard abweicht und nicht alle Trips angezeigt werden.
-
Details zu den Trips können aufgerufen werden, in dem man einfach auf eine Zeile tippt. Dann öffnet sich die Bereits bekannte Tripzusammenfassung mit allen Details zu dem jeweiligen Trip.
Änderungen an der Hauptansicht
Die Trip-Statistiken im oberen rechten Teil der Hauptansicht beinhalten nun ein Symbol, um direkt zu Zeigen, welcher Trip-Typ grade angezeigt wird. Ein tippen auf diese Sektion rotiert durch die 4 aktiven Trips hindurch. Der Manuelle Trip kann ebenfalls von dort aus zurückgesetzt werden. Die Tripzusammenfassung ist während der Fahrt nicht mehr aufrufbar.
Das Verbindungssymbol kann nun konfiguriert werden. In den API-Einstellungen kann ausgewählt werden, ob die ABRP-API oder der HTTP-Webhook benutzt werden, um den Verbindungsstatus anzuzeigen (Blau: Verbunden, gelb: Mit Einschränkungen, rot: Fehler)
Änderungen am HTTP-Webhook
Wie ich im letzten Thread bereits erwähnt habe, habe ich die Daten, die vom Webhook verschickt werden, angepasst. Die Daten sind jetzt allgemeiner gehalten und beziehen sich nicht mehr auf ausgewählte, aktive Trips. Das Datenobjekt sieht nun so aus:
data class HttpDataSet(
val apiVersion: Int = 2,
val appVersion: String,
val timestamp: Long, // ms epoch time
val speed: Float, // m/s
val power: Float, // mW
val selectedGear: String,
val ignitionState: String,
val chargePortConnected: Boolean,
val batteryLevel: Float, // Wh
val stateOfCharge: Float, // 0.0 - 1.0
val ambientTemperature: Float, // °C
val lat: Float?,
val lon: Float?,
val alt: Float?,
// ABRP debug
val abrpPackage: String? = null
)
Nutzer des Webhooks sollten ihre Endpoints entsprechend anpassen. Zukünftig wird das Feld apiVersion
Auskunft darüber geben, wenn sich an dem Datenobjekt etwas verändert hat.
Sonstiges
Wie immer gibt es viele weitere kleine Verbesserungen und Änderungen. Die alle einzeln aufzulisten würde aber den Rahmen sprengen. Am auffälligsten sind da vermutlich die vielen kleinen Tweaks an der UI. Unter Anderem wird nun die Polestar-Schriftart verwendet. Ein kleines Detail, das aber dazu beiträgt, dass sich die App noch besser einfügt . Bei Volvo sieht man das noch deutlicher, da die Schriftart dort deutlicher vom Android-Standard abweicht.
Blick über den Tellerrand
Aktuell wird die App ausschließlich auf Polestars und einigen wenigen Volvos verwendet. Ein bisheriger Versuch auf einem Renault Megane e-Tech hat leider gezeigt, dass Renault im VHAL komische dinge tut, wodurch die App nicht wirklich nutzbar ist.
Mit GM und Honda kommen grade aber noch weitere Hersteller hinzu, die AAOS einsetzen. Honda stellt bereits einen Emulator zur Verfügung, mit dem ich mal etwas herumexperimentiert habe. Man könnte sagen, dass CSV nun auch „Honda-Ready“ ist, sollten die ein EV mit AAOS auf die Straße bringen . Nur die Funktionen konnte ich leider nicht wirklich testen, da dem Emulator EV-spezifische Debug-Objekte fehlen…
Aber da ist noch mehr …
Wie ich bereits ganz oben erwähnt habe, gibt es aber noch eine zweite Ankündigung neben dem eigentlichen Update. Und ich denke, diese wird für viele spannender sein, als das Update selbst
Seit dem ersten Release war der größte Wehmutstropfen die Beschränkung auf interne Tests, die auf 100 Installationen limitiert sind. Daher an dieser Stelle noch mal ein großes Dankeschön an die Maintainer der anderen Forks von CSV, die dazu beigetragen haben, die App möglichst vielen Interessierte Nutzer zur Verfügung zu stellen!
Bisher erschien ein Release der App im Play Store unmöglich. Die Guidelines von Google sehen eine derartige App schlicht nicht vor. Einzig Google selbst oder der Hersteller eines Fahrzeugs haben die Möglichkeit, Apps zu veröffentliche, die nicht in eine der vorgegebenen Kategorien fallen.
Nun, möglicherweise wird sich da mittelfristig etwas dran ändern. Manchmal braucht es jemanden, der jemanden kennt, der jemanden kennt…
So ergab es sich, dass mir vor ca. 6 Wochen die ersten Kontakte nach Göteborg vermittelt wurden, die die App ausprobiert haben. Kurz darauf folgte der erste Video-Call mit dem Polestar-Team für In-Car-Apps im Google Play Store. Dabei hat sich schnell gezeigt, dass das Team von der App absolut begeistert ist und sehr daran interessiert ist, die App früher oder später im Play Store zu veröffentlichen.
Nun möchte ich aber schon mal in aller Deutlichkeit sagen: Es steht noch lange nicht fest, ob und wann Polestar die App veröffentlichen wird. Es gilt noch einige Dinge zu klären. Insbesondere auch intern bei Polestar, aber auch hinsichtlich der technischen Umsetzung meiner App und in wie weit Anpassungen erforderlich sind, um den Anforderungen für einen Release gerecht zu werden. Daher möchte ich nicht zu viel versprechen. Ich befinde mich aber weiterhin im aktiven Austausch mit Polestar und werde euch auf dem laufenden halten, sobald es da was neues gibt.
Als es Ende letzten Jahres mit dem Car Stats Viewer los ging, hätte ich jedenfalls niemals zu träumen gewagt, dass die App derart positive Resonanz sowohl aus der Community als auch von Polestar erfahren würde und ich irgendwann mal mit den Entwicklern in Göteborg in direktem Kontakt stehen würde. Daher hier noch mal ein dickes Danke an alle, die dazu beigetragen haben, die App zu dem zu machen, was sie heute ist!