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 Home Assistant Add-on erstellt ein virtuelles Spotify Connect-Gerät ([librespot](https://github.com/librespot-org/librespot)) und stellt das Audio als MP3- oder AAC-Stream über Icecast bereit. ### 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: 160 # 96 / 128 / 160 / 192 kbps stream_format: "mp3" # mp3 oder aac stream_port: 8000 # HTTP-Port des Streams stream_mount: "/stream" # URL-Pfad icecast_password: "geheim" # Icecast-Passwort (bitte ändern) ``` ### 3. Add-on starten & Spotify autorisieren Beim **ersten Start** erscheint im Log: ``` Öffne die Einrichtungs-Seite im Browser: http://:5589 ``` Öffne diese Adresse im Browser. Der **Einrichtungs-Assistent** führt dich durch die Spotify-Anmeldung: 1. Klicke auf **„Mit Spotify anmelden"** 2. Melde dich mit deinem Spotify-Konto an und bestätige die Berechtigung 3. Dein Browser wird auf `http://127.0.0.1:5588/login?code=...` weitergeleitet – diese Seite ist nicht erreichbar 4. Kopiere die URL aus der Adressleiste und füge sie auf der Einrichtungs-Seite ein 5. Klicke **„Weiter"** – der Assistent leitet die URL korrekt weiter 6. Bei Erfolg erscheint: **Autorisierung erfolgreich!** Die Credentials werden dauerhaft 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 ``` ### 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 | --- ## Nützliche URLs | URL | Funktion | |---|---| | `http://:5589` | Einrichtungs-Assistent (OAuth) | | `http://:8000/stream` | Stream-URL für das Radio | | `http://:8000` | Icecast-Statusseite | --- ## Technische Details ### Komponenten | Komponente | Funktion | |---|---| | [librespot](https://github.com/librespot-org/librespot) main | Spotify Connect Client (PCM-Ausgabe via Pipe) | | [ffmpeg](https://ffmpeg.org) | PCM → MP3/AAC Transkodierung | | [Icecast](https://icecast.org) | HTTP-Stream-Server | ### Signalfluss ``` Spotify CDN → librespot (dekodiert, PCM auf stdout) → silence-injector (hält Stream bei Pause aufrecht) → ffmpeg -re (Echtzeit-Encoding → MP3/AAC) → Icecast (HTTP-Stream) → Busch-Jäger Radio ``` ### Hinweise zum Build - librespot wird aus dem Quellcode kompiliert (Rust, ~10–15 Min.) - Der OAuth-Callback-Server 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 | Einrichtungs-Seite öffnen: `http://:5589` | | Stream nicht erreichbar | Icecast-Status prüfen: `http://:8000` | | Stream bricht bei Pause ab | Auf Version 1.0.11+ aktualisieren | | Songs wechseln zu schnell | Auf Version 1.0.10+ aktualisieren | | Neu autorisieren | Add-on stoppen → `/data/librespot-cache/credentials.json` löschen → neu starten | | Build schlägt fehl | Logs im Add-on Store prüfen | --- ## 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 │ ├── DOCS.md # Add-on Dokumentation (in HA angezeigt) │ ├── run.sh # Startup-Script │ ├── oauth_helper.py # OAuth-Einrichtungs-Assistent (Port 5589) │ ├── 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/ ├── repository.yaml # HA Repository-Manifest └── README.md ``` --- ## 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 --- ## Lizenz MIT License