Bluetooth Lautsprecher und pygame

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Solderdot
User
Beiträge: 6
Registriert: Montag 6. Juli 2020, 16:02

Servus!
Ich möchte gerne (auf nem Raspi unter Raspbian Buster) MP3s auf einem Bluetooth-Lautsprecher ausgeben. Ich finde bislang keine Infos, wie ich Bluetooth-Lautsprecher unter Python koppeln kann.
Auf der Shell klappt das soweit - Koppeln mit nem Tools bluetoothctl klappt, und mittels mplayer kann ich dann per ALSA auch MP3s darauf abspielen. Bluetoothctl auf dem Raspi ist aber alles andere als scripting-freundlich, daher möchte ich's in Python implmentieren.
Kann mir hier jemand auf die Sprünge helfen?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich bin da selbst noch nicht eingestiegen, aber sobald das mal soweit ist, werde ich DBus benutzen.
Solderdot
User
Beiträge: 6
Registriert: Montag 6. Juli 2020, 16:02

Danke für die Antwort. Ist DBus nicht "lediglich" ein Instrument, um Nachrichten zwischen Prozessen auszutauschen?
Ich schätze, da muss noch mehr dazu kommen, als DBus, oder?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja, hätte ich erwähnen sollen: der bluetoothd arbeitet damit. Und nix anderes benutzt am Ende Bluetoothctl: https://git.kernel.org/pub/scm/bluetoot ... ent/main.c

Mit ein bisschen Glück und https://dbus.freedesktop.org/doc/dbus-monitor.1.html kannst du ggf die session mit bluetoothctl aufzeichnen & dann “einfach” wieder abspielen.
Solderdot
User
Beiträge: 6
Registriert: Montag 6. Juli 2020, 16:02

OK... Die Idee ist also, die Sequenz der DBus-Mssages aufzuzeichnen und in der eigenen Anwendung wieder abzuspielen. Quasi eine "Replay-Attacke". Ja, das könnte funktionieren, ist aber IMHO ein eher schlechter Ansatz. Immerhin kann sich das Interface am bluetoothd ja mal ändern, und dann funzt diese Sequenz nicht mehr und keiner kann sagen, warum. Es sind ja auch Timings einzuhalten, denn ich kann ein Gerät ja nur dann connecten, wenn es zuvor beim Scan aufgetaucht ist.
Gibt's denn in Python keine API, um auf Bluetooth einen Scan zu starten, ein Device zu pairen, und zu connecten?
Solderdot
User
Beiträge: 6
Registriert: Montag 6. Juli 2020, 16:02

Ich hab nen besseren Weg gefunden: Bluetool.

https://pypi.org/project/bluetool/#description

Das bietet eine API, die zu lesbarem Code führt. Scheint auch soweit recht robust zu sein, solange ich nur einen Lautsprecher verwende. Der Wechsel auf einen anderen per Bluetooth angeschlossenen Speaker scheint etwas hakelig zu sein, da muss ich noch ein wenig probieren. Einziger Nachteil, läuft out-of-the-box nur unter Python 2.7, nicht aber unter Python 3. Mal schauen, ob ich's portiert bekomme.

Danke für Deinen Input.
Antworten