Hallo,
ich möchte mein Bluetooth Gamepad (idroid:con) beim starten des Pi's automatisch verbinden lassen. Auf meinem Pi ist Retropie mit automatischem boot in die Emulationstation installiert.
Wer nicht viel lesen will, einfach ab "--Frage--" anfangen mit lesen
--Hintergrund--
Das Gamepad lässt sich über diverse Bash-Kommandos welche ich über SSH eingebe verbinden, allerdings funktioniert nur bei einem bestimmten Kommando anschließend auch die Steuerung der Emulationstation und der Spiele.
Das Kommando ist "bluez-test-input connect 00:11:22:33:44:55" wobei "00:11:22:33:44:55" die MAC-Adresse des Gamepads ist.
Die Verbindung entspricht derselben wie wenn ich im Bluetooth Manager (in der grafischen Ansicht) das Bluetooth Device mit "Connect to input service" verbinde. Es wird also kein Pin zum pairing benötigt.
So weit so gut.
Um die Verbindung zu automatisieren habe ich eine startup.sh geschrieben welche genau den oben erwähnten Befehl ausführt. Wenn ich die startup.sh per SSH ausführe funktioniert die Verbindung. Um die startup.sh während des bootens auszuführen, lasse ich diese in der Datei rc.local aufrufen. Wenn ich nun den Pi boote (Strom aus -> Strom ein) sehe ich zwar das die startup.sh ausgeführt wird, aber ich bekomme eine Fehlermeldung, dass die Verbindung nicht hergestellt werden konnte (Connection reset by Peer 104). Bei einem reboot per Bash-Kommando hat es ab und zu funktioniert.
Nun denke ich, ok kann sein, vielleicht ist irgendwas während dem booten nicht geladen oder so deshalb der Ansatz mit dem Python-Skript.
--Frage--
Ich habe nun die Idee anstatt dem einmaligen Bash-Kommando während dem Boot, ein Python-Skript im Hintergrund ausführen zu lassen. Das Skript soll nun solange versuchen eine Verbindung mit dem Gamepad herzustellen, bis eine hergestellt ist.
Mein Ansatz (habe überhaupt keine Erfahrung mit Python):
#/usr/bin/env python
import bluez
import subprocess
import time
while not input.connected:
subprocess.call(["bluez-test-input","connect","00:11:22:33:44:55"])
print "connecting .."
time.sleep(5)
Nun bin ich mir bei der Einbindung der Bibliotheken überhaupt nicht sicher, da auch kein bluez gefunden wird wenn ich das Skript ausführe.
Zudem ist die Abfrage der Verbindung nur geraten Habe versucht das zu benutzen: http://maemo.org/api_refs/5.0/5.0-final/bluez/input-api.txt
Da steht ganz unten was von Propreties boolean connected [readonly].
Aber ich weiß nicht mal ob ich auf dem richtigen Weg bin.
Ich wäre euch sehr dankbar für Hinweise und Ideen wie das Python-Skript geschrieben werden kann!