Folgende Warnungen sind aufgetreten: | |||||||||||||||
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.24 (Linux)
|
E65 7er Raspberry Umbau Can Bus - Druckversion +- RasPiCar Projekt Forum (https://RasPiCarProjekt.de) +-- Forum: Fahrzeugspezifisches (https://RasPiCarProjekt.de/forumdisplay.php?fid=19) +--- Forum: BMW (https://RasPiCarProjekt.de/forumdisplay.php?fid=21) +--- Thema: E65 7er Raspberry Umbau Can Bus (/showthread.php?tid=1009) |
E65 7er Raspberry Umbau Can Bus - micha4381gt - 02.03.2017 Wenn jemand ein neueres Modell hat, der auch auf die Canbussteuerung angewiesen ist und seinen Pi über die Lenkradtasten oder das I Drive oder Den I Drive Controller adaptieren möchte, können wir gerne zusammen arbeiten. Für den E65 habe ich bereits sämtliche Can IDś ausfindig machen können. Jetzt müsste ich nur noch wissen, ob ich einen Can Controller zum senden und einen zum Empfangen benötige Dazu benutzt man JSON RPC und einen CarPi2 Can Controller. Ein Beispiel aus einem Audi Forum eines Python Scripts anbei. Hat jemand aus dem Forum hier Erfahrung damit und weiß jemand wo man sich den Syntax, d.h. die mögliche Programmierung zu JSON RPC anschauen kann ? Python Script: #!/root/.xbmc/userdata/Rnse_Bediening.py # HIERONDER IMPORTS EN VARIABELEN DECLAREREN # __________________________________________ from __future__ import print_function import xbmc import xbmcgui import os import sys import threading import can can.rc['interface'] = 'socketcan_ctypes' from threading import Thread, Timer from can.interfaces.interface import Bus can_interface = 'can0' global var var=1 # Bij afsluiten wordt var0 # HIERONDER FUNCTIES PLAATSEN / DECLAREREN # __________________________________________ def dumpcan(): # Can berichten scannen + omzetten naar kodi / python acties global var up=0 down=0 prev=0 next=0 press=0 retrn=0 setup=0 windowid=0 for message in Bus(can_interface): if var==1: msg = unicode(message).encode('utf-8') canid = msg[26:29] msg = msg[45:69] if canid == ("461"): # Canid 461 wordt gebruikt voor het gebruik van RNS-E knoppen. if msg == ("37 30 01 40 00 00"): #Up if up==1: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Input.Up","id":1}') up=0 else: up+=1 elif msg == ("37 30 01 80 00 00"): #Down if down==1: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Input.Down","id":1}') down=0 else: down+=1 elif msg == ("37 30 01 00 40 01"): #Left windowid = xbmcgui.getCurrentWindowId() if (windowid == 12006): # MusicVisualisation.xml of VideoFullScreen.xml xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Player.Seek","params":{"playerid":0,"value":"smallbackward"},"id":1}') elif (windowid == 12005): xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Player.Seek","params":{"playerid":1,"value":"smallbackward"},"id":1}') else: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Input.Left","id":1}') elif msg == ("37 30 01 00 20 01"): #Right windowid = xbmcgui.getCurrentWindowId() if (windowid == 12006): # MusicVisualisation.xml of VideoFullScreen.xml xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Player.Seek","params":{"playerid":0,"value":"smallforward"},"id":1}') elif (windowid == 12005): xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Player.Seek","params":{"playerid":1,"value":"smallforward"},"id":1}') else: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Input.Right","id":1}') elif msg == ("37 30 01 01 00 00"): #Previous if prev==1: xbmc.executebuiltin('XBMC.PlayerControl(Previous)') prev=0 else: prev+=1 elif msg == ("37 30 01 02 00 00"): #Next if next==1: xbmc.executebuiltin('XBMC.PlayerControl(Next)') next=0 else: next+=1 elif msg == ("37 30 01 00 10 00"): #Press if press==1: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Input.Select","id":1}') press=0 else: press+=1 elif msg == ("37 30 01 00 02 00"): #Return if retrn==1: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Input.Back","id":1}') retrn=0 else: retrn+=1 elif msg == ("37 30 01 00 01 00"): #Setup if setup==1: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Player.PlayPause","params":{"playerid":0},"id":1}') xbmc.executebuiltin("Notification('Speler gepauzeerd')") setup=0 else: setup+=1 elif msg == ("37 30 01 00 02 00"): #Return if retrn==1: xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Input.Back","id":1}') retrn=0 else: retrn+=1 elif (canid == "271" ) and (msg == "11"): os.system("sudo halt") # HIERONDER AANROEPEN (GELIJKTIJDIG UIT TE VOEREN) FUNCTIES # __________________________________________ dumpcan() -- RE: E65 7er Raspberry Umbau Can Bus - uriel2006 - 04.03.2017 Also Das problem ist, Wenn du nicht möchtest das dass originale Radio reagiert wenn du im kodi bist dann brauchst du dualcan. 1 zum empfangen und eins zum senden. Musst dir dann halt ein script schreiben und bestimmte pids unterdrücken. nun ist die Frage was das System im E65 macht wenn es bestimmte Nachrichten nicht mehr empfangen kann. Das ganze ist auch sehr zeitkritisch. Das ganze würde ich aber nicht auf einen Raspberry aufbauen. Nimm da lieber ein AVR zu und sende die Daten per i2c spi ..... zum Raspberry. Oder dir ist es wurst was das System im hintergrund macht. dann kannst du auch nur lesend dich auf den bus mit drauf zapfen. cu. uriel2006 RE: E65 7er Raspberry Umbau Can Bus - micha4381gt - 05.03.2017 (04.03.2017, 11:59)uriel2006 schrieb: Also Das problem ist, Wenn du nicht möchtest das dass originale Radio reagiert wenn du im kodi bist dann brauchst du dualcan. 1 zum empfangen und eins zum senden. Musst dir dann halt ein script schreiben und bestimmte pids unterdrücken. nun ist die Frage was das System im E65 macht wenn es bestimmte Nachrichten nicht mehr empfangen kann. Das ganze ist auch sehr zeitkritisch. Das ganze würde ich aber nicht auf einen Raspberry aufbauen. Nimm da lieber ein AVR zu und sende die Daten per i2c spi ..... zum Raspberry. Oder dir ist es wurst was das System im hintergrund macht. dann kannst du auch nur lesend dich auf den bus mit drauf zapfen. Hallo danke für deine antwort. Das radio (ask) fliett komplett mit dem ganzen i drive didplsy raus. Die klima pids und dsc message sniffe ich und sende die selber über den pi auf dem canbus. Endstufen sind 3 stk schon verbaut. Das audio system hängt am most bus also lichtleiter. |