Car Stats Viewer | 0.24.x

Car Stats Viewer | 0.24.x

Allgemeine Infos zur App gibt’s im Wiki → Car Stats Viewer | Informationen


Auch dieses Mal hat es leider etwas länger gedauert, aber dafür sind einige heißersehnte Funktionen dazu gekommen :wink:

Das Update wird im Laufe des Tages live gehen.

Ein besonderer Dank gilt dieses mal @krheinwald, der sehr fleißig Logs aufgezeichnet hat, um einige fiese Bugs zu finden, damit diese nicht in der release-Version landen :wink:

Schaut euch auch gerne die ReadMe im GitHub-Repository an. Dort gibt es noch weitere Informationen zur App (auf Englisch), wie die Entwicklung unterstützt werden kann und einen vollständigen Changelog.


Changelog:
0.24.1 (18.05.2023):

  • Französische Übersetzung hinzugefügt
  • Finnische Übersetzung hinzugefügt
  • Portugiesische Übersetzung hinzugefügt
  • Anzeige der Höhendifferenz hinzugefügt (experimentell)
  • Fix bei der Einheitenanzeige am Diagramm der Tripzusammenfassung
  • Überarbeitung von Crash-Erkennung und Autostart

0.24.0 (02.04.2023):

  • Mehrere Live-Daten-APIs hinzugefügt:
    • ABRP OTA Live Data
    • HTTP Webhook mit BasicAuth
  • Standorterfassung mit Höhenverlauf hinzugefügt
  • Neustart-Benachrichtigung nach Update, Reboot oder Absturz hinzugefügt
  • Fahrzeugkonfiguration hinzugefügt
  • Einstellungsmenü umstrukturiert
  • Fehler behoben, der das aktualisieren der Einheiten in der Hauptansicht verhindert hat
  • Laden und Speichern des Debug-Log wurde drastisch optimiert.
  • Allgemeine Bugfixes und Stabilitätsverbesserungen.

Source Code:

Solltet ihr Bugs finden oder eine Idee haben, dann könnt ihr natürlich gerne hier im Forum darüber diskutieren. Eröffnet aber bitte nach Möglichkeit auch bei GitHub ein Ticket dafür. Zum einen behalte ich so besser die Übersicht und vergesse nicht, zudem könnt ihr da sehen, was bereits auf der ToDo-Liste steht oder bereits umgesetzt/abgelehnt wurde. Erst gucken, dann fragen :wink:


Vorschau:

Auch Update 0.25 ist bereits in der Mache. Da wird es wieder mal nicht viel zu sehen geben, aber das technische Grundgerüst wird (mal wieder :upside_down_face:) auf Links gedreht. Bisher werden Tripdaten als JSON-Dateien gespeichert. Das Lesen und Schreiben dieser Dateien ist aber nicht immer zuverlässig und wird bei großen Datenmengen irgendwann ziemlich ineffizient. Daher arbeite ich nun daran, die Datenspeicherung auf eine lokale Datenbank umzubauen. Das hat den Vorteil, dass Lese- und Schreibzugriffe wesentlich schneller gehen sollten, die Daten nicht mehr verloren gehen, wenn beim Schreiben ein Fehler auftritt und alle Trips automatisch erhalten bleiben, da die Fahrdaten fortlaufend sind, statt in einzelnen Files. So kann man einfach Trip-Daten Zeitraumabhängig aus der Datenbank laden. Dazu dann aber mehr, wenn es konkreter wird.


FAQ

  • Wie kann ich die App installieren?
    Da die App nicht Googles Richtlinien für Automotive-Apps entspricht, wird sie über einen Internen Test über den Play Store verteilt. Diese Internen Tests sind auf 100 Teilnehmer beschränkt. Aktuell gibt es 6 Tracks, von denen bereits alle voll sind. Eine direkte Installation ohne weiteren Fork der App ist also aktuell nicht möglich.
  • Wieso zeigt die App nicht die Akkutemperatur an?
    Die Akkutemperatur wird in der API, die die App benutzt, um auf Fahrzeugdaten zuzugreifen, nicht bereitgestellt. Das gleiche gilt auch für viele Weitere Werte wie die Leistung individueller Verbraucher.
  • Wieso werden die Verbräuche nicht weiter aufgeschlüsselt?
    AAOS erlaubt es nicht, die Leistung einzelner Verbraucher auszulesen. Es ist immer nur sichtbar, was in die Batterie rein geht oder ihr entnommen wird. Separate Werte für die Klimaanlage oder Akkuheizung sind nicht darstellbar. Daran kann ich leider auch nichts ändern.
  • Kann bitte Funktion XYZ zur App hinzugefügt werden?
    Grundsätzlich ist jeder eingeladen Ideen und Vorschläge zu teilen oder sich an der Entwicklung der App zu beteiligen. Ich behalte es mir aber vor, Features anzunehmen oder zu implementieren. Ich mache das ganze auch nur in meiner Freizeit als Hobby und möchte in erster Linie eine App programmieren, die mir selber gefällt. Getreu dem Motto „I don’t feel it!:wink:
41 „Gefällt mir“

So, in meinem Track kann das Update nun installiert werden.

Die einfachste Methode, um ABRP zu verknüpfen, ist die App auf dem Auto zu nutzen. Wenn man dort das ausgewählte Fahrzeug bearbeitet kann man eine Datenquelle hinzufügen. Dort wird ein „Generic Token“ generiert, welches man per Copy/Paste in CSV eintragen kann.

Wenn man ABRP im Auto gar nicht nutzen möchte, dann geht das natürlich auch über das Handy.

Wenn ihr euren Standort mit ABRP teilen und im CSV ein Höhenprofil haben wollt, dann müsst ihr das explizit in den Einstellungen aktivieren. Standardmäßig wird er Standort nicht gespeichert.

