Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Einbau in BMW Z4 E85
#1
Hallo,
ich wollte mal kurz mein Lösung vorstellen im Z4 E85. Vorab ein riesengroßes DANKE an harryberlin für das unglaubliche Stück Software Namens IbusCommunicator

Verbaute Hardware:
- Original BMW Analog TV Tuner
- M1ATX Netzteil als Stromversorgung für den Pi
- Raspberry PI 3 model B+
+ 64 GB micro SD Karte
+ USB Bluetooth Stick
+ Ressler BMW IBUS USB interface
+ MaxDiag1 OBD USB interface
+ USB Soundkarte
+ 3,5mm Mikrofon

Verwendete Software:
- OSMC mit IBusCommunicator
- Eigenentwicklung: KODI Bluetooth Freisprecheinrichtungs Plugin
- Eigenentwicklung: KODI Plugin zum öffnen des Garagentors
- Eigenentwicklung: KODI Plugin zum auslesen der Temperaturen über OBD
- Ediabaslib uholeschak/ediabaslib
- minimal modifiziertes Spotify Plugin für KODI

Verbaut ist alles in einem alten leeren CD Wechsler Gehäuse am originalen Einbauort:
     


Ich wollte den Einbau so gestalten, das alles soweit rückrüstbar ist und nichts am Fahrzeug verändert werden musste. Ich nutze überall die original Steckverbindungen zum Auto (CD Wechsler, TV Tuner).
Video:
Der original BMW TV Tuner hat einen Video Eingang für eine Rückfahrkamera. Diesen nutze ich um das Bild das der Raspberry ausgiebt auf dem originalen Bordmonitor darzustellen. Weiters hat das TV Tuner Modul einen schaltbaren Eingang (muss auf GND geschalten werden), damit dieses auf den Video Eingang umschaltet.
Audio:
Der originale BMW CD Wechsler gibt das Audiosignal analog aus. Ich musste mir also nur einen Adapter bauen um den Ausgang der USB Soundkarte (Chinch) auf die originale CD Wechslerbuchse zu leiten.
IBUS:
Der originale BMW CD Wechsler hat direkt einen Kontakt für den BMW Innenraum Bus (IBUS). Dieser wurde mit dem Ressler USB Interface verbunden.
Stromversorgung und Start/Herunterfahren:
Als Stromversorgung nutze ich ein M1ATX Netzteil wechlches ich noch rumliegen hatte. Dort verwende ich nur die 5V Schiene. Das gute an diesem Netzteil ist, dass es direkt einen Anschluss für ein Zündungsplus hat. Hier benutze ich den Pluspol der Kofferraumbeleuchtung. Diese Leitung wird über das GM5 gesteuert. Sobald die Steuergeräte aufwachen (beim Aufsperren z.B.) liegt Strom an. Nachdem die Steuergeräte in den Schlafmodus wechseln wartet das GM5 6 Minuten bis die Stromzufuhr unterbrochen wird. Originaleinstellung sind 16 Minuten. Ich habe jedoch den Wert der Eigenschaft VA1/VA2_AUS_NACH_X_MIN im GM5 auf 6_min gesetzt. Wenn somit am Zündungsplus für das Netzteil keine Spannung mehr anliegt sendet es einen Auschaltbefehl an den RPI (2 GPIO Pins werden kurzgeschlossen). Damit ist ein sicheres Herunterfahren gewährleistet.
OBD:
Da beim Z4 die Öltemperatur nicht am IBUS verfügbar ist muste ich auf eine andere Lösung ausweichen. Ich fand eine Android App namens DeepOBD (Deep OBD für BMW und VAG – Apps bei Google Play) welche es ermöglicht alle Werte abzurufen welche auch mit INPA abrufbar sind. Die App benutzt eine OpenSource Library namens EdiabasLib (uholeschak/ediabaslib). Mithilfe des MaxDiag1 welches am USB Port des Rasperry angeschlossen ist konnte ich mit dem Testprogramm auf anhieb den analogen Messwertblock1 des Steuergeräts auslesen. Ich musste also nur mehr die Daten in die Oberfläche integrieren. Theoretisch ist somit alles möglich, was auch mit INPA möglich ist. Dazu baute ich mir ein eigenes Plugin für KODI. Zusätzlich besorgte ich mir ein OBD Verlängerungskabel mit Winkelstecker, damit der Adapter im Fußraum nicht stört:
     

Beim Verlängerungskabel habe ich auch noch Pin1 (BMW spezifisch Zündungsplus) mit Pin16 (OBD Standard Dauerplus) vertauscht, damit das Interface aus ist sobald die Zündung abgeschalten wird.

Software:
Auf Basis des aktuellen OSMC IbusCommunicator Images begann ich dann die Integration der Freisprecheinrichtung welche über den RPI läuft (Pulseaudio und Ofono über DBUS in KODI integriert).
Da ich mittlerweile Musik fast auschließlich über Spotify höre nutze ich das Spotify Plugin (kodi-community-addons/plugin.audio.spotify) für KODI das ich minimal angepasst habe: Qualität auf 160kbit und Lokaler Cache eingeschalten).
Zusätzlich baute ich mir noch ein sehr einfaches Plugin, dass nach einer Sicherheitsabfrage eine URL aufruft. Diese URL führt mit den richtigen HTTP Post Parameter dazu, dass sich mein Garagentor öffnet / schließt:

 


Auf meinem Android Mobiltelefon benutze ich die Software MacroDroid (MacroDroid - Automatisierung – Apps bei Google Play). Hier habe ich ein Macro definiert, dass sobald das Handy per Bluetooth verbunden ist den WLAN Hotspot aktiviert. Somit habe ich ohne Zutun automatisch eine Internetverbindung im System.

