Files
Busch-Radio-Spotify/README.md
2026-04-06 12:36:34 +02:00

11 KiB
Raw Blame History

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:

  1. Home Assistant Add-on erzeugt ein virtuelles Spotify Connect-Gerät im Netzwerk und stellt das Audio als HTTP-MP3-Stream bereit
  2. 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

  1. Navigiere zu Einstellungen → Add-ons → Add-on Store
  2. Klicke oben rechts auf ⋮ → Repositories
  3. Trage die URL dieses Repositories ein
  4. Das Add-on Busch-Radio Spotify Bridge erscheint im Store
  5. 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

  1. Öffne die Spotify-App auf Smartphone oder Computer
  2. Spiele ein Lied ab
  3. Tippe auf das Gerät-Symbol (unten in der App)
  4. Wähle "Busch-Radio" (oder deinen konfigurierten Gerätenamen)
  5. 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

  1. Ins Radio-Menü navigieren (meist über die Benutzeroberfläche oder App)
  2. Meine Sender → Sender hinzufügen oder Internetradio → Eigene URL
  3. URL eingeben: http://192.168.1.100:8000/stream.mp3
  4. Namen vergeben: z.B. "Spotify"
  5. Speichern und Stream starten

Alternativ: Über vTuner/Frontier Silicon Portal

Einige Busch-Jäger Modelle nutzen vTuner als Radio-Backend:

  1. Auf http://www.wifiradio-frontier.com registrieren
  2. Unter "Meine Sender" → "Sender hinzufügen" die Stream-URL eintragen
  3. 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 vergebendevice_name in 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