BMW connected drive in IPS?

Hier die Daten:

{
  "attributesMap" : {
    "updateTime_converted" : "26.01.2018 09:45",
    "DCS_CCH_Ongoing " : null,
    "updateTime_converted_timestamp" : "1516959931000",
    "window_driver_rear" : "CLOSED",
    "gps_lat" : "00.0000",
    "door_lock_state" : "SECURED",
    "condition_based_services" : "00001,OK,XXXX-XX,15000;00100,OK,20XX-XX,42000;00003,OK,20XX-XX,",
    "trunk_state" : "CLOSED",
    "vehicle_tracking" : "1",
    "hood_state" : "CLOSED",
    "door_passenger_front" : "CLOSED",
    "lastUpdateReason" : "VEHCSHUTDOWN_SECURED",
    "check_control_messages" : "",
    "beRemainingRangeFuel" : "567.0",
    "lights_parking" : "OFF",
    "lsc_trigger" : "VEHCSHUTDOWN_SECURED",
    "unitOfEnergy" : "kWh",
    "beRemainingRangeFuelKm" : "567.0",
    "kombi_current_remaining_range_fuel" : "567",
    "window_passenger_front" : "CLOSED",
    "unitOfElectricConsumption" : "kWh/100km",
    "door_driver_front" : "CLOSED",
    "mileage" : "12200",
    "updateTime" : "26.01.2018 08:45:31 UTC",
    "head_unit_pu_software" : "03/17",
    "DCS_CCH_Activation" : null,
    "head_unit" : "NBTEvo",
    "window_passenger_rear" : "CLOSED",
    "door_driver_rear" : "CLOSED",
    "remaining_fuel" : "56",
    "updateTime_converted_time" : "09:45",
    "beRemainingRangeFuelMile" : "352.0",
    "window_driver_front" : "CLOSED",
    "gps_lng" : "00.00000",
    "unitOfCombustionConsumption" : "l/100km",
    "door_passenger_rear" : "CLOSED",
    "updateTime_converted_date" : "26.01.2018",
    "unitOfLength" : "km",
    "heading" : "280"
  },
  "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" : "XXXX-XX",
      "unitOfLengthRemaining" : "15000"
    }, {
      "description" : "Nächste Sichtprüfung nach der angegebenen Fahrstrecke oder zum angegebenen Termin.",
      "text" : "Fahrzeug-Check",
      "id" : 100,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "XXXX-XX",
      "unitOfLengthRemaining" : "42000"
    }, {
      "description" : "Nächster Wechsel spätestens zum angegebenen Termin.",
      "text" : "Bremsflüssigkeit",
      "id" : 3,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "XXXX-XX"
    } ]
  }
}

Tom

meine hier

{
  "attributesMap" : {
    "DCS_CCH_Ongoing " : null,
    "unitOfElectricConsumption" : "kWh/100km",
    "mileage" : "139274",
    "unitOfCombustionConsumption" : "l/100km",
    "DCS_CCH_Activation" : null,
    "head_unit" : "CIC High",
    "condition_based_services" : "00001,PENDING,x.xxxx,2000,343,24,24;00100,OK,x.xxxx,26000,1063,48,48;00003,OK,x.xxxx,,463,,24;00032,OK,x.xxxx,,463,,",
    "unitOfEnergy" : "kWh",
    "unitOfLength" : "km",
    "remaining_fuel" : "32",
    "lastUpdateReason" : "Error"
  },
  "vehicleMessages" : {
    "ccmMessages" : [ ],
    "cbsMessages" : [ {
      "description" : "Wechsel demnächst fällig. Bitte Termin mit Ihrem Servicepartner vereinbaren.",
      "text" : "Motoröl",
      "id" : 1,
      "status" : "PENDING",
      "messageType" : "CBS",
      "date" : "x.xxxx",
      "unitOfLengthRemaining" : "2000"
    }, {
      "description" : "Nächste Sichtprüfung nach der angegebenen Fahrstrecke oder zum angegebenen Termin.",
      "text" : "Fahrzeug-Check",
      "id" : 100,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "x.xxxx",
      "unitOfLengthRemaining" : "26000"
    }, {
      "description" : "Nächster Wechsel spätestens zum angegebenen Termin.",
      "text" : "Bremsflüssigkeit",
      "id" : 3,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "x.xxxx",
      "unitOfLengthRemaining" : ""
    }, {
      "description" : "Nächste gesetzliche Fahrzeuguntersuchung zum angegebenen Termin.",
      "text" : "§ Fahrzeuguntersuchung",
      "id" : 32,
      "status" : "OK",
      "messageType" : "CBS",
      "date" : "x.xxxx",
      "unitOfLengthRemaining" : ""
    } ]
  }
}

Hi zusammen,

ich habe das gleich Verhalten mit den Daten, d.h. sie sind bei Kilometerstand & Tankinhalt nicht aktuell. Momentan vermute ich das sie beim Besuch beim Service ausgelesen und aktualisiert werden.

Habe die letzten Tage auch versucht wenigstens den Standort herauszubekommen, weil das geht per App bei mir auch. Auch auf der Website kann ich mein Fahrzeug lokalisieren. Leider ohne Erfolg, konnte keinen Aufruf identifizieren der das auslöst.

Ciao
Pitti

Hallo Pitti…bei mir alles fast genauso…Kilometerstand und Tankinhalt sind bestimmt vom letzten Service.

Per App kann ich eine Fahrzeuglokalisierung machen und auf der Website habe auch die Karte, aber der Button zur Lokalisierung fehlt?

button.JPG

Also bei mir ist das identisch, aber das linke Fadenkreuz ist doch der Button. Wenn ich auf die Karte gehe ist auch sofort der Standort zentriert markiert, bei Dir nicht?

Ich habe gerade mal die Connected Drive Kundenhotline angerufen und das Problem zur Ortung per APP (funktioniert) und Portal (funktioniert nicht) angesprochen. Bekomme einen Rückruf.

Dein Standort nicht vom Auto! Vom Auto ist ein Kreis mit Dreieck.

bmw1.JPG

Ich habe das Modul installiert, alle Parameter eingetragen, das Token abgeholt und dann die Fahrzeugdaten aktualisiert
Ich erhalte dann die folgende Fehlermeldung

Interessant, war mir gar nicht aufgefallen :wink:

Nach der Codezeile 1037 zu schließen beim Auslesen des Bildes :frowning:

Moin Fonzo,

  1. kleiner Bug.
27.01.2018 02:20:16 | 37462 | ERROR   | TimerPool            | BMW (BMWTokenUpdate): <br />
<b>Fatal error</b>:  Call to undefined function BMW_CheckToken() in <b>-</b> on line <b>1</b><br />

Kommt aus Zeile 182

        $this->RegisterTimer('BMWTokenUpdate', 9000000, 'BMW_CheckToken('.$this->InstanceID.');');

Die function heisst aber nur „CheckToken“.

  1. Codeverbesserung

Zeile 754
Der „offset“ ist die Zeitverschiebung zu UTC. Das kann man über date() lösen und hat damit kein Problem mit Sommer/Winterzeit oder verschiedenen Zeitzonen.

        $command = "/api/vehicle/dynamic/v1/" . $vin . "?offset=" . date('Z') / -60;
  1. Feature Request

kannst Du die Größendefinition der Karte, mit in die Konfiguration des Modules aufnehmen?

            $horizontal_size = 600;
            $vertical_value = 400;
  1. Designänderung

Ausgabe der Serviceintervalle als Tabelle (finde ich schöner :slight_smile: )

        if(isset(json_decode($response)->vehicleMessages->cbsMessages))
        {
            $HTML ='<body><style type="text/css">table.liste { width: 100%; border-collapse: true;} table.liste td { border: 1px solid #444455; } table.liste th { border: 1px solid #444455; }</style>';
			$HTML.='<table frame="box" class="liste">';
			$HTML.='<tr>';
			$HTML.='<th>Servicart</th>';
			$HTML.='<th>Beschreibung</th>';
			$HTML.='<th>Datum</th>';
			$HTML.='<th>Kilometer</th>';
			$HTML.='</tr>';

            $service = json_decode($response)->vehicleMessages->cbsMessages;
            foreach($service as $key => $servicemessage)
            {
                $description = $servicemessage->description;
                $text = $servicemessage->text;
                $date = $servicemessage->date;
				if(isset($servicemessage->unitOfLengthRemaining))
				{
					$dist = $servicemessage->unitOfLengthRemaining;
				}
				else
				{
					$dist = 'Nicht angegeben';
				}
				
				$HTML.=	'<tr align="center"><td>'	. $text			. '</td>';
				$HTML.=	'<td>'						. $description 	. '</td>';
				$HTML.=	'<td>'						. $date			. '</td>';
				$HTML.=	'<td>'						. $dist			. '</td></tr>';
            }
			$HTML.=	'</table></body>';
			SetValue($this->GetIDForIdent("bmw_service"), $HTML);
        }

Attain

Bei der Abholung der Fahrzeugdaten bekomme ich die folgende Meldung:

ist für mich im ersten Moment nicht nachvollziehbar, Die Daten sind ja im JSON vorhanden dem entsprechend sollten diese auch in die entsprechnde Variable abgelegt werden.

Das liegt daran das noch keiner eine bekannten funktionierenden Befehl dafür gepostet hat.

Was geht genau nicht? Kilometerstand und Tankinhalt sind ja theoretisch im JSON enthalten und sollten auch abgespeichert werden.

Kannst Du mal den Inhalt von Image Interface posten.

Es ging um die Fehlermeldungen, die ich auch immer noch habe:
https://www.symcon.de/forum/threads/36747-BMW-connected-drive-in-IPS?p=349354#post349354

Tom

Die Methode heißt schon BMW_CheckToken weil BMW der Präfix ist und daher immer davor steht, der Fehler lag in dem Fall darin, das die Methode protected war, daher konnte diese nicht vom Timer aufgerufen werden, dazu muss diese public sein.

Habe ich so übernommen, musst Du schauen ob es dann auch so passt.

Ist im Konfigurationsformular enthalten.

Habe ich so übernommen.

Kann ich das Bild so in die Readme von dem Modul stecken?

Will von Euch mal jemand das Readme so ergänzen das es für jeden verständlich ist was alles einzutragen ist?

Kommen die Fehlermeldungen nach dem Update immer noch?

Hallo Fonzo,

ja das Bild kannst Du verwenden.

An der Doku schreibe ich gerne nächste Woche mit.

Attain

Jetzt ist es nur noch eine Zeile die einen Fehler erzeugt:

28.01.2018 21:51:46 | TimerPool | BMW (BMWDataUpdate): <br />
<b>Notice</b>:  Undefined index: ERROR in <b>C:\IP-Symcon\modules\IPSymconBMWConnectedDrive\BMW\module.php</b> on line <b>733</b><br />
<br />
<b>Notice</b>:  Undefined index: ERROR in <b>C:\IP-Symcon\modules\IPSymconBMWConnectedDrive\BMW\module.php</b> on line <b>733</b><br />
<br />
<b>Notice</b>:  Undefined index: ERROR in <b>C:\IP-Symcon\modules\IPSymconBMWConnectedDrive\BMW\module.php</b> on line <b>733</b><br />

Tom