Car Stats Viewer | 0.25.x

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 :wink:

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 :upside_down_face: ). 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 :wink: . 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 :wink: . 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 :eyes:

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! :sunglasses:

79 „Gefällt mir“

Auch wenn ich CSV (noch) nicht nutze, dennoch: Gratulation die Aufmerksamkeit von Polestar gewonnen zu haben. Das ist sicher ein ziemlich gutes Gefühl, wenn aus einem (Hobby)Projekt eine ziemliche Chance entsteht. :slight_smile:

1 „Gefällt mir“

Ich lese auch nur mit und schau mir nur die Screenshots mangels Auto an. Finde aber, du leistest großartiges. Vielen Dank schon mal im Voraus ;).

2 „Gefällt mir“

Wow, freut mich für Dich das es weiter voran geht und auch Polestar den Mehrwert schon sieht! Ist ein Hammer Projekt und ich finde es toll, dabei sein zu können! Nochmal Danke!

Zu 0.25: die Möglichkeit die vergangenen Trips lokal aufzurufen finde ich super. Sieht auch toll aus. Freu mich aufs Ausprobieren nächste Woche!

2 „Gefällt mir“

Großartige Neuigkeiten, Maxi! Man muss aber auch dazu sagen, dass du nicht nur sehr energisch die Weiterentwicklung vorantreibst, sondern auch wirklich mit Köpfchen an die Sache gehst. Zumal du anfangs selbst meintest, kaum Erfahrung mit Kotlin bzw. Google/Android-Architekturen im allgemeinen zu haben (klang aber auch damals für mich schon nach etwas Understatement :wink: ). Hut ab dafür, erlebt man nicht mehr so oft in dieser Branche, in der es eben nicht nur zu wenige, sondern vor allem zu wenig gute Programmierer bzw. IT-Spezialisten gibt.

Zum Update selbst hast du ja alles wesentliche gesagt, aber ein „banales“ Detail freut mich zusätzlich besonders: die Anzeige der Durchschnittsgeschwindigkeit für den laufenden Trip! :smiley:

2 „Gefällt mir“

Ick freu mir ein Loch in den Bauch.

5 „Gefällt mir“

Und ich leide gerade noch etwas mehr, da ich in Erwartung des vom Arbeitgeber bestellten MY24 und zwischenzeitlich berufsmässigen „Herumgurken“ mit eimem ID3 kaum mehr dazu komme, mit dem Polestar unterwegs zu sein und „mitreden“ zu können :sweat_smile:

1 „Gefällt mir“

Das hat Deine App aber auch absolut verdient!!!

1 „Gefällt mir“

Sehr gut! Super!
Freue mich schon auf das Update.
Bei solch einem Einsatz kann man nur den Hut ziehen. Danke.
Und schön auch die Bestätigung von Polestar für deine (eure) Leistung.

1 „Gefällt mir“

Also noch mal für mich:
bisher wurden die JSON-Files überschrieben, wenn ein Track gelöscht wurde, richtig?
Was passiert denn nun mit der Datenbank? Wann werden denn da die Einträge gelöscht?
Hast du da schon eine Idee oder kommt das mit 0.30?
Ich hab halt keine Ahnung, wie schnell sich das Centerdisplay dann mit Datenpaketen vollmüllt.

Mega :+1:. Einfach klasse, was Du mit Bossi gemeinsam und unter Hilfe von uns Feedback gebenden auf die Beine gestellt hast. Ich hoffe für uns alle, aber besonders für Dich, dass Polestar die App auch tatsächlich veröffentlichen wird. Das würde Deiner/Eurer Arbeit auch einen angemessenen Respekt zollen.
Wer weiss, vielleicht springt ja auch ein (wie auch immer geartetes) Budget von Polestar heraus, um die App weiter im Sinne eine Softwarepflege-/Änderung zu pflegen.
Ich hoffe, dass auch nach einer evtl zustande kommenden Kooperation mit Polestar, Du immer noch derjenige bist, der sagen kann „I don`t feel it“, wenn es um die weitere App-Entwicklung geht.

P.S.: Vielleicht kommen wir ja auf diesem Wege noch zu unserer Akku-Temperatur-Anzeige :rofl:

5 „Gefällt mir“

Und dem Klimaverbrauch und der Anzeige in der Kachel…

1 „Gefällt mir“

Bekommt man eigentlich Bescheid, wenn für meinen Fork die neueste Version bereitsteht?

Ich find ja 024 schon super, aber man will ja mit der Zeit gehen :wink:

1 „Gefällt mir“

Richtig, in 0.24 wird bei einem Reset überschrieben.

In 0.25 wird jedes mal, wenn man einen Trip löscht, eine Funktion über die Datenbank laufen gelassen, die prüft, ob Datenpunkte existieren, die älter als der Startzeitpunkt des ältesten Trips sind. Falls ja, werden die ebenfalls gelöscht. Automatisch erfolgt keine Löschung mehr. Solange du also nicht von Hand Trips löscht, bleiben diese dauerhaft bestehen.

Aber man darf nicht vergessen: wenn du einen Manuellen Trip über 1000km hast, in dem selben Zeitraum aber 50 Automatische Trips liegen, dann teilen sich diese Trips die Datenpunkte. Trips im selben Zeitraum verursachen also keinen zusätzlichen Speicherbedarf. Ich schaue bei Zeiten mal, wie viel Speicher 1000 km benötigen. Auf jeden Fall kann man lange fahren, bevor es zu viele Daten werden.


Das sind auf jeden Fall punkte, auf die ich die Entwickler ansprechen möchte. Jedenfalls habe ich jetzt direkte Kontakte zu Entwicklern, die auch in der Materie drin sind, und denen ich technische Fragen stellen darf. Dazu gekommen, konkrete Fragen zu stellen, bin ich aber noch nicht. Ich will dieses Privileg aber natürlich auch nicht überstrapazieren :sweat_smile:


Sobald die Maintainer die neue Version hochgeladen haben, wird die App automatisch aktualisiert. In der Hauptansicht erscheinen dann die Patchnotes. Du kannst aber auch manuell im Play Store schauen, ob ein Update bereit steht.

1 „Gefällt mir“

So, das Update steht in meinem eigenen Test Track nun zur Installation bereit:

Ich habe die Maintainer der anderen Test Tracks darum gebeten, noch ein paar Tage mit dem Update zu warten. Ich möchte erst mal sehen, ob irgendwelche gravierenden Fehler auftreten, wenn ein paar Mehr Leute die Version testen, bevor sie in der breiten Masse ausgerollt wird. Also: Immer her mit eurem Feedback :wink:

3 „Gefällt mir“

Werden die alten Trips beim Upgrade migriert? Bin gerade auf einer längeren Tour und möchte die Hinfahrt ungern verlieren.

Nein, aktuell nicht. Die alten Dateien werden aber auch nicht gelöscht. Für eine Migrationsstrategie hatte ich bisher nicht die Muße, schiebe ich aber ggf. Noch nach. :grimacing:

Ansonsten solltest du die automatischen Updates deaktivieren, oder den Debug-Log nutzen, um die JSONs zu sichern :thinking:

Hast du die Hinfahrt denn nicht auch im Dev-Branch aufgezeichnet? :wink:

Edit: Oder du fotografierst die Daten ab :stuck_out_tongue:

Beides gemacht :+1:

0.25 läuft bei mir jetzt.
Das kleine Detail der geänderten Schrift ist spitze.
Bis jetzt nix auffälliges festgestellt.
Durchschnittsgeschwindigkeit wich bei 7 km Strecke um 2km/h nach unten ab, aber das beobachte ich jetzt mal noch.
Das Durchschalten der Trips per Fingertip ist mega!!!

1 „Gefällt mir“

Liegt das nicht daran, dass CSV die tatsächlich gemessene Geschwindigkeit nutzt, Polestar aber die Tachogeschwindigkeit, die ja immer so 2-3 km/h drüber liegt?

1 „Gefällt mir“