Gleiches gilt für das Autostart-Feature: Wenn ihr das in den Einstellung an schaltet, dann bekommt ihr eine Heads-Up-Benachrtichtigung, wenn die App abgestürzt ist, geupdated wurde oder das CD neu gebootet wurde. Da kann man dann entweder den Hintergrundservice, die App starten oder die Meldung verwerfen.

12 „Gefällt mir“

Hi Maxi

Erst mal wieder super Arbeit!
Kannst du auch näher erläutern wie das mit den Webhooks funktioniert?

Ich grätsch mal rein…

Du gibst einfach eine URL an, unter der ein Script laufen muss, dass JSON versteht. Dort wird dann das gleiche JSON hingeschickt, dass auch an ABRP geht. Eine Nachricht sieht so aus:

{„ambientTemperature“:0.0,„avgSpeed“:0.0,„batteryLevel“:150000.0,„chargePortConnected“:false,„chargeStartDate“:„Mar 15, 2023 9:11:09 PM“,„chargeTime“:-3,„chargedEnergy“:0.0,„currentGear“:4,„currentIgnitionState“:4,„currentPower“:-0.0,„currentSpeed“:0.0,„driveState“:0,„isCharging“:false,„isFastCharging“:false,„isParked“:true,„maxBatteryLevel“:76250.0,„stateOfCharge“:196,„travelTime“:-2,„traveledDistance“:0.0,„tripStartDate“:„Mar 15, 2023 9:11:09 PM“,„usedEnergy“:0.0}

CSV versendet die Daten in Form eines POST-Request mit Content-Typ „application/json “. Android setzt dabei HTTPS als Protokoll voraus, was so von der App auch verlangt wird.
Ein Request mit den aktuellen Daten wird alle 5 Sekunden verschickt.

Wenn das Verzeichnis mit Username/Passwort geschützt ist, musst Du das auch angeben (wobei mir gerade auffällt, dass ich Authentication gar nicht getestet habe :grimacing: )

Ein einfaches PHP-Script zum Empfangen, Dekodieren und Abspeichern der JSON-Nachrichten kann ich per PM gern zur Verfügung stellen.

3 „Gefällt mir“

Am besten machst du kurz ein YouTube-Video und sagst noch, welche scripts usw.

Das ist nichts für Otto-Normal-Polestarfahrer…
Wer selbst ein PHP-Script und eine MySQL-Datenbank aufsetzen kann, braucht kein Video :wink:

3 „Gefällt mir“

Noch ergänzend dazu:
CSV versendet die Daten in Form eines POST-Request mit Content-Typ „application/json“. Android setzt dabei HTTPS als Protokoll voraus, was so von der App auch verlangt wird.
Ein Request mit den aktuellen Daten wird alle 5 Sekunden verschickt.

1 „Gefällt mir“

Brauch ich für https dann nicht auch ein Zertifikat?

Nur auf dem Webserver, auf dem das Script liegt. Und da führt der einfachste Weg über Erste Schritte - Let's Encrypt - Freie SSL/TLS Zertifikate oder https://www.cloudflare.com/de-de/

1 „Gefällt mir“

Ich habe da selber nicht wirklich Erfahrung mit. Im Grunde war das vor allem @itsjsf 's Idee, nachdem ich die ABRP-API eingebaut habe. Aber zumindest bei Webhostern sollte https mittlerweile der Standard sein. wenn man selber hosted weiß ich nicht, wie sich das verhält.

Noch mal für Otto-Normal-Polestarfahrer:
Heißt das, dass mit dem webhook die geloggten Daten von CSV versandt werden können? Bzw alle 5 sek ein Päckchen verschickt wird?

Genau. Wenn du einen Webserver hast, der HTTP-Requests verarbeiten kann, dann kann der die Päckchen empfangen und für dich speichern (so wie es die ABRP-Server über deren API auch machen). Was man dann mit den Daten macht ist Jedermanns Fantasie überlassen.

Allerdings sind das nicht die von CSV geloggten daten, sondern eher die Echtzeitdaten und ein paar Langzeitwerte. Ich möchte in Zukunft aber auch eine Option einbauen, dass über die Webhooks ebenfalls nicht nur die 5s-Werte, sondern auch die 100m-Mittelwerte, die CSV verwendet, versendet werden können.

Das ist sehr schön,
dann muss ich jetzt nur noch meinen ITler fragen ob das bei uns geht.

So sehe ich das.

Zertifikat sollte machbar sein.
Was mir noch etwas Magenschmerzen bereitet ist, dass der Server ja irgendwo in meinem Heimnetz laufen muss und ich somit in meinem Router ne Portweiterleitung brauche.
Da muss ich nochmal in mich gehen und zusehen, was da best practice ist um mir da nicht ein Einfallstor für böse Buben zu schaffen.

https://www-coding.de/23-freehoster-mit-php-unterstuetzung/

1 „Gefällt mir“

Keine schlechte Idee…

Auch Track2 (mbuehler) ist auf dem neusten Stand :slight_smile:
Danke allen beteiligten für die top Arbeit!

4 „Gefällt mir“

@krheinwald @Ixam97
Was ist das korrekte Format für die HTTP-Hook URL? Bei mir kommt egal wie, immer „ungültige URL“ und somit keine Möglichkeit auf OK zu klicken.

habe schon versucht: „HTTPS://xyz.abc/script.php“ oder auch nur „xyz.abc/script.php“

es kann sein, dass die Formatabfrage case sensitive ist. hast du das https auch klein versucht? :sweat_smile:

ja, schreibt er danach automatisch groß

Ah, ich glaube ich hatte nur Https, nicht aber https versucht. Muss ich nachher nochmal machen, wenn ich am Auto bin