Kaum vorstellbar, dass das noch aktuell ist. Das stammt ja aus einer Dokumentation, also einer Webseite, auf der man das ganze Schema durchklicken konnte. Das finde ich nur grad nicht mehr.
Top Arbeit! Vielen Dank!
Das klappt aktuell super und ist Basis für eine Home Assistant Visualisierung
Eine Frage: Der Wert bei
„POLESTAR_CYCLE: 300 # seconds`“
ist fix/bewusst so gewählt? Oder kann das variiert/kleiner gewählt werden, um z.B. PV gesteuertes Laden zu realisieren?
Alle Werte in der docker-compose.yml sind (bei allen Containern) dafür da, dass man sie an die eigenen Bedürfnisse anpasst. Also nein, ein vernünftiger Default, also bewusst so gewählt
Ja, könnte man, aber weniger als 5 Minuten macht eigentlich keinen Sinn und würde schlimmstenfalls zur Sperrung des Accounts führen können, wenn die API das abfragt.
Aber ich verstehe auch Deinen Use-Case nicht ganz.
Bei PV-gesteuertem Laden interessiert mich der SOC nur am Rande (ist eh nicht besser als 1% aufgelöst) und spannend ist der Netto-Hausverbrauch.
Wofür brauchst Du dann noch aktuellere Daten als alle 5 Minuten?
Hallo @CONSULitAS: du hast natürlich vollkommen recht, der SoC ist weniger von Interesse, aber die Watt (charging Power). Aber faktisch bin ich noch nicht so weit. Ziel wäre das dann mit Evcc zu regeln.
Ich habe testweise probiert den Wert auf 100 runter zu setzen, aber dann kamen keinen Werte mehr. Kann aber auch sein, das ich da was falsch gemacht habe. Mit Docker mache ich gerade die ersten Schritte in einem Proxmox Container;-)
Dann probiere ich das einfach noch mal……
Was mir auch noch aufgefallen ist: in mqtt bleibt die charging Power auf dem ‚alten‘ Wert und sinkt nicht auf 0, wenn das Laden beendet ist oder pausiert. Das ist für die Anzeige auch etwas misslich. Ich habe mir dann einen Helfer gebaut, der den Wert auf 0 setzt……
Wenn du evcc verwendest brauchst du die info vom Überschuss(überschüssige Leistung die ins Netz gespeist wird) und die wallbox, die kontrolliert werden kann von evcc.
Der SoC ist interessant, aber nicht zwingend notwendig.
Nachdem ich keine NodeRED Installation habe und auch nicht vor hatte eine aufzubauen, hab ich mal einen PR aufgemacht für optionales direktes MQTT forwarding.
Mosquitto selbst hat zwar auch ein Topic Remapping, allerdings kann man den lokalen Prefix nicht weg konfigurieren, daher musste eine Erweiterung für das Python Script her.
@yeti Da ich ja auch eine openWB habe und ich es eigentlich vorziehe nicht so viele Zwischenschritte zu machen, um die Ausfallsicherheit zu erhöhen, gefällt mir das ganz gut.
Auch der Code sieht ordentlich aus.
Ich hätte da (neben squashen der Commits, siehe GitHub) noch einen Vorschlag:
Für die weniger bedarften User unter uns würde ich OPENWB_TOPIC aufteilen in
OPENWB_LP = 1 # oder 2
OPENWB_TOPIC = "openWB/set/lp/{OPENWB_LP}/%Soc"
Und dann im Code halt mit f("...") auflösen.
Dann muss der normale User nur seinen LP setzen und sich nicht mit den MQTT-Feinheiten der openWB auseinandersetzen.
klingt gut. Ja, ich hatte mir auch schon Gedanken gemacht, wie man das am besten konfigurierbar macht. Aber dein Vorschlag, gefällt mir gut! Soll ich das nachziehen, oder bist du da eh schon dran?
Der MQTT läuft bei mir unter dem IOBroker auf einem Raspi. Die Werte der Polestar-API werden nur dann neu beschrieben wenn sich tatsächlich ein neuer Wert auf dem Polestar -Server vorliegt. Das ist zwar ökonomisch und verhindert unnötige Schreibzugriffe, hat aber einen entscheidenden Nachteil: sollte der Polestar-Server nicht erreichbar sein bekommt das der IOBroker nicht mit.
Meine vorherige (Tibber-) Lösung von @Electrified hatte die Kommunikation zum Server abgefragt und einen Status übermittelt (200= alles OK, 400=Login nicht möglich etc.). Diesen Status habe ich dann in meinem IOBroker-Skript verarbeitet, z.B. ist der übermittelte SoC wirklich ein aktueller Wert oder „Schnee von gestern“. Irgendwie wußte die Abfrage auch wann das Auto das letzte Mal Daten an den Server geschickt hat - diese Info habe ich für mein Zielladen gerne genutzt (war der SoC nicht aktuell, habe ich auf geladene kWh geschaltet).
Das geht jetzt nicht mehr. Darum die Frage: wäre es möglich so etwas zu realisieren, oder gibt es einen Work around den ich nicht sehe?
Wenn ich das richtig sehe würde das erlauben die Verbindung MQTT ← Polestar-Server zu überprüfen. Das würde mein Hauptproblem (keine Antwort vom Server) lösen. Muss ich mir 'mal ansehen ob ich das eingebaut bekomme.
Die Verbindung Auto → Polestar-Server (die Aktualität der vorliegenden Daten) kann von Extern ohnehin nur logisch auf Plausibilität geprüft werden - oder?
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