Beschreibung der Systemarchitektur und Schnittstellen

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.

Verwendete Schnittstellen rot markiert (Grafik abgewandelt von
https://www.elektronik-kompendium.de/sites/raspberry-pi/1905251.htm)

Ü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.

Anleitung: JukeBoxPi in Betrieb nehmen

  • 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.
Screenshot Mopidy-Config
  • 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.

Beschreibung der Software-Entwicklung

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.

Quelle balenaEtcher: https://www.balena.io/etcher/
Quelle Raspberry Pi OS: https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-desktop

Image auf microSD-Karte spielen

Aktivierung SSH zur Administration

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.

SSH-Datei in der Boot-Partition anlegen

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.

Verbindung per SSH erfolgreich hergestellt

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.

sudo apt-get install xrdp

Quelle: https://www.elektronik-kompendium.de/sites/raspberry-pi/2109031.htm

Installation Mopidy

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.

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list
sudo apt update
sudo apt install mopidy

Quellen:
https://docs.mopidy.com/en/latest/installation/raspberrypi/
https://docs.mopidy.com/en/latest/installation/debian/

Einrichtung Mopidy als Dienst

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.

Aktivierung Mopidy als Dienst

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.

Aktivierung Webserver

Der Mopidy-Webserver ist nun installiert.

Testverbindung Webserver

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.

sudo python3 -m pip install Mopidy-Iris

Quelle: https://mopidy.com/ext/iris/

Hochladen von lokalen Dateien (per SMB)

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.

sudo mkdir /home/shares/
sudo mkdir /home/shares/Music

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.

Eintrag in SMB-Konfiguration

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.

Quelle: https://www.elektronik-kompendium.de/sites/raspberry-pi/2007071.htm

Das File-Modul von Mopidy wird aktiviert und der erstellte Ordner angegeben. Hierzu wird erneut die Konfigurationsdatei von Mopidy angepasst.

 sudo nano /etc/mopidy/mopidy.conf 

Folgende Zeilen werden zur Kommando-Zeile hinzugefügt:

Eintrag Mopidy-File Konfiguration

Nach dem Abspeichern der Datei und dem Neustart des Mopidy-Dienstes wird die gespeicherte Musik in der Weboberfläche angezeigt.

Test-Zugriff /home/shares durch Mopidy

Quelle: https://docs.mopidy.com/en/latest/ext/file/

Installation Spotify Integration

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.

Aktivierung Mopidy-Spotify (einige Einträge sind geschwärzt)

Nach dem Neustart der Mopidy-Dienste kann die Spotify-Integration getestet werden.

Quelle: https://mopidy.com/ext/spotify/

Projektplan

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.

Anbei das Diagramm, zur besseren Ansicht als Link im Github-Repository:
https://raw.githubusercontent.com/Hannsi2210/SoftSkills/master/Projektplan/Gantt.PNG

Risiko-Management

Was passiert, wenn Leute kurzfristig ausfallen?

  • Bestehende Aufgaben werden auf andere Teammitglieder aufgeteilt
  • Funktionsumfang des Projekts kann angepasst/eingeschränkt werden

Was passiert, wenn etwas kaputt geht?

  • Kritischer Punkt ist der 3D-Druck, zur Not müsste über einen externen Dienstleister gedruckt werden, Projektkosten könntenn steigen
  • Hardware kann zeitnah nachbestellt werden

Was passiert, wenn die Zeit knapp wird?

  • Erhöhten Ressourceneinsatz einplanen
  • Zeitlich genügend Reserven im Team, daher kein erhöhtes Risiko

Problemstellung/Motivation

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.