Smart #1 API / Smart Home Integration

  • Vermutlich ist das Thema etwas für einen neuen Ordner zum Thema Software Entwicklung ich habe das Thema jetzt mal hier aufgemacht.

    Hier sind ja schon einige Entwickler im Forum, die tolles geleistet haben. Ich habe aber noch nichts für mein Anliegen gefunden.

    Ich würde meinen Smart #1 gene in mein Home Assistant integrieren, wie das z.B. mit dem Nissan Leaf möglich ist.

    Dann könnte man auch mal automatisiert den Verbrauch bestimmen und alle Daten vom Auto sammeln.

    Hat hier schon irgendjemand ein Projekt gefunden?

    Wie kommt man an die Smart Cloud API oder kann man den Smart direkt auslesen, wenn er im WLAN hängt?

    #1 Premium Cyber Silver Metallic / Auslieferung 16.03.23 / SmartOS 1.4.0 EU

    KDMs: (EVCC Steuergerät getauscht / 4 Türen Winterproblem behoben / Notrufsystem)

  • Ich habe zur API Dokumentation bei Smart eine Anfrage gestellt und letzte Woche die Rückmeldung bekommen, dass meine Anfrage an die IT-Abteilung weiter gegeben wurde und sie sich melden wollen, aber um etwas Geduld bitten. Mal schauen, wann da was kommt.

    #1 Premium Cyber Silver Metallic / Auslieferung 16.03.23 / SmartOS 1.4.0 EU

    KDMs: (EVCC Steuergerät getauscht / 4 Türen Winterproblem behoben / Notrufsystem)

  • Ich habe es fast befürchtet, Smart hat mir folgendes geantwortet, wo ich das Gefühl habe, dass die Antwort eine KI geschrieben hat, weil ich gar nicht nach Fahrprofilen gefragt habe:


    Wir können mitteilen, dass eine API für die smart OS nicht angeboten wird. Fahrprofile können dennoch gespeichert werden. Zusätzlich empfehlen wir einen Blick auf unsere 'Hello smart'-App, anhand dessen du zum Beispiel ohne im Auto sitzen zu müssen den Batteriestatus überwachen kannst.

    #1 Premium Cyber Silver Metallic / Auslieferung 16.03.23 / SmartOS 1.4.0 EU

    KDMs: (EVCC Steuergerät getauscht / 4 Türen Winterproblem behoben / Notrufsystem)

  • 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.


    Api Endpunkt:

    https://api.ecloudeu.com/remote-control/vehicle/status/HESXA2C48N*******?latest=False&target=basic%2Cmore&userId=79****

    (→ Im Header des Requests müssen sämtliche Parameter übergeben werden, ansonsten kommt nichts zurück)


    Ergebnis:




  • Die UserID nützt alleine recht wenig. Wie bereits beschrieben, sind alle Anfragen signiert. Ohne gültige Signatur kommt kein Ergebnis.


    Folgende Header werden zwingend benötigt. Wie man an den Authorization Token kommt weiß ich. Beim Timestamp ist es nur wichtig, dass er maximal 30 Sekunden alt ist und neuer als jener vom vorigen Request. Was fehlt ist die Berechnung der Signatur (x-signature) und beim Nonce weiß ich nicht genau, ob man irgendwas schreiben kann. In jedem Fall muss es unique sein.


    Sobald der Timestamp und bzw. oder der nonce geändert wird, stimmt die Signatur nicht mehr und muss neu berechnet werden. Dazu wird ein Secret benötigt, das mir nicht bekannt ist.


    Der Knackpunkt ist also diese Berechnung. Ohne die gibt es kein Home Assistant oder sonstige Anbindungen. Ist natürlich alles non-public, also bekommt man von offizieller Seite keine Info.