Anzeige von BMW-Fahrzeugdaten mit Hilfe von bimmer_connected

Begonnen von Jmr008, 22 Mai 2023, 13:39:50

Vorheriges Thema - Nächstes Thema

Jmr008

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

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

#2
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?
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Jmr008

#3
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

Jmr008

#4
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

Beta-User

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....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

isy

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

Ein Weg wird erst zu einem Weg, wenn man ihn geht

Jmr008

#7
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.

isy

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
Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

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!
Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Die Abfrage der Daten habe ich ohne Schleifen realisiert:
- Jeweils beim Öffnen und Schließen der Garagen
- Bei jeder Statusänderung der Wallbox


Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Hallo Jürgen,
läuft bimmerconnected bei dir heute?
Bei mir bricht der Abruf mit einer langen Fm ab

VG Helmut
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

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.
Ein Weg wird erst zu einem Weg, wenn man ihn geht

Tomk

#14
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?

isy

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
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

#16
hallo.
klappt bei euch noch die abfrage? bei mir seit 26.4. 15:35 keine daten mehr.


"gelöst"
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

Jmr008


satprofi

klappt heute wieder, dürfte serverproblem von bmw.at gewesen sein.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

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.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

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:~$
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

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
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

hmmm, dann warte ich ab.
das login script ist gleich geblieben, oder?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

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:~$
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

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
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

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.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

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.

Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

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%
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

Hört sich gut an.
Etwas aufwändiger nun, mal sehen, wann ich das Update einbaue
Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

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.
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

#37
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
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

hallo.
heute wieder keine daten erhalten. befehl in console abgesetzt, und siehe da der token wird gebraucht. was is denn dort los?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

#40
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.
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

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?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

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

Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

aaah, verstehe. einmal mit fhem den token anfordern, danach normal abfragen.
ja, klappt wirklich. danke.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

#44
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!


Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

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.....
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

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
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

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
Ein Weg wird erst zu einem Weg, wenn man ihn geht

satprofi

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
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

isy

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

Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

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
Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Heute geht es gar nicht in FHEM, diverse Fehlermeldungen, im Terminal läuft das Skript, bimmerconnected in Home Assistant läuft.
Ein Weg wird erst zu einem Weg, wenn man ihn geht

isy

Geht heute wieder. Ich zünde Räucherstäbchen an.
Ein Weg wird erst zu einem Weg, wenn man ihn geht