FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Jmr008 am 22 Mai 2023, 13:39:50

Titel: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: Jmr008 am 22 Mai 2023, 13:39:50
Hallo,
ich möchte hier meine Lösung zur Anzeige von BMW-Fahrzeugdaten mit Hilfe des Toolsets bimmer_connected (https://github.com/bimmerconnected/bimmer_connected) vorstellen.

Mit der Lösung zeige ich zurzeit die Daten meiner eAutos
- Fahrzeugname
- Reichweite
- soc
- Ladestatus
- Ladeziel
- km
in Fhem an.

Die Daten werden vom BMW-Server geholt. Damit Daten da sind, muss das Fahrzeug bei der MyBMW-App angemeldet sein.

Was ist zu tun:
1: Installation von bimmer_connected und mosquitto auf den fhem-Server .
----
sudo apt-get install python3-pip
sudo pip3 install --upgrade bimmer_connected

und

sudo apt-get install mosquitto-clients
----

2: Script zum Abrufen bei BMW und Weitergeben der Daten an Fhem bauen
----
#!/bin/bash
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
bimmerconnected status --json bbbbbb pppppp res
t_of_world | mosquitto_pub -h 192.168.1.17 -p 1884 -d -t /bmw -l --quiet
----
Für bbbbbb die eMail-Adresse des MyBMW-Accouts und
für  pppppp das Passwort des MyBMW-Accouts eingeben.
192.168.1.17 ist mein Fhem-Server.
Rechte mit chmod setzen nicht vergessen.
Sobald das Script ausreichend  getestet ist, kann es regelmäßig mit einen cron-job gestartet werden.
Der Port 1884 muss frei sein, ggf. einen anderen nehmen.
Das Script wird noch Fehler melden, da das Ziel  - Port 1884 - auf Fhem noch nicht aktiv ist.

3. Datenempfang in Fhem freischalten
----
define StatusBMW MQTT2_SERVER 1884 global
attr StatusBMW autocreate complex
define MQTT2_StatusBMW MQTT2_DEVICE StatusBMW
attr MQTT2_StatusBMW readingList StatusBMW:/bmw:.* { json2nameValue($EVENT) }
----
Mit dieser Definition werden mit dem Script die Daten in  MQTT2_StatusBMW geschrieben und können bei Readings eingesehen werden.

4. Relevante Daten auswählen
Mit readingsProxy-Definitionen können die gewünschten Daten angezeigt werden.
----
define soc_1 readingsProxy MQTT2_StatusBMW:1_data_state_electricChargingState_chargingLevelPercent
define BMW1 readingsProxy MQTT2_StatusBMW:1_name
define Reichweite_1 readingsProxy MQTT2_StatusBMW:1_fuel_and_battery_remaining_range_total_1
define Ladestatus_1 readingsProxy MQTT2_StatusBMW:1_fuel_and_battery_charging_status
define Ladeziel_1 readingsProxy MQTT2_StatusBMW:1_data_state_chargingProfile_chargingSettings_targetSoc
define km_1 readingsProxy MQTT2_StatusBMW:1_mileage_1
----



Gruß
Jürgen
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 22 Mai 2023, 14:20:41
Sehr cool, das werde ich mal testen!
VG Helmut
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 22 Mai 2023, 15:44:34
Hallo Jürgen,
bin am Starten.

FHEM läuft auf RasPi4 mit Buster.
Zu erst musste ich dies installieren:
sudo apt-get install python3-pip
Danach ließ sich BimmerConnected installieren.
sudo pip3 install --upgrade bimmer_connected
Dein Script in Datei kopieren und Adressen und User/Pass für BMW ändern, ausführbar machen für User PI.
#!/bin/bash
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bimmerconnected status --json uuuuuu pppppp rest_of_world | mosquitto_pub -h 192.168.1.86 -p 1884 -d -t /bmw -l --quiet
Frage: An welcher Stelle muss ich das PW für meinen MQTT Server setzen?

Beim Start des Scripts
./getBimmerX1.shmit angepassten Adressen für meinen MQTT2_SERVER komme ich zu folgender FM:

./getBimmerX1.sh: Zeile 2: mosquitto_pub: Kommando nicht gefunden.
DEBUG:asyncio:Using selector: EpollSelector
Traceback (most recent call last):
  File "/usr/local/bin/bimmerconnected", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/bimmer_connected/cli.py", line 356, in main
    loop.run_until_complete(args.func(args))
  File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.7/dist-packages/bimmer_connected/cli.py", line 141, in get_status
    print(json.dumps(account.vehicles, cls=MyBMWJSONEncoder))
BrokenPipeError: [Errno 32] Broken pipe

Kannst du bitte was zu dieser FM "mosquitto_pub: Kommando nicht gefunden." sagen?
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: Jmr008 am 22 Mai 2023, 19:03:18
Hallo,

bei dir fehlt

sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients

Habe ich jetzt oben eingefügt.
Danke für den Hinweis.
Gruß Jürgen

Geändert: sudo apt-get install mosquitto kann entfallen
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: Jmr008 am 22 Mai 2023, 19:17:50
Zu
Frage: An welcher Stelle muss ich das PW für meinen MQTT Server setzen?

Ich habe einen separaten MQTT Server definiert. Ohne Pw

Der Aufruf von mosquitto_pub zeigt dir aber alle Möglichkeiten - auch das PW-Setzen
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: Beta-User am 22 Mai 2023, 20:56:35
Doofe Fragen von einem Mitleser, der ein "analoges" Konkurenzprodukt fährt:
- Wofür muss mosquitto installiert werden? M.E. ist dieser Schritt überflüssig (Achtung: mosquitto-clients braucht man).
- Warum autocreate "complex"? Da mosquitto_pub (nach dieser Anleitung!) ohne ClientID zu senden scheint, wird autocreate (eigentlich) so oder so nicht aktiv.
- Wo kommt die ClientID (StatusBMW) her? Setzt die irgendwie das (Python-) script oder fehlt da was in der Anleitung?

Würde behaupten, das ganze wird viel einfacher, wenn ein "normaler" MQTT2_SERVER auf Port 1883 das bequem mit erledigt, (der steht im default/ohne gesetztes Attribut auf autocreate simple). Man muss halt dahin publishen und dann Username und Passwort (`man msoquitto_pub`) mitgeben, wenn man das so konfiguriert hat, und ggf. sinnvollerweise auch den Parameter "-i" im mosquuitto_pub-Aufruf ergänzen, wenn man auch noch autocreate haben will....
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 24 Mai 2023, 10:02:34
Hallo zusammen,
ich kann aktuell nicht weiter in das Thema einsteigen, dazu fehlt mir der Background bzgl. MQTT / Bimmer / Zeit für Installationen usw. in meinem Testsystem.
Auch noch zu klären, wie ich bei 2 registrierten Fahrzeugen in BMW Connected das E-Auto auswählen kann (in diesem Codeschnipsel?).

Es sah so aus, als liefe der Code mit wenigen Einstellungen.......

VG Helmut

Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: Jmr008 am 24 Mai 2023, 10:13:40
Zitat von: isy am 24 Mai 2023, 10:02:34Auch noch zu klären, wie ich bei 2 registrierten Fahrzeugen in BMW

Es werden die Daten aller registrierten Autos eingelesen.
Anzeige der Daten für das erste Auto
define BMW1 readingsProxy MQTT2_StatusBMW:1_name

Anzeige der Daten für das zweite Auto
define BMW2 readingsProxy MQTT2_StatusBMW:2_name

Zitat von: isy am 24 Mai 2023, 10:02:34Es sah so aus, als liefe der Code mit wenigen Einstellungen.......
Ich habe den gesamten Code aufgeführt.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 25 Mai 2023, 10:54:42
Hallo Jürgen,
ich bin ein Stück weiter!

#!/bin/bash
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bimmerconnected status --json <bmwUser> <bmwPass> rest_of_world | mosquitto_pub -h 192.168.178.86 -p 1883 -u <mqttUser> -P <mqttPass> -d -t /bmw -l -i MyBMW --quiet

Hiermit wird das von Beta-User vorgeschlagene autocreate genutzt und ein Device MQTT2_MyBMW vom System angelegt.

Läuft schon mal glatt durch, bis auf eine Debug Meldung:
Client MyBMW sending CONNECT
Client MyBMW received CONNACK (0)
DEBUG:asyncio:Using selector: EpollSelector
Client MyBMW sending PUBLISH (d0, q0, r0, m1, '/bmw', ... (20576 bytes))
Client MyBMW sending DISCONNECT

Jürgen, kannst du was zur Debug Meldung sagen? OK?

Die Abfrage braucht eine kurze Zeit.
Damit verbunden deine Erfahrung mit der Häufigkeit der Abfrage über das Skript.
Die SOC Daten brauche ich nur vor bzw. während der Ladung, also alle 5 Minuten oder so.
Ein Triggern des Scripts über FHEM (non-blocking) wäre schön.

VG Helmut
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 25 Mai 2023, 16:19:12
Auf der MQTT Seite wurde dieses Device angelegt, die Zeile MyBMW:/bmw:.* { json2nameValue($EVENT) } habe ich manuell ergänzt.
Es kommen Readings der Fahrzeuge sauber formatiert zur Weiterverarbeitung in readingsGroup usw., je nach Bedarf.

defmod MQTT2_MyBMW MQTT2_DEVICE MyBMW
attr MQTT2_MyBMW readingList MyBMW:/bmw:.* bmw\
MyBMW:/bmw:.* { json2nameValue($EVENT) }
attr MQTT2_MyBMW room MQTT2_DEVICE

Danke sehr für das Skript!
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 26 Mai 2023, 13:03:00
Die Abfrage der Daten habe ich ohne Schleifen realisiert:
- Jeweils beim Öffnen und Schließen der Garagen
- Bei jeder Statusänderung der Wallbox


Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 21 November 2023, 17:51:07
Hallo Jürgen,
läuft bimmerconnected bei dir heute?
Bei mir bricht der Abruf mit einer langen Fm ab

VG Helmut
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 22 November 2023, 11:27:29
alles bestens hier. VIN immer 17stellig, oder?
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 22 November 2023, 12:02:04
Danke für die Info!
Ja, das ist korrekt, VIN ist immer 17-stellig.

Ich habe mittlerweile Python 3.11 installiert, da das neueste Skript bimmer_connected 0.14.3 die Version 3.7 nicht mehr unterstützt.
Ebenso die neueste "pip" Version.

Bringt eine neue FM, die habe ich im GIT mal gepostet.
Dort kümmert sich der Entwickler, hat auch schon geantwortet.

Mal sehen, ob die das wieder hinkriegen.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: Tomk am 26 November 2023, 07:59:56
Funktioniert! Danke...
Mal eine Frage zur Sicherheit: die Daten werden direkt bei den bmw Servern abgefragt, wenn ich das auf Git richtig gesehen haben, oder? Kann man das Passwort irgendwie verschlüsselt speichern?

Und noch eine Frage: würde gerne die standheizung vom TouchScreen zuhause einschalten. Kann man auch Werte schreiben über den Mqtt Server?
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 27 November 2023, 23:19:49
Hier kann ich leider nicht weiterhelfen!
Über MQTT kann man auch schreiben, aber ob bimmerconnected das kann, solltest du im Git nachlesen bzw. nachfragen, sehr guter Support dort.
https://github.com/bimmerconnected
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 28 April 2024, 20:32:26
hallo.
klappt bei euch noch die abfrage? bei mir seit 26.4. 15:35 keine daten mehr.


"gelöst"
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 28 April 2024, 21:32:01
Bei mir läuft alles wie immer
VG Helmut
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: Jmr008 am 28 April 2024, 22:34:02
Bei mir läuft es auch wie immer. Gruß Jürgen
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 29 April 2024, 08:28:03
klappt heute wieder, dürfte serverproblem von bmw.at gewesen sein.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 29 April 2024, 08:34:02
Sehr schön!
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 30 April 2024, 09:56:14
antwort vom entwickler

BMW seem to have updated their API and in the process it was very flaky.
Using the latest version (0.15.0) should work again


hatte am WE noch upgedated, aber erst Montag wieder verbindung.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 23 Juli 2024, 09:02:38
Hallo.
Klappt bei euch noch das modul? Seit freitag bekomme ich keine daten mehr, abfrage Script meldet sich mit

Client MyBMW sending CONNECT
Client MyBMW received CONNACK (0)
MyBMWQuotaError due to HTTPStatusError: Client error '429 Too Many Requests' for url 'ht
tps://customer.bmwgroup.com/gcdm/oauth/authenticate'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py",
 line 419, in async_auth_flow
    response.raise_for_status()
  File "/usr/local/lib/python3.10/dist-packages/httpx/_models.py", line 759, in raise_fo
r_status
    raise HTTPStatusError(message, request=request, response=self)
httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://customer.bm
wgroup.com/gcdm/oauth/authenticate'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/bimmerconnected", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/cli.py", line 341, in m
ain
    loop.run_until_complete(args.func(args))
  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/cli.py", line 137, in g
et_status
    await account.get_vehicles()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/account.py", line 101,
in get_vehicles
    await self._init_vehicles()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/account.py", line 78, i
n _init_vehicles
    vehicle_list_response = await client.post(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1877, in post
    return await self.request(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1559, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1646, in send
    response = await self._send_handling_auth(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1671, in _send_h
andling_auth
    request = await auth_flow.__anext__()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py",
 line 81, in async_auth_flow
    await self.login()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py",
 line 130, in login
    token_data = await self._login_row_na()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py",
 line 183, in _login_row_na
    response = await client.post(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1877, in post
    return await self.request(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1559, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1646, in send
    response = await self._send_handling_auth(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1692, in _send_h
andling_auth
    raise exc
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1681, in _send_h
andling_auth
    next_request = await auth_flow.asend(response)
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py",
 line 421, in async_auth_flow
    await handle_httpstatuserror(ex, log_handler=_LOGGER)
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/utils.py", line 86,
 in handle_httpstatuserror
    raise _ex_to_raise(_err_message) from ex
bimmer_connected.models.MyBMWQuotaError: HTTPStatusError: Client error '429 Too Many Req
uests' for url 'https://customer.bmwgroup.com/gcdm/oauth/authenticate'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429
Client MyBMW sending DISCONNECT
beelink@beelink-MINI:~$
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 23 Juli 2024, 09:07:58
Gerade getestet und klappt wie immer.

Meine Logik beim PV Laden fragt den Status nur bei Statusänderung der Wallbox (GoE) ab.
Also 2 mal bei jedem Ladevorgang.
VG Helmut
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 23 Juli 2024, 10:03:41
hmmm, dann warte ich ab.
das login script ist gleich geblieben, oder?
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 23 Juli 2024, 11:44:49
Ja, ich habe ewig nichts geändert
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 25 Juli 2024, 10:44:10
Zitat von: isy am 23 Juli 2024, 11:44:49Ja, ich habe ewig nichts geändert
Hallo.
lautet dein script wirklich so?
#!/bin/bash
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
bimmerconnected status --json user passwd rest_of_world | mosquitto_pub -h 192.168.0.1 -p 1883 -u DVES_USER -P DVES_USER -d -t /bmw -l -i MyBMW --quiet

ich bekomme nämlich wieder dies als ausgabe, ohne aktualisierung
beelink@beelink-MINI:~$ /usr/local/bin/i3status
Client MyBMW sending CONNECT
Client MyBMW received CONNACK (0)
[b]MyBMWQuotaError due to HTTPStatusError: Client error '429 Too Many Requests' for url 'https://customer.bmwgroup.com/gcdm/oauth/authenticate'[/b]
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py", line 419, in async_auth_flow
    response.raise_for_status()
  File "/usr/local/lib/python3.10/dist-packages/httpx/_models.py", line 759, in raise_for_status
    raise HTTPStatusError(message, request=request, response=self)
httpx.HTTPStatusError: Client error '429 Too Many Requests' for url 'https://customer.bmwgroup.com/gcdm/oauth/authenticate'
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/bimmerconnected", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/cli.py", line 341, in main
    loop.run_until_complete(args.func(args))
  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/cli.py", line 137, in get_status
    await account.get_vehicles()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/account.py", line 101, in get_vehicles
    await self._init_vehicles()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/account.py", line 78, in _init_vehicles
    vehicle_list_response = await client.post(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1877, in post
    return await self.request(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1559, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1646, in send
    response = await self._send_handling_auth(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1671, in _send_handling_auth
    request = await auth_flow.__anext__()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py", line 81, in async_auth_flow
    await self.login()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py", line 130, in login
    token_data = await self._login_row_na()
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py", line 183, in _login_row_na
    response = await client.post(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1877, in post
    return await self.request(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1559, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1646, in send
    response = await self._send_handling_auth(
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1692, in _send_handling_auth
    raise exc
  File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1681, in _send_handling_auth
    next_request = await auth_flow.asend(response)
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/authentication.py", line 421, in async_auth_flow
    await handle_httpstatuserror(ex, log_handler=_LOGGER)
  File "/usr/local/lib/python3.10/dist-packages/bimmer_connected/api/utils.py", line 86, in handle_httpstatuserror
    raise _ex_to_raise(_err_message) from ex
bimmer_connected.models.[b]MyBMWQuotaError: HTTPStatusError: Client error '429 Too Many Requests' for url 'https://customer.bmwgroup.com/gcdm/oauth/authenticate'[/b]
For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429
Client MyBMW sending DISCONNECT
beelink@beelink-MINI:~$
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 26 Juli 2024, 11:41:34
Komme erst heute dazu, dir zu antworten.
Hier mein Skript:

#!/bin/bash
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bimmerconnected status --json <BMW_user> <BMW_Passwort> rest_of_world | mosquitto_pub -h 192.168.xxx.xx -p 1883 -u <mqtt2_user> -P <mqtt2_Passwort> -d -t /bmw -l -i MyBMW --quiet

Der Prozess soeben (beim Ein- oder Ausfahren aus der Garage und beim Anstecken des Ladekabels wird das Skript aufgerufen) funktioniert wie immer.

VG Helmut
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 26 Juli 2024, 12:01:01
Zitat von: isy am 26 Juli 2024, 11:41:34Komme erst heute dazu, dir zu antworten.
Hier mein Skript:

#!/bin/bash
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bimmerconnected status --json <BMW_user> <BMW_Passwort> rest_of_world | mosquitto_pub -h 192.168.xxx.xx -p 1883 -u <mqtt2_user> -P <mqtt2_Passwort> -d -t /bmw -l -i MyBMW --quiet

Der Prozess soeben (beim Ein- oder Ausfahren aus der Garage und beim Anstecken des Ladekabels wird das Skript aufgerufen) funktioniert wie immer.

VG Helmut

Hallo.
Rufst du nur 1x ab? wie oft ist das maximum? ich rufe alle 15min. ab, wegen Ladezustand z.b.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 26 Juli 2024, 13:29:08
Eine Abfrage erfolgt nur auf folgende Events:
- Garage auf
- Garage zu
- Statusänderung der Wallbox

Den Rest steuert die Logik der PV-Überschussregelung.

Unser E-Auto wird überwiegend in der Stadt genutzt, so daß es eine Sonderfunktion gibt, die ab SOC < 10km das Auto auf ca. 25km (zeitgesteuert) auflädt, egal was die PV-Regelung eigentlich vorsieht.

Daher brauche ich den SOC nur bei obigen Events abfragen.

Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 26 Juli 2024, 16:47:08
Schau auch evtl. bei bimmerconected.
Da gibt es eine neue Version.

https://github.com/bimmerconnected/bimmer_connected/pull/626
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 26 Juli 2024, 19:34:20
Hallo.
Angeblich lässt bmw nicht viele abfragen zu. 10min. sind zu viel. Habe auf 20min. erhöht , jetzt dürfte es klappen. Nur beim laden sind 20min. schon viel, da lade ich 10%
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 19 November 2024, 07:45:41
BMW hat wohl die Login Prozedur geändert, kein Zugriff auf die Daten aktuell

https://github.com/bimmerconnected/bimmer_connected/issues/671
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 19 November 2024, 13:50:41
sch deshalb seit heute keine daten mehr.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 22 November 2024, 22:08:44
Geht wieder, v0.17
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 23 November 2024, 10:03:41
Hört sich gut an.
Etwas aufwändiger nun, mal sehen, wann ich das Update einbaue
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 25 November 2024, 10:39:02
So, läuft bei mir auch wieder.
Seltsamerweise musste ich in mein Skript, welches ich über { fhem("\"/home/pi/getBimmer.sh\"") } aufrufe, das Token 1-malig einbauen, sonst meldete Fhem im Log einen Auth Fehler.
Direkt per CLI lief das Skript ohne Token. Nun denn, keine Ahnung warum.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 25 November 2024, 11:53:07
Zitat von: isy am 23 November 2024, 10:03:41Hört sich gut an.
Etwas aufwändiger nun, mal sehen, wann ich das Update einbaue

nix aufwändiger, warum? einfach "pip3 install --upgrade bimmer_connected" machen, danach alles wie gehabt in fhem
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 25 November 2024, 15:44:40
Nee, das ist klar. Ich meine den Einbau des Tokens
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 26 November 2024, 08:42:09
hallo.
heute wieder keine daten erhalten. befehl in console abgesetzt, und siehe da der token wird gebraucht. was is denn dort los?
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 26 November 2024, 08:54:59
Gerade getestet, bei mir geht's.
Wie oben erwähnt, ich musste den Prozess mit dem Token 2* starten.
- Für den Test im Terminal
- Dann noch mal mit Fhem
 
Das Ticket im Git ist noch nicht geschlossen, mal sehen, ob den Kollegen dort noch was auf- bzw. einfällt.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 26 November 2024, 10:18:28
Zitat von: isy am 26 November 2024, 08:54:59Gerade getestet, bei mir geht's.
Wie oben erwähnt, ich musste den Prozess mit dem Token 2* starten.
- Für den Test im Terminal
- Dann noch mal mit Fhem
 
Das Ticket im Git ist noch nicht geschlossen, mal sehen, ob den Kollegen dort noch was auf- bzw. einfällt.

hallo.
habe token angelegt, mich über console erfolgreich daten holen können, aber fhem bekommt selbige meldung bzgl. token.
wie melde ich mich als user fhem an um token zu generieren?
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 26 November 2024, 10:36:20
Ich habe für mein Skript getBimmer.sh 1* das Token neu generiert und eingefügt und über Fhem gestartet. Per Notify, welches auf diverse Trigger reagiert und dann den Befehl ausführt:
{ fhem("\"/home/pi/getBimmer.sh\"") }Dann habe ich das Token wieder herausgenommen.

Das Zusammenfügen des gesamten Codes inkl. Token in eine Textdatei und anschließendes Kopieren und Eingabe in ein Terminal hat zwar funktioniert, aber nicht, wenn ich das Skript ohne Token anschließend aus Fhem starte.
Daher den Code in das Skript kopiert, 1* aus Fhem aufgerufen, Token wieder raus und es funktioniert noch immer.

Ich habe also jetzt 2 Skripts für den Fall, dass ich wieder ein Token generieren muss.
Link auf die Token Seite aaskommentiert und etwas Platz gemacht, um das Token dann einfügen zu können.
Das geht bestimmt auch geschickter, aber nun denn!

VG Helmut

Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 26 November 2024, 10:52:30
aaah, verstehe. einmal mit fhem den token anfordern, danach normal abfragen.
ja, klappt wirklich. danke.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 09 Januar 2025, 16:57:32
Hallo zusammen,
ich bin gerade dabei, einen neuen FHEM Server mit Bookworm aufzusetzen.

Dieses bimmerconnected wird komplizieret, da Python nun ein virtuelles Environment benötig.
Obige Doku funktioniert nicht mehr, auf dem Git gibt es keine Info zu dem Problem, außer, da die Änderungen im Betriebssystem (hier Bookworm) eingeführt wurden, man dort aktiv werden muss.

Man muss also "venv" aufsetzen.
Hier habe ich eine Doku gefunden:
https://pimoroni.github.io/venv-python/

Läuft soweit wieder im CLI (n.n. im FHEM Testsystem), aber man muss das virtuelle Environment bei jedem Reboot neu starten.
Damit hapert es zur Zeit bei meinem System und wie das aus FHEM funktionieren soll.

Lese aktuell dieses hier:
https://learn.adafruit.com/python-virtual-environment-usage-on-raspberry-pi/overview

Mal sehen, welche Optionen sich bieten, heute nicht mehr!


Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 13 März 2025, 14:22:06
Bin auf eine neue FHEM hardware ungezogen (Bookworm) und musste mich im Detail beschäftigen.
Lösung: Im Skript das virtuelle Python Environment aufrufen.
#!/bin/bash
source /home/pi/bimmer/bin/activate
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bimmerconnected status --json usw.....
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 30 März 2025, 14:19:38
Zitat von: isy am 25 November 2024, 10:39:02So, läuft bei mir auch wieder.
Seltsamerweise musste ich in mein Skript, welches ich über { fhem("\"/home/pi/getBimmer.sh\"") } aufrufe, das Token 1-malig einbauen, sonst meldete Fhem im Log einen Auth Fehler.
Direkt per CLI lief das Skript ohne Token. Nun denn, keine Ahnung warum.

hallo.
da ja bmw jetzt mind. 14-tägig den token ändert, hättest du das script für mich/uns? muss doch automatisch gehen,ohne immer den token zu holen, händisch eintragen und script kurz starten.

LG
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 30 März 2025, 17:11:22
Hier mein Bash Script, auch in FHEM mit Token:
#!/bin/bash
source /home/pi/bimmer/bin/activate
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin bimmerconnected status --json --captcha-token hier-das-token mail@xxx.de bmw_password rest_of_world | mosquitto_pub -h 192.168.178.86 -p 1883 -u is -P mqtt-Passwort -d -t /bmw -l -i MyBMW --quiet

Durch das notwendige virtuelle Python Environment starte ich das Script im angegebenen Pfad, nachdem per "source" das Environment aufgebaut wurde.
Das kannst du natürlich weglassen.

Ich habe das Ganze eben noch mal überprüft, ich starte aktuell von FHEM aus das Script mit dem Token. Funktioniert.

Token kommt von hier:
https://bimmer-connected.readthedocs.io/en/stable/captcha/rest_of_world.html
VG
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: satprofi am 30 März 2025, 20:54:53
Danke. Aber du trägst den token manuel ein, oder? Das mach ich auch, möchte aber den token automatisch abholen. Oder klappt der token immer?
Lg
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 30 März 2025, 21:14:28
Ich habe das Token einige Wochen nicht geändert.
Es kann aber bei BMW ein Algorithmus vorliegen, der die Anzahl Aufrufe berücksichtigt.

Ich teste gerade mit Home Assistant und musste dort das Token bereits mehrfach erneuern.
Ich denke gelesen zu haben (Docker bmmerconnected), dass die Routine alle 60 Sekunden aufgerufen wird.

In meinem Fhem wird das Skript nur bei wenigen Bedingungen aufgerufen.

VG

Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 08 April 2025, 09:08:46
Aktuell gibt es ungelöste Probleme mit dem Laden von Daten aus BMW Fahrzeugen. Bei mir muss das Token oft neu gesetzt werden.
Siehe auch https://github.com/home-assistant/core/issues/138976
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 08 April 2025, 09:38:35
Heute geht es gar nicht in FHEM, diverse Fehlermeldungen, im Terminal läuft das Skript, bimmerconnected in Home Assistant läuft.
Titel: Aw: Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected
Beitrag von: isy am 09 April 2025, 14:11:50
Geht heute wieder. Ich zünde Räucherstäbchen an.