BMW-MQTT-Bridge -> FHEM

Begonnen von Manfi, 20 Dezember 2025, 18:20:41

Vorheriges Thema - Nächstes Thema

Manfi

Ich hatte ein MQTT2 device mit bimmerconnected laufen, um die Daten meines Fahrzeugs in FHEM auszulesen. Seit Ende September geht das nicht mehr, weil von BMW deaktiviert. Jetzt versuche ich seit einiger Zeit diese Funktion über dieses Projekt bmw-mqtt-bridge zu ersetzen, was mir aber nur teilweise gelungen ist. Die Daten kommen via MQTT2_CLIENT von einem mosquitto-broker und werden im MQTT2_DEVICE als Readings angezeigt, jedoch scheitere ich an der Extraktion des json-strings.
define MQTT2_bmw MQTT2_DEVICE mybmw
attr MQTT2_bmw DbLogExclude .*
attr MQTT2_bmw IODev myBroker4
attr MQTT2_bmw alias MyBMW
attr MQTT2_bmw autocreate 1
attr MQTT2_bmw devicetopic mybmw/vehicles/ABCDE12345KL67890/vehicle
attr MQTT2_bmw icon car
attr MQTT2_bmw readingList $DEVICETOPIC.cabin.window.row1.passenger.status:.* FensterRV\
$DEVICETOPIC.cabin.window.row2.passenger.status:.* FensterRH\
$DEVICETOPIC.cabin.window.row1.driver.status:.* FensterLV\
$DEVICETOPIC.cabin.window.row2.driver.status:.* FensterLH\
$DEVICETOPIC.cabin.door.row1.passenger.isOpen:.* TuereRV\
$DEVICETOPIC.cabin.door.row2.passenger.isOpen:.* TuereRH\
$DEVICETOPIC.cabin.door.row1.driver.isOpen:.* TuereLV\
$DEVICETOPIC.cabin.door.row2.driver.isOpen:.* TuereLH\
$DEVICETOPIC.cabin.infotainment.navigation.currentLocation.longitude:.* longitude\
$DEVICETOPIC.cabin.infotainment.navigation.currentLocation.latitude:.* latitude\
$DEVICETOPIC.cabin.infotainment.navigation.currentLocation.altitude:.* altitude\
$DEVICETOPIC.drivetrain.lastRemainingRange:.* range\
$DEVICETOPIC.vehicle.travelledDistance:.* mileage\
$DEVICETOPIC.body.trunk.door.isOpen:.* trunkopen\
$DEVICETOPIC.body.hood.isOpen.* hoodopen
attr MQTT2_bmw room BMW
#   CID        bmw
#   DEF        bmw
#   FUUID      65995ed4-f33f-58e3-dfd0-bc21e67a83688103
#   IODev      myBroker4
#   LASTInputDev myBroker4
#   MSGCNT     89
#   NAME       MQTT2_bmw
#   NR         352
#   STATE      state
#   TYPE       MQTT2_DEVICE
#   eventCount 85
#   myBroker4_MSGCNT 89
#   myBroker4_TIME 2025-12-20 11:40:49
#   READINGS:
#     2025-12-20 11:40:49   FensterLH       {"timestamp":"2025-12-20T10:40:44Z","value":"CLOSED"}
#     2025-12-20 11:40:49   FensterLV       {"timestamp":"2025-12-20T10:40:44Z","value":"CLOSED"}
#     2025-12-20 11:40:49   FensterRH       {"timestamp":"2025-12-20T10:40:44Z","value":"CLOSED"}
#     2025-12-20 11:40:49   FensterRV       {"timestamp":"2025-12-20T10:40:44Z","value":"CLOSED"}
#     2025-12-19 22:37:52   IODev           myBroker4
#     2025-12-20 11:40:49   TuereLH         {"timestamp":"2025-12-20T10:40:44Z","value":false}
#     2025-12-20 11:40:49   TuereLV         {"timestamp":"2025-12-20T10:40:44Z","value":false}
#     2025-12-20 11:40:49   TuereRH         {"timestamp":"2025-12-20T10:40:44Z","value":false}
#     2025-12-20 11:40:49   TuereRV         {"timestamp":"2025-12-20T10:40:44Z","value":false}
#     2025-12-20 11:40:49   altitude        {"timestamp":"2025-12-20T10:40:44Z","unit":"m","value":188}
#     2025-12-16 14:29:30   connected       true
#     2025-12-20 11:40:49   hoodopen        {"timestamp":"2025-12-20T10:40:44Z","value":false}
#     2025-12-20 11:40:49   latitude        {"timestamp":"2025-12-20T10:40:44Z","unit":"degrees","value":58.3832713889}
#     2025-12-20 11:40:49   longitude       {"timestamp":"2025-12-20T10:40:44Z","unit":"degrees","value":26.2470238889}
#     2025-12-20 11:40:49   mileage         {"timestamp":"2025-12-20T10:40:44Z","unit":"km","value":95047}
#     2025-12-20 11:40:49   range           {"timestamp":"2025-12-20T10:40:44Z","unit":"km","value":579}
#     2025-12-20 11:40:49   trunkopen       {"timestamp":"2025-12-20T10:40:44Z","value":false}
#
Was muß ich tun um nur value zu bekommen?
Danke für die Hilfe!


Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10

Beta-User

Gibt vermutlich viele Varianten, das zu lösen.
Der Workshop im Forum und "Schritt für Schritt" im Wiki sind bekannt?
Insbesondere https://forum.fhem.de/index.php?msg=1303037?

Würde alle Topics per regexp zusammenfassen und dann etwas Perlcode anflanschen, der $TOPIC und $JSONMAP mit nutzt.

Hoffe, das reicht erst mal als Baustein?
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Manfi

#2
Zitat von: Beta-User am 20 Dezember 2025, 18:36:01Hoffe, das reicht erst mal als Baustein?
Schön wär's, aber leider bin ich, was Perl und Regex betrifft, ziemlich nackt  :(
War schon froh, daß ich überhaupt Readings bekomme
Trotzdem Danke für den Versuch.
Hardware: Raspberry Pi2, SignalDuino 433, Sonoff/Tasmota, NodeMCU/ESPEasy, FS10