Folgende Warnungen sind aufgetreten:
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.24 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 34 errorHandler->error_callback
/global.php 961 eval
/printthread.php 16 require_once



RasPiCar Projekt Forum
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.

cu.
uriel2006

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.