Ich habe mich mal mit einem Proxy zwischen die iOS App gehängt und geschaut, welche api calls gemacht werden und was zurück kommt.
Vorneweg: die Kommunikation ist per Oauth abgesichert und jeder einzelne Request wird nicht nur mit einem Authorization Header versehen (JWT accessToken) sondern zusätzlich mit einem Timestamp, einer Nonce (Zufallswert) sowie einer Signatur. Die Signatur wird mit einem privaten Schlüssel generiert (der mir nicht bekannt ist). Dadurch wird sichergestellt, dass Requests nicht wiederholt abgeschickt werden können bzw. abgefangen und verändert werden.
Folgender api call liefert so ziemlich alle Daten, die teilweise auch in der App schon angezeigt werden, z.B. Standort des Autos (position), Reifendruck, Akkustand (chargeLevel) usw. Es sind aber auch Infos dabei, die die App (noch) nicht anzeigt, z.B. der Zustand der 12V Batterie.
(→ Im Header des Requests müssen sämtliche Parameter übergeben werden, ansonsten kommt nichts zurück)
{
"code":"1000",
"data":{
"result":{
"serviceResult":{
"error":null,
"operationResult":1
},
"sessionId":"NS0912350000000**************"
},
"vehicleStatus":{
"basicVehicleStatus":{
"usageMode":"0",
"engineStatus":"engine_off",
"position":{
"altitude":"49",
"posCanBeTrusted":"true",
"latitude":"18*******31",
"carLocatorStatUploadEn":"true",
"marsCoordinates":"false",
"longitude":"24******8"
},
"carMode":"0",
"speed":"0.0",
"speedValidity":"false",
"direction":"0"
},
"notification":{
"notifForEmgyCallStatus":"0",
"reason":"1",
"time":"1675172143",
"parameters":"{\"key\":\"New VIN number\",\"stringVal\":\"HESXA2**********\"},{\"key\":\"Previous VIN number\",\"stringVal\":\"null\"}"
},
"eg":{
"enableRunning":"false",
"blocked":{
"status":"0"
},
"panicStatus":"false"
},
"parkTime":{
"status":"1682430830731"
},
"configuration":{
"propulsionType":"4",
"fuelType":"4",
"vin":"HESXA**********"
},
"updateTime":"1682431295000",
"additionalVehicleStatus":{
"maintenanceStatus":{
"daysToService":"496",
"engineHrsToService":"500",
"odometer":"118.000",
"brakeFluidLevelStatus":"3",
"tyreTempDriverRear":"18.000",
"mainBatteryStatus":{
"stateOfCharge":"1",
"chargeLevel":"82.6",
"energyLevel":"0",
"stateOfHealth":"0",
"powerLevel":"0",
"voltage":"12.475"
},
"tyreTempDriver":"17.000",
"tyreTempPassengerRear":"17.000",
"distanceToService":"29882",
"tyreStatusPassengerRear":"258.124",
"tyreStatusPassenger":"258.124",
"tyreStatusDriverRear":"262.243",
"serviceWarningStatus":"0",
"tyreStatusDriver":"260.870",
"tyreTempPassenger":"16.000",
"washerFluidLevelStatus":"1"
},
"electricVehicleStatus":{
"disChargeUAct":"0.0",
"dcChargeSts":"0",
"disChargeSts":"0",
"chargeLevel":"74",
"statusOfChargerConnection":"0",
"chargeLidAcStatus":"2",
"distanceToEmptyOnBattery100Soc":"403",
"distanceToEmptyOnBatteryOnly":"276",
"dcDcActvd":"0",
"indPowerConsumption":"1000",
"averPowerConsumption":"16.9",
"dcDcConnectStatus":"0",
"disChargeIAct":"0.0",
"dcChargeIAct":"0.0",
"chargerState":"0",
"timeToTargetDisCharged":"2047",
"chargeUAct":"0.0",
"distanceToEmptyOnBattery20Soc":"81",
"bookChargeSts":"0",
"disChargeConnectStatus":"0",
"chargeIAct":"0.000",
"chargeLidDcAcStatus":"2",
"timeToFullyCharged":"2047"
},
"chargeHvSts":"2",
"drivingBehaviourStatus":{
"gearAutoStatus":"0"
},
"trailerStatus":{
"trailerFogLampSts":"0",
"trailerTurningLampSts":"0",
"trailerBreakLampSts":"0",
"trailerReversingLampSts":"0",
"trailerPosLampSts":"0"
},
"runningStatus":{
"ahbc":"0",
"goodbye":"0",
"homeSafe":"0",
"cornrgLi":"0",
"frntFog":"0",
"stopLi":"0",
"tripMeter1":"86.3",
"approach":"0",
"tripMeter2":"16.4",
"hiBeam":"0",
"engineCoolantLevelStatus":"3",
"loBeam":"0",
"ltgShow":"0",
"welcome":"0",
"drl":"0",
"ahl":"0",
"trunIndrLe":"0",
"trunIndrRi":"0",
"dbl":"0",
"afs":"0",
"avgSpeed":"18",
"reverseLi":"0",
"hwl":"0",
"reFog":"0",
"flash":"0"
},
"climateStatus":{
"drvHeatSts":"0",
"winPosDriver":"0",
"rrVentDetail":"0",
"rlVentSts":"0",
"passVentSts":"0",
"interiorTemp":"23.200",
"passVentDetail":"0",
"sunroofPos":"101",
"sunroofOpenStatus":"1",
"rrHeatingDetail":"0",
"winStatusPassenger":"2",
"drvVentSts":"0",
"fragActive":false,
"winStatusDriver":"2",
"winStatusPassengerRear":"2",
"sunCurtainRearOpenStatus":"1",
"preClimateActive":false,
"rlHeatingDetail":"0",
"winPosPassengerRear":"0",
"rlVentDetail":"0",
"curtainPos":"101",
"curtainOpenStatus":"1",
"climateOverHeatProActive":"false",
"rrVentSts":"0",
"rrHeatingSts":"0",
"steerWhlHeatingSts":"0",
"drvVentDetail":"0",
"winPosPassenger":"0",
"winPosDriverRear":"0",
"exteriorTemp":"13.500",
"rlHeatingSts":"0",
"winStatusDriverRear":"2",
"drvHeatDetail":"2",
"passHeatingDetail":"2",
"airBlowerActive":"false",
"sunCurtainRearPos":"0",
"passHeatingSts":"0"
},
"drivingSafetyStatus":{
"doorLockStatusDriverRear":"1",
"srsCrashStatus":"0",
"doorOpenStatusPassengerRear":"0",
"doorPosPassengerRear":"0",
"doorOpenStatusDriver":"0",
"seatBeltStatusPassenger":"false",
"seatBeltStatusThPassengerRear":"false",
"doorPosDriver":"0",
"electricParkBrakeStatus":"3",
"doorLockStatusDriver":"1",
"seatBeltStatusThDriverRear":"false",
"tankFlapStatus":"2",
"seatBeltStatusPassengerRear":"false",
"doorOpenStatusPassenger":"0",
"doorPosPassenger":"0",
"vehicleAlarm":{
"alrmTrgSrc":"0"
},
"doorPosDriverRear":"0",
"centralLockingStatus":"2",
"seatBeltStatusDriver":"false",
"doorLockStatusPassenger":"1",
"seatBeltStatusMidRear":"false",
"trunkLockStatus":"1",
"seatBeltStatusDriverRear":"false",
"engineHoodOpenStatus":"0",
"doorOpenStatusDriverRear":"0",
"doorLockStatusPassengerRear":"1",
"trunkOpenStatus":"0"
},
"pollutionStatus":{
"interiorPM25":"1",
"interiorSecondPM25Level":"0",
"interiorPM25Level":"0",
"relHumSts":"80",
"exteriorPM25Level":"0"
}
},
"temStatus":{
"swVersion":null,
"serialNumber":null,
"powerSource":null,
"networkAccessStatus":{
"mobileNetwork":null,
"simInfo":{
"iccId":null,
"imsi":null,
"msisdn":null
}
},
"mcuVersion":null,
"mpuVersion":null,
"backupBattery":{
"stateOfCharge":null,
"stateOfHealth":null,
"voltage":null
},
"hwVersion":null,
"powerMode":null,
"sleepCycleNextWakeupTime":null,
"imei":null,
"state":null,
"connectivityStatus":null
}
}
},
"success":true,
"hint":null,
"httpStatus":"OK",
"sessionId":"94864a**********************",
"message":"operation succeed"
}
Alles anzeigen