ConnectedDrive WebApp für i3 und Plugins

  • Web Applikation zum Selberhosten für BMW Fahrzeuge (i3, i8 & Hybride)

    Dise ist die neue Version der App welche in Versteckte/geheime, aber wichtige Infos zum BMW i3 vorgestellt wurde.


    Nochmals zum Hintergrund: Die BMW Webseite (ConnectedDrive) ist ja soweit ganz gut zeit aber nur SoC (State of Charge also den Ladezustand) in Prozent und nicht als absoluten kWh Wert an - sie könnte aber, da die Daten sehrwohl vorliegen.


    BMW CD Portal & rechts eine selbstgehostete WebApplikation (einmal auf dem Desktop und rechts auf dem mobile)


    Die eigentlichen Daten kann man durch

    1. Das Webportal via Datenmitschneiden erhalten oder
    2. Via der BMW Server API abfragen

    Die in der Webapp angezeigten Verbräuche oder Ladeleistungen werden mittels SoC und Zeit oder km Differenz zwischen den einzelnen Aufrufen berechnet. Dazu legt das PHP skript eine CSV Datei auf dem Server an in welcher die Daten (Zeitpunkt, SoC, Gesamtkm stand...) zum jeweiligen Aufruf gespeichert werden. Der Last Leg Wert wird analog aus der Differenz des Gesamtkmstandes zweier Aufrufe berechnet (und sich dann einfach gemerkt, falls sich nicht ändert).

    Änderungen zur V1 die oben beschrieben wurde:

    • Wenn man auf den SOC Kreis klickt kommt man zu eine Graphikseite mit
      • MAX SOC Statistiken (Zeitskalen: täglich, wöchentlich, monatlich und alle Daten) und
      • ObenStreetMap für die eigene und die Fahrzeugposition


    Hauptfenster und Statistiken: Tages, Wochen, Monatsstatistik & alle Daten

    Anmerkungen zu den Anzeigen:

    1. Die Verbrauchsanzeige springt auf 99.9kWh wenn z.B. der actuelle SOC Wert sich verringert hat das Fahrzeug aber nicht bewegt wurde (unednlich hohen Verbrauch pro km)

    2. Verbrauch, Ladeleistung und letzte gefahrene Strecke bleiben bis zu einer Änderung erhalten (d.h. die letzte ladeleistung sieht man auch wenn man nicht mehr lädt)
    3. In der Die SOC_MAX Grafik
      1. Werden nur änderungen des Wertes angezeigt
      2. Es wird immer der Durchschnitt zwischen den Anzeigemomenten berechnet
      3. Bei mehr als 30 anzuzeigenden Werten wird die länge der Anzeigeperiode vergößert (außer bei Full Data)
    4. Die Positionsgrfik zoomt auf den Bereich um die eigene und Autoposition
    5. In manchen Brownsern (z.B. Chrome) funktioniert die eigene Positionsbestimmung nur bei HTTPS anbindung
    6. Die Position des Fahrzeugs kommt vom CD Portal (im Fahrzeug muss GPS aktiviert sein)

    Geplant für V3:

    • CSV ersetzen durch eine SQL-DB um nicht in der Applikationdie Daten filtern zu müssen (Speicher und Performance)
    • Verbrauchs und Ladeleistungsstatistiken
    • Speicherung und Anzeige von Wetterdaten (auch historisch damit man später Statisitken über Winter, Sommerverbräuche etc. erstellen kann)
    • Anzeige der Positionen von Fahrzeug und Browser im letzten Monat/Jahr..
    • Lasst mich Wissen was für Euch interessant sein könnte


    Installation
    Requirements: Webserver (Apache und IIS getestet) PHP (5.6 und 7.1 getestet) Laufzeitumgebung (ich nutze IIS 8 und PHP 7.1.1) Je nach Browser muss man über HTTPS gehen ansonsten ist die Funktion zur eigenen Positionsbestimmung deaktiviert.


    Getestete Browser: Google Chrome, Opera, FireFox, iCab, Safari, MS Edge (hier kommen die Grafiken in Fehlfarben)


     

    Anzeige im MS Edge (wer weiss die Lösung?)


    Eigentliche Installation:

    • Paket herunterladen
    • Paket entpacken und auf den Webserver kopieren
    • htaccess oder Webconfig Dateien anpassen (Sicherheitseinstellungen etc.)
    • Batt/api/access/auth.json mit user, passerwort (der BMW Connecteddriveseite) und VIN füllen

    Meine Webconfig sieht z.B. so aus (PHP Einstellung bitte anpassen):

    Hinweise für IIS und PHP:

    • Wenn man fehler bei der HTTPS-Abfrage bekommt ala "Cert kann nicht geprüft" werden, müsst Ihr Eure PHP installation mit einem CA cert versehen
    • Falls PHP mit einer anderen Version laufen soll, past Eure HandlerMappings an. Für PHP im allgemeinen nutzt unter ISS am besten den PHP Manager
    • Oft fehlen die passenden Mime Types, siehe meine Webconfig

    Migration der Daten von V1 auf V2:

    Eine Zeile am Anfang der Datei appstats.txt (welche sich nun im data Unterordner befindet!) hinzufügen

    Code
    1. DATE_TIME;TIMESTAMP;RANGE;SOC;ACT_SOC;MAX_SOC;REM_TIME;MILEAGE;CHARGEPOWER;CONSUMPTION;LAST_LEG;GPS_LON;GPS_LAT

    Ohne diese Zeile kann die App die Daten nicht zuordnen.


    Lizenzen der verwendeten 3pp Bibliotheken:

    Chart.js:

    The MIT License (MIT) Copyright (c) 2013-2017 Nick Downie
    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    OpenLayers 4.1:

    Licence: https://www.tldrlegal.com/l/freebsd

    Troubleshooting:

    Als erstes mal in Euer PHP Errorlog schauen - im Fehlerfall schreibe ich da auch Informationen rein.

    Zweites sehr wichtiges Hilfsmittel zur Fehlersuche sind die Entwicklertools der Browser:

    Opera, Chrome und FireFox Entwicklertools (hier Webkonsole)


    Unter apache2 habe ich eine .htaccess zum Testen (ohne security headers und rewrite) die so aussieht - welche Sicherheitsfeature apache so bietet bitte auch selber nachlesen

    PV 18,2kWp - BHKW EcoPower 1.0, 30kWh LiON Sunny Island System

    BMW i3 60Ah (Verbrauch ca. 13,8kWh/100km; SW: I001-16-07-506)

