Inhaltsverzeichnis:

Bluetooth auf Sonos mit Raspberry Pi abspielen - Gunook
Bluetooth auf Sonos mit Raspberry Pi abspielen - Gunook

Video: Bluetooth auf Sonos mit Raspberry Pi abspielen - Gunook

Video: Bluetooth auf Sonos mit Raspberry Pi abspielen - Gunook
Video: Balena Sound. Raspberry Pi 4. Airplay, Bluetooth Audio & Spotify connect 2024, Juli
Anonim
Image
Image
Spielen Sie Bluetooth auf Sonos mit Raspberry Pi
Spielen Sie Bluetooth auf Sonos mit Raspberry Pi

Ich habe zuvor eine Anleitung geschrieben, in der beschrieben wird, wie man Sonos mit einem Raspberry Pi einen Aux- oder analogen Line-In hinzufügt. Ein Leser fragte, ob es möglich sei, Bluetooth-Audio von seinem Telefon auf Sonos zu streamen. Dies geht ganz einfach mit einem Bluetooth-Dongle, der in den Line-In des teureren Sonos Play:5 oder Sonos CONNECT eingesteckt wird; Sie verlieren jedoch die Wiedergabetreue, wenn Sie Bluetooth (digital) in analog und dann wieder in digital umwandeln, und wenn Sie nur einen der günstigeren Sonos-Lautsprecher besitzen, ist dies keine Option. Diese Anleitung beschreibt, wie Sie einen Raspberry Pi einrichten, um Bluetooth-Audio an jeden Sonos-Lautsprecher zu streamen.

HINWEIS: Denken Sie daran, dass wir Bluetooth-Audio an den Raspberry Pi übertragen und in einen MP3-Stream konvertieren werden, bevor Sie ihn an Sonos senden, sodass es zu einer Verzögerung von einigen Sekunden kommt. Wenn Sie dies zum Ansehen eines Videos verwenden, ist der Ton nicht synchron.

Schritt 1:

Was wirst du brauchen:

Raspberry PI 3 Model B (es gibt ein neueres, schnelleres Model B+, aber ich bin beim regulären Model B geblieben, weil ich von einigen Problemen mit dem Blockieren des B+ gelesen habe und auch die WLAN- und Bluetooth-Radios des B+ haben eine Metallabschirmung um sie herum zu machen sie FCC-konform, wenn sie in einem anderen Gerät installiert sind, aber ich wollte eine maximale Bluetooth-Reichweite und hatte Angst, dass die Abschirmung dies behindern könnte)

Ein Desktop- oder Laptop-Computer mit einem microSD-Kartenleser

Monitor oder Fernseher mit HDMI-Eingang (nur für die Ersteinrichtung)

USB- oder Bluetooth-Tastatur und -Maus (nur für die Ersteinrichtung)

Raspberry Pi-Gehäuse aus Kunststoff (ich verwende für dieses Projekt ein Kunststoffgehäuse, um die Bluetooth-Reichweite zu maximieren)

Kingston 8 GB microSDHC Klasse 4 Flash-Speicherkarte

5V Netzteil

Schritt 2:

Bild
Bild
Bild
Bild

Navigieren Sie auf Ihrem normalen Computer zu https://www.raspberrypi.org/downloads/raspbian/ und laden Sie "RASPBIAN STRETCH WITH DESKTOP" herunter.

Gehen Sie auch zu https://etcher.io/ und laden Sie Etcher herunter und installieren Sie es.

HINWEIS: In meinem vorherigen instructable habe ich beschrieben, wie man NOOBS herunterlädt, um Raspbian zu installieren; Diese Methode ist jedoch etwas schneller. So oder so ist in Ordnung.

Schritt 3:

Bild
Bild
Bild
Bild

Führen Sie Etcher aus, klicken Sie auf Bild auswählen und navigieren Sie zur ZIP-Datei. Klicken Sie auf Laufwerk auswählen und navigieren Sie zur microSD-Karte, dann klicken Sie auf Flash!

