Das bislang größte Manko bei Bluetooth-Kopfhörer/Lautsprecher Mode ist die fehlende Websteuerung.
Dadurch ist es auch schwierig, den Bluetooth-Modus wieder zu verlassen (Komme nicht mehr aus dem Bluetoothmodus raus).
Da sich Bluetooth- und WLAN-Verbindung das HF-Radiomodul teilen, war es bisher nicht möglich, beide stabil gemeinsam zu verwenden. Daher ist im ESPuino-Code im BT-Modus das WLAN deaktiviert.
Ich habe immer wieder Tests durchgeführt, aber so richtig funktioniert hat es nie. Jetzt habe ich einen neuen Anlauf mit dem aktuellen Arduino 3.3.4 (ESP-IDF 5.5.1) unternommen – und siehe da, mein Testprojekt läuft! Das heißt, ich kann Musik über Bluetooth abspielen und gleichzeitig die Weboberfläche aufrufen. Hier das Testprojekt mit gleichen Ablauf/Bibliotheken wie im ESPuino:
Um das auch auf dem ESPuino stabil zum Laufen zu bringen, müsste allerdings noch einiges an Heap-Speicher eingespart werden, bei ca. <30KB Speicher ist Feierabend. Aber seit wir PSRAM haben, bin ich zuversichtlich, dass es gelingen wird. Ein aussichtsreicher Kandidat wäre CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY , spart ausreichend Heapspeicher & damit läuft ESPuino bei mir recht stabil.
MQTT ist aktiviert. Läuft das? Muss da noch etwas gemacht werden?
Was noch fehlt, ist die Anpassung der Weboberfläche, sodass man in den Normalmodus zurückkehren kann. Eventuell auch eine Visualisierung des aktuellen Modus über ein Icon oben im Header. Im Normalmodus könnte man auch gleich die Stärke des WLANs mit Balken anzeigen.
Hallo @tueddy
Ich verwende schon seit einiger Zeit dieses Projekt als Wiedergabegerät für den LogitecMediaServer. Auf dem ESP32 ist Bluetooth ständig aktiviert und man kann streamen . Läuft gerade auf dem Squeezelite eine Wiedergabe kann ich mich mit dem iPhone verbinden und es sieht so aus als würde die Wiedergabe von Bluetooth laufen, Jedoch wird weiterhin das abgespielt was auf dem Squeezelite schon läuft. Halte ich den Stream vom LogitechMediaServer an wird sofort auf Bluetooth-Wiedegabe umgeschaltet, beende ich die Bluetooth-Wiedegabe wird automatisch wieder der Stream fortgesetzt.
Ich kenne mich mit dem Code nicht aus aber vielleicht kannst du dir das mal ansehen.
VG Willmar
Hallo @compactflash,
ich denke, dein Problem ist nicht ganz das Thema, da es hier vor allem um die gleichzeitige Verwendung von WLAN und Bluetooth geht. Leider kann ich dazu auch nichts sagen, da ich eine solche Konstellation nicht habe.
Generell ist es aber so: Nur wenn das Gerät mit dem ESPuino verbunden ist, wird über Bluetooth gestreamt. Ist es nicht verbunden, wird weiterhin normal über den ESPuino-Lautsprecher abgespielt. Evt. kannst Du jetzt mit der neuen Version während Bluetooth-Modus die Weboberfläche öffnen und ins Log schauen (Das war ja bislang nicht möglich).
Da steht dann etwas wie „Bluetooth => connection state: connected“ bzw. „Bluetooth => audio state: started“ Hilft es bei der Fehlersuche?
Hier mal ein Vorschlag für die Anpassung Weboberfläche:
Eine neue Schaltfläche zum Verlassen des Bluetooth-Modus (startet dann neu mit OPMODE_NORMAL - Das wäre dann der berühmte „Ecape-Button“).
Und ein Icon im Header für BT-Modus-Visualisierung.
Im 2.Bild habe ich testweise das WLAN Icon mit aktueller RSSI-Signalstärke 1,2,3,4 Balken eingebaut (OPMODE_NORMAL). Das Icon macht zwar Sinn, irritiert aber optisch, es passiert auch nix beim Klick darauf. Ich würde es daher weglassen/ausblenden. Evt. könnte man es später zusammen mit einem Batteriesymbol (Ladezustand) aufnehmen.
Textlich ist auch noch Luft nach oben
WLAN hast doch, wenn das Webinterface aufrufbar ist, eh immer. Also müsste man dieses Icon doch quasi immer anzeigen. Und BT, sofern eine Verbindung besteht, on top.
Stimmt natürlich. Frage ob wir das WLAN-Symbol in diesem Zuge schon haben wollen?
Hier noch ein Entwurf mit etwas mehr Abstand zum Dropdown, Ansicht auf Mobile:
@dhst: Natürlich ist das möglich, im Moment geht die Umschaltung aber nur über die Websocket-Verbindung.
Ich sehe eine solche Funktion allerdings eher für die REST-API, beispielsweise einen Endpunkt /mode, den man mit HTTP GET abfragen kann und der den aktuellen Modus zurückgibt. Mit HTTP PUT oder POST kann man dann den Modus setzen. Damit können externe Programme wie der ESPuino Manager von @JHB diese Funktion nutzen oder anzeigen.
Für deinen Anwendungsfall legst du nur einen Lesezeichen für die ESPuino-Weboberfläche an, klickst dann auf den Tab „Bluetooth” und wählst den „Lautsprecher- bzw. Kopfhörer-Modus” aus. Es gibt schließlich zwei Bluetooth-Modi:
BT-Sink/Lautsprecher-Modus: Du verbindest dein Smartphone mit dem ESPuino und spielst Musik vom Smartphone auf den ESPuino-Lautsprecher ab.
BT-Source/Kopfhörer: Du verbindest den ESPuino mit dem Bluetooth-Kinderkopfhörer und streamst die Musik vom ESPuino auf den Kopfhörer.