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

208 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p align="center">
<img src="busch_radio_spotify/logo.png" alt="Busch-Radio Spotify Bridge" width="180"/>
</p>
<h1 align="center">Busch-Radio Spotify Bridge</h1>
<p align="center">
Spotify-Musik auf dem Busch-Jäger Unterputz-Internetradio ohne Bluetooth.
</p>
---
## 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 ~1015 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://<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:**
```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://<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](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, ~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