Polestar-API zu MQTT im Container (openWB-V1-Anbindung möglich)

Hab das Thema nur ich, dass mein Docker Container stürtzt?

Nein, da hat sich scheinbar die API geändert. Habe aber gerade noch keine Zeit reinzuschauen.

polestar2mqtt  | Polestar_2_MQTT.py startet
polestar2mqtt  | ==========================
polestar2mqtt  | get_token()
polestar2mqtt  |  get_login_tokens()
polestar2mqtt  | Connected with result code Success
polestar2mqtt  | Fehler: list index out of range
polestar2mqtt  | Fehler in Zeile: 65
polestar2mqtt  | Fehlertyp und Nachricht: IndexError list index out of range
polestar2mqtt  | Traceback (most recent call last):
polestar2mqtt  |   File "/app/Polestar_2_MQTT.py", line 336, in <module>
polestar2mqtt  |     main()
polestar2mqtt  |     ~~~~^^
polestar2mqtt  |   File "/app/Polestar_2_MQTT.py", line 301, in main
polestar2mqtt  |     access_token, expiry_time, refresh_token = get_token(POLESTAR_EMAIL, POLESTAR_PASSWORD)
polestar2mqtt  |                                                ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
polestar2mqtt  |   File "/app/Polestar_2_MQTT.py", line 146, in get_token
polestar2mqtt  |     path_token, cookie = get_login_tokens()
polestar2mqtt  |                          ~~~~~~~~~~~~~~~~^^
polestar2mqtt  |   File "/app/Polestar_2_MQTT.py", line 65, in get_login_tokens
polestar2mqtt  |     path_token = response.headers.get('Location').split("resumePath=")[1].split("&")[0]
polestar2mqtt  |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
polestar2mqtt  | IndexError: list index out of range

So sieht es bei mir aus.

Nicht gut:

'location': 'https://www.polestar.com/sign-in-callback?error_description=code_challenge+is+required.&error=invalid_request#.'

Also challenge+is+required.

Och nööö, nicht schon wieder. Langsam wird’s echt lästig, vor allem, wenn sich kein erkennbarer Mehrwert ergibt.

1 „Gefällt mir“

Ist wohl seit heute so :face_vomiting:, gestern gings noch ohne Probleme…

Das ging heute Vormittag noch einwandfrei

Jetzt bist du aber kleinkariert… :laughing:
Erste Fehlermeldung heute um 10:13:21.715
2024-12-09 10:13:21.715 - info: mqtt.0 (5707) Client [] connection closed: closed
2024-12-09 10:13:23.428 - info: mqtt.0 (5707) Client [] connected with secret 1733735603427_701

Edit:
@CONSULitAS Keine Ahnung ob es etwas bei der Fehlersuche hilft, hier der Log den Portainer auswirft:

2024-12-09T20:23:58.756313183Z Polestar_2_MQTT.py startet
2024-12-09T20:23:58.756678195Z ==========================
2024-12-09T20:23:58.758798308Z get_token()
2024-12-09T20:23:58.758922510Z get_login_tokens()
2024-12-09T20:23:58.760407504Z Connected with result code Success
2024-12-09T20:23:58.941378412Z Fehler: list index out of range
2024-12-09T20:23:58.942677280Z Fehler in Zeile: 65
2024-12-09T20:23:58.942770649Z Fehlertyp und Nachricht: IndexError list index out of range
2024-12-09T20:23:58.945690285Z Traceback (most recent call last):
2024-12-09T20:23:58.946179351Z File „/app/Polestar_2_MQTT.py“, line 336, in
2024-12-09T20:23:58.946288164Z main()
2024-12-09T20:23:58.946351867Z ~~~~^^
2024-12-09T20:23:58.946405292Z File „/app/Polestar_2_MQTT.py“, line 301, in main
2024-12-09T20:23:58.946539771Z access_token, expiry_time, refresh_token = get_token(POLESTAR_EMAIL, POLESTAR_PASSWORD)
2024-12-09T20:23:58.946570437Z ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-12-09T20:23:58.946594270Z File „/app/Polestar_2_MQTT.py“, line 146, in get_token
2024-12-09T20:23:58.946617011Z path_token, cookie = get_login_tokens()
2024-12-09T20:23:58.946639288Z ~~~~~~~~~~~~~~~~^^
2024-12-09T20:23:58.946660973Z File „/app/Polestar_2_MQTT.py“, line 65, in get_login_tokens
2024-12-09T20:23:58.946683047Z path_token = response.headers.get(‚Location‘).split(„resumePath=“)[1].split(„&“)[0]
2024-12-09T20:23:58.946705713Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
2024-12-09T20:23:58.946727509Z IndexError: list index out of range

