Auslesen der BMW-Daten mit FHEM (225xe)

  • NEUE VERSION: V0.51 BETA :)
    (das Teil wird immer Beta bleiben :P ):-)



    Disclaimer:
    Wie immer: Alle Angaben ohne Gewähr.
    Keine Garantie für Vollständigkeit oder Korrektheit der Daten.
    Verwendung auf Eigene Gefahr und in einem Zustand "as it is".
    Ich übernehme keine Verantwortung falls was nicht geht, BMW sich beschwert, wir vom CD ausgesperrt werden oder der BMW Schäden bekommt.
    Linzenz: Zur freien Verfügung, bitte mit Referenz auf mich oder den Beitrag hier. :)



    Changelog:

    Neu:


    Ich hab das Programm in 2 Teile getrennt.
    1-teil: Wie immer der Code. Der wird jedes mal beim Update neu überschrieben
    2-teil: von Euch anpassbarer Code. Hier ergänze ich nur neue Sachen, Eure bleiben dann wie sie sind.
    Hier könnt ihr an Eure Oma Push-Mitteilungen senden, wen der Tank leer ist oder sonstiges machen, was andere Leute nicht interessiert und von mir beim Update nicht gelöscht wird.



    Hab hab mit der Aufteilung versucht, euch das Updaten leicht(er) zu machen... wenn ihr an anderen Stellen noch Änderungen vorgenommen habt und sie im "persönlichen Code" wollt, dann sagt mir bescheid und ich schieb es bei der nächsten Änderung ebenfalls rüber. :)



    Auch neu:
    ihr könnt in FHEM einmalig {BMW_RequestBMWDescription();;} aufrufen (in der Leiste oben, mit { und 2x ;
    dann werden einmalig die Fahrzeugdaten abgerufen. Vielleicht verwende ich das später, um Fahrzeugabhängige Daten (i3, 225xe, ..., Schiebedach, ...) abzurufen.


    so. hier der Code.




    Roadmap:
    Was kommt, was fehlt?
    - soc und soc max
    - google authentifizierung für die karten (fehlermeldung)
    - vielleicht mal Anpassungen für andere Fahrzeuge? (i3, 5er Hybrid, ...)
    - Vielleicht mal ein Umzug zu Github oder so.
    - Darstellung als Floorplan in Farbe und bunt. :)
    - Wünsche gerne an mich.(oder fertiger Code) :)



    so.
    Viel Spaß damit.



    Supportanfragen gerne hier im Forum.
    Per PM geht's auch, aber meistens habt ihr die gleichen Fragen / Probleme,...
    ... und mittlerweile gibt's noch andre, die helfen können.



    Danke für Euer Feedback und anregungen.

  • Super, vielen lieben Dank für das Update. Ich habe es nach einiger Frickelei partiell zum Laufen bekommen. Die eingeschränkte Funktionalität liegt vermutlich daran, dass ich aktuell versuche das Skript mit meinem X1 F48 zu verwenden. Viel mehr als die Positionsdaten bekomme ich damit aktuelle nicht abgefragt.


    Hat irgendjemand vielleicht ein paar ein Hinweise wie ich mir das Skript entsprechend umbauen kann, so dass es den Funktionalitäten meines Fahrzeugs entspricht.


    Herzlichen Dank und beste Grüße!

  • Vielen Dank für das Modul!
    Ich habe einen i3 und das bei mir zum Laufen gebracht. Funktioniert prinzipiell super, bin begeistert. Folgende Fragen / Anmerkungen:

    • BMW_RequestBMWDescription() lief bei mir auf einen Fehler in Zeile 1118 ($content =~ s/[\[\]]*//g;).
      Ich glaube das lag daran, dass bei mir auch innerhalb von $content eckige Klammern vorkommen (...supportedChargingModes":["AC_LOW","DC"]…)
      In der Annahme dass nur die Klammern am Anfang und Ende entfernt werden sollen habe ich das ersetzt durch $content =~ s/^\[//g; $content =~ s/\]$//g;
      Damit lief es bei mir durch.
    • In meinem Log tauchen recht viele Meldungen auf der Art set BMW_gps_lat : no set value specified
      Das liegt vermutlich daran, dass ich meine GPS-Bestimmung deaktiviert habe. Aber auch für andere Werte taucht das auf, vielleicht weil die bei mir nicht vorhanden sind oder vielleicht auch nur temporär während das Auto in Bewegung ist nicht ermittelt werden können (gps_lat, gps_lng, chargingTimeRemaining, beRemainingRangeFuel, sunroof_state, sunroof_position, check_control_messages, BMW_prognosisWhileChargingStatus).
      Ich habe bei mir in myBMWUtils_ReceiveCarData die entsprechenden Zeilen myBMWUtils_Push2FHEM("gps_lat",$content,'attributesMap'); auskommentiert.
      Lässt sich das vielleicht so schreiben, dass das nicht auf einen Fehler läuft wenn kein Wert da ist?
    • Erkennt das Modul irgendwie, ob ein abgesetzter Steuerbefehl (z.B. Klima an) erfolgreich war und wo sehe ich das dann, damit ich ggf. den Befehl erneut senden kann?

    Vielen Dank und viele Grüße!

  • In der Annahme dass nur die Klammern am Anfang und Ende entfernt werden sollen habe ich das ersetzt durch $content =~ s/^\[//g; $content =~ s/\]$//g;

    Schau ich mir an. Sieht schlüssig aus. :)
    BMW war leider bei den JSON antworten sehr "kreativ". jede Antwort sieht anders aus und ich hab keinen einheitlichen Parser gefunden :(

    BMW_gps_lat : no set value specified

    über diese Abfrage der Fahrzeugfunktionen wollte ich später genau so Fälle abfangen. Position nur abfragen, wenn sie auch übertragen wird und das Gleiche auch für Sonnendach /(nur wenn verfügbar, ...)

    Erkennt das Modul irgendwie, ob ein abgesetzter Steuerbefehl (z.B. Klima an) erfolgreich war und wo sehe ich das dann, damit ich ggf. den Befehl erneut senden kann?

    Wenn man über FHEM ein Kommando sendet, läuft (glaub ich 5x) ein Timer, der den Status abfragt.
    Alternativ manuell per BMW_CpommandUpdate(); oder in Fhem (wenn der Timer läuft) im BML_remoteServiceStatus (als Bildchen und intern als Text)

    BMW 225xe Sport Line Atlantikgrau seit 14.11.2017 :D
    BMW X1 Bj. '16 weiß/DRK mit getarnter Sondersignalanlage (5-10 Tage/Monat Dienst)
    Audi A4 Avant bj 2006 bis 11.2017 / Fiat Tipo Bj '97 bis 2007 /Honda Civic Bj. '87 bis 2003

  • Hallo Meister.
    Danke füe das Modul. habe fhem schon einige jahre am laufen. und gerade i3 gekauft, den uch einbinden will. mit deinem modul und fhem kanb ich mit Telegram mir einiges aufs handy schicken.
    in verbindung mit sdm630m im stromkreis der walkbix geht auch einiges zusätzliches über fhem.gruss aus Österreich

  • hallo i3driver,


    freut mich, wenn es klappt.


    bei so vielen i3 sollte ich das modul doch irgendwann anpassen (oder auf github stellen damit ihr es selbst anpassen könnt :-P)

    BMW 225xe Sport Line Atlantikgrau seit 14.11.2017 :D
    BMW X1 Bj. '16 weiß/DRK mit getarnter Sondersignalanlage (5-10 Tage/Monat Dienst)
    Audi A4 Avant bj 2006 bis 11.2017 / Fiat Tipo Bj '97 bis 2007 /Honda Civic Bj. '87 bis 2003

  • Hallo.
    Habe es gerade istalliert, aber nach aufruf der testroutine kommt


    Undefined subroutine &main::BMW_Test called at (eval 864) line 1sehe gerade das es schon V0.51 gibt.Könntest du das aktuelle immer im 1. Post verlinken?LG


    [edit]
    jetzt dürfte zumindest der testaufruf klappen, habe "sudo apt-get install curl gcc-4.7" ausgeführt


    beim Device BMW_CurrentState bekomme ich aber
    ERROR: 400 Bad Request@myBMWUtils_ReceiveCommandAnswer()


    [edit]


    So klappt !!! hatte einene dreher in der VIN.


    list BMWIF_vim hat mir den fehler offenbart.


    Es kommen jetzt nicht alle Devices angezeigt, muss erst rausfinden was für was steht.


    Danke fürs erste!

  • Hallo.
    kannst du mir verraten wie du die Werte abfrägst? Deine myBMWutils.pm durchschaue ich nicht so richtig.
    Die ganzen batteriewerte werden bei mir nicht ausgeworfen, auch Brand, etc vom Wagen.


    Möchte gerne den code vergleichen mit debug der website.


    LG

  • Moin!


    Auch wenn ich mit meinem G31 hier etwas falsch bin, möchte ich trotzdem gerne meinen BMW in FHEM einbinden. Leider bekomme ich beim Abrufen der Daten beim Device BMW_CurrentState den Status
    ERROR: 400 Bad Request@myBMWUtils_ReceiveCommandAnswer()


    Die lange VIN habe ich eingetragen und das Password enthält keine Sonderzeichen.


    Wo kann ich am besten beim debuggen ansetzen?


    Vielen Dank,
    Mathias

  • hallo.
    debuggen folgendermaßen :


    connecteddrive webseite aufrufen, dann im firefox od. Chrome f12 drücken, öffnet sich debugfenster, dann im connecteddrive einloggen und im debugfenster mitlesen ob deine daten mit den vom fhem übereinstimmen. vin, userdaten mit set xxxxx einrichten