Am JukeBoxPi selbst werden verschiedene Schnittstellen verwendet. Die Ethernetschnittstelle wird zum Verbinden des JukeBoxPis mit den Netzwerk verwendet. Die Audio-Out Schnittstelle wird verwendet um einen externen Lautsprecher/eine Anlage an den JukeBoxPi per AUX-Kabel anzuschließen. Die Micro-USB Schnittstelle wird für die Stromversorgung des Rasberry Pis verwendet.
Übersicht der Systemarchitektur
In der Übersicht sind die einzelnen Komponenten zu sehen, die Informationen untereinander austauschen.
Clients
Die Clients spielen die Musik, rufen die Weboberfläche des JukeBoxPis auf und starten die Wiedergabe auf dem JukeBoxPi.
JukeBoxPi
Der JukeBoxPi stellt den Webserver bereit. Abhängig davon ob die Musik lokal vorliegt, wird die Datei auf dem JukeBoxPi selbst abgespielt oder mit Musik-Streaming über Spotify abgespielt. Unabhängig davon, welche die Musik-Quelle ist, wird die Musik lokal auf dem Raspberry Pi über den AUX-Anschluss wiedergegeben.
Router/Internet
Beim Musik-Streaming über Spotify fließt der Informationsaustausch über den Router und somit über das Internet.
Musikbox/Anlage
Die Musikbox oder die Anlage verwendet das Audio-Signal und spielt es ab.
JukeBoxPi am Strom anschließen und per Kabel mit dem Netzwerk verbinden
JukeBoxPi per AUX-Kabel an einem Lautsprecher/einer Anlage anschließen
IP-Adresse des JukeBoxPi ermitteln (z.B. über den Router oder IP Scanner)
per SSH eine Verbindung zum JukeBoxPi herstellen
Anmeldung mit folgenden Daten: Benutzername: pi Kennwort: raspberry
Folgenden Befehl ausführen: “sudo nano /etc/mopidy/mopidy.conf” Bei dem Punkt “http” unter “Hostname” die aktuelle IP-Adresse eintragen und den Inhalt der Konfiguration mit STRG+O und anschließend “Enter” speichern.
Mopidy-Dienst auf dem Pi neustarten: Befehl “service mopidy restart” ausführen
Der JukeBoxPi ist nun einsatzbereit und kann unabhängig vom Endgerät über den Internetbrowser geöffnet werden: http:/IP-ADRESSE:6680 (Statt IP-ADRESSE bitte die jeweilige IP-Adresse eintragen)
Über den internen Musik-Speicher kann über “Browse” -> “Files” auf die lokale Musik zugegriffen werden, ansonsten kann ein hinterlegtes Spotify-Konto zum Abspielen von Musik verwendet werden.
Zuerst wurden die Anforderungen abgestimmt und geeignete Umsetzungsmaßnahmen im Team diskutiert.
Diese Anforderungen werden zu einem Teil durch die fertige Software Lösung PiMusicBox abgedeckt. Da es sich um eine geschlossene Komplettlösung handelt, die nicht anpassbar und intransparent ist, wird die Basis-Software Mopidy verwendet, auf der PiMusicBox basiert. Mopidy kann durch verfügbare Module stark erweitert und gut angepasst werden.
Kurzbeschreibung Software
Mopidy ist ein Musikserver basierend auf der Programmiersprache Python. Da Mopidy Open-Source ist, ist der Quellcode frei verfügbar. Mopidy kann durch Module erweitert werden und bietet in der Basisausführung einen Websserver und einen MPD-Server. Mopidy kann auf sämtlichen Linux-Distributionen installiert werden, mitunter auch auf Raspberry Pi OS, wodurch der Raspberry Pi sich ideal zur Umsetzung unseres Projektes eignet. Mopidy stellt eine ausführliche Dokumentation bereit, wodurch die Erweiterungen ohne Programmierkenntnisse in Python konfiguriert werden können.
Installation Raspberry Pi OS
Zur Installation von Raspberry Pi OS auf der microSD-Karte wird balenaEtcher verwendet. Nach dem Herunterladen von balenaEtcher, sowie der Raspberry Pi OS ISO-Installationsdatei von den offiziellen Webseiten, kann balenaEtcher zum Schreiben von ISO-Dateien auf SD-Karten oder USB-Sticks verwendet werden. Zur einfacheren Administration wird die Variante inkl. Desktop installiert.
Zur Administration und Konfiguration wird SSH aktiviert. Um SSH bereits beim ersten Start vom Raspberry Pi zu aktivieren, wird eine leere Datei mit dem Namen “ssh” in der Boot-Partition der microSD angelegt. SSH kann auch über die Raspi-Config aktiviert werden.
Anschließend wird die microSD-Karte in den Raspberry Pi eingelegt. Nach dem Start wird die per DHCP vergebene IP-Adresse des Raspberry Pis ermittelt. Die IP-Adresse kann über den Router herausgefunden werden. Nach Ermittlung der IP-Adresse kann eine Verbindung per SSH hergestellt werden.
Installation xRDP
Damit auf die grafische Oberfläche des Raspberry Pis per Fernverwaltung (in dem Fall RDP) zugegriffen werden kann, wird xRDP (alternativ: VNC oder Teamviewer) installiert.
Mopidy benötigt zum Zugriff auf dem Raspberry Pi einen eigenen Benutzer auf dem Betriebssystem. Dieser wird mit dem folgenden Befehl angelegt:
sudo adduser mopidy video
Anschließend werden die benötigten Repositories für Mopidy geladen, hier können dann nicht nur Mopidy selbst, sondern später auch die benötigten Standard-Extensions heruntergeladen werden.
Mopidy ist nun installiert und kann direkt ausgeführt werden. Die Anwendung soll allerdings nicht selbst ausgeführt werden, sondern im Hintergrund als Dienst ab dem Start des Raspberry Pi laufen.
Über den Linux Dienstemanager “systemd” kann Mopidy als Dienst aktiviert werden. Anschließend wird der Dienst gestartet und geprüft, ob der Dienst läuft.
Konfiguration Mopidy Für Mopidy gibt es eine Konfigurationsdatei, die über den Nano-Editor angepasst werden kann.
sudo nano /etc/mopidy/mopidy.conf
Zum Testen und zum Zugriff auf die Musik wird zuerst der Mopidy-Webserver aktiviert.
Der Mopidy-Webserver ist nun installiert.
Zum Zugriff wird nun noch das ansprechende Design “Iris” für die Weboberfläche eingestellt, das dem Spotify-Design ähnelt. Die Weboberfläche ist zudem für die mobile Nutzung optimiert und daher geeignet für die mobile Steuerung der Musik über das Smartphone.
Lokale Musik kann nun bereits über unseren JukeboxPi aus bestimmten Ordnern abgespielt werden. Um Musik hochladen zu können soll eine SMB-Freigabe eingesetzt werden. Hierzu wird zuerst ein neuer Ordner unter “/home/shares/Music/” erstellt.
Anschließend wird ein SMB-Server sowie Client auf dem JukeboxPi installiert.
sudo apt-get install samba samba-common smbclient
Nach der Installation kann über eine Konfigurationsdatei mit dem Nano-Editor die SMB-Freigabe eingestellt werden.
sudo nano /etc/samba/smb.conf
In der Konfigurationsdatei wurde folgender Eintrag hinzugefügt.
Nach einem Neustart des SMB-Dienstes ist der freigegebene Ordner bereits von einem anderen Gerät erreichbar. Die Anmeldung ist mit dem Standard-Anmeldedaten des Pi-Benutzers möglich.
Mit dem Modul Mopidy-Spotify kann ein Spotify-Account in Mopidy integriert werden. Hierzu wird zunächst das Modul installiert:
sudo apt install mopidy-spotify
Anschließend benötigt Mopidy einen API-Zugriff auf den Spotify-Account, der verwendet wird. Die generierte Client-ID, Client-Secret sowie die Zugangsdaten müssen nun innerhalb der Mopidy-Konfiguration eingetragen werden.
Nach dem Neustart der Mopidy-Dienste kann die Spotify-Integration getestet werden.
Zur zeitlichen Planung und Einordnung haben wir ein Gantt-Diagramm verwendet. Im Diagramm sind festgelegte Meilensteine, Fristen und Zuständigkeiten zu finden. Bestandteil sind die wöchentlichen Arbeitstreffen, die jeweiligen Zuständigkeiten und Termine im Makerspace.
Wichtige Meilensteine während des Projektverlaufs sind die Fertigstellung der Software und die Fertigstellung des 3D-Modells.
Beim Brainstorming ist der Projektgruppe die Idee aufgekommen, dass oft Zuhause alte Anlagen rumstehen, die nicht mehr verwendet werden. Um diesen alten Anlagen eine erneute Verwendung zu geben, sollte es eine Möglichkeit geben, das neue Funktionen wie z. B. das kabellose Abspielen von Musik ermöglicht werden.
Mit der Idee ist auch unser Projektziel entstanden: Eine Box entwickeln, die über einen entsprechenden Anschluss Musik aus einer Warteschlange an eine Musikanlage überträgt. Auf diese Warteschlange sollen verschiedene Endgeräte kabellos zugreifen können. Über eine standardisierte Schnittstelle können dann nicht nur alte Anlagen, sondern auch externe Lautsprecher aufgerüstet werden und “smart” gemacht werden.
Zum einen wird das Problem der direkten Verkabelung der Musikanlage mit dem Endgerät umgangen, sodass sich Nutzende auch mit ihren Endgeräten entfernen können, zum anderen kann eine digitale Warteschlange auch von verschiedenen Nutzenden gleichzeitig angesteuert werden.