1 „Gefällt mir“

GAR nicht gut:

Update: Polestar started to use PKCE for authentication. I can now get the code, but I cannot yet exchange it for a token. The quest continues!

uiuiui das klingt nach back2tibber…

Woher hast Du das? Würde ich gerne mit verfolgen…

Guggst du hier:

Python for Polestar

Edit: Scheint dort wohl schon sowas wie ne Lösung zu geben. Kann nicht mehr lange dauern bis es da nen Push Request gibt.

1 „Gefällt mir“

iOS Widgets hab ich schon gefixt

3 „Gefällt mir“

Danke, schneller als der Schall!

1 „Gefällt mir“

Versteh’ ich nicht - „git pull“ sagt die Version sei bereits aktuell (docker compose up --build habe ich mir deshab gespart), im IOBroker und Portainer sehe ich die gleichen Fehler.
Hast du schon ein Update gemacht? So habe ich deine Bemerkung verstanden… Was mache ich dann falsch?

Nein.

Ich habe die Rückmeldung zum widget gegeben.

Ah okay, dann hatte ich das falsch interpretiert - Sorry dafür.

So, jetzt aber!

Das Problem ist behoben:

olestar2mqtt  | get_battery_data()
polestar2mqtt  | {
polestar2mqtt  |     "getBatteryData": {
polestar2mqtt  |         "averageEnergyConsumptionKwhPer100Km": 24,
polestar2mqtt  |         "batteryChargeLevelPercentage": 75,
polestar2mqtt  |         "chargerConnectionStatus": "CHARGER_CONNECTION_STATUS_CONNECTED",
polestar2mqtt  |         "chargingCurrentAmps": 16,
polestar2mqtt  |         "chargingPowerWatts": 10800,
polestar2mqtt  |         "chargingStatus": "CHARGING_STATUS_CHARGING",
polestar2mqtt  |         "estimatedChargingTimeMinutesToTargetDistance": null,
polestar2mqtt  |         "estimatedChargingTimeToFullMinutes": 180,
polestar2mqtt  |         "estimatedDistanceToEmptyKm": 260,
polestar2mqtt  |         "estimatedDistanceToEmptyMiles": 140,
polestar2mqtt  |         "eventUpdatedTimestamp": {
polestar2mqtt  |             "iso": "2024-12-10T22:13:06.000Z",
polestar2mqtt  |             "unix": "1733868786"
polestar2mqtt  |         }
polestar2mqtt  |     }
polestar2mqtt  | }

Die Action zum Bau und Hochladen des neuen Containers ist jetzt gelaufen. Es können also alle mit git pull oder watchtower ihre Container aktualisieren. Sollte laufen.

Die Verbesserungen baue ich aber erst ein, wenn ich wieder zu Hause bin. Ist spät und im Hotel doof. :grin:

Ungeduld: Ich musste erst den Javascript-Code von @salkin nach Python in mein Programm portieren und testen. Ist halt nicht Copy-Paste.

@salkin/Niklas,
super Arbeit in der kurzen Zeit!
Ich muss aber jetzt erst mal meinen Code ein bisschen aufräumen.

1 „Gefällt mir“

…gepaart mit Unwissenheit!
Nochmals Entschuldigung, ich wollte nicht drängeln, hab’ deinen Post einfach falsch verstanden.

1 „Gefällt mir“

Schon gut, Ihr sollt hier ja auch was lernen. :wink: :grin:

Und noch was:

Lass als „unwissender User“ einen Watchtower mitlaufen.

Der aktualisiert Container automatisch und Du bekommst Updates ohne Mühe.

Ich plane einen „kleinen“ Breaking Change, den ich aber hier vorher ankündigen werde. Nix schlimmes, ich will nur die Variablen-Namen in der docker-compose.yml aufräumen. Die müssen dann einfach nur nach Tabelle umbenannt werden.

In so einem Fall ist ein automatisches Update natürlich unter Umständen eine kleine Überraschung. Sonst aber für Sicherheitsupdates und Co das Beste.