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
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$thread_modes - Line: 43 - File: showthread.php(1621) : eval()'d code PHP 8.2.24 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php(1621) : eval()'d code 43 errorHandler->error_callback
/showthread.php 1621 eval




Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Anschluss Lenkradfernbedienung Ford Focus MK 1
#3
>Ah cool, dachte vlt. das Thema Ford Focus wäre zu speziell, wobei ich denke, dass es natürlich nicht die einzige Karre ist, die so eine ähnlich funktionierende Lenkradfernebedienung hat.

Das Script ist im Prinzip ein Zusammenspiel aus Erik Bartmanns und von der Seite:
http://www.forum-raspberrypi.de/Thread-r...io-tastern

Die Kodi Steuerung habe ich einmal mit dem Package/CMD Befehl "kodi-send" probiert, was allerdings nicht stabil geklappt hat und später mit dem o.g. Script per JSON, was super funktioniert.
Nur habe ich bis jetzt nicht gecheckt, wie man per JSON "Track weiter/Next usw." realisiert, vieleicht kann mir da einer helfen.
Deswegen habe ich das weiterhin per "kodi-send" gemacht.
Es muss also per "sudo apt-get install kodi-eventclients-kodi-send" vor her installiert werden.


Code:
#!/usr/bin/env python
# coding: utf8

#Python Raspberry Pi GPIO Klasse importieren
import RPi.GPIO as GPIO
import time, os, httplib, json, requests, pdb
from requests.auth import HTTPBasicAuth
# Festlegung der Nutzung der vorgegebenen Nummerierung der GPIOs
GPIO.setmode(GPIO.BCM)

# Namen von True und False zum besseren Verständnis festlegen
HIGH = True  # 3,3V Pegel (high)
LOW  = False # 0V Pegel (low)

# SCI Funktion
def getAnalogData(adCh, CLKPin, DINPin, DOUTPin, CSPin):
   # Pegel definieren
   GPIO.output(CSPin,   HIGH)    
   GPIO.output(CSPin,   LOW)
   GPIO.output(CLKPin, LOW)
       
   cmd = adCh
   cmd |= 0b00011000 # Kommando zum Abruf der Analogwerte des Datenkanals adCh

   # Bitfolge senden
   for i in range(5):
       if (cmd & 0x10): # 4. Bit pruefen und mit 0 anfangen
           GPIO.output(DINPin, HIGH)
       else:
           GPIO.output(DINPin, LOW)
       # Clocksignal negative Flanke erzeugen  
       GPIO.output(CLKPin, HIGH)
       GPIO.output(CLKPin, LOW)
       cmd <<= 1 # Bitfolge eine Position nach links verschieben
           
   # Datenabruf
   adchvalue = 0 # Wert auf 0 zuruecksetzen
   for i in range(11):
       GPIO.output(CLKPin, HIGH)
       GPIO.output(CLKPin, LOW)
       adchvalue <<= 1 # 1 Postition nach links schieben
       if(GPIO.input(DOUTPin)):
           adchvalue |= 0x01
   time.sleep(0.01)
   return adchvalue

# Konfiguration Eingangskanal und GPIOs
CH = 0  # Analog/Digital-Channel
CLK     = 18 # Clock
DIN     = 24 # Digital in
DOUT    = 23  # Digital out
CS      = 25  # Chip-Select

# Pin-Programmierung
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(DIN, GPIO.OUT)
GPIO.setup(DOUT, GPIO.IN)
GPIO.setup(CS,   GPIO.OUT)

buttons = [2                        , 4                        , 14                     ,15                          , 3                       ]
methods = ['Application.SetVolume'  , 'Application.SetVolume'  ,  'Application.SetMute' , 'Input.ExecuteAction'              'Input.ExecuteAction'          ]
params  = [{ "volume": "decrement" }, { "volume": "increment" },  { "mute": "toggle" }   , { "action": "skipnext" }          , { "action": "skipprevious"}]
user    = 'kodi'
passwd  = ''
port    = '80'

def button_pressed(index):
   url = 'http://localhost:' + port + '/jsonrpc'
   postheaders = {'content-type': 'application/json'}
   command = {"jsonrpc":"2.0", "id": 1, "method": methods[index], "params": params[index]}
   print(methods[index])
   resp = requests.post(url, auth=(user,passwd), data=json.dumps(command), headers=postheaders)

    
while True:
   # Volume -  Taster  
   if (200 <= getAnalogData(CH, CLK, DIN, DOUT, CS) <= 210):
       button_pressed(0)
        
        # Volume +  Taster  
   if (400 <= getAnalogData(CH, CLK, DIN, DOUT, CS) <= 425):
       button_pressed(1)
        
        # Seek +  Taster  
   if (590 <= getAnalogData(CH, CLK, DIN, DOUT, CS) <= 610):
       os.system("kodi-send --action='PlayerControl(Next)'")
        
        # Seek -  Taster  
   if (730 <= getAnalogData(CH, CLK, DIN, DOUT, CS) <= 750):
       os.system("kodi-send --action='PlayerControl(Previous)'")

        # Mode  Taster  
   if (830 <= getAnalogData(CH, CLK, DIN, DOUT, CS) <= 855):
       button_pressed(2)


Falls also jmd. einfällt, wie die JSON NextTrack Methode aussieht, immer her damit.
Auf http://kodi.wiki/view/JSON-RPC_API/v6 habe ich nichts dazu gefunden. zumindest nicht das es geklappt hätte.

Außerdem würde ich gerne eine "ActiveWindow" abhängige Steuerung relaisieren, abe rich gebe zu, dass ich keine Ahnung habe, wie ich JSON Get Functionen in Python einbaue(so schwer kann das eigentlich nicht sein).

Sollte wie gesagt jmd. Interesse haben an der Fritzing Verkabelung von Remote Pin11/12   <--> MCP3008  <--> Raspberry so müsste ich die erstmal erstellen und würde die dann hier hochladen. Wie gesagt bei mir eine kleine Platine(nix besonderes und quasi das erste richtige mal für mich)

@Thedk

Wie hast du das dann weiter realisiert? Wie bist du in den Raspberry rein?
Zitieren


Nachrichten in diesem Thema
RE: Anschluss Lenkradfernbedienung Ford Focus MK 1 - von Quoti30 - 26.01.2017, 13:33

Gehe zu:


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