HomeScreen leicht modifiziert:
     

Musikauswahl innerhalb Spotify Playlist:
     


Bordcomputeranzeige erweitert um die Werte die über OBD ausgelesen werden:
   
Antworten
#2
das hört sich ja mal geil an, voll allem das mit der ediabas lib.
leider gehen die bilder nicht.
IBusCommunicator:
Image <> Kodi Addon

[Bild: usersignaturpic-14941mspx.jpg]
Antworten
#3
Habe die Bilder nun hier im Forum hochgeladen. Sie sollten nun sichtbar sein.
Antworten
#4
würdest du auch noch etwas mehr erklären, wie du das mit der ediabaslib und dem bluetooth gelöst hast?
IBusCommunicator:
Image <> Kodi Addon

[Bild: usersignaturpic-14941mspx.jpg]
Antworten
#5
Hi,

Ediabaslib: Dies ist derzeit recht einfach umgesetzt. Ich habe mir einfach https://github.com/uholeschak/ediabaslib...diabasTest kompiliert und führe dies mit mono auf dem PI aus. Hierzu benutze ich ein Kodi Service plugin welches einfach die executable aufruft und den output dieser parst und in Kodi propertys speichert. Dies könnte man natürlich schöner machen aber ich wollte zuerst mal eine funktionierende minimallösung um zu sehen wie es sich verhält. Mir ging es rein darum die Öltemperatur auszulesen.

.zip   script.service.ediabas.zip (Größe: 26,14 KB / Downloads: 2)

Bluetooth FSE:
Hier benutze ich Pulseaudio und Ofono welche beide über DBUS angesprochen werden können (https://scribles.net/hfp-on-raspberry-pi/). Als Basis dafür habe ich im Kodi Forum ein bestehendes Plugin gefunden, welches aber nciht so funktionierte: https://forum.kodi.tv/showthread.php?tid...pid2806240. Dieses habe ich modifiziert, bzw komplett umgebaut um meinen Bedürfnissen zu entsprechen. Ich habe eine sehr simple GUI mit normalen Notifications ( xbmcgui.Dialog().notification) und Dialogen: xbmcgui.Dialog().yesno.
Weiters gibt es dann noch ein eigenes Plugin welches eine VCF Datei Parsen kann (export von den Google Kontakten) und diese im Kodi darstellt. Darüber kann man dann Kontakte anrufen.


LG
Martin
Antworten
#6
voll cool. wie kann man die ediabas lin compilieren? geht das auch ohne visual studio?

vcard import hatte ich auch mal überlegt, da man ja auch per ibus dem telefon anrufe anweisen kann, aber war da nicht mehr so weiter gekommen, speziell mit den sonder tags und fotos in der vcard. im vb6 riderunner plugin lies sich das besser lösen.
IBusCommunicator:
Image <> Kodi Addon

[Bild: usersignaturpic-14941mspx.jpg]
Antworten
#7
Ich habe es mit MSBUILD unter x64 Linux kompiliert. Ich denke aber das es egal ist wo man es kompiliert, da es soweit plattform unabhängig ist. Läuft ja nun auch auf ARM.
Ich kann dir ansonsten gerne mal meine kompilierte Version zukommen lassen.
Den VCard import über Bluetooth habe ich nicht zum laufen bekommen. Deswegen nahm ich den umweg über die Goolge Kontakte. Mein Z4 hat serienmäßig keine FSE verbaut.
Antworten
#8
ich hatte meine vcard vom smartphone auf sd exportiert.
abruf per Bluetooth wäre natürlich mega.
IBusCommunicator:
Image <> Kodi Addon

[Bild: usersignaturpic-14941mspx.jpg]
Antworten
#9
Ja eigentlich würde dies über Bluetooth OBEX funktionieren. Ich habe es jedoch noch nie zum laufen bekommen und mir war es dann der Aufwand nicht Wert, da ich im Z4 sowieso fast nie telefoniere sondern das rundherum genieße (Schönwetterfahrzeug offenes Verdeck,..):-D.
Antworten
#10
Habe das Plugin mal ein wenig verschönert. Anbei nun eine Version das EdiabasTest Programm schon beinhaltet.
1. Man muss zuerst mono am PI installieren: sudo apt-get install mono-complete
2. Das Addon im script.service.ediabas installieren (im Anhang).
3. Danach das das prg File für deine ECU aus einer INPA Installation holen. Dieses darf ich nicht mit in das ZIP packen. Im Falle des E85 mit M54B30 Motor wäre das "ms450ds0.prg". Diese Datei muss in den Ordner "/home/osmc/.kodi/addons/script.service.ediabas/resources/lib" kopiert werden.
4. Danach muss noch das OBD device angeben werden. Dies kann man entweder machen indem man in der Datei /home/osmc/.kodi/addons/script.service.ediabas/service.py die Variable OBD_DEVICE editiert und den Pfad zum USB OBD Adapter angiebt (z.B. /dev/ttyUSB0) oder man machst es auf die etwas eleganter Art und erstellt eine UDEV Regel, welche genau diesen OBD Adapter auf /dev/OBD legt. Ich musste die 2. Variante nehmen, da /dev/ttyUSB0 nicht immer auf den OBD Adapter sondern manchmal auch auf das Ressler Interface zeigt. Eine Anleitung zur Erstellung der UDEV Rule wäre z.B. hier Persistent names for usb-serial devices | HintShop.


Angehängte Dateien
.zip   script.service.ediabas.zip (Größe: 300,26 KB / Downloads: 3)
Antworten


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste