feat: complete dashboard redesign, proxy unification, and Windows compatibility fixes

This commit is contained in:
2026-04-02 12:13:37 +02:00
parent 8192388c5d
commit fec4e4635c
33 changed files with 3002 additions and 135 deletions

205
WINDOWS_AUDIO_SETUP.md Normal file
View File

@@ -0,0 +1,205 @@
# Windows Audio Setup für boWave
## Übersicht
Diese Anleitung ermöglicht es, Audio vom boWave-System auf deinem Windows-PC abzuspielen, während alle virtuellen Boot-Zonen stumm bleiben.
## Voraussetzungen
### 1. Snapcast Client für Windows installieren
```powershell
# Download von GitHub (aktuellste Version)
# https://github.com/badaix/snapcast/releases/latest
# Oder mit Scoop (falls installiert):
scoop bucket add extras
scoop install snapcast
```
**Manuelle Installation:**
1. Gehe zu https://github.com/badaix/snapcast/releases/latest
2. Lade `snapclient-<version>-win64.zip` herunter
3. Entpacke nach `C:\Program Files\Snapcast\`
4. Füge `C:\Program Files\Snapcast\bin` zu deinem PATH hinzu
## Setup-Schritte
### Schritt 1: Projekt starten
```powershell
cd D:\coding\boWave
make dev
```
Dies startet:
- ✅ Snapserver (Multiroom Audio Server) auf Port 1704
- ✅ SignalK (NMEA Mock-Daten)
- ✅ Mopidy (Musik-Player mit Mock-Playlist)
- ✅ Dashboard mit HMR auf http://localhost:8090
- ✅ 4 virtuelle Boot-Zonen (Salon, Cockpit, Bug, Heck) - alle stumm (null output)
### Schritt 2: Windows Audio Client starten
Öffne ein **neues PowerShell-Fenster** und führe aus:
```powershell
snapclient --host localhost --port 1704 --hostID windows-pc --player wasapi
```
**Parameter Erklärung:**
- `--host localhost` → verbindet sich mit dem Docker Snapserver
- `--port 1704` → Standard Snapcast Port
- `--hostID windows-pc` → Eindeutige Zone-ID (wird im Dashboard angezeigt)
- `--player wasapi` → Windows Audio Session API (native Windows Audio)
**Alternative für ältere Windows-Versionen:**
```powershell
snapclient --host localhost --port 1704 --hostID windows-pc --player winmm
```
### Schritt 3: Audio-Routing konfigurieren
Öffne das Snapcast Web-Interface: **http://localhost:1780**
1. Du siehst jetzt 5 Zonen:
- zone-salon (stumm)
- zone-cockpit (stumm)
- zone-bug (stumm)
- zone-heck (stumm)
- **windows-pc** (dein PC!)
2. Wähle die Zone **windows-pc** aus
3. Setze die Lautstärke auf 50-80%
4. Stelle sicher, dass die Zone **nicht** auf mute ist
3. Wähle den Audio-Stream (z.B. "Mopidy" für lokale Musik)
### Schritt 4: Musik abspielen
**Option A: Mopidy Web-Interface**
1. Öffne http://localhost:6680/iris/
2. Spiele einen Track ab
3. Audio sollte jetzt über deine Windows-Lautsprecher kommen!
**Option B: Spotify Connect (nativ auf Windows)**
In einem weiteren Terminal:
```powershell
# Librespot für Windows installieren (falls noch nicht vorhanden)
# Download: https://github.com/librespot-org/librespot/releases
librespot --name "Bordanlage-Windows" --backend rodio
```
Dann öffne die Spotify-App und wähle "Bordanlage-Windows" als Ausgabegerät.
## Troubleshooting
### "snapclient: Befehl nicht gefunden"
```powershell
# Prüfe ob Snapcast installiert ist:
where.exe snapclient
# Falls nicht gefunden, füge zum PATH hinzu (als Administrator):
$env:Path += ";C:\Program Files\Snapcast\bin"
```
### Kein Audio auf Windows
1. **Prüfe ob snapclient läuft:**
```powershell
# In einem separaten Terminal sollte snapclient-Output sichtbar sein
```
2. **Prüfe Snapserver-Logs:**
```powershell
docker compose -f docker-compose.yml -f docker-compose.dev.yml logs snapserver
```
3. **Prüfe Windows Audio Device:**
- Rechtsklick auf Lautsprecher-Icon in Taskleiste
- "Sound-Einstellungen öffnen"
- Stelle sicher, dass das richtige Ausgabegerät ausgewählt ist
### Snapclient verbindet nicht
```powershell
# Prüfe ob Port 1704 erreichbar ist:
Test-NetConnection -ComputerName localhost -Port 1704
# Falls Docker Desktop verwendet wird, prüfe:
docker ps | findstr snapserver
```
### Audio stottert oder hat Aussetzer
```powershell
# Erhöhe Buffer-Größe:
snapclient --host localhost --port 1704 --hostID windows-pc --player wasapi --latency 500
```
Der `--latency` Parameter ist in Millisekunden (Standard: 200ms).
## Permanente Konfiguration
### Automatischer Start mit Batch-Datei
Erstelle `start-windows-audio.bat`:
```batch
@echo off
echo Starting Snapcast Windows Audio Client...
snapclient --host localhost --port 1704 --hostID windows-pc --player wasapi --latency 300
pause
```
Doppelklick auf die Datei startet den Audio-Client.
### Windows-Dienst (fortgeschritten)
Um snapclient als Windows-Dienst zu installieren (läuft automatisch im Hintergrund):
```powershell
# Benötigt: NSSM (Non-Sucking Service Manager)
scoop install nssm
# Dienst erstellen:
nssm install SnapcastClient "C:\Program Files\Snapcast\bin\snapclient.exe"
nssm set SnapcastClient AppParameters "--host localhost --port 1704 --hostID windows-pc --player wasapi"
nssm set SnapcastClient DisplayName "Snapcast Audio Client"
nssm set SnapcastClient Start SERVICE_AUTO_START
# Dienst starten:
nssm start SnapcastClient
```
## Make-Target Erweiterung (Optional)
Für Komfort kannst du ein neues Make-Target hinzufügen:
```makefile
# Im Makefile nach Zeile 52 einfügen:
windows-audio:
@echo "Starting Snapcast client → Windows speakers (zone: windows-pc)"
@where snapclient > nul || (echo "Please install Snapcast from https://github.com/badaix/snapcast/releases" && exit 1)
snapclient --host localhost --port 1704 --hostID windows-pc --player wasapi
```
Dann kannst du einfach `make windows-audio` ausführen.
## Zusammenfassung
- ✅ **Mock-Daten aktiv**: SignalK sendet realistische NMEA 2000 Boot-Daten
- ✅ **4 Boot-Zonen stumm**: Salon/Cockpit/Bug/Heck nutzen null-Player
- ✅ **1 PC-Zone mit Audio**: windows-pc nutzt WASAPI für echten Sound
- ✅ **Dashboard funktionsfähig**: http://localhost:8090 zeigt alle Zonen
- ✅ **Alle Services laufen in Docker**: Nur snapclient läuft nativ für Audio-Output
**Next Steps:**
1. `make dev` starten
2. `snapclient --host localhost --port 1704 --hostID windows-pc --player wasapi` in neuem Terminal
3. Musik über Mopidy oder Spotify abspielen
4. Genießen! 🎵