Schritt 4:

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

HINWEIS: Einige dieser nächsten Schritte ähneln meinem vorherigen instructable, also überspringen Sie, wenn Sie bereits Root-Passwort, statische IP und VNC eingerichtet haben.

Stecken Sie die microSD-Karte in den SD-Kartensteckplatz an der Unterseite des Raspberry Pi. Verbinden Sie den Raspberry Pi über ein HDMI-Kabel mit Ihrem Monitor oder Fernseher. Schließen Sie die USB-Tastatur, -Maus und schließlich das Micro-USB-Stromkabel an. Nach dem Booten wird der Raspbian-Desktop angezeigt. Es wird Sie durch verschiedene Einstellungen führen, aber ich würde empfehlen, NICHT nach Updates zu suchen. Klicken Sie auf Überspringen. Ich habe immer wieder den Fehler "blueman.bluez.errors. DBusFailedError: Protocol not available" erhalten, als ich versuchte, Bluetooth zu koppeln, nachdem alle Updates installiert waren, sodass ich von vorne beginnen musste.

TIPP: Wenn Sie keine Militärzeit wünschen, klicken Sie mit der rechten Maustaste auf die Uhr und wählen Sie Digitaluhreinstellungen und ändern Sie das Uhrformat von %R auf %r

Schritt 5:

Bild
Bild
Bild
Bild
Bild
Bild

Als nächstes werden wir den integrierten VNC-Server aktivieren. Dies macht die Dinge so viel einfacher, da Sie Befehle einfach über VNC kopieren und einfügen können, anstatt sie einzugeben. Wählen Sie GUI-Menü > Einstellungen > Raspberry Pi-Konfiguration > Schnittstellen. Klicken Sie neben VNC auf Aktiviert und dann auf OK. Nach einigen Sekunden erscheint ein VNC-Symbol in der Taskleiste. Klicken Sie darauf und dann auf das Menüsymbol oben rechts (Kästchen mit 3 horizontalen Linien) und dann auf Optionen. Stellen Sie in den Sicherheitsoptionen Verschlüsselung auf "Bevorzugen aus" und Authentifizierung als "VNC-Passwort" ein und klicken Sie dann auf Übernehmen. Es öffnet sich ein Passwortfeld. Geben Sie "Himbeere" (ohne Anführungszeichen) als Passwort in jedes Feld ein und klicken Sie auf OK.

Schritt 6:

Bild
Bild
Bild
Bild
Bild
Bild

Bevor wir weitermachen, müssen wir eine statische IP-Adresse zuweisen. Wenn die IP-Adresse Ihres Pi zufällig vom DHCP-Server Ihres Routers zugewiesen wird, könnte sich die IP-Adresse später ändern und Sie könnten keine Verbindung über VNC (oder Sonos) herstellen. Klicken Sie mit der rechten Maustaste auf das Symbol für die Netzwerkverbindungen in der Taskleiste (das kleine Symbol mit dem Aufwärts- und Abwärtspfeil) und wählen Sie "Einstellungen für drahtlose und kabelgebundene Netzwerke". LINKS-klicken Sie auf das obere rechte Feld und wählen Sie „eth0“, um die Ethernet-Verbindung zu konfigurieren, oder „wlan0“für Wireless. Ich würde empfehlen, nur dem einen oder anderen eine statische IP zuzuweisen. Ich hatte ein Problem, als ich meinen Pi zum ersten Mal einrichtete, bei dem ich beiden Verbindungen dieselbe statische IP-Adresse zugewiesen habe und das WLAN meines Pi gesperrt war und ich es nicht wieder richtig funktionieren konnte, also musste ich mit der Installation des Betriebssystems beginnen. Geben Sie auf jeden Fall die gewünschte IP-Adresse in das Feld IP-Adresse ein und geben Sie die IP-Adresse Ihres Routers sowohl in das Feld Router als auch DNS-Server ein. Klicken Sie auf Übernehmen und schließen.

HINWEIS: Es ist möglicherweise einfacher, mithilfe der DHCP-IP-Reservierungsfunktion Ihres Routers eine statische IP-Adresse zuzuweisen, falls vorhanden. Möglicherweise benötigen Sie die MAC-Adresse des Pi oder sie wird einfach in einer Liste der verbundenen Geräte auf der Admin-Seite Ihres Routers angezeigt. Wenn Sie die MAC-Adresse benötigen, geben Sie im Terminalfenster für Ethernet den Befehl "ifconfig eth0" oder für WLAN "ifconfig wlan0" ein. Interessanterweise wird die WLAN-MAC-Adresse in der Zeile angezeigt, die mit "ether" beginnt.

Schritt 7:

Bild
Bild
Bild
Bild
Bild
Bild

Als nächstes müssen wir die Standardbildschirmauflösung festlegen. Dies mag albern erscheinen, da wir bereits mit einem Monitor verbunden sind, aber später, wenn Sie eine Verbindung über VNC ohne angeschlossenen Monitor herstellen (kopflos, wie sie sagen), wird die Standardauflösung des Pi von 640 x 480 wiederhergestellt, was ein sehr kleiner Bildschirm ist arbeiten mit! Wählen Sie GUI-Menü > Einstellungen > Raspberry Pi-Konfiguration > Auflösung einstellen. Stellen Sie 1280 x 720 oder höher ein und klicken Sie auf OK und Ja, um neu zu starten.

Schritt 8:

Bild
Bild
Bild
Bild
Bild
Bild

Möglicherweise möchten Sie den Namen Ihres Pi ändern, insbesondere wenn Sie mehr als einen in Ihrem Netzwerk haben. Ich habe meins in "BluetoothPi" umbenannt, um es leicht identifizierbar zu machen. Nach dem Umbenennen werden Sie zum Neustart aufgefordert.

Schritt 9:

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

An dieser Stelle möchten Sie möglicherweise VNC verwenden, um den Pi zu steuern. Öffnen Sie erneut die VNC-Systemsteuerung auf dem Raspbian-Desktop und suchen Sie unter „Connectivity“nach der IP-Adresse. Installieren und starten Sie einen VNC-Viewer auf Ihrem normalen Computer und verwenden Sie diese IP-Adresse, um eine Verbindung herzustellen, und geben Sie als Passwort "raspberry" (ohne Anführungszeichen) ein. Ich habe TightVNC für Windows verwendet. Nachdem Sie die Verbindung hergestellt haben, können Sie die VNC-Verbindung des Pi als Verknüpfung auf Ihrem Desktop speichern, um in Zukunft schnell eine Verbindung herzustellen, ohne den Anmeldebildschirm zu umgehen. Sie erhalten eine Warnung zum Speichern des Passworts in der Verknüpfung. Um zu kopieren und in das Terminalfenster des Pi einzufügen, wählen oder markieren Sie den Text oder die Befehle auf Ihrem normalen Computer, drücken Sie Strg-C (drücken Sie buchstäblich die Strg- und C-Taste auf Ihrer Tastatur) oder klicken Sie mit der rechten Maustaste und wählen Sie "Kopieren". ", aktivieren Sie dann das VNC-Viewer-Fenster des Pi und klicken Sie mit der rechten Maustaste in das Terminalfenster, rechts auf den Cursor und wählen Sie Einfügen.

Schritt 10:

Bild
Bild
Bild
Bild

Als nächstes werden wir zwei Programme installieren, Darkice und Icecast2. Darkice wird unsere Bluetooth-Audioquelle in einen MP3-Stream kodieren und Icecast2 wird sie Sonos als Shoutcast-Stream bereitstellen. Kopieren Sie jede dieser Zeilen nacheinander und fügen Sie sie in das Terminalfenster ein, gefolgt von der Eingabetaste jedes Mal:

wget

mv darkice_1.0.1-999~mp3+1_armhf.deb?raw=true darkice_1.0.1-999~mp3+1_armhf.deb

sudo apt-get install libmp3lame0 libtwolame0

sudo dpkg -i darkice_1.0.1-999~mp3+1_armhf.deb

Schritt 11:

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

Installieren Sie jetzt Icecast2. Geben Sie "sudo apt-get install icecast2" ein, gefolgt von Enter. Nach der Installation erscheint ein Fenster, in dem Sie gefragt werden, ob Sie Icecast2 konfigurieren möchten. Drücken Sie die linke Pfeiltaste und geben Sie ein, um Ja auszuwählen. Drücken Sie auf dem zweiten Bildschirm die Abwärtspfeiltaste und geben Sie ein, um OK auszuwählen, um den Standardhostnamen "localhost" zu verwenden. Drücken Sie auf den nächsten drei Bildschirmen den Abwärtspfeil und geben Sie die Taste ein, um der Verwendung von "hackme" als Standardquelle, Relay und Administrationspasswort zuzustimmen. Obwohl wir allen Standardeinstellungen zustimmen, müssen diese Schritte ausgeführt werden, um den Icecast2-Server zu aktivieren.

sudo apt-get install icecast2

Schritt 12:

Bild
Bild
Bild
Bild
Bild
Bild

Als nächstes müssen wir den GUI-Dateimanager als Root-Benutzer ausführen. Wählen Sie dazu GUI-Menü > Ausführen. Geben Sie "sudo pcmanfm" ein und drücken Sie die Eingabetaste. Dadurch wird der Dateimanager (das Äquivalent des Datei-Explorers für uns Windows-Benutzer) im Home-Verzeichnis (/home/pi) geöffnet und Sie sehen die übrig gebliebene Darkice-Installationsdatei, die wir zuvor heruntergeladen haben. Klicken Sie mit der rechten Maustaste in einen leeren Bereich und wählen Sie Neu erstellen und dann Datei leeren. Nennen Sie es "darkice.cfg" und klicken Sie auf OK. Klicken Sie dann mit der rechten Maustaste auf die neu erstellte Datei und wählen Sie, ob Sie sie mit Leafpad (dem Äquivalent von Windows Notepad) öffnen möchten. Kopieren Sie die folgenden Zeilen und fügen Sie sie in Leafpad ein. Klicken Sie dann auf Datei und Speichern. Sie werden feststellen, dass die Zeile "Qualität" mit einem # davor auskommentiert ist. Es wird nur verwendet, wenn Sie "bitrateMode = vbr" (variable Bitrate) einstellen. Wenn Sie cbr (konstante Bitrate) verwenden, können Sie keinen Qualitätswert festlegen, da der Stream sonst stottert und überspringt. Umgekehrt müssen Sie, wenn Sie sich für die Verwendung von vbr entscheiden, die Zeile "Bitrate = 160" auskommentieren und die Zeile "Qualität" auskommentieren.

HINWEIS: Die höchste MP3-Bitrate, die Sie haben können, beträgt 320 kbps; Allerdings befinden sich sowohl das WiFi- als auch das Bluetooth-Radio auf dem Raspberry Pi auf demselben Chip. Wenn Sie also die Bandbreite beider maximieren, kann Bluetooth-Audio stottern oder einfrieren. Wir werden später eine Einstellung ändern, die dies behebt, jedoch begrenzt dies die WLAN-Bandbreite etwas, daher habe ich die Audio-Bitrate für dieses Projekt auf 160 kbps reduziert, da ich vorhabe, es ausschließlich über WLAN zu halten. Wenn Sie Ethernet verwenden, ist dies kein Problem und Sie können die Bitrate sicher auf 320 kbps einstellen.

[general]duration = 0 # Dauer in s, 0 forever bufferSecs = 1 # Puffer, in Sekunden reconnect = yes # erneut verbinden, wenn getrennt

[Eingang]

device = phone # name of bluetooth device sampleRate = 44100 # Sample rate 11025, 22050 or 44100 bitsPerSample = 16 # bits channel = 2 # 2 = stereo

[icecast2-0]

bitrateMode = cbr # konstante Bitrate ('cbr' konstant, 'abr' Durchschnitt) #quality = 1.0 # 1.0 ist die beste Qualität (nur mit vbr verwenden) format = mp3 # format. Wählen Sie 'vorbis' für OGG Vorbis bitrate = 160 # bitrate server = localhost # or IP port = 8000 # port for IceCast2 access password = hackme # source password for the IceCast2 server mountPoint = rapi.mp3 # mount point auf dem IceCast2 Server.mp3 oder.ogg-Name = BluetoothPi

Schritt 13:

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

Als nächstes müssen wir die gleichen Schritte wie zuvor ausführen, um eine leere Datei namens "darkice.sh" zu erstellen. Eine.sh-Datei entspricht einer.bat- oder Batch-Datei für DOS oder Windows. Mit Leafpad öffnen, die folgenden Zeilen kopieren und einfügen und speichern. Wenn Sie meinem vorherigen instructable gefolgt sind, werden Sie feststellen, dass die Zeile, die Darkice beginnt, ein wenig anders aussieht. Ich musste den Code in eine Schleife einbetten, denn wenn Darkice das Bluetooth-Audiosignal verliert, wird es nicht mehr ausgeführt und nicht automatisch neu gestartet, auch wenn das Audio neu gestartet wird. Ich habe dieses Problem viel recherchiert und obwohl es komplizierte Möglichkeiten gibt, ein Skript automatisch auszuführen, wenn ein Bluetooth-Gerät angeschlossen ist, stoppt Darkice manchmal, wenn das Audiosignal verloren geht, selbst wenn das Bluetooth-Gerät noch verbunden ist (z. B. wenn Sie YouTube schließen App auf Ihrem Telefon), so dass dies der einfachste und zuverlässigste Weg ist, um sicherzustellen, dass Darkice läuft, wenn Bluetooth-Audio vorhanden ist. Wenn Darkice bereits ausgeführt wird, wird der Befehl ignoriert.

#!/bin/bashwhile:; do sudo /usr/bin/darkice -c /home/pi/darkice.cfg; Schlaf 5; getan

Schritt 14:

Bild
Bild

Als nächstes müssen wir einen Befehl ausführen, um die Datei darkice.sh ausführbar zu machen. Öffnen Sie das Terminalfenster und geben Sie "sudo chmod 777 /home/pi/darkice.sh" ein und drücken Sie die Eingabetaste. Jetzt ist es an der Zeit, den Icecast2-Serverdienst zu starten. Geben Sie "sudo service icecast2 start" ein und drücken Sie die Eingabetaste.

sudo chmod 777 /home/pi/darkice.sh

sudo service icecast2 start

Schritt 15:

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

Als nächstes müssen wir Darkice anweisen, dass es automatisch startet, wenn der Pi gebootet wird (der Icecast2-Server läuft als Dienst und startet bereits nach dem Booten automatisch). Zuerst müssen wir den zu verwendenden Texteditor auswählen. Geben Sie im Terminalfenster "select-editor" ein und drücken Sie die Eingabetaste. Geben Sie "2" ein, um den Nano-Editor auszuwählen, und drücken Sie die Eingabetaste. Geben Sie dann "crontab -e" ein und geben Sie ein. Halten Sie als nächstes die Abwärtspfeiltaste gedrückt, um bis zum Ende der angezeigten Textdatei zu scrollen, und fügen Sie diese Zeile "@reboot sleep 10 && sudo /home/pi/darkice.sh" hinzu. Drücken Sie dann Strg-X zum Beenden und es erscheint die Aufforderung "Modifizierten Puffer speichern?". Drücken Sie die Y-Taste für Ja und dann die Eingabetaste, um den automatisch generierten Dateinamen zu bestätigen.

select-editor

crontab -e

@reboot sleep 10 && sudo /home/pi/darkice.sh

Schritt 16:

Bild
Bild
Bild
Bild
Bild
Bild

Koppeln Sie Ihr Telefon mit dem Raspberry Pi über das Bluetooth-Symbol auf dem Desktop. Es ist wichtig, dass Sie das Bluetooth des Pi in den Erkennungsmodus versetzen und dann von Ihrem Telefon aus koppeln. Wenn Sie Ihr Telefon in den Erkennungsmodus versetzen und versuchen, es VOM Pi aus zu koppeln, wird möglicherweise eine Verbindung hergestellt, Sie erhalten jedoch eine Fehlermeldung, dass auf Ihrem Telefon keine Dienste vorhanden sind, die der Pi verwenden kann, was wahr ist. Wir versuchen, Audio an den Pi zu senden, nicht umgekehrt. Führen Sie nach dem Pairing diesen Befehl im Terminalfenster aus, um die Bluetooth-MAC-Adresse Ihres verbundenen Geräts anzuzeigen:

sudo bluetoothctl

Schritt 17:

Bild
Bild
Bild
Bild
Bild
Bild

Damit Darkice das Bluetooth-Gerät als PCM-Audioeingang verwenden kann, müssen wir im Ordner "etc" eine Datei namens "asound.conf" (etc/asound.conf) erstellen. Klicken Sie im Dateimanager ein paar Mal auf den Pfeil nach oben, um zum Stammverzeichnis zu gelangen, und doppelklicken Sie dann auf den Ordner "etc", um ihn zu öffnen. Scrollen Sie nach unten und klicken Sie mit der RECHTEN Maustaste in einen leeren Bereich und erstellen Sie eine leere Datei namens "asound.conf" und kopieren und fügen Sie die folgenden Zeilen ein, wobei die MAC-Adresse Ihres Geräts natürlich meine ersetzt und speichern Sie.

pcm.phone { Typ plug slave.pcm { Typ bluealsa device "50:F0:D3:7A:94:C4" Profil "a2dp" } }

Schritt 18:

Bild
Bild
Bild
Bild
Bild
Bild

Sowohl das WiFi- als auch das Bluetooth-Radio auf dem Raspberry Pi befinden sich auf demselben Chip. Wenn Sie also die Bandbreite von beiden maximieren, kann Bluetooth-Audio stottern oder einfrieren. Manche nennen es einen Bug und manche sagen, es sei nur eine Hardware-Einschränkung. Wir werden eine Einstellung ändern, die dies behebt. Die Veröffentlichung dieses Fixes geht an "pelwell" unter https://github.com/raspberrypi/linux/issues/1402 Führen Sie sudo pcmanfm erneut aus, um den Dateimanager zu öffnen, und navigieren Sie zu /lib/firmware/brcm. Doppelklicken Sie auf die Textdatei "brcmfmac43430-sdio.txt", um sie zu öffnen und fügen Sie diese Zeilen unten hinzu und speichern Sie sie.

# Experimentelle Bluetooth-Koexistenzparameter von Cypressbtc_mode=1 btc_params8=0x4e20 btc_params1=0x7530

Schritt 19:

Bild
Bild
Bild
Bild
Bild
Bild

Klicken Sie auf das GUI-Menüsymbol und wählen Sie Herunterfahren und neu starten. Wenn Sie alle diese Schritte genau befolgt haben, wird Ihr Bluetooth-Audioserver zwischen 30 Sekunden und einer Minute nach dem Klicken auf Neustart automatisch gestartet. BEVOR Sie es zu Sonos hinzufügen können, müssen Sie das Bluetooth Ihres Telefons mit dem Pi verbinden (einfach in den Bluetooth-Einstellungen Ihres Telefons darauf tippen, da es bereits gekoppelt ist) und mit der Wiedergabe von Audio beginnen und die Lautstärke erhöhen. Denken Sie daran, dass Sie keinen Ton über den Lautsprecher Ihres Telefons hören, da es denkt, dass es mit einem externen Bluetooth-Lautsprecher verbunden ist. Eine visuelle Möglichkeit, um festzustellen, ob Icecast Bluetooth-Audio von Darkice empfängt, besteht darin, https://192.168.86.107:8000 in einem Webbrowser zu öffnen, wobei die IP Ihres Pi durch meine ersetzt wird. Icecast wird immer ausgeführt, sodass Sie immer die Statusseite sehen, aber wenn Darkice auch Bluetooth-Audio empfängt, sehen Sie auch den Mount-Punkt und den Stream-Deskriptor. Trennen Sie Ihr Bluetooth und aktualisieren Sie die Seite und sie wird wieder leer.

Schritt 20:

Bild
Bild
Bild
Bild

Sie müssen die Sonos Desktop Controller-App verwenden, um Sonos einen benutzerdefinierten Stream hinzuzufügen. Klicken Sie auf Verwalten > Radiosender hinzufügen und geben Sie die URL für den Stream ein, die in meinem Fall "https://192.168.86.107:8000/rapi.mp3" war. Geben Sie auch einen Stationsnamen ein und klicken Sie auf OK.

Schritt 21:

Bild
Bild

Um den gerade hinzugefügten benutzerdefinierten Radiosender abzuspielen, wählen Sie "Radio by Tunein" und dann "Meine Radiosender". LINKS-DOPPELklick zum Abspielen oder RECHTS-Klick zum Bearbeiten oder Hinzufügen des Senders zu deinen Sonos-Favoriten.

Schritt 22:

Bild
Bild
Bild
Bild

Nachdem Sie den benutzerdefinierten Radiosender hinzugefügt haben, ist er sofort in Ihrer Sonos-App verfügbar. Öffne die App, tippe unten auf „Mein Sonos“, scrolle nach unten zu „Stationen“und tippe auf „Alle anzeigen“. Scrollen Sie nach unten, bis Sie Ihren neu erstellten Sender sehen. Tippen Sie darauf und es beginnt in Ihren ausgewählten Räumen zu spielen. Erinnern Sie sich, wenn Sie ̶ DISCONNECT dem Bluetooth aus Der pI DANN die icecast streamen ̶d̶i̶s̶c̶o̶n̶n̶e̶c̶t̶.̶ wenn Sie Schalter Audio APPS iT MAY ̶d̶i̶s̶c̶o̶n̶n̶e̶c̶t̶.̶ wieder aufzunehmen abhört SONOS du wirst muss RESTART Wiedergabe von Audio auf dem Telefon erneut und schieben spielen auf ̶t̶h̶e̶ ̶S̶o̶n̶o̶s̶ ̶a̶p̶p̶ ̶a̶g̶a̶i̶n̶.̶ <---Dies wurde behoben; siehe Update unten. Viel Glück und danke fürs Lesen!

Schritt 23: UPDATE: BEHOBEN, STREAM VERBUNDEN BLEIBEN, WENN BLUETOOTH VERBINDET WIRD

Bluetooth-Streaming funktionierte also perfekt mit diesem Setup, AUSSER Sonos trennte sich vom Icecast-Server, wenn Darkice Bluetooth-Audio verlor, z Du könntest sogar in der Sonos-App auf den Play-Button klicken. Dies wurde zu einem großen Problem, als ich versuchte, Audio von der WatchESPN-App meines Telefons, die nur im Vollbildmodus ist, auf Sonos zu streamen Der Sonos-Stream würde nicht starten, es sei denn, Sie hätten zuerst das Bluetooth-Audio gestartet! Pfui! Ich habe mir die Haare ausgerissen, um eine elegante Lösung dafür zu finden. Ich habe einen anderen MP3-Encoder namens liquidsoap ausprobiert, der die Option hat, stilles Audio zu senden, wenn die Verbindung unterbrochen wird, aber ich konnte ihn nicht mit bluealsa zum Laufen bringen. Ich habe versucht, den Bluealsa-Stream mit einem sekundären Dummy-Soundkarten-Alsa-Stream unter Verwendung von dsnoop und asym zu mischen, um zu versuchen, Icecast dazu zu bringen, zu denken, dass noch ein Audiosignal vorhanden ist, aber es erlaubt Ihnen auch nicht wirklich, Bluetooth-Audio sehr zu manipulieren. Ich begann dann mit der Untersuchung eines Fallback-Mount-Punkts mit einer stillen MP3-Datei in Icecast, aber Sonos würde sehen, dass sich der Mount-Punkt-Name ändert und die Verbindung getrennt wird. Ich habe eine test.mp3-Datei verwendet und sie versehentlich einmal anstelle des Fallback-Namens als Haupt-Mount-Point-Namen festgelegt und festgestellt, dass Sonos einfach zur Wiedergabe dieser Datei wechselte, als sie vom Bluetooth-Stream "rapi.mp3" getrennt wurde. Heureka! Es würde nicht automatisch auf den Bluetooth-Stream umschalten, wenn es wieder verfügbar war, also dachte ich, warum nicht einfach den gleichen Mount-Punktnamen verwenden? Was Sie also tun müssen, ist eine stille mp3-Datei zu erstellen und ihr den gleichen Namen wie den Darkice mp3-Stream "rapi.mp3" zu geben und sie als Haupteinhängepunkt in der Icecast2-Konfigurationsdatei fest zu codieren. Was passiert ist, dass Sonos immer dann, wenn die Verbindung zum Darkice/Bluetooth rapi.mp3-Stream verloren geht, einfach die andere stille rapi.mp3-Datei wiederholt, bis der Bluetooth-Stream wieder online ist. Auf diese Weise müssen Sie das Bluetooth-Audio nicht laufen lassen, bevor Sie in Sonos auf Wiedergabe klicken. So geht's…

Schritt 24:

Bild
Bild
Bild
Bild
Bild
Bild

Zuerst müssen wir ffmpeg installieren, um eine stille mp3-Datei zu erstellen. Sie könnten eine stumme.wav-Datei von einer externen Soundkarte aufnehmen und mit lame in mp3 konvertieren, aber da ich keinen externen Soundkarteneingang für dieses Projekt habe, war die Verwendung von ffmpeg die einfachste Lösung. Öffnen Sie das Terminalfenster und geben Sie "sudo apt-get install ffmpeg" ein und drücken Sie die Eingabetaste:

sudo apt-get install ffmpeg

Kopieren Sie nach der Installation diese lange Zeile und fügen Sie sie ein, um eine stumme MP3-Datei zu codieren, die nur eine Sekunde dauert:

sudo ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -b:a 160k -t 1 /usr/share/icecast2/web/rapi.mp3

Öffnen Sie den Dateimanager als Root mit "sudo pcmanfm" und navigieren Sie zu "/etc/icecast2". Klicken Sie mit der rechten Maustaste auf "icecast.xml" und öffnen Sie es mit Leafpad und fügen Sie diese Zeilen direkt unter der oberen Zeile "" ein:

/rapi.mp3

Speichern und neu starten und Sie sollten jetzt in der Lage sein, Ihre benutzerdefinierte Sonos-Bluetooth-Station zu starten, noch bevor Sie Ihr Telefon mit Bluetooth verbunden haben!

Schritt 25: Nachtrag

Nachtrag
Nachtrag
Nachtrag
Nachtrag
Nachtrag
Nachtrag
Nachtrag
Nachtrag

Ich wollte, dass das Raspberry Pi und das 110V AC bis 5V DC Netzteil in einem Gehäuse in sich geschlossen sind, damit ich es leicht im Haus bewegen konnte, war aber überrascht, dass es so einen Fall nicht gibt. Ich kann später eines in 3D drucken, aber in der Zwischenzeit bin ich auf ein anderes Raspberry Pi-Gehäuse umgestiegen und habe ein dünnes USB-Wandladegerät und ein kurzes Kabel gefunden. Das Ladegerät hatte eine gummierte Beschichtung, auf die ich kein klares VHB-Klebeband bekommen konnte, aber es stellte sich heraus, dass es sich um einen leicht entfernbaren Aufkleber handelte. Dadurch entstand jedoch eine kleine Aussparung, die das VHB-Band zu dünn machte, also habe ich Klettverschluss verwendet.

Empfohlen: