Integration My BMW Daten mittels BMW CarData Stream und bmw-mqtt-bridge in fhem

Begonnen von Hadl, 16 April 2026, 12:40:26

Vorheriges Thema - Nächstes Thema

Hadl

Hallo zusammen,
ich habe nun einen BMW i4 und lade den über eine go-e Charger Gemini Wallbox.
Die Wallbox habe ich wie hier beschrieben an fhem angebunden: https://forum.fhem.de/index.php?topic=136856.0

Dabei hat mir aber der Ladezustand der Batterie gefehlt, den ich gerne ich meine Ladestrategie mit aufnehmen würde.
Also hab ich gesucht wie ich die Daten bekommen kann und bin auf die bmw-mqtt-bridge von hier gestoßen: https://github.com/dj0abr/bmw-mqtt-bridge

Nach der Anleitung dort und dem Freigeben von vielen Daten in der CarData Stream configuration vom BMW bekomme ich nun die Daten von der BMW cloud in die bmw-mqtt-bridge und von dort weiter in meinen MQTT Broker.

in fhem hab ich nun folgende Geräte definiert:
defmod BMW_i4_mqtt2 MQTT2_DEVICE
attr BMW_i4_mqtt2 IODev MosquitoMqtt2Client
attr BMW_i4_mqtt2 autocreate 1
attr BMW_i4_mqtt2 devStateStyle style="text-align:right"
attr BMW_i4_mqtt2 devicetopic bmw/<VIN>
attr BMW_i4_mqtt2 event-min-interval .*:3600
attr BMW_i4_mqtt2 event-on-change-reading .*
attr BMW_i4_mqtt2 icon car
attr BMW_i4_mqtt2 readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP,'', '_timestamp') }
attr BMW_i4_mqtt2 room Auto
attr BMW_i4_mqtt2 stateFormat { my $var= "<pre>" .\
 sprintf("Battery Ladezustand: %7.1f  %%", ReadingsVal($name,"data_vehicle.drivetrain.batteryManagement.header_value",0)) . "</br>" .\
 sprintf("Lade Leistung: %7.1f  W", ReadingsVal($name,"data_vehicle.powertrain.electric.battery.charging.power_value",0)) . "</br>" .\
 sprintf("KM Stand: %7.1f  W", ReadingsVal($name,"data_vehicle.vehicle.travelledDistance_value",0)) . "</br>" .\
 sprintf("Reichweite: %7.1f km", ReadingsVal($name,"data_vehicle.drivetrain.electricEngine.kombiRemainingElectricRange_value",0)) . "</pre>";;;;\
 $var;;;;\
}
und weil die Ladeleistung nie zu 0 gesetzt wird, sondern sich das nur der Status ändert, noch diesen Workaround um die Ladeleistung richtig angezeigt zu bekommen:
defmod BMW_i4_charging_power_notify notify (BMW_i4_mqtt2:data_vehicle\.drivetrain\.electricEngine\.charging\.status_value):.*\
{ \
  my $status = ReadingsVal('BMW_i4_mqtt2', 'data_vehicle.drivetrain.electricEngine.charging.status_value', '');;\
  if ($status ne "CHARGINGACTIVE")\
  {\
    fhem("setreading BMW_i4_mqtt2 data_vehicle.powertrain.electric.battery.charging.power_value 0");;\
  } \
}
attr BMW_i4_charging_power_notify room Auto

Damit hab ich nun viele Daten in fhem über mein Auto!
Es ist schon echt erschreckend wieviele Daten BMW alles von einem hat, wenn man die Cloud nutzt... und das sind nur die, die man als Kunde sehen darf!
BMW schickt auch soweit ich das nach einigen Stunden beurteilen kann recht zuverlässig und zeitnah MQTT Nachrichten wenn irgendein Event auftritt.

Mit Ladeleistung (hatte ich auch schon in besserer Auflösung von der Wallbox) und Akkuzustand kann ich nun gut meine Energie im Haus von PV Anlage zu Heizung und Auto priorisieren.

Ich hoffe das hilft manchen von euch auch.

Viele Grüße

Christian
FHEM: Rpi 5 + SSD / WR: Fronius Symo Gen24 10.0 Plus + BYD HVS 7.7, Fronius Symo Gen24 12.0 SC (60%) PV: (Ost=3.5 West=6.6 Nord=9.9 Ost=4.5) / Homematic BidCoS / Shelly / Viessmann

satprofi

hallo.
das geht doch schon länger nur mehr so. aber was hast du eingestellt das du soviele daten erhältst? ich habe bei bmw alles angewählt, bekomme aber gerademal 7 readings.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram