So, ich habe heute noch mal etwas an der API-Geschichte gebastelt. Nicht im speziellen für ABRP, sondern allgemein für APIs, die Daten irgendwo hin schicken wollen.
Dafür habe ich eine abstrakte Klasse (LiveDataApi) eingeführt, die dafür genutzt werden sollte. Die damit umgesetzten APIs haben Zugriff auf einen DataManager und damit so ziemlich alles, was der CSV so her gibt. Damit hat man ein einheitliches System für die APIs und kann diese sehr einfach in die App integrieren, ohne großartig etwas am eigentlichen Programmcode zu ändern. Idealerweise soll man die APIs dann einfach in der CarStatsViewer-Klasse zu einem Array hinzufügen und der Rest passiert automatisch. Man muss nur noch ein paar Layouts und Strings anpassen, aber vielleicht fällt mir da auch noch was schlaues ein, um das weiter zu modularisieren.
Individuelle Usecases sind dann natürlich nicht ausgeschlossen, aber so hat man eine einheitliche Basis, womit man die meisten Fälle abdecken können sollte.
Wenn also jemand eine weitere API integrieren möchte, bitte diese Abstrakte Klasse verwenden. Die ABRP-API bietet dafür eine gute Vorlage, wie die Implementierung funktioniert.
Erstmal dicken Daumen hoch für das geschaffte.
Bei mir passen die Kilometer nicht überein, vielmehr werden nur die, von mir gefahrenen Kilometer ausgewertet. Die Kilometer von meiner Frau und Sohn nicht.
Müssen die beiden auch das App installieren, oder muss ich da noch wo eine Haken setzten?
da die installierten Apps vom Fahrer-Profil abhängig sind: ja, die musst du noch bei den anderen installieren, eine akkumulierte Übersicht ist aber derzeit nicht möglich.
Soweit ich weiß sind die App-Installationen Nutzer-Abhängig. Selbst wenn alle Nutzer die App installiert haben, haben vermutlich alle Nutzer eigene Datensätze und keine Benutzerübergreifenden.
Dann muss du bedenken, dass du „Seit letzter Ladung“ ausgewählt hast. Da wird zurückgesetzt, wenn du ein Ladekabel abziehst. Entsprechend kann der Wert nicht mit dem Bordcomputer übereinstimmen, wenn der nach einer längeren Parkzeit automatisch zurückgesetzt wird.
Dass der Gesamtkilometerstand nicht passt lässt sich mit der obenstehenden Erläuterung, was die Nutzer betrifft, erklären.
Ein Bug habe ich noch bemerkt:
Nach einer Neu-/Erstinstallation ohne Historie ist der Graph leer. Der Durchschnittsverbrauch im Graph wird aber auf die ersten Fahrdaten und dem „leerem“ Stück (0?) berechnet, ergo viel zu gering. Der Zahlenwert in der rechte Spalte stimmt aber.
Bei unserer API hast du die Möglichkeit, dir die historischen Strompreise sowie die Verbrauchsdaten herunterzuladen und anhand dessen diese auszuwerten. Gehe dazu bitte vor, wie hier beschrieben.
Eine Integration zu bauen funktioniert aktuell leider nicht über unsere API.
Hauptproblem wird weiterhin sein, dass die App nicht weiterläuft, wenn das Fahrzeug schläft. Somit könnte man zwar den letzten SoC vor dem Einschlafen übermitteln, hat aber keine Ahnung, wie er sich bis zum Aufwachen verändert → Ladevorgang, Vortemperieren, Temperatureinflüsse, etc.
Die Automatischen Resets setzen immer voraus, dass die App auch mitbekommt, was passiert. Sprich die App muss Events registrieren, die den Drive State (Park, Drive oder Charge) verändern.
Wenn du die App erst nach Antritt der Fahrt startest, dann fehlt der Wechsel von Park auf Drive und auch bei > 4h Parken wird nicht zurückgesetzt.
Beim Laden das gleiche, wird das Kabel angesteckt und abgezogen, während das CD inaktiv ist, wird es von der App nicht registriert.
Ich werde mal schauen, ob andere/zusätzliche Trigger hier vielleicht ein besseres Verhalten mitbringen, z.B. SoC-Sprünge oder allgemein gehaltene Zeitdifferenzen bei der Ausführung der App.
okay, wenn ich das Kabel erst einstecke wenn das Auto bereits verriegelt ist, merkt CSV das nicht, da das CD bereits aus ist. Genau das habe ich gestern nämlich gemacht - üblicherweise warte ich solange mit dem Abschließen, bis der Ladevorgang tatsächlich startet.
Danke für´s Feedback
Habt ihr mal geschaut was CSV für ne Leistung anzeigt, wenn man mal richtig „Strom“ gibt? Hab das vorhin aus dem Augenwinkel gesehen. Dual Motor, 318kW und das Pedal war noch nicht mal voll durchgedrückt. Vielleicht 2/3 beim Überholen auf der Autobahn. Nein, kein Performance Pack.
Um eine möglichst lückenlose Aufzeichnung zu ermöglichen wird es eine Option geben, die App nach einem Reboot, Crash oder Update automatisch neu zu starten. Aufgrund von Einschränkungen bei Drittanbieterapps geht das leider nicht klammheimlich im Hintergrund, sondern erfordert eine Nutzerinteraktion. Insbesondere Standortdaten unterliegen da strikten Restriktionen.
Daher wird es dann die Möglichkeit geben, sich eine Benachrichtigung anzeigen zu lassen, wenn einer dieser drei Fälle eintritt und die App neu startet. Das ist dann leider ein Kompromiss, den man eingehen muss. Ob das auch bei automatischen Updates funktioniert konnte ich bisher noch nicht ausprobieren. Aber das und Crashes sind der Hauptgrund für das Feature. Denn das bekommt man nicht immer mit, wenn die App im Hintergrund ist und dann wundert man sich hinterher, warum daten fehlen.
Den grünen Knopf kann ich leider nicht ändern. Technisch gesehen ist das eine „Anrufbenachrichtigung“. Das ist die einzige Art Benachrichtigung mit Sound und direkter Anzeige auf dem CD, die AAOS ohne Systemprivilegien erlaubt. Alle anderen wären dann nur der orangener Balken und man muss das Benachrichtigungscenter öffnen.
Das ganze wird man natürlich ausschalten können, sollte es einen zu sehr nerven. Ich denke aber, dass das ein nettes Comfortfeature wird, durch das man weniger aktiv darauf achten muss, ob die App läuft oder nicht.
Moin, ich habe heute mal wieder mehr auf den Verbrauch geachtet.
CSV: 16,5 kWh/100 km
CSV neben dem Graphen in Orange: 12,1
Fahrerdisplay: 16,9
Die Angabe neben dem Graphen irritiert mich. Die ganze Fahrt über gab es nicht diesen Durchschnitt, womit veraltete Daten in der Darstellung ausfallen. Dasselbe gilt für die Durchschnittsgeschwindigkeit. Wie errechnen sich die Werte?