ID | Priorität | User Story | Schätzung Zeitaufwand [h] |
---|---|---|---|
0 | 1 | Ich als Anwender möchte über das eingebettete System ein analoges Tonsignal ausgeben, um über ein angeschlossenes analoges Wiedergabegerät das Tonsignal abspielen zu können. | 2 |
1 | 2 | Ich als Anwender möchte eine Bluetooth-Verbindung zum eingebetteten System herstellen, um Bluetooth als Audio-Quelle zu verwenden. | 3 |
2 | 1 | Ich als Anwender möchte eine Spotify-Connect-Verbindung zum eingebetteten System herstellen, um Spotify Connect als Audio-Quelle zu verwenden. | 2 |
3 | 2 | Ich als Anwender möchte eine UPnP-Verbindung zum eingebetteten System herstellen, um mit Hilfe von UPnP MP3-Dateien wiederzugeben. | 3 |
4 | 8 | Ich als Anwender möchte das eingebettete System schnell über ein angepasstes Betriebssystem-Image auf die microSD-Karte des eingebetteten Systems bereitstellen können, um es leicht vervielfältigen zu können. | 8 |
5 | 4 | Ich als Anwender möchte das eingebettete System durch eine LAN- oder WLAN-Verbindung in ein Netzwerk integrieren, um über UPnP und Spotify Connect Audio wiederzugeben. | 8 |
6 | 7 | Ich als Bastler möchte zwischen dem HiFiBerry DAC 2 Pro und dem internen DAC wechseln können, um das System auf meine individuellen Bedürfnisse anzupassen. | 8 |
7 | 6 | Ich als Anwender möchte Software-Updates von Betriebssystem und verwendeten Software-Bibliotheken automatisch erhalten, um von den neuesten Software-Versionen zu profitieren. | 3 |
8 | 3 | Ich als Anwender möchte eine Schnellstartanleitung erhalten, um über die erforderlichen Einstellungen informiert zu sein. | 4 |
9 | 8 | Als Anwender möchte ich die Lautstärke über eine App auf meinem Android-Telefon steuern können, um nicht auf die Steuerung der Musik-Anlage und der Kommandozeile der Lösung angewiesen zu sein. | 20 |
10 | 6 | Als Anwender möchte ich das eingebettete System nicht manuell herunterfahren möchten, sondern mit Hilfe eines Schreibschutzes des internen Datenträgers ohne Schädigung des Systems zum Ausschalten die Spannungsversorgung trennen können | 3 |
Referenz zu User-Story-ID: 0
- es erfolgt eine Ausgabe eines analogen Tonsignals über die auf dem DAC vorhandenen Ausgabeports
- für das HiFiBerry DAC2 Pro: Stereo 3,5 mm Klinkenanschluss oder Stereo Cinch
- für den Raspberry Pi integrierten DAC: Stereo 3,5 mm Klinkenanschluss
- Die Linux-Komponente ALSA steuert den Treiber des DACs an, um ein digitales Tonsignal daran zu senden
Referenz zu User-Story-ID: 1
- mit Hilfe von Bluetooth-fähigen Android-, IOS-, Linux- und Windows-Endgeräten soll ein digitales Tonsignal an das eingebettete System gesendet werden können
- das eingebettete System kann in den Kopplungsmodus wechseln, um neue Geräte zu koppeln
- das eingebettete System speichert bereits gekoppelte Geräte ab, um diese erneut zu verbinden
- es sollte nur maximal ein Gerät gleichzeitig mit dem eingebetteten System verbunden sein
- das eingehende digitale Audiosignal wird mit Hilfe des PulseAudio Bluetooth Moduls verabeitet
Referenz zu User-Story-ID: 2
- Wiedergabequelle und das eingebettete System befinden sich im gleichen Subnetz ohne Netzwerkrestriktionen des LAN-zu-LAN-Verkehrs
- Verbindung zwischen Wiedergabequelle und dem eingebetteten System wird aufgebaut
- für die Verwendung von Spotify Connect ist eine Internet-Verbindung notwendig, um zu den Spotify-Servern zu verbinden und Musik zu streamen
Referenz zu User-Story-ID: 3
- Wiedergabequelle und das eingebettete System befinden sich im gleichen Subnetz ohne Netzwerkrestriktionen des LAN-zu-LAN-Verkehrs
- Verbindung zwischen Wiedergabequelle und dem eingebetteten System wird aufgebaut
Referenz zu User-Story-ID: 4
- das eingebettete System soll über ein Image bereitgestellt werden können
- das Image soll als IMG-Datei abliegen
- das Image enthält alle Partitionen und den Bootsektor, der für den Betrieb nötig ist
- das Image wird mit Hilfe des Tools
dd
erzeugt - das Image soll sowohl mit Hilfe von Linux oder Windows auf die microSD-Karte geflasht werden können
Referenz zu User-Story-ID: 5
- das eingebettete System soll per LAN oder WLAN mit einem IP-Netzwerk verbunden werden können
- das eingebettete System soll eine automatische IP-Konfiguration per DHCP erhalten
Referenz zu User-Story-ID: 6
- ein Wechsel des DACs soll durch Interaktion des Anwenders über eine Software-Schnittstelle möglich sein
- grundsätzlich wird die Wahl eines geeigneten Treibers dem Linux-Kernel überlassen
- es kann notwendig sein, über ein Device-Tree-Overlay einen Treiber zu inkludieren, der möglicherweise mit anderen Treibern im Konflikt steht
- eine solche Situation ensteht zum Beispiel zwischen dem internen DAC des Raspberry Pis und einem HiFiBerry-DAC
- in diesem Fall soll die o.g. Software-Schnittstelle die notwendigen Änderungen an der Datei
/boot/config.txt
des eingebetteten Systems durchführen
Referenz zu User-Story-ID: 7
- beim Systemstart sollen periodisch, sofern eine Internetverbindung besteht, Updates gesucht und installiert werden
- alle durch den Paketmanager verwalteten Pakete sollen dabei aktualisiert werden
- der Schreibschutz soll während der Update-Installation temporär deaktiviert werden
Referenz zu User-Story-ID: 8
- in einer Schnellstartanleitung sollen für den Anwender alle erforderlichen Schritte enthalten sein, um das eingebettete System in Betrieb nehmen zu können
- die Verbindungsmöglichkeiten sollen an Hand eines Beispiels dargestellt werden
Referenz zu User-Story-ID: 9
- es wird eine Android-App zur Verfügung gestellt, welche mit Hilfe einer REST-API Zugriff auf die Lautstärke-Regelung, Bluetooth-Regelung (An-/Ausschalten, Pairing-Modus) und das Einleiten eines System-Neustarts bereitstellt
- die REST-API wird mit Hilfe einer Flask-Anwendung auf dem eingebetteten System bereitgestellt
Referenz zu User-Story-ID: 10
- das System soll durch Stecken und Ziehen, beziehungsweise Ein- und Ausschalten der Spannungsversorgung, ein- und ausgeschaltet werden
- um einen inkonsistenten Zustand des Speichermediums des eingebetteten Systems zu vermeiden, soll dieses schreibgeschützt sein
- es soll die Möglichkeit bestehen, für das Koppeln neuer Bluetooth-Geräte und dem Installieren von Software-Updates den Schreibschutz temporär zu deaktivieren
Wir benutzen die Github Milestones Funktion hier.
ID | Artikel | Menge | Quelle | Einzelpreis | Händler |
---|---|---|---|---|---|
0 | Raspberry Pi 4B 4GB Elementary Kit | 1 | https://www.berrybase.de/raspberry-pi/raspberry-pi-computer/kits/raspberry-pi-4-computer-modell-b-4gb-elementary-kit | 69,50€ | BerryBase |
1 | SanDisk MicroSD-Karte 32GB | 1 | https://www.berrybase.de/raspberry-pi/raspberry-pi-computer/speicherkarten/sandisk-extreme-micro-sdhc-a1-uhs-i-u3-speicherkarte-43-adapter-32gb?c=183 | 8,85€ | BerryBase |
2 | HiFiBerry DAC2 Pro | 1 | https://www.hifiberry.com/shop/boards/hifiberry-dac2-pro/ | 39,90€ | HiFiBerry |
3 | Gehäuse für Raspberry Pi 4 mit HiFiBerry DAC | 1 | Yannis | nach Vereinbarung | Yannis |
Dieses Projekt enthält Git Submodule. Diese erfordern ein gesondertes Vorgehen verglichen mit den restlichen Inhalten dieses Repos:
- sollen beim Auschecken gleich alle Submodule mit ausgecheckt werden, muss rekursiv geklont werden:
git clone --recurse-submodules <repo-url>
- Um lustige Konflikte in Git zu vermeiden, sind alle Änderungen an den Submodulen bitte in ihren jeweiligen Haupt-Repos durchzuführen und hier zu pullen
Wenn Git Submodule bisher gänzlich unbekannt sind, ist ein Blick auf die Dokumentation empfehlenswert.