Commit Graph

11 Commits

Author SHA1 Message Date
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
Niklas Gühne
fbebf84b76 Release v1.0.10: ffmpeg -re Flag für Echtzeit-Wiedergabe
Ohne -re liest ffmpeg den PCM-Stream von librespot so schnell wie
möglich. librespot meldet die Position dann zu schnell an Spotify,
was dazu führt dass Tracks im Sekundentakt wechseln und Stop/Skip
vom Handy nicht funktionieren.

Mit -re wird der Input auf native Framerate gedrosselt (44100 Hz
S16LE Stereo → ~176 kB/s), sodass Position korrekt gemeldet wird.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 10:22:49 +02:00
Niklas Gühne
53804877d5 Fix: Icecast source-timeout auf 30s erhöht
Bei Spotify-Pause fliesst kurz kein PCM → Icecast trennte ffmpeg
nach 10s. Mit 30s bleibt die Verbindung bei kurzen Pausen stabil.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 10:04:04 +02:00
Niklas Gühne
ecd90f08f4 Feature: AAC-Support und Bitrate auf Radiomaximum angepasst
Busch-Radio iNet 8216 U unterstützt max. 192 kbps und die Formate
MP3, AAC und OGG. Neue Konfigurationsoptionen:
- stream_format: mp3 (Standard) oder aac
- bitrate: 96/128/160/192 kbps (max. des Radios)

Default auf 160 kbps MP3 geändert (war 320 kbps – über Radio-Maximum).
Stream-URL im Log zeigt jetzt die echte HA-IP statt Platzhalter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 08:55:14 +02:00
Niklas Gühne
15c71f1c38 Fix: --device-type computer für librespot
Behebt "context is not available. type: Default" Fehler,
bei dem librespot keine Tracks laden konnte. Die Angabe des
Device-Types hilft Spotify den Client korrekt zu klassifizieren.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 08:42:55 +02:00
Niklas Gühne
5b99f3fc17 Release v1.0.8: OAuth-URL im HA-Log sichtbar (stdout→stderr)
librespot schreibt die 'Browse to:'-URL mit println! auf stdout,
das direkt in die ffmpeg-Pipe geht – die URL war dadurch nie im
Log sichtbar, und ffmpeg erhielt Text statt PCM (Absturz-Schleife).

Fix: println! → eprintln! im librespot-Quellcode-Patch, sodass
die URL auf stderr landet und im HA-Log erscheint.

Außerdem: Patch-Verifikation schlägt jetzt mit exit 1 fehl statt
stillschweigend weiterzumachen (|| true → || exit 1).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 08:03:49 +02:00
6f4e408190 Release v1.0.7: OAuth-Server korrekt auf 0.0.0.0 gebunden
Die bisherigen Patches zielten auf Muster, die in oauth/src/lib.rs
nicht vorhanden sind. Der tatsächliche Bind-Aufruf ist
TcpListener::bind(socket_address) – dieser wird jetzt direkt durch
SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, port) ersetzt.

Dadurch ist der OAuth-Callback-Server unter http://<ha-ip>:5588
erreichbar. Der Benutzer ersetzt nach der Spotify-Weiterleitung
127.0.0.1 durch die HA-IP in der Adressleiste.

run.sh erkennt die HA-IP automatisch und zeigt eine klare
Schritt-für-Schritt-Anleitung beim ersten Start.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 22:57:35 +02:00
76bb0694fe Release v1.0.4: OAuth statt Zeroconf
Zeroconf/mDNS schlägt in Containern fehl weil Port 5353 vom Host
(systemd-resolved/avahi) bereits belegt ist. mdns-sd kann den Socket
nicht teilen → librespot: 'discovery disabled'.

Lösung: OAuth-Authentifizierung (der offiziell unterstützte Weg in
librespot 0.7+). Das Gerät registriert sich bei Spotifys Servern und
erscheint ohne lokales mDNS in der Spotify-App.

- --disable-discovery + --enable-oauth + --system-cache /data/librespot-cache
- Credentials werden in /data persistent gespeichert (data:rw)
- Beim ersten Start: URL im Log → Browser öffnen → Spotify autorisieren
- Ab dem zweiten Start: direkt mit gecachten Credentials

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 18:06:32 +02:00
f13193958b Release v1.0.2: Passwort-Auth entfernt, Zeroconf-only
librespot 0.7+ unterstützt --password nicht mehr (nur noch OAuth/Zeroconf).
Der --password-Arg ließ librespot sofort abstürzen → leere Pipeline.

- username/password aus config.yaml und run.sh entfernt
- librespot nutzt jetzt ausschließlich Zeroconf/mDNS zur Erkennung
- Gerät erscheint automatisch in der Spotify-App im lokalen Netz

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 16:45:52 +02:00
52a803f545 Fix: Icecast läuft nicht als root (changeowner nobody)
Icecast verweigert den Start als root. Lösung:
- changeowner-Direktive in icecast.xml: wechselt zu nobody nach Start
- Log- und Run-Verzeichnisse gehören nobody für Schreibzugriff

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 16:35:48 +02:00
1349e6515f Fix: Repository-Struktur für HAOS Add-on Store korrigiert
- ha-addon/ → busch_radio_spotify/ (Ordner muss dem Slug entsprechen)
- repository.yaml im Root hinzugefügt (von HAOS zum Erkennen des Repos benötigt)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 12:31:57 +02:00