Danke für die Links.
Was sind die Probleme mit MQTT genau? Allgemein, weil du das noch nie verwendet hast und somit das Protokoll ansich noch nicht verstehst?
Oder MQTT selber ist eigentlich nicht das Problem, in diesem speziellen Fall aber schon?
MQTT ist ein sehr einfaches Protokoll, fast schon ZU einfach. Da könnte ich evtl. helfen, bräuchte aber deutlich mehr Input.
Schade für mich ist, dass die IoBroker Lösung Java Script ist. Das blick ich nun leider gar nicht. Hab es mir mal angesehen, wie die Oauth lösen und die Daten abfragen. Zumindest kann man die URL’s zur Polestar API finden.
Ich würde das gerne in Python nachbauen, dann läuft es auch auf meiner SmartHomeNG/smartVISU Umgebung.
Das ganze Oauth Gedöhns ist eigentlich kein Thema, wenn man exakt weiß, wie die URL’s und die Header Daten aussehen müssen. Habe ich hier schon für meine Miele Geräte und die Abfrage des Wasserqualität-Sensors für den Whirlpool. MQTT selbst läuft bei mir eh schon für die Wallbox und die Steuerung selbiger.
Sorry, ich komm’ nicht mit: Die (undokumentierte) Polestar API ist eine REST-API, zumindest liest es sich im Source von https://github.com/TA2k/ioBroker.polestar so. Wo kommt jetzt MQTT ins Spiel?
Ist das aktuell von deinem Polestar?
Hast mal geschaut ob du in den Hex-Codes deinen aktuellen SoC Wert findest? Wäre schon mal ein Anhaltspunkt. Reichweite wäre noch ein möglicher Wert.
Ich weiß, mühsam, aber manchmal reicht das. Wenn du z.B. nur den SoC brauchst um die Wallbox Steuern zu können. Mehr angezeigte Daten sind nett, aber erst mal nicht so wichtig.
Das ist der Request um Daten abzufragen. Ich gehe davon aus das es mit einem Zertifikat signiert ist weil sonst keine Authentifierungsdaten übermittel werden
Ich versuche auch schon seit Tagen mehr aus der Polestar App zu bekommen und spiele (leider ist es nicht mehr) mit einem Android-Telefon herum. Den Datenaustausch mitschneiden geht nicht (SSL Pinning), ich bin zwar insofern weitergekommen, dass ich mit Frida und objection einen Teil des SSL/Cert-Pinning ausschalten kann, aber der Teil, der für die SoC Übermittlung und Fahrzeugsteuerung zuständig ist, bleibt verschlüsselt.
Es gibt im Filesystem der App einen shared_prefs Ordner mit Vocmo_Secret_Shared_Preferences.xml und Vocmo_Shared_Preferences.xml - da klingen die Namen gut, aber scheinen mit dem Keystore von Android zu tun zu haben (androidx_security_crypto_encrypted_prefs_key_keyset), zweite XML ist eine ID aus den letzten Zahlen der VIN+Benutzername/Mailadresse_catalog (12345abcd@abcde.xy_catalog").
Was mir neu aufgefallen ist, ist diese Serveradresse, die sich in ein Zertifikat auflöst:
in einem Logfile tauchte auch das auf http://ocsp.volvocars.com/cc/
(EDIT2: okay, das ist dafür gedacht, wenn ein Certificate zurückgezogen wird -deshalb als Antwort eine 0)
…vielleicht verhilft das zum Durchbruch, für mich sind es nur Puzzleteile, die ich nicht zusammen setzen kann.
das dürfte so sein. Wenn ich die App öffne, werden 2 Dateien neu im Android-keystore abgelegt (CACERT_xxxxdevicePairingKey und CACERT_xxxxcatalogKey.) Hier gibt es dann auch die Zuordnung von dem von mir erwähnten „User“ mit VIN+Benutzername_catalog.
Woher die Keys kommen, kann ich nicht sagen - die Verbindung aus der App passiert in einer Library (libvocmo-lib.so) und tiefer komme ich da nicht.
Im catalogKey steht „=signencrypt.catalogueexternal.caraccess.eu.prod.volvocars.com“ und weiter dann ein Link, der ein Zertifikat ergibt (aber würde das Sinn machen, wenn der Schlüssel/Cert von einem Server kommt, der dann die nachfolgende Verbindung en/decodiert??)
Ich habe mich darauf konzentriert, die Verbindung „abhören“ zu können, um an die Links zu kommen, aber die Links zu den API Endpunkten sind ja eigentlich schon im iobroker. Wenn ich wieder etwas Zeit habe, spiele ich weiter herum.
Edit-PS: ich hatte heute Kontakt mit dem Support und habe meinen Wunsch nach einer offenen API (wieder) vorgebracht… leider:
Es ist derzeit nicht geplant, APIs zu veröffentlichen, aber wir werden in Zukunft weitere Optionen prüfen. Wir können aber den Kauf einer smarten Wallbox empfehlen.
Update von meiner neuesten Implementierung … mit dem Car Stats Viewer ab Version 0.24.x kann man aktiv vom Polestar einen WebHook mit dem JSON Datenpaket nach Hause ( https funktioniert) senden lassen.
Ein einfacher Weg die Position und den SOC zu übertragen ist die Verwendung des vordefinierten Tracker Objects.
Im HA muss man dazu nur in der known_devices.yaml den Polstar2 als Tracking Object anlegen… (Edit / Comment : kann man offensichtlich weglassen; die Automation erstellt ggf selbst eine neue Entity.)
… und eine Automation auf den eingehenden WebHook setzen … (bitte die UI benutzen und den zufällig generierten WebHook Schlüssel benutzen… und nicht das hier 1:1 kopieren
fertig.
BTW: Der SOC wird zuerst ins Objekt geschrieben, damit im Fehlerfall - ohne gültige GPS Daten - der Abbruch der Automation wegen ungültigem Lat/Lon keinen Effekt hat.
Wichtiger Hinweis aus der HA FAQ : dieser Weg ist nicht geeignet um mit der Positionsinformation Schaltfunktionen auszulösen; der WebHook ist nur über den statischen Schlüssel abgesichert.
Das wars; ab sofort sendet der CSV im aktiven Zustand die Daten aus dem JSON zur HA Instanz. Der Polestar / CSV beendet kurz nach dem Abschliessen und Sleep Mode den LTE Zugang, aber bis dahin wird fleissig übertragen.
Good luck!
Sehr schöne Beschreibung!
Leider hab ich keinen HomeAssistant und muss das für meine SmarthomeNG/SmartVisu Kombination adaptieren.
Einige Detailfragen noch:
Auf deinem Router ist irgendein DynDNS Service aktiv, für „your-home-assistant“ und du hast ne Portweiterleitung offen auf den Server wo HA läuft?
Auf deinem HA als Server hast du ein Zertifikat für die https Verbindung?
Dieser Webhook-Key ist als Ersatz für username/password zu sehen?