Erweiterter sed-Patch der oauth/src/lib.rs: - '127.0.0.1' (String-Literal) - [127, 0, 0, 1] (Array-Syntax) - Ipv4Addr::LOCALHOST (Rust-Konstante → Ipv4Addr::UNSPECIFIED) Build gibt die gepatchten Zeilen aus damit der Patch nachvollziehbar ist. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Busch-Radio Spotify Bridge
Spotify-Musik auf dem Busch-Jäger Unterputz-Internetradio – ohne Bluetooth.
Problem
Das Busch-Jäger Unterputz-Internetradio (z.B. 8217 U) kann nur vordefinierte oder eigene Internetradio-Streams abspielen. Es hat kein Bluetooth und keine Spotify-Integration. Spotify-Musik lässt sich damit direkt nicht wiedergeben.
Lösung
Dieses Projekt enthält:
- Home Assistant Add-on – erzeugt ein virtuelles Spotify Connect-Gerät im Netzwerk und stellt das Audio als HTTP-MP3-Stream bereit
- Custom Component (optional) – zeigt den Stream-Status als Media-Player-Entity in HA an
Spotify-App
│
│ Spotify Connect (WiFi)
▼
┌─────────────────────────────────────────────┐
│ Home Assistant Add-on │
│ │
│ librespot ──(PCM)──▶ ffmpeg ──(MP3)──▶ Icecast │
│ (Spotify Connect) (Kodierung) (HTTP-Server) │
└─────────────────────────────────────────────┘
│
│ HTTP-Stream: http://ha-ip:8000/stream.mp3
▼
Busch-Jäger Radio
Voraussetzungen
| Anforderung | Details |
|---|---|
| Home Assistant | OS, Supervised oder Container (Add-on benötigt Supervisor) |
| Spotify Premium | Pflicht für Spotify Connect |
| Busch-Jäger Radio | Muss benutzerdefinierte Stream-URLs unterstützen |
| Netzwerk | HA und Smartphone im gleichen WLAN/LAN |
Wichtig: Die kostenlose Version von Spotify unterstützt kein Spotify Connect. Ein Premium-Abo ist erforderlich.
Installation
1. Add-on installieren
Option A: Repository in HA hinzufügen
- Navigiere zu Einstellungen → Add-ons → Add-on Store
- Klicke oben rechts auf ⋮ → Repositories
- Trage die URL dieses Repositories ein
- Das Add-on Busch-Radio Spotify Bridge erscheint im Store
- Installiere es (Kompilierung von librespot dauert ~10-15 Minuten)
Option B: Manuell (für Entwickler)
# Repository klonen
git clone https://gitea.bitfire.work/retr0/Busch-Radio-Spotify.git
# ha-addon-Verzeichnis in HA Add-on-Pfad kopieren
# (unter Home Assistant OS: /addons/busch_radio_spotify)
cp -r busch-radio-spotify/ha-addon /addons/busch_radio_spotify
# In HA: Einstellungen → Add-ons → Add-on Store → ⋮ → Lokale Add-ons prüfen
2. Add-on konfigurieren
Navigiere zu Einstellungen → Add-ons → Busch-Radio Spotify Bridge → Konfiguration:
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" # Sicherheitspasswort (bitte ändern!)
username: "" # Spotify-Konto (optional, s.u.)
password: "" # Spotify-Passwort (optional, s.u.)
Hinweis zu
username/password: Diese Felder sind optional. Ohne Zugangsdaten wird das Gerät über Zeroconf/mDNS automatisch im Netzwerk gefunden – das ist die empfohlene Methode. Zugangsdaten werden nur benötigt, wenn mDNS im Netzwerk blockiert ist.
3. Netzwerk-Port freigeben
Im Tab Netzwerk des Add-ons den Port 8000 auf 8000 mappen (oder einen anderen freien Port wählen).
4. Add-on starten
Im Tab Info auf Starten klicken. Die Logs zeigen:
[INFO] Busch-Radio Spotify Bridge v1.0.0
[INFO] Stream-URL für das Busch-Jäger Radio:
[INFO] http://<homeassistant-ip>:8000/stream.mp3
[INFO] Wähle 'Busch-Radio' in der Spotify-App als Abspielgerät.
5. Stream im Busch-Jäger Radio eintragen
Im Radio-Menü (je nach Modell verschieden) eine neue Internetradio-Station anlegen:
URL: http://<homeassistant-ip>:8000/stream.mp3
Ersetze <homeassistant-ip> durch die tatsächliche IP-Adresse deines Home Assistant, z.B. 192.168.1.100.
Tipp: Die IP-Adresse findest du in HA unter Einstellungen → System → Netzwerk.
6. Optional: Custom Component installieren
Für die Status-Anzeige in HA:
# custom_components-Verzeichnis in HA config kopieren
cp -r custom_components/busch_radio_spotify \
/config/custom_components/busch_radio_spotify
# HA neu starten
Dann unter Einstellungen → Integrationen → Integration hinzufügen → Busch-Radio Spotify Bridge einrichten.
Bedienung
- Öffne die Spotify-App auf Smartphone oder Computer
- Spiele ein Lied ab
- Tippe auf das Gerät-Symbol (unten in der App)
- Wähle "Busch-Radio" (oder deinen konfigurierten Gerätenamen)
- Die Musik wird automatisch über den Stream an das Radio übertragen
Das Radio muss die Stream-URL bereits abgespielt haben oder neu eingestellt werden, sobald Spotify mit dem Abspielen beginnt.
Einrichtung der Stream-URL im Radio (Modellabhängig)
Busch-Jäger 8217 U / ähnliche Modelle
- Ins Radio-Menü navigieren (meist über die Benutzeroberfläche oder App)
- Meine Sender → Sender hinzufügen oder Internetradio → Eigene URL
- URL eingeben:
http://192.168.1.100:8000/stream.mp3 - Namen vergeben: z.B. "Spotify"
- Speichern und Stream starten
Alternativ: Über vTuner/Frontier Silicon Portal
Einige Busch-Jäger Modelle nutzen vTuner als Radio-Backend:
- Auf
http://www.wifiradio-frontier.comregistrieren - Unter "Meine Sender" → "Sender hinzufügen" die Stream-URL eintragen
- Im Radio synchronisieren
Custom Component – Media Player Entity
Nach der Installation der Custom Component erscheint ein neuer Entity in HA:
Entity-ID: media_player.busch_radio_192_168_1_100
| State | Bedeutung |
|---|---|
playing |
Mindestens ein Hörer verbunden |
idle |
Quelle aktiv, aber kein Hörer |
off |
Icecast nicht erreichbar |
Attribute:
| Attribut | Beschreibung |
|---|---|
stream_url |
Die URL für das Radio |
listeners |
Anzahl aktiver Hörer |
source_connected |
Ob librespot an Icecast sendet |
bitrate_kbps |
Aktuelle Bitrate |
Dashboard-Karte (Beispiel):
type: media-control
entity: media_player.busch_radio_192_168_1_100
Automatisierung – Radio starten wenn Spotify beginnt:
automation:
alias: "Busch-Radio wenn Spotify spielt"
trigger:
platform: state
entity_id: media_player.busch_radio_192_168_1_100
to: "playing"
action:
service: notify.mobile_app
data:
message: "Spotify spielt auf dem Busch-Radio"
Technische Details
Komponenten
| Komponente | Funktion | Version |
|---|---|---|
| librespot | Spotify Connect Client | Aktuell via cargo |
| ffmpeg | PCM → MP3 Transkodierung | Via Alpine apk |
| Icecast | HTTP-Stream-Server | Via Alpine apk |
Signalfluss im Detail
Spotify CDN → (verschlüsselt, OGG Vorbis)
→ librespot (dekodiert, gibt PCM aus)
→ stdout (44100 Hz, S16LE, Stereo = 176.4 KB/s)
→ ffmpeg stdin
→ MP3-Kodierung (libmp3lame, 320 kbps ≈ 40 KB/s)
→ Icecast (HTTP-Streaming-Server)
→ Busch-Jäger Radio (HTTP-Client)
PCM-Format von librespot
- Sample Rate: 44100 Hz
- Bit-Tiefe: 16-bit signed, Little-Endian
- Kanäle: 2 (Stereo)
- Rohe Datenrate: ~172 KB/s
Restart-Verhalten
Die Pipeline librespot | ffmpeg wird bei Absturz automatisch nach 5 Sekunden neu gestartet. Icecast bleibt davon unberührt.
Fehlerbehebung
Das Gerät erscheint nicht in der Spotify-App
Ursachen & Lösungen:
- Add-on läuft nicht → Add-on-Status in HA prüfen
- Anderes WLAN/Subnetz → Smartphone und HA müssen im selben Netzwerk sein
- mDNS blockiert → Spotify-Zugangsdaten in der Add-on-Konfig eintragen
- Gerätename bereits vergeben →
device_namein der Konfig ändern - Firewall → Port 5353 (mDNS/UDP) und Port 8000 (TCP) freigeben
Kein Audio / Stream leer
# Im Browser öffnen – sollte die Icecast-Statusseite zeigen:
http://homeassistant-ip:8000
# Wenn das funktioniert, aber kein Audio:
# → In Spotify das Gerät "Busch-Radio" auswählen und abspielen
Stream bricht ab beim Pausieren
Das ist das erwartete Verhalten: Wenn Spotify pausiert, sendet librespot nichts mehr an Icecast. Das Radio verliert die Verbindung.
Lösung: Nach dem Fortsetzen der Wiedergabe in Spotify den Stream im Radio kurz stoppen und wieder starten.
Zukünftige Verbesserung: Stille-Generierung bei Pause geplant.
ffmpeg startet nicht / Kodierungsfehler
# Add-on Logs prüfen auf Zeilen wie:
[WARNING] [ffmpeg] ...
# Häufige Ursachen:
# - libmp3lame nicht installiert (ffmpeg ohne MP3-Support)
# - Icecast-Passwort stimmt nicht überein
# - Port 8000 bereits belegt
Icecast antwortet mit 401 (in der Custom Component)
Das Passwort in der Custom Component-Konfiguration stimmt nicht mit icecast_password im Add-on überein. Integration neu einrichten.
Rechtliche Hinweise
librespot und Spotify ToS
- Dieses Projekt nutzt librespot, eine quelloffene Reimplementierung des Spotify-Clients
- Librespot ist ein Spotify Connect-Client und kein Downloader/Recorder
- Audio wird nicht gespeichert – nur live gestreamt
- Die Nutzung im privaten Heimbereich ist technisch weitgehend akzeptiert, kann aber gegen Abschnitt 2.5 von Spotifys Nutzungsbedingungen verstoßen
- Spotify Premium ist erforderlich – kostenlose Konten funktionieren nicht
- Dieses Projekt ist ausschließlich für den persönlichen Privatgebrauch gedacht
Verwendete Open-Source-Lizenzen
- librespot – MIT License
- ffmpeg – LGPL 2.1+ / GPL 2+
- Icecast – GPL 2
Projektstruktur
busch-radio-spotify/
├── ha-addon/ # Home Assistant Add-on
│ ├── Dockerfile # Multi-Stage Build (Rust + Alpine)
│ ├── config.yaml # Add-on Manifest & Optionen
│ ├── build.yaml # Multi-Arch Build-Konfiguration
│ └── run.sh # Startup-Script (Icecast + librespot + ffmpeg)
│
├── custom_components/ # Optionale HA Integration
│ └── busch_radio_spotify/
│ ├── __init__.py # Integration Setup
│ ├── manifest.json # Integration Manifest
│ ├── media_player.py # Media Player Entity (Icecast-Polling)
│ ├── config_flow.py # Grafische Einrichtung
│ ├── strings.json # UI-Texte
│ └── translations/
│ ├── de.json # Deutsch
│ └── en.json # Englisch
│
├── example-config.yaml # Kommentierte Beispielkonfiguration
└── README.md # Diese Datei
Geplante Verbesserungen
- Stille-Generierung bei Spotify-Pause (verhindert Stream-Abbruch im Radio)
- Lautstärke-Steuerung über HA (librespot unterstützt DBUS)
- Track-Metadaten (Titel, Künstler) via librespot-Event-System
- OGG-Stream Option für bessere Qualität bei gleicher Bitrate
- Automatischer Start des Radios beim Verbinden (via HA-Automation)
Beitragen
Issues und Pull Requests sind willkommen auf:
https://gitea.bitfire.work/retr0/Busch-Radio-Spotify
Lizenz
MIT License – siehe LICENSE