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

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.

Danke für deine Arbeit - läuft wieder!

Zum watchtower muss ich aber „für Blöde“ fragen. Den Abschnitt von #27 in die „docker-compose.yml“ einfügen ohne die Einrückung zu verändert - soweit okay. Ist es egal ob dies an Position 1 oder 2 geschieht?

Oder ist dies durch den Eintrag oberhalb von „2“ schon obsolete?

Ja, ist egal ob vor oder nach dem mqtt Container :slight_smile:

1 „Gefällt mir“

Genau. Bitte das services: weglassen (also nur einmal am Anfang). Das ist die „Überschrift“ des Abschnitts.

Der Eintrag unter labels: sagt dem Watchtower, dass dieser Container aktualisiert werden soll.

Ein Tipp: Bei so Fragen immer erst einmal ChatGPT fragen. Das kann das zum Teil besser als ich. Nutze ich auch gerne.

Frage mal z.B. zum Einstieg „Erkläre mir die folgende docker-compose.yml“ und dahinter die komplette Datei kopieren. Du wirst staunen.

1 „Gefällt mir“

Ist jetzt merged. :+1:

1 „Gefällt mir“

Interessante Erkenntnis:

POLESTAR_CYCLE sollte etwas unter 300 Sekunden (bei mir jetzt 280) konfiguriert werden.

Hintergrund: Beim Abruf des API-Token bekommt man „expires_in = 299“.

Bleibt man unter dieser Zeit, so erfolgt nicht bei jedem Zyklus ein neuer Login, sondern er nutzt das Token weiter.

Naja, fast. :grin:

Da fehlt im Code noch die Refresh-Funktion für das Token. :man_facepalming:

1 „Gefällt mir“

Und hier ein kleines Feature-Update:

Bildschirmfoto 2024-12-13 um 17.13.02

BASIS_TOPIC/container/online wird offline, wenn der Container nicht läuft oder die Verbindung zu MQTT verloren hat (LWT).

Der Topic wird auf online gesetzt, wenn die Verbindung zum MQTT-Server steht.

BASIS_TOPIC/container/last_update wird erst nach erfolgreichem Abruf der drei Datensätze gesetzt. Bricht der Abruf wegen eines Fehlers vorher ab, so wird der Zeitstempel nicht aktualisiert.

@Landmatrose Passt das? Was fehlt?

1 „Gefällt mir“

Das ist genau das, was ich gesucht habe, Abfrage: besteht eine Verbindung zwischen dem HomeSystem und dem Polestar-Server. :+1:

Danke dafür, freue mich schon auf das nächste Update