Peugeot / PSA / Stellantis API Zugriff

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • challo
    LoxBus Spammer
    • 21.09.2016
    • 372

    #1

    Peugeot / PSA / Stellantis API Zugriff

    Hallo zusammen,
    ich überlege mein Elektroauto (Peugeot e208) in Loxone einzubinden um z.b. Batterieladezustand für das Überschussladen zu verwenden.
    Hat hier schon jemand Erfahrungen mit der API Verwendung. Diese scheint offiziell immer noch nicht freigegeben und die Credentials müsse
    aus der Android App extrahiert werden, da die online Anmeldung, zumindest bei mir, nicht funktioniert:

    API:
    Stellantis Developers is the dedicated platform for application developers working with Stellantis connected vehicles API and SDKs.


    Account erstellen:


    Grundsätzlich wäre die API super für ein Loxberry Plugin geeignet. Zuerst wollte ich mich aber mal nach eventuellen Erfahrungen erkundigen.
  • Anhillator
    Azubi
    • 23.05.2020
    • 5

    #2
    Ich muss den Thread nochmal aufwärmen
    Gibt es hierzu mittlerweile ein Update? Würde mich brennend interessieren

    Kommentar

    • challo
      LoxBus Spammer
      • 21.09.2016
      • 372

      #3
      Ich hab zwar kein Plugin geschrieben aber eine Lösung gefunden. Kann dazu heute Abend was posten. Läuft unter ein Skript das ich bei GitHub gefunden habe und ein loxberry XL script das die Daten abrufen und auf mqtt published. Damit ist es möglich alle Daten anzurufen und z b auch preconditioning ( vorheizen/kühlen) zu aktivieren.

      Kommentar

      • challo
        LoxBus Spammer
        • 21.09.2016
        • 372

        #4
        Anhillator
        Aktuell verwende ich folgendes auf einem Raspberry zum Abfragen und Setzen der Daten über die API:
        Control psa car with connected_car v4 API. Contribute to flobz/psa_car_controller development by creating an account on GitHub.

        Dort ist auch erklärt wie man den Zugriff einrichtet und welche URLS für verschiedene Funktionen aufgerufen werden müssen.

        Um die Daten dann in Loxone zu bekommen verwende ich ein kleines LoxberryXL Script:

        Code:
        #!/usr/bin/env php
        <?php
        require_once "loxberry_XL.php";
        
        /*
            LOXBERRY XL
            EXtended Logic
            
            PSA Car Controller Daten auf MQTT übertragen
        
        */
        
        // START
        
        $url = "http://192.168.0.20:5000/get_vehicleinfo/YOURVIN?from_cache=1";
        
        
        // Get data
            echo "Downloading file from $url <br><br>";
        
        $html = file_get_contents($url);
        if(empty($html)) {
            error_log("Keine Daten von URL $url. Exit.");
            exit(1);
        }
        // Decode JSON data to PHP object
        $obj = json_decode($html, true);
        
        echo "Send data to MQTT <br><br>";
        $mqtt->retain( "PsaCarController", $html);​
        Dieses rufe ich regelmäßig über ein CRONTAB im Loxberry auf...

        Funktioniert seit ca. 1 Jahr super!

        Kommentar


        • Anhillator
          Anhillator kommentierte
          Kommentar bearbeiten
          Vielen Dank für dein Script und deine Beschreibung! Ich muss gestehen, ich hatte gehofft, dass es einfacher wäre
          Da ich nur ein Hobby-Programmierer bin, muss ich mich hier erst mal einarbeiten.

          Wenn ich es richtig verstanden habe, hast du die Integration des psa car controller für Linux auf deinem Raspberry laufen. In der Beschreibung steht, dass Python >= 3,7 benötigt wird, aktuell habe ich Python 2.7.16. Ich bin unschlüssig ob ein Update auf eine neuere Version Probleme mit den bisher laufenden Plugins des Loxberry macht.

          Zum Thema LoxBerryXL Script habe ich diesen Wiki eintrage gefunden, scheint nicht allzu kompliziert:


          Was mir jedoch noch nicht ganz so klar ist, wie du die Daten dann letztendlich in Loxone bringst. Zu meiner Schande muss ich gestehen, dass ich mit dem Plugin MQTT Gateway nicht ganz so vertraut bin wie ich es mir wünschen würde. Aufgrund von Job und Familie, hatte ich bisher nicht die Zeit mich so einzuarbeiten wie ich es gerne hätte

          Vielleicht wäre das Thema auch etwas für das LoxBerry Wiki. Ich denke wir sind nicht die einzigen, die ein Fahrzeug des PSA Konzern fahren

        • MarkusCosi
          MarkusCosi kommentierte
          Kommentar bearbeiten
          @challo: funktioniert bei dir das preconditioning? wie unten in meinem Beitrag beschrieben hakt es an dieser Stelle bei mir und ich wäre für Hinweise dankbar...

          Außerdem: was genau macht der Befehl "from_cache=1"? Ich habe dasa Gefühl, dass die Daten nicht immer aktuell sind die mir das Skript liefert... Vielen Dank!

        • Anhillator
          Anhillator kommentierte
          Kommentar bearbeiten
          @MarkusCosi: Mir ist ebenfalls aufgefallen, dass die Daten nicht immer aktuell sind, das Skript ruft jedoch schon die letzten verfügbaren Daten ab. Ich glaube es liegt daran, dass das Auto keine neue Daten schickt und in einem Sleepmodus geht. Mit "http://localhost:5000/wakeup/YOURVIN" kann man das Auto sozusagen aufwecken, damit erneut Daten geschickt werden.
      • MarkusCosi
        LoxBus Spammer
        • 28.09.2023
        • 208

        #5
        Hallo zusammen,

        auch ich würde mich für die Einbindung eines Peugeot e-208 interessieren.
        Vielen Dank schon mal an alle Beiträge und Hinweise wie es gehen kann.

        Ich habe zunächst gemäß dem Hinweis von challo (s.o.) die API "psa_car_controller" auf dem Loxberry installiert. Entsprechend der dazugehörigen Homepage (https://return2.net/opel-peugeot-ele...reshold-limit/) braucht man dazu "docker" um den Befehl "$ docker-compose up -d" auszuführen. Nachdem mir mein loxberry im Terminal zu "sudo sh get-docker.sh" zurückmeldete: "Sorry, user loxberry is not allowed to execute '/usr/bin/sh get-docker.sh' as root on loxberry.", habe ich es mit "su root" probiert. Das funktionierte... Die Installation war erfolgreich, und das Aufrufen von http://192.168.1.XXX:5000 brachte mich zum Einstellungsmenü der API. Die Daten der App und eine numerische PIN von Peugeot funktionierten dann.

        Die API gibt nun auch bereits über http://192.168.1.XXX:5000/get_vehicl...N?from_cache=1 im Browser Daten aus. Soweit so gut!

        Danach habe ich ein XL-Skript wie oben beschrieben angelegt als .php-Datei (vielen Dank für die Vorlage, challo!). Per Windows Explorer bekam ich beim Versuch einen neuen Ordner anzulegen die Fehlermeldung: "Sie benötigen Berechtigungen zum Durchführen des Vorgangs". Der "loxberry Filemanager" erlaubte mir auch nicht einen neuen Ordner "user" unter "/opt/loxberry/webfrontend/html/XL/" anzulegen. Es kam die Fehlermeldung: "Error while uploading files. Uploaded files: 0". Das selbe beim Versuch des Uploads des files. Daher habe ich gemäß des Forumbeitrags hier im loxberry-Terminal die permissions geändert: "su root", dann "cd /opt/loxberry/webfrontend/html/XL", dann “chmod +x user”, sowie “chown loxberry:loxberry user”... Danach konnte ich mit dem loxberry Filemanager das angepasste php-Skript hochladen.

        Zur Loxone Einbindung:, Zunächst habe ich einen Test gemacht ob das Skript funktioniert: wenn ich das Skript per loxberry-Terminal per "php -f skript.php" triggere, dann bekam ich eine Fehlermeldung: "PHP Parse error: syntax error, unexpected end of file in /opt/loxberry/webfrontend/html/XL/user/PSAxl.php on line 30". Das entspricht dem Ende des Skripts. Es fehlte ein "?>" am Ende des Files. Nun funktioniert es im Terminal, und ich bekomme im MQTT "Incoming Overview" Daten.

        Im MQTT Gateway vom loxberry hatte ich zuvor noch als Gateway subscription "PsaCarController/#" angegeben.

        Nun zur Loxone Config: Dort habe ich einen http Ausgang und Befehl angelegt habe und mit einem "Impuls um" Baustein getriggert habe... Der virtuelle Ausgangs-Befehl "/XL/user/<meinscript>.php" war bei "Befehl EIN" einzugeben.

        Soweit funktioniert nun also die Ausgabe von Autodaten und Stati in Loxone.

        Jedoch funktioniert die Übergabe von Befehlen, z.B. der "preconditioning"-Befehl (http-Ausgang: "http://192.168.1.XXX:5000/preconditioning/<meine VIN>/1" bei EIN bzw. "..0" bei AUS an einen EIB Taster, oder manuell so im Browser) noch nicht: weder im Webinterface der API ("http://192.168.1.XXX:5000" unter "Control") noch im MQTT Status "PsaCarController_preconditionning_air##_condi tion ing_status" sehe ich etwas anderes als "Aus" bzw. 0. Wenn ich den obigen preconditioning-Befehl im Browser eingebe kommt nach einiger Zeit "true". Aber es tut sich wie gesagt leider nichts?

        Hat hier jemand Erfahrungen bzw. eine Idee?

        Vielen Dank!​
        Zuletzt geändert von MarkusCosi; 28.10.2023, 13:04.

        Kommentar


        • Anhillator
          Anhillator kommentierte
          Kommentar bearbeiten
          Vielen Dank für deine ausführliche Beschreibung deiner Herangehensweise, das hat mir auch nochmal geholfen!
          Was mir aufgefallen ist -> Du schreibst, dass du das PHP Skript unter "/opt/loxberry/webfrontend/html/XL/" abgelegt hast. Laut einem Wiki Eintrag, (https://wiki.loxberry.de/konfigurati...ed_logic/start) werden bei einem Loxberry Update alle Daten in diesem Verzeichnis überschreiben ausgenommen ein 'user' Ordner. Nicht das beim nächsten Update ein böses Erwachen kommt
      • MarkusCosi
        LoxBus Spammer
        • 28.09.2023
        • 208

        #6
        Hallo Anhillator!

        freut mich, dass auch ich mal helfen konnte. Bisher habe ich viel wissenswertes und Hilfe in diesem Forum erfahren, da ist es schön wenn es auch mal andersherum funktioniert .

        Das PHP Skript ist unter /opt/loxberry/webfrontend/html/XL/user/, sollte also hoffentlich passen.

        Klappt das preconditioning bei dir eigentlich? Bei mir leider nicht, obgleich der Status dazu passend dem Einstellen per App funktioniert. Wobei es bei mir per Handy auch nur gefühlt jedes zweite mal klappt...

        Das wakeup scheint iwie auch nicht so recht zu funktionieren: Der Temp-Sensor z.B. bleibt gleich. Gibt es hier noch einen Trick? Ich triggere hier einen http-Ausgang (Methode Get, Ausgang nach ausführung schließen, ";" Trennzeichen) mit "http://IPLOXBERRY:5000", dann einen Befehl darunter "/wakeup/VIN", bzw "/preconditioning/VIN/1".​

        Kommentar


        • Anhillator
          Anhillator kommentierte
          Kommentar bearbeiten
          Hallo MarkusCosi,
          sorry dass ich mich jetzt erst melde...

          Bei mir funktioniert der wakeup eigentlich ganz zuverlässig. Ich nutze ebenfalls dafür einen http-Ausgang. Bei Adresse habe ich http://<IP-Adresse des Loxberry>:5000 eingetragen. Den Port 5000 habe ich beim aufsetzten des Dockercontainers ebenfalls definiert. Dann habe ich einen virtuellen Ausgangs Befehl definiert, hier habe ich bei "Befehl bei EIN" /wakeup/<VIN Deines Fahrzeugs> eingetragen

          preconditioning nutze ich selbst nicht, aber bspw. das auf- und zuschließen etc. funktioniert bei mir auch nicht. Warum auch immer
      • MarkusCosi
        LoxBus Spammer
        • 28.09.2023
        • 208

        #7
        Hallo zusammen,

        vllt. ist es ja schon jemandem aufgefallen: Der PSA Controller hat aufgehört zu funktionieren. Scheinbar wurde herstellerseitig die API grundlegend in Bezug auf die authentifizierung geändert: https://github.com/flobz/psa_car_controller/issues/733

        Mir scheint als gäbe es nun eine neue Version, v3.4.0 (https://github.com/flobz/psa_car_controller), wobei ich mir nicht sicher bin, ob die das Problem bereits behebt.
        Ggf. sollte aber zumindest diese work-around Version des Containers funktionieren: Post hier.

        Weiß zufällig jemand wie man am saubersten den laufenden / bestehenden docker Container ersetzt / updated und hatte bereits Erfolg?
        Ich hatte versucht (nach "su root"): git clone https://github.com/0x3dlux/psa_car_controller.git temp > mv temp/.git psa_car_controller/.git > rm -rf temp > docker ps → get ID of running PSA container > docker kill ID > cd psa_car_controller > docker compose up -d​. Leider ohne erfolg...

        Kommentar


        • Anhillator
          Anhillator kommentierte
          Kommentar bearbeiten
          Ich konnte bei mir zwar noch Werte empfangen bspw. den SOC aber konnte keine Befehle wie den wakeup schicken und die Ladebegrenzung bei 80% hat ebenfalls nicht mehr funktioniert. Aktuell nutze ich die Version 3.4.2.
          Ich bin mir nicht sicher ob sich die API im Hintergrund verändert hat, was sich jedoch definitiv geändert hat, ist die Passwortrichtlinie. Ich habe sehr lange gebraucht und herauszufinden, dass mein genutztes Passwort nicht mehr gültig ist.

          Bezüglich Docker kann ich dir nur wärmstens das Plugin Portainer empfehlen. Hier muss man sich dann nicht immer per ssh auf den Loxberry schalten und über die Kommandozeile arbeiten. Ist alles in allem einfach komfortabler, bspw. kann man hier einfach einen recreate des aktuellen Containers mit der neuesten Version machen.
      • MarkusCosi
        LoxBus Spammer
        • 28.09.2023
        • 208

        #8
        nun gibt es ein offizielles Update auf Version 3.4.1:
        siehe hier: https://github.com/flobz/psa_car_con...ent-1971959560

        Die Anleitung funktioniert aber ist ein wenig umständlich. Ich habe mich dazu auf dem Loxberry angemeldet, dann dort über das Menü ins Terminal:
        su root → root passwort eingeben → cd psa_car_controller → docker compose pull (dauerte ca. 15 min) → docker ps → get ID of running PSA container → docker kill ID → docker compose up -d

        Danach einwählen auf dem Webinterface des Controllers (http://IPLoxBerry:5000). Die im obigen Link beschriebenen Instruktionen musste ich im Firefox ausführen. Im Safari hatte es nicht funktioniert. Beim zweiten Eingeben der Zugangsdaten auf der PSA homepage landet man auf einer französischen Seite. Dort dan “envoyer” klicken → Dev tools des Firefox (Tools → Browser Tools → Web Developer Tools; dann Netzwerk-Ansicht wählen) → OK → Code kopieren → Im Controller Interface eingeben → dann dort weiter OTP → Fertig.

        Danach ging es wieder. Mal schauen wie lange...​

        Kommentar


        • Anhillator
          Anhillator kommentierte
          Kommentar bearbeiten
          Die Anleitung ist in der Tat sehr umständlich... Mein Hauptproblem war, dass sich das Popup-Fenster nicht automatisch geöffnent hat und ich nicht wusste, dass man sich nun bei der PSA / Stelantis Weboberfläche anmelden muss (war für mich nicht versichtlich aus der Anleitung)

          Letzte endlich bin ich jedoch ans Ziel gekommen, hier mein Vorgehen:

          - http://<IP-Adresse des Loxberry>:5000/ im Browser aufrufen
          - Mit F12 die Entwicklertools des Browser öffnen
          - schauen welchen Link die Seite öffnen wollte
          - Link über https://www.url-encode-decode.com dekodieren
          - Link im Browser eintippen und sich mit den Logindaten anmelden
          - Dann konnte ich der Anleitung wieder folgen und den Code extrahieren und unter OTP der PSA Car Controller eintragen

          Ich hatte ebenfalls das Problem, dass ich zwar wieder Daten empfangen konnte, jedoch hat der wakeup Befehl und die Ladebegrenzung bei 80% nicht mehr funktioniert. Im Logfile des PSA Car Controller habe ich gesehen, dass der Remote Token nicht definiert ist, was jedoch über den OTP Login gemacht werden sollten. Offenbar bekommt man immer eine grüne success Meldung, auch wenn die Daten beim OTP Login nicht stimmen.

          Funktioniert bei dir die Ladebegrezung von 80%? Ich konnte es bisher noch nicht erfolgreich testen.
          Ich habe daraufhin ein wenig in dem Github gelesen und habe herausgefunden, dass der PSA Car Controller nicht auf das Fahrzeug zugreift um die Ladebegrenzung zu erreichen. Er prüft zyklisch beim Laden den SOC und beim erreichen des Schwellwerts wird das zeitversetzte Laden gestartet, um somit das Laden zu stoppen. Nach dem beenden des Ladevorgangs wird wieder auf sofortiges Laden gewechselt.

          Btw. damit im PSA Car Controller die korrekte Uhrzeiz angezeigt wird, muss man einfach beim erstellen des Container die Environment Varaible
          TZ = Europe/Berlin nutzen, dann stimmt die Uhrzeit.
      • MarkusCosi
        LoxBus Spammer
        • 28.09.2023
        • 208

        #9
        Hallo Annihilator,

        beruhigt mich ein wenig, dass nicht nur ich Probleme mit der Anleitung hatte .

        Die Ladebegrenzung habe ich noch nicht probiert. Der Peugeot 208-e zumindest scheint dafür nicht ausgelegt zu sein, siehe die drei Links in meinem Beitrag zur kWh/100km Auswertung der Daten (hier). Ich hätte die Befürchtung hier durch den Abbruch des Ladens langfristig eher Schaden am Akku zu verursachen.. Obgleich ich den Ladevorgang manuell schon einige male über die Wallbox ohnehin abgebrochen habe... nunja..

        Ich würde es wohl wenn dann über die Wallbox machen wollen. D.h. einfach beim Wallbox-Baustein einer Abbruchbedingung der bereits geladenen kWh verknüpfen der dem gewünschten Ziel Batterie SOC (80%) ausgehend vom letzten SOC (e.g. 20%) entspricht (in dem Beispiel dann 80-20=60% → 50kWh * 60% * SOH = 29,4kWh). Aber umgesetzt habe ich das aus obigem Grund eben noch nicht.

        Kommentar


        • Anhillator
          Anhillator kommentierte
          Kommentar bearbeiten
          Ich habe mir den verlinkten Beitrag durchgelesen, sehr interessantes Thema
          Mir ist jedoch nicht klar, warum das Fahrzeug nicht für eine Ladebegrenzung ausgelegt ist. Wenn du die Ladung selbst nicht beendest, lädt das Fahrzeug ja im Gegenzug immer auf 100%. Ich habe keine Zahlen/Daten/Fakten aber viele Hersteller empfehlen (u.a. auch Opel; ich habe ein Corsa-e), dass man den Akku nicht über 80% laden soll, um den Akku langfristig zu schonen. Bedauerlicherweise bietet Opel selbst keine Möglichkeit die Ladung bei 80% zu begrenzen, weder per App noch im Fahrzeug selbst.

          Bei einer Umsetzung in Loxone würde ich es einfacher machen und einfach zyklisch den SOC aus dem PSA Car Controller auszulesen und bei 80% die Freigabe für die Wallbox beenden/ Abbruchbedingung setzten.
          Bspw. über die API Befehle http://localhost:5000/get_vehicleinfo/YOURVIN bzw. http://localhost:5000/wakeup/YOURVIN. Je nachdem welcher der Befehle weniger stark die API belastet. Ggf. könnte man sich auch überlegen, dass der wakeup Befehl (bei aktiver Ladung) unterhalb von ~50% nur alle 30 Minuten gesendet wird und bei ~70% alle 15 Minuten und bei ~75% alle 5 Minuten. Damit sollte man ein Überschwingen recht gut im Griff haben.

          Der Charm mit der Realisierung der Ladebegrenzung über den PSA Car Controller wäre, dass wenn man das Auto unterwegs lädt ebenfalls bei 80% aufhören würden. Voraussetzung hierfür wäre natürlich, dass der PSA Car Controller permanent am laufen ist. Die Loxone Lösung wäre nur Zuhause an der eigenen Wallbox praktikabel.
      • Marcello
        Azubi
        • 16.12.2022
        • 4

        #10
        Hallo zusammen, gibt es hierfür mittlerweile eine komfortablere Lösung über ein Plugin für den Loxberry? Ich würde es nur für den SOC meines Opels benötigen. Danke euch!

        Kommentar


        • MarkusCosi
          MarkusCosi kommentierte
          Kommentar bearbeiten
          nicht, dass ich wüsste. Wäre schon schön wenn das per Loxberry Plugin funktionieren würde. Aber mit etwas Geduld geht es ja auch so einzurichten per php-Skript und MQTT. Ggf. helfen meine Ausführungen aus Post#5 oben...

          Es funktioniert eigentlich nach wie vor ganz gut so, abgesehen von sporadischen disconnects (bis jetzt hatte ich das 2 mal...). Außerdem klappt das aktualisieren nur manchmal auf "Befehl", aber andererseits das automatische Aktualisieren recht zuverlässig und scheinbar Betriebs-getriggert (wenn Auto gestartet / abgestellt wird)... Es ist schon ganz nett das Auto in Loxone dann am Ende eingebunden zu haben, insofern denke ich lohnt sich der einmalige Aufwand.
      Lädt...