Add Porsche Connect SoC module for vehicles - #3871
Conversation
New vehicle SoC module `porsche` that reads state of charge, range and mileage from Porsche Connect (Macan EV from 2024, Taycan, Cayenne E3, Panamera G2, 911 from 992, 718). Auto-discovered like other vehicle modules; settings are JSON-editable (email, password, optional VIN). - api.py: synchronous requests-based Porsche Connect client (Auth0 "Identifier First" login, token caching/refresh, stored-overview SoC read that does not wake the car). Login flow and endpoints ported from the community library pyporscheconnectapi (Apache-2.0). - soc.py: ConfigurableVehicle wiring -> CarState(soc, range, ...). - config.py: PorscheConnect(Configuration) setup, official=False. - cli.py: standalone live-test tool (soc/list/charge). - porsche_test.py: 8 unit tests (mocked HTTP) for parsing, VIN resolution, token refresh and direct-charging command flow. - Optional direct-charging start/stop command (comfort only; not wired into openWB's automatic control, which regulates via the wallbox). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
@seaspotter Modul + UI sind live an einem MY2026 Macan getestet, CI wartet noch auf Freigabe – magst du approven? Kann ich nicht, machen @LKuemmel oder @benderl sobald sie Zeit zum Reviewen haben :) |
…sswort - config: access_token/refresh_token/expires_at ergaenzt, gespeichertes Passwort entfernt - api: Config-Modus (Tokens aus der Config + persist_cb) neben dem bestehenden Datei-/CLI-Modus; im openWB-Betrieb kein Voll-Login (die Anmeldung macht die UI) - soc: Tokens aus der Config lesen, rotierte Tokens via MQTT zurueckschreiben (analog bmw_cardata); versions-tolerante CarState (odometer optional) Das Passwort wird nur transient fuer die UI-Anmeldung genutzt und nicht gespeichert. Live getestet auf openWB 2.1.9-Patch.2 (Macan MY2026): SoC 95%, Reichweite 326 km.
- vehicle.vue: "Porsche verbinden"-Button loest den Auth0-Login ueber einen Backend-Endpoint aus und speichert die Tokens in der Config (analog bmw_cardata); das Passwort ist ein lokales Feld und wird NICHT gespeichert; zeigt ein Captcha-Bild, falls Auth0 eines verlangt - public/modules/vehicles/porsche/porsche_auth_login.php: fuehrt den Auth0-Login (E-Mail/Passwort, ggf. Captcha) per cURL durch und liefert die Tokens zurueck Gegenstueck zu openWB/core#3871.
|
Kurzes Update: Das Modul läuft live an einem Macan MY2026 (SoC 95 %, Reichweite 326 km). Ich habe die Anmeldung analog zu bmw_cardata in die UI verlegt — „Porsche verbinden"-Button → Backend-Endpoint macht den Auth0-Login → Tokens landen in der Fahrzeug-Config (Passwort wird nicht mehr gespeichert). Zwei Fragen: |
Add Porsche Connect SoC module for vehicles
Fügt ein neues Fahrzeug-(SoC)-Modul
porschehinzu, mit dem Ladestand (SoC), Reichweite und Kilometerstand von Porsche-Fahrzeugen über Porsche Connect in openWB verfügbar werden – analog zu bestehenden Cloud-Modulen (Polestar, Tronity, BMW CarData …).Was es macht
soc,range,soc_timestampundodometerüber die Porsche-Connect-Schnittstelle (identity.porsche.com/api.ppa.porsche.com), portiert aus pyporscheconnectapi (Apache-2.0).requestsüberreq.get_http_session()– keine neuen Abhängigkeiten.official=False(inoffizielle, reverse-engineerte Schnittstelle, wie andere Cloud-Module).Anmeldung & Token (analog
bmw_cardata)access_token/refresh_token/expires_atin der Fahrzeug-Config und erneuert den Token bei Ablauf selbst; rotierte Tokens werden per MQTT zurück in die Config geschrieben.cli.py) für Standalone-Tests.Konfiguration
email(Porsche ID, nur zur Anzeige),vin(optional; leer → erstes Fahrzeug im Konto)calculate_soc– SoC während der Ladung berechnen (optional)access_token/refresh_token/expires_at– von der UI-Anmeldung gefülltTest
porsche_test.py,requests_mock), alle grün; flake8 sauber (max-line-length 120).Hinweis
Dieser PR enthält bewusst keine kompilierten vue-Dateien. Die Einstellungsseite kommt als separater PR im
openwb-ui-settings-Repo: openWB/openwb-ui-settings#1066.