Files
Busch-Radio-Spotify/README.md
Niklas Gühne a463403c43 Release v1.0.11: Pause-Fix, OAuth-Assistent, Docs, Cleanup
Pause-Fix (Silence-Injektor):
- Python-Skript zwischen librespot und ffmpeg
- Bei Pause füllt der Injektor die Stille mit Null-Bytes
- Icecast bleibt verbunden, Stream reißt nicht ab

OAuth-Einrichtungs-Assistent (Port 5589):
- oauth_helper.py: HTTP-Server mit geführtem Anmelde-Prozess
- Zeigt Spotify-Auth-Link automatisch sobald librespot ihn ausgibt
- URL-Fixer: Nutzer fügt 127.0.0.1-URL ein, Assistent korrigiert auf HA-IP
- Erkennt bereits vorhandene Credentials und zeigt Hinweis

Dokumentation:
- DOCS.md für die HA Add-on Detailseite erstellt
- README.md vollständig überarbeitet und aktualisiert

Cleanup:
- Leere Testdatei entfernt
- Veraltete example-config.yaml entfernt
- manifest.json der Custom Component auf v1.0.11 gebracht

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 12:14:56 +02:00

6.4 KiB
Raw Blame History

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) 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 ~1015 Minuten wegen Rust-Kompilierung)

2. Add-on konfigurieren

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://<homeassistant-ip>: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://<homeassistant-ip>: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:

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://<ha-ip>:5589 Einrichtungs-Assistent (OAuth)
http://<ha-ip>:8000/stream Stream-URL für das Radio
http://<ha-ip>:8000 Icecast-Statusseite

Technische Details

Komponenten

Komponente Funktion
librespot main Spotify Connect Client (PCM-Ausgabe via Pipe)
ffmpeg PCM → MP3/AAC Transkodierung
Icecast 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, ~1015 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://<ha-ip>:5589
Stream nicht erreichbar Icecast-Status prüfen: http://<ha-ip>: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