Busch-Radio Spotify Bridge

Busch-Radio Spotify Bridge

Spotify-Musik auf dem Busch-Jäger Unterputz-Internetradio – ohne Bluetooth.

--- ## Problem Das **Busch-Jäger Unterputz-Internetradio** kann nur Internetradio-Streams abspielen. Es hat kein Bluetooth und keine Spotify-Integration. Spotify-Musik lässt sich damit direkt nicht wiedergeben. ## Lösung Dieses Projekt besteht aus zwei Teilen: 1. **Home Assistant Add-on** – startet ein virtuelles Spotify Connect-Gerät ([librespot](https://github.com/librespot-org/librespot)) und stellt das Audio als MP3-Stream über Icecast bereit 2. **Custom Component** (optional) – zeigt den Stream-Status als Media-Player-Entity in HA an ### Funktionsweise ``` Spotify-App → [Spotify Connect] → librespot → PCM → ffmpeg → Icecast2 → HTTP-Stream → Busch-Jäger Radio ``` --- ## Voraussetzungen | Anforderung | Details | |---|---| | Home Assistant | OS, Supervised oder Container | | Spotify Premium | Pflicht für Spotify Connect | | Busch-Jäger Radio | Muss benutzerdefinierte Stream-URLs unterstützen | --- ## Installation ### 1. Repository in HA hinzufügen 1. **Einstellungen → Add-ons → Add-on Store** 2. Drei Punkte oben rechts → **Repositories** 3. URL eintragen: `https://gitea.bitfire.work/retr0/Busch-Radio-Spotify` 4. **Busch-Radio Spotify Bridge** erscheint im Store 5. Installieren (der erste Build dauert ~10–15 Minuten wegen Rust-Kompilierung) ### 2. Add-on konfigurieren ```yaml device_name: "Busch-Radio" # Name in der Spotify-App bitrate: 320 # 96 / 160 / 320 kbps stream_port: 8000 # HTTP-Port des Streams stream_mount: "/stream.mp3" # URL-Pfad icecast_password: "geheim" # Icecast-Passwort (bitte ändern) ``` ### 3. Add-on starten & Spotify autorisieren Beim **ersten Start** erscheint im Log eine Anleitung. Folge diesen Schritten: 1. Im Log erscheint eine Zeile wie: ``` Browse to: https://accounts.spotify.com/authorize?... ``` Kopiere diese URL vollständig und öffne sie im Browser. 2. Melde dich mit deinem Spotify-Konto an und erteile die Berechtigung. 3. Dein Browser wird danach weitergeleitet auf eine URL wie: ``` http://127.0.0.1:5588/login?code=... ``` Diese Seite schlägt fehl – **das ist normal**. 4. **Ersetze** in der Adressleiste `127.0.0.1` durch die IP deines Home-Assistant-Servers und drücke Enter: ``` http://:5588/login?code=... ``` 5. Bei Erfolg zeigt der Browser: `Autorisierung erfolgreich!` Das Add-on startet danach automatisch durch. Die Credentials werden dauerhaft unter `/data/librespot-cache/` gespeichert — **dieser Schritt ist nur einmalig nötig**. ### 4. Stream im Radio eintragen Trage folgende URL im Busch-Jäger Radio ein: ``` http://:8000/stream.mp3 ``` ### 5. Musik abspielen 1. **Spotify-App** öffnen 2. Abspielgerät wechseln → **„Busch-Radio"** auswählen 3. Das Radio spielt den Stream automatisch ab --- ## Custom Component (optional) Die Custom Component zeigt den Stream-Status als Media-Player-Entity in HA. **Installation:** ```bash cp -r custom_components/busch_radio_spotify /config/custom_components/ # HA neu starten ``` Dann unter **Einstellungen → Integrationen → Busch-Radio Spotify Bridge** einrichten. Das Passwort muss mit `icecast_password` aus der Add-on-Konfiguration übereinstimmen. **Entity-Attribute:** | Attribut | Beschreibung | |---|---| | `stream_url` | Die URL für das Radio | | `listeners` | Anzahl aktiver Hörer | | `source_connected` | Ob Audio gestreamt wird | --- ## Technische Details ### Komponenten | Komponente | Funktion | |---|---| | [librespot](https://github.com/librespot-org/librespot) v0.7.0 | Spotify Connect Client (PCM-Ausgabe via Pipe) | | [ffmpeg](https://ffmpeg.org) | PCM → MP3 Transkodierung | | [Icecast](https://icecast.org) | HTTP-Stream-Server | ### Signalfluss ``` Spotify CDN → librespot (dekodiert, PCM auf stdout) → ffmpeg (44100 Hz / S16LE / Stereo → MP3 320k) → Icecast (HTTP-Stream) → Busch-Jäger Radio ``` ### Hinweise zum Build - librespot wird aus dem Quellcode kompiliert (Rust, ~10–15 Min.) - Der OAuth-Server wird beim Build gepatcht: bindet an `0.0.0.0` statt `127.0.0.1`, damit der Browser-Login aus dem Heimnetz funktioniert - Credentials werden in `/data/librespot-cache/` persistent gespeichert --- ## Fehlerbehebung | Problem | Lösung | |---|---| | „Busch-Radio" erscheint nicht in Spotify | OAuth-Autorisierung abschließen (Logs prüfen) | | Stream-Seite nicht erreichbar | Icecast-Status: `http://ha-ip:8000` | | OAuth-Weiterleitung schlägt fehl | Normal – `127.0.0.1` in Adressleiste durch HA-IP ersetzen | | Stream bricht bei Pause ab | Normal – Radio nach Fortsetzen neu verbinden | | Build schlägt fehl | Logs im Add-on Store prüfen | --- ## Rechtliche Hinweise - Dieses Projekt nutzt **librespot**, eine Open-Source-Reimplementierung des Spotify-Clients - Audio wird **nicht gespeichert** – ausschließlich live gestreamt - Ausschließlich für den **privaten Heimgebrauch** gedacht - **Spotify Premium** ist für Spotify Connect erforderlich --- ## Projektstruktur ``` busch-radio-spotify/ ├── busch_radio_spotify/ # Home Assistant Add-on │ ├── Dockerfile # Multi-Stage Build (Rust + Alpine) │ ├── config.yaml # Add-on Manifest & Optionen │ ├── build.yaml # Multi-Arch Konfiguration │ ├── run.sh # Startup-Script │ ├── icon.png # Add-on Icon (Store) │ └── logo.png # Add-on Logo (Detailseite) ├── custom_components/ # Optionale HA Integration │ └── busch_radio_spotify/ │ ├── __init__.py │ ├── manifest.json │ ├── media_player.py │ ├── config_flow.py │ └── translations/ ├── example-config.yaml # Beispielkonfiguration ├── repository.yaml # HA Repository-Manifest └── README.md ``` --- ## Lizenz MIT License