BMW connected drive in IPS?

Moin,

ich ich lese hier auch mit und teste(tete auch mit eigenen Scripten) im Hintergrund …
Der Token kommt nun sauber an und ich werde Authentifiziert …

Im Modul gibt es noch diverse Meldungen von der VIM usw.

Danke für deine Arbeit,

Thomas

Ok mal schauen was pitti, kjb70 oder andere schreiben ob das dort das gleiche ist. Der Token scheint ja da zu sein es scheint also an der Art und Weise zu liegen wie die Daten abgeholt werden bzw. die Abfrage getätigt wird. Eventuell findet ja pitti, kjb70 oder andere was, die bereits mit eigenen Skripten Daten schon erfolgreich abrufen.

Ich habe etwas in der modules.php „rumkopiert“.

    protected function GetBMWServerURL($area)
    {
        if($area == 1) // Europe
        {
            $url = "https://www.bmw-connecteddrive.de/api";
        }

.
.
.
    public function GetVehicleData()
    {
        $vin = $this->ReadPropertyString('vin');
		$command = "/vehicle/dynamic/v1/" . $vin . "?offset=-60";
        $response = $this->SendBMWAPI($command);
        $data = json_decode($response);
        return $data;
    }

Das bringt mir eine Ergebnis.
Jedefalls im debug Fenster :slight_smile:

Attain

Hallo und auch von mir vielen Dank für die Arbeit.

Ich kann mich auch einloggen und bekommen einen token, hier der log:

Allerdings bekomme ich keine Daten vom Fahrzeug.

Kann es sein Problem mit der app_id sein?
Diese ist im Script auf Zeile 373 festgeschrieben, sollte dies nicht für jeden User individuell sein?
Wenn Ja, wie kommt man an dies app_id?

Gruß
Pierre

Hallo Pierre,

die client_id(aus Zeile373) hatte ich bei meinen loggings auch ermittelt. Scheint also keine User abhängige zu sein.

Wie schon geschrieben, sind da noch Anpassungen in der Serveradresse und dann bei der Auswertung der zurückgegebenen Daten nötig zu sein.

Attain

Hallo Attain

auch mit deine Änderungen kommen bei mir kein Werte.
Hier die Fehlermeldung wenn ich auf „Fahrzeugdaten abholen“ klicke:

Das is bei mir folgende Zeile: $carinfo = $data->vehicleStatus;

Hallo Fonzo,

damit wird der Kilometerstand in die Variable gebracht:

    public function GetVehicleStatus()
    {
        $vin = $this->ReadPropertyString('vin');
        $command = "/vehicle/dynamic/v1/" . $vin . "?offset=-60";
        $response = $this->SendBMWAPI($command);
        $data = json_decode($response);
        $carinfo = $data->attributesMap;
//        $current_vin = $carinfo->vin;
        if(true)
        {
            $mileage = $carinfo->mileage;
            SetValue($this->GetIDForIdent("bmw_mileage"), $mileage);

Good Night

Ich habe die v1 Funktionen mal ergänzt diese sind aber zusätzlich zu den Methoden aus BMW-i-Remote verfügbar. Kann sein das an die alten URLs anders versendet wird wie an die neuen, da müsst ihr wohl mal ein wenig rumprobieren. Ansonsten müsstest ihr dann nur sagen welche Methode man am besten aufruft um welche Daten zu bekommen und welche Variablen von der Methode dann befüllt werden sollen bzw welche Variablen alles angelegt werden müssen.

Also die v1 Anfrage bringt mir folgende Antwort:

{
  "attributesMap" : {
    "updateTime_converted" : "21.01.2018 17:33",
    "DCS_CCH_Ongoing " : null,
    "updateTime_converted_timestamp" : "1516556002000",
    "window_driver_rear" : "CLOSED",
    "gps_lat" : "51.111111",
    "door_lock_state" : "SECURED",
    "condition_based_services" : "00001,OK,2019-11,27000;00100,OK,2021-11,60000;00003,OK,2020-11,",
    "trunk_state" : "CLOSED",
    "vehicle_tracking" : "1",
    "hood_state" : "CLOSED",
    "door_passenger_front" : "CLOSED",
    "lastUpdateReason" : "VEHICLE_SECURED",
    "check_control_messages" : "",
    "beRemainingRangeFuel" : "476.0",
    "lights_parking" : "OFF",
    "lsc_trigger" : "VEHICLE_SECURED",
    "unitOfEnergy" : "kWh",
    "beRemainingRangeFuelKm" : "476.0",
    "kombi_current_remaining_range_fuel" : "476",
    "window_passenger_front" : "CLOSED",
    "unitOfElectricConsumption" : "kWh/100km",
    "door_driver_front" : "CLOSED",
    "mileage" : "3614",
    "updateTime" : "21.01.2018 16:33:22 UTC",
    "head_unit_pu_software" : "03/17",
    "DCS_CCH_Activation" : null,
    "head_unit" : "NBTEvo",
    "window_passenger_rear" : "CLOSED",
    "door_driver_rear" : "CLOSED",
    "remaining_fuel" : "32",
    "updateTime_converted_time" : "17:33",
    "beRemainingRangeFuelMile" : "295.0",
    "window_driver_front" : "CLOSED",
    "gps_lng" : "11.111111",
    "unitOfCombustionConsumption" : "l/100km",
    "door_passenger_rear" : "CLOSED",
    "updateTime_converted_date" : "21.01.2018",
    "unitOfLength" : "km",
    "heading" : "345"
  },
  "vehicleMessages" : {
    "ccmMessages" : [ ],
    "cbsMessages" : [ {
      "description" : "Nächster Service nach der angegebenen Fahrstrecke oder zum angegebenen Termin.",
      "text" : "Motoröl",
      "id" : 1,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "2019-11",
      "unitOfLengthRemaining" : "27000"
    }, {
      "description" : "Nächste Sichtprüfung nach der angegebenen Fahrstrecke oder zum angegebenen Termin.",
      "text" : "Fahrzeug-Check",
      "id" : 100,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "2021-11",
      "unitOfLengthRemaining" : "60000"
    }, {
      "description" : "Nächster Wechsel spätestens zum angegebenen Termin.",
      "text" : "Bremsflüssigkeit",
      "id" : 3,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "2020-11"
    } ]
  }
}

Deswegen auch die Änderung in Zeile 524ff:

       $carinfo = $data->attributesMap;
//        $current_vin = $carinfo->vin;
        if(true) 

Wenn das alles in Variablen gepackt wird, ist bei schon alles erledigt. Ich habe aber auch nur ein Auto ohne „E“.

Attain

Moin zusammen,

war gestern Abend leider nicht mehr zum Testen gekommen.

Die API Aufrufe kann man dem Code von kjb in den ersten Post’s übernehmen. Ich hatte ja dann noch den Abruf der Images dazugesteuert.

Überall in den kursierenden GutHub-Sachen findet man den /webapi/xxx Aufruf. Anscheinend funktionieren die aber nicht mehr oder nicht mit unseren Token.

Ich habe mir für jeden Abruf mal das JSON abgespeichert, also Fonzo - wenn Du es brauchst wie bei den Image URLs dann schicke ich sie Dir per PN. Aber je Auto bekommt man anscheinend mal mehr oder weniger, jedenfalls bekommt kjb mehr als ich. Er hat ein Stromer und ich einen Normalo. Wenn jemand noch einen Hybrid hat könnte man alles zusammentragen.

Ciao Pitti

Ich habe mal die alternativen Methoden ergänzt, anscheinend scheint das Senden leicht anders zu funktionieren. Hauptsache man hat erst mal Daten. Die Methoden hab ich in der Readme ergänzt. Variablen kann ich dann heute Abend noch ergänzen, könnt ja erst mal Rückmeldung geben ob das so zur Zeit mit dem Modul funktioniert, sprich Bildanzeige und Absenden von Befehlen. Und die die einen Stromer haben müssten halt mal die JSON Daten posten, damit man weis welche Variablen anzulegen sind.

Hi zusammen,

ich habe gerade gesehen das dass JSON von Attain auch schon zu meinem sich unterscheidet.

Ich glaube es wäre am einfachsten wenn man einfach nur das JSON abspeichert und sich jeder selbst das dann extrahiert was er brucht. Bei mir sieht das so aus:

Die „Interface xyz“ enthalten die JSON Objekte! Vielleicht der einfachste gemeinsame Nenner :wink:

Ciao Pitti

Fonzo,

kleiner Bug bei der Abfrage der Server.
Statt jeweils „IF“ muste du ELSEIF verwenden. Sonst lande ich immer bei „Europe“:
Zeile 351 und 356

        elseif($area == 2) // Switzerland
        {
            $server = "Switzerland";
            $url = "https://www.bmw-connecteddrive.ch/api";
        }
        elseif($area == 3) // Europe
        {
            $server = "Europe";
            $url = "https://b2vapi.bmwgroup.com";
        }

Ist korrigiert.

Hi zusammen,

ich verwende bei mir den „.de“ Server!

Ciao Pitti

Hi zusammen,

habe Modul gerade neu geholt und bekomme jetzt folgende Fehlermeldung beim Testdaten abholen:

BMW-Testdaten abholen.PNG

Ciao Pitti

Ich bekomme jetzt beim Fahrzeugdaten abholen folgende Meldung im Debug Fenster:

 ![Fehler.JPG|764x98](upload://tiJt1vNrm95ATx2APKEPSAIgjtm.jpeg)

Moin,

ich bekomme mit der aktuellen Version die Fehlermeldung: Undefined proterty … line 524 und 525

das sind diese …
$carinfo = $data->vehicleStatus;
$current_vin = $carinfo->vin;

public function GetVehicleStatus()
{
$vin = $this->ReadPropertyString(‚vin‘);
$command = „/webapi/v1/user/vehicles/“.$vin."/status";
$response = $this->SendBMWAPI($command);
$data = json_decode($response);
$carinfo = $data->vehicleStatus;
$current_vin = $carinfo->vin;
if($vin == $current_vin)
}

Wenn ich das mal hier ausprobiere, bekomme ich …
für die URL: https://www.bmw-connecteddrive.de/api/webapi/v1/user/vehicles/WBXXXXXXXXXXX34/status

{„error“:„not_found“,„error_description“:„The requested resource does not exists“}

Ich habe auch nur einen „normalen“ ohne E oder Hybrid.

Gruß
Thomas

Meiner Meinung nach stimmt die Url nicht!

Ich denke es muss so aussehen => https://www.bmw-connecteddrive.de/api/vehicle/<interface>/v1/

Also nix mit /webapi/

Ciao Pitti

Die Keys sind wohl andere bei dieser Art der Abfrage habe ich angepasst entsprechend den Daten von Attain.