Share

Comments 6

  • Hi,
    Thank you for the App that I have installed under Linux CentOs without any problem. I have a question concerning the screen with the plot of the SocMax vs the timeline. When I click on the blue rectangle, the data with the SocMax disappears but nothing else appears even though the y-axis changes and has some negative values (in kWh): is this normal ? Is there a way to make something appear in this graph apart from the SocMax ?
    Thanking you in advance for your response,
    Best,
    Lucien Gaulard.
  • Hallo.
    Danke für die App-Aber eine Frage habe ioch zu Datum/zeit unter "mein i3 Status"
    Da steht bei mir zwar ein Datum/Zeit, aber worauf bezieht sich die? Ich ndenke auf die letzte Aktualisierung vom Portal. Nur dann stimmt die zeit nicht. Stat 16:00 steht bei mir 22:00, und ein Zusatz mit WINTER.
    Wie stell ich das richtig?
    fg
  • I have installed it on Apache and when I try to load the page, I get an error "Request failed: 424"
    I have tried both the last 7 and the full VIN. I have checked my username and password.
    I would appreciate any suggestions!
    In the PHP Error Log:
    [18-Jan-2018 13:42:28 Europe/Berlin] No remote token received - username or password might be wrongHTTP/1.1 302 Found
    Date: Thu, 18 Jan 2018 12:42:28 GMT
    Server: Apache
    Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Authorization, Origin, X-c2b-Authorization, X-c2b-mTAN, X-Requested-With, X-c2b-Sender-Id, Content-Type, Accept, Cache-Control, KeyId
    Max-Forwards: 20
    Via: 1.0 lpb2vcn02 (BMW Group API Gateway)
    X-CorrelationID: Id-3496605af1a0920100000000948894d7 0
    Location: bmw-connecteddrive.com/app/def….html?error=access_denied
    X-c2b-Exception: AuthenticationFailedAppException
    X-c2b-request-id: WmCWNKAuoA4AAD6pKScAAADW
    X-c2b-timestamp: 1516279348442
    X-NodeID: 02
    X-Powered-By: JOY
    Content-Type: text/html; charset="utf-8"
    Transfer-Encoding: chunked
    • Full VIN has to be used WBY...VZ12345, you might debug the detailed response in your browser or via modifiying the php at line 101 in index.php (add some addiotinal printouts to see what exactly you got).
    • And please triple check your auth.json for any not allowed or invisible characters messing up the user/pwd.
      PLUS: ensure that your security stuff is not accessible from the internet!!
  • Ab Microsoft Edge 41.16299.15.0 scheint es nun auch mit MS zu funktionieren (keine Änderung auf meiner Seite).
    Und installiert das Updater okedv.dyndns.org/wbb/blog/inde…uer-bmw-i3-8-und-plugins/ um die latest Features zu bekommen.