Live Daten via OBD für CarScanner und ABRP

  • Ah, ok. Danke! Dann lässt sich das min/max/avg über diesen Screen eh nur für die Dashboardanzeige direkt in der App (also auf dem Smartphone) verwenden, nicht aber über Carplay/Android Auto.

    Dann ist dieser Weg für mich uninteressant, und ich werde mich mit dem Set/GetVar-Thema beschäftigen.

    Ich werde berichten, ob ichs hinbekomme…

    Frontera Electric Edition (Spitzname „Lurchi“), mit Tech- sowie Komfort-Paket, 3-phasig, schwarz mit weißem Dach, Reling, LM-Felgen mit Allwetterreifen, 5 kg Rostschutzfett am Unterboden und in den Holmen.

    Bestellt 7/2024, zugelassen 5/2025.

    Momentan durchlebt er seine Pubertät, sprich kämpft (wie lange wohl nooooch?) mit diversen "Kinderkrankheiten", ist ansonsten aber schon ein toller Sportsfreund! 8)

  • Habe die Dokumentation mit SetVar, SetVarOnce und GetVar auch schon entdeckt, bisher waren meine Versuche allerdings noch erfolglos.

    Meine ersten Versuche waren ebenfalls nicht sonderlich von Erfolg gekrönt. Aber vielleicht bekommen wir es ja zusammen hin!


    Mein Ausprobier-Status:

    - "SetVar" und "SetVarOnce" scheinen zumindest irgendwie zu funktionieren. Jedenfalls stimmt, wie es auch in der Doku steht, dass diese beiden Funktionen tatsächlich den Wert zurückgeben, den sie auch in die Variable schreiben - oder zumindest schreiben sollten, denn sicher bin ich mir da aktuell noch nicht, weil:


    - "GetVar" funktioniert bei mir gar nicht, sprich gibt nicht den Variablen-Wert aus. Was zwar theoretisch natürlich auch an einem nicht erfolgten "SetVar" liegen könnte, aber im Fall des nicht erfolgreichen Schreibens durch "SetVar" müsste "GetVar" ja den Default-Wert ausgeben, weil dann ja eine Variable abgefragt worden wäre, die noch nicht mit einem Wert belegt ist. Passiert aber nicht. Es wird gar kein Wert ausgegeben - weder der Variablenwert, noch der Defaultwert.
    Daher bin ich sicher, dass "GetVar" zumindest bei mir aktuell nicht funktioniert.


    Was sind denn Deine aktuellen Findings?

    Frontera Electric Edition (Spitzname „Lurchi“), mit Tech- sowie Komfort-Paket, 3-phasig, schwarz mit weißem Dach, Reling, LM-Felgen mit Allwetterreifen, 5 kg Rostschutzfett am Unterboden und in den Holmen.

    Bestellt 7/2024, zugelassen 5/2025.

    Momentan durchlebt er seine Pubertät, sprich kämpft (wie lange wohl nooooch?) mit diversen "Kinderkrankheiten", ist ansonsten aber schon ein toller Sportsfreund! 8)

  • Ich kann das Verhalten bei mir genauso nachstellen. Insgesamt wirkt das Ganze ziemlich inkonsistent und teilweise zufällig.

    SetVarOnce gibt bei mir auch nach dem angeblich einmaligen Setzen weiter neue Werte im Dashboard zurück. Entweder wird hier gar kein fester Wert gespeichert, oder es wird einfach immer nur der aktuelle Ausdruck zurückgegeben, obwohl die Variable im Speicher stets den Anfangswert gespeiercht hat. Ich halte es für möglich, dass „Once“ intern gar nicht so funktioniert, wie man es verstehen würde.

    Abgesehen von dem einen Doku-Artikel findet man dazu online auch nichts weiter.

    GetVar liefert bei mir ebenfalls keinen sichtbaren Wert ins Dashboard zurück, weder den gesetzten Wert noch den Default.

    Ich habe testweise eine Helper-PID mit

    SetVarOnce(1, {[BMS] Traction battery Actual Energy})

    und eine Verbrauchsformel mit

    ((GetVar(1,0) - {[BMS] Traction battery Actual Energy}) / 1000 / {zurückgelegte Strecke}) * 100

    angelegt.

    In den CSV-Exports sieht man aber, dass immer dann kurz ein Verbrauchswert abseits von 0 auftaucht, wenn sich {[BMS] Traction battery Actual Energy} ändert. Der Wert entspricht dann genau „Vorheriger Wert minus neuer Wert / 1000 usw.“.

    Würde für mich bedeuten: GetVar scheint intern doch irgendwas zu liefern, nur eben nicht zuverlässig bzw. wie man es erwarten würde. Der eigentliche Fehler liegt vermutlich eher bei SetVarOnce bzw. bei der Art, wie und wann der Wert gespeichert wird.

  • Beim Schreiben des Beitrags kam mir noch eine Idee, wie man das Problem umgehen könnte. Und ich glaube, es könnte so funktionieren.

    Mein Workaround für die komische SetVarOnce-Logik:

    Ich nutze stattdessen SetVar und lasse den Wert nur in einem sehr kleinen Fenster der zurückgelegten Strecke (0,1–0,2 km) setzen, über eine If-Abfrage. So wird der Startwert einmal „eingefangen“, und danach nur noch gelesen. Damit bekomme ich erstmals plausible Werte, die wie ein realistischer Durchschnittsverbrauch für die Fahrt aussehen.

    Gerne ausprobieren und rückmelden, ob die Werte bei euch auch sinnvoll aussehen.


    Die Formeln:

    Consumption_Helper

    if({zurückgelegte Strecke}>0.1 && {zurückgelegte Strecke}<0.2, SetVar(1, {[BMS] Traction battery Actual Energy}), GetVar(1, 0))


    Consumption

    ((GetVar(1,0) - {[BMS] Traction battery Actual Energy}) / 1000 / {zurückgelegte Strecke}) * 100