From fec4e4635cbe08b3e7d9d59f20da7560c31e1fd7 Mon Sep 17 00:00:00 2001 From: denshooter Date: Thu, 2 Apr 2026 12:13:37 +0200 Subject: [PATCH] feat: complete dashboard redesign, proxy unification, and Windows compatibility fixes --- AUDIO_SETUP_REAL.md | 356 +++++++++++++++ CHANGES_SUMMARY.md | 38 ++ DASHBOARD_ANLEITUNG.md | 317 +++++++++++++ DASHBOARD_FINAL.md | 308 +++++++++++++ KIOSK_SETUP.md | 422 ++++++++++++++++++ Makefile | 19 +- README.md | 46 +- SCHNELLSTART_WINDOWS.md | 243 ++++++++++ SHIP_ROUTING.md | 89 +++- WINDOWS_AUDIO_SETUP.md | 205 +++++++++ config/mopidy.conf | 3 +- config/snapserver.conf | 1 + dashboard/nginx.conf | 36 ++ .../src/components/nav/NavigationMap.jsx | 111 ++++- .../components/nav/SimpleNavigationMap.jsx | 204 +++++++++ .../src/components/systems/BoatControl.jsx | 222 +++++++++ .../src/components/systems/FloorPlan.jsx | 125 ++++++ dashboard/src/hooks/useDocker.js | 39 +- dashboard/src/hooks/useZones.js | 9 +- dashboard/src/index.css | 4 + dashboard/src/mock/index.js | 79 +++- dashboard/src/mock/signalk.mock.js | 27 +- dashboard/src/pages/Overview.jsx | 112 +++-- dev.bat | 5 + docker-compose.dev.yml | 26 +- docker-compose.yml | 15 +- docker/librespot/Dockerfile | 18 +- docker/mopidy/entrypoint.sh | 14 + docker/snapclient/Dockerfile | 17 +- docker/snapserver/Dockerfile | 22 +- photo_2026-04-02_02-11-20.jpg | Bin 0 -> 184428 bytes photo_2026-04-02_02-11-30.jpg | Bin 0 -> 126337 bytes stop.bat | 5 + 33 files changed, 3002 insertions(+), 135 deletions(-) create mode 100644 AUDIO_SETUP_REAL.md create mode 100644 CHANGES_SUMMARY.md create mode 100644 DASHBOARD_ANLEITUNG.md create mode 100644 DASHBOARD_FINAL.md create mode 100644 KIOSK_SETUP.md create mode 100644 SCHNELLSTART_WINDOWS.md create mode 100644 WINDOWS_AUDIO_SETUP.md create mode 100644 dashboard/src/components/nav/SimpleNavigationMap.jsx create mode 100644 dashboard/src/components/systems/BoatControl.jsx create mode 100644 dashboard/src/components/systems/FloorPlan.jsx create mode 100644 dev.bat create mode 100644 photo_2026-04-02_02-11-20.jpg create mode 100644 photo_2026-04-02_02-11-30.jpg create mode 100644 stop.bat diff --git a/AUDIO_SETUP_REAL.md b/AUDIO_SETUP_REAL.md new file mode 100644 index 0000000..6e4e14a --- /dev/null +++ b/AUDIO_SETUP_REAL.md @@ -0,0 +1,356 @@ +# 🎵 Echtes Audio Setup - Spotify & AirPlay + +## ✅ FIXES ANGEWENDET + +### 1. VITE_USE_MOCK = false +- Dashboard nutzt jetzt **echte Services** +- Keine Mock-Daten mehr +- Verbindet zu Mopidy, Snapcast, SignalK + +### 2. Karte crasht nicht mehr +- Simple Navigation Map (ohne MapLibre) +- Zeigt Position, Kurs, Geschwindigkeit +- Kein externer Tile-Server nötig + +--- + +## 🎯 WICHTIG: Audio im Dev-Mode + +### Warum hörst du NICHTS? + +**Im Dev-Mode:** +``` +Spotify/AirPlay/Mopidy + ↓ +/tmp/audio/*.pcm (Named Pipes) + ↓ +Snapserver (Docker) + ↓ +Snapclients (Docker mit --player file:filename=null) + ↓ +🔇 Audio wird VERWORFEN (null player) +``` + +**Warum?** +- Docker kann nicht direkt zu Windows-Lautsprechern +- Audio-Pipes funktionieren nicht über Docker Desktop VM-Grenze +- Die Zonen nutzen `--player file:filename=null` = stumm + +--- + +## 🔊 3 WEGE UM AUDIO ZU HÖREN + +### Option 1: Snapcast Web Audio (Browser) ✅ EINFACHST + +**So gehts:** +1. Öffne: http://localhost:1780 +2. Klicke auf 🔊 Symbol (oben rechts) +3. Wähle eine Zone (z.B. "zone-salon") +4. **Browser fragt nach Mikrofon-Berechtigung** → Erlaube (nutzt nur Audio OUT!) +5. Musik in Mopidy starten → http://localhost:6680/iris/ +6. **Audio läuft über deinen Browser!** + +**Vorteile:** +- ✅ Keine Installation +- ✅ Funktioniert sofort +- ✅ Web Audio API (Chrome, Firefox, Edge) + +**Nachteile:** +- ⚠️ Tab muss offen bleiben +- ⚠️ Kann latency haben (~500ms) + +--- + +### Option 2: Snapclient auf Windows (Native) ✅ BESTE QUALITÄT + +**Installation:** +1. Download: https://github.com/badaix/snapcast/releases/latest +2. Datei: `snapclient-X.XX.X-win64.zip` +3. Entpacken nach `C:\Program Files\Snapcast\` + +**Starten:** +```powershell +# Terminal öffnen +snapclient --host localhost --port 1704 --hostID windows-pc --player wasapi +``` + +**Oder mit make (falls installiert):** +```powershell +make windows-audio +``` + +**Vorteile:** +- ✅ Perfekte Audio-Qualität +- ✅ Niedrige Latenz (~20ms) +- ✅ Native Windows Audio (WASAPI) + +**Nachteile:** +- ⚠️ Muss manuell gestartet werden +- ⚠️ Extra Terminal-Fenster + +--- + +### Option 3: Docker Zone mit PulseAudio (WSL2) ⚠️ NUR LINUX + +**Nur wenn du WSL2 mit PulseAudio hast:** +```bash +# In WSL2 Terminal +pulseaudio --start +``` + +Dann in `docker-compose.dev.yml`: +```yaml +zone-windows: + build: ./docker/snapclient + command: ["--hostID", "zone-windows", "--player", "pulse"] + environment: + - PULSE_SERVER=unix:/run/user/1000/pulse/native + volumes: + - /run/user/1000/pulse:/run/user/1000/pulse +``` + +**Nicht empfohlen für Windows!** + +--- + +## 🎵 MUSIK QUELLEN AKTIVIEREN + +### Spotify Connect ✅ + +**Im Dev-Mode läuft librespot als Stub (dummy).** + +**Um echtes Spotify zu nutzen:** + +**Option A: Librespot auf Windows (EMPFOHLEN)** +```powershell +# Download: https://github.com/librespot-org/librespot/releases +# Oder mit Rust installieren: +cargo install librespot + +# Starten: +librespot --name "Bordanlage" --backend rodio +``` + +Dann in Spotify App → Geräte → "Bordanlage" auswählen + +**Option B: Docker librespot (Production Mode)** +```powershell +# Nutze docker-compose.yml (ohne .dev overlay) +docker compose up -d librespot +``` + +⚠️ Aber: Audio geht nach `/tmp/audio/spotify.pcm` → Du hörst nichts! + +--- + +### AirPlay ✅ + +**Shairport-Sync läuft im Docker.** + +**Von iPhone/Mac:** +1. Control Center öffnen +2. AirPlay Symbol +3. "Bordanlage AirPlay" auswählen +4. Musik abspielen + +⚠️ **Problem:** Audio geht nach `/tmp/audio/airplay.pcm` → Du hörst nichts! + +**Lösung:** +- Nutze Snapcast Web Audio (Option 1) +- Oder native Snapclient (Option 2) +- AirPlay → Pipe → Snapserver → Snapclient → Windows! + +--- + +### Mopidy (Local Files + Radio) ✅ + +**Läuft bereits!** + +**Musik abspielen:** +1. Öffne: http://localhost:6680/iris/ +2. Klicke "Browse" → "TuneIn" +3. Suche "BBC Radio" oder "NDR" +4. Klicke auf Sender → Play + +**Local Files:** +1. Kopiere MP3/FLAC nach `./music/` +2. Library Scan triggern: + ```powershell + curl -X POST http://localhost:6680/mopidy/rpc ` + -H "Content-Type: application/json" ` + -d '{"jsonrpc":"2.0","id":1,"method":"library.refresh"}' + ``` +3. Warte ~30 Sek +4. Reload Mopidy UI → Files sind da! + +--- + +## 🧪 AUDIO TEST WORKFLOW + +### Test 1: Mopidy → Snapcast → Browser + +``` +1. Öffne: http://localhost:6680/iris/ + → Klicke Browse → TuneIn + → Wähle "BBC Radio 1" + → Klicke Play + +2. Öffne: http://localhost:1780 + → Klicke 🔊 Symbol + → Wähle "zone-salon" + → Erlaube Browser Audio + +3. Musik sollte jetzt laufen! 🎵 +``` + +**Falls nicht:** +- F12 → Console → Fehler? +- Snapcast Web zeigt "zone-salon" connected? +- Mopidy zeigt "Playing"? + +--- + +### Test 2: Dashboard Player + +``` +1. Öffne: http://localhost:8090 + +2. Klicke Tab "Audio" + → Klicke "Radio" Sub-Tab + → Suche "BBC" oder "NDR" + → Klicke auf Sender + +3. Zurück zu "Overview" Tab + → Player zeigt Track + → [▶] Play/Pause funktioniert + +4. Browser Audio aktivieren (Snapcast Web) + → http://localhost:1780 + → 🔊 Symbol → Zone wählen +``` + +--- + +## 🔧 TROUBLESHOOTING + +### Problem: "Dashboard zeigt 'Audio not connected'" + +**Ursache:** Mopidy WebSocket Connection failed + +**Fix:** +```powershell +# Mopidy Logs prüfen +docker compose -f docker-compose.yml -f docker-compose.dev.yml logs mopidy + +# Mopidy neu starten +docker compose -f docker-compose.yml -f docker-compose.dev.yml restart mopidy + +# Browser neu laden (Ctrl+R) +``` + +### Problem: "Zones zeigen alle 'offline'" + +**Ursache:** Snapcast JSON-RPC Connection failed + +**Fix:** +```powershell +# Snapserver Logs prüfen +docker compose -f docker-compose.yml -f docker-compose.dev.yml logs snapserver + +# Snapserver neu starten +docker compose -f docker-compose.yml -f docker-compose.dev.yml restart snapserver + +# Alle Zonen neu starten +docker compose -f docker-compose.yml -f docker-compose.dev.yml restart zone-salon zone-cockpit zone-bug zone-heck +``` + +### Problem: "Snapcast Web Audio funktioniert nicht" + +**Check:** +1. Nutzt du Chrome/Firefox/Edge? (Safari hat Probleme) +2. Hast du Mikrofon-Berechtigung erteilt? (wird für Web Audio benötigt) +3. Tab bleibt offen? +4. F12 → Console → Web Audio Fehler? + +**Fix:** +```javascript +// Browser Console: +navigator.mediaDevices.getUserMedia({ audio: true }) + .then(() => console.log("✅ Audio erlaubt")) + .catch(err => console.log("❌ Audio blockiert:", err)) +``` + +### Problem: "Spotify Device wird nicht gefunden" + +**Im Dev-Mode:** +- librespot läuft als Stub (dummy) +- Nutze native librespot auf Windows (siehe oben) + +**Production Mode:** +- `docker-compose.yml` nutzen (ohne .dev) +- Aber: Audio geht nach Pipe, du hörst nichts! +- → Nutze native librespot + +--- + +## 📊 SERVICE STATUS PRÜFEN + +```powershell +# Alle Audio Services +docker compose -f docker-compose.yml -f docker-compose.dev.yml ps | findstr "mopidy snapserver zone" + +# Mopidy API Test +curl http://localhost:6680/mopidy/rpc -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"core.get_version"}' + +# Snapcast Status (WebSocket, schwieriger zu testen) +# → Nutze http://localhost:1780 (Web UI) + +# SignalK API Test +curl http://localhost:3000/signalk/v1/api/vessels/self +``` + +--- + +## ✅ ZUSAMMENFASSUNG + +### Was funktioniert JETZT: + +✅ **Dashboard:** +- Echte Services (VITE_USE_MOCK=false) +- Kein Karten-Crash mehr (Simple Map) +- Audio Player zeigt echte Mopidy-Daten + +✅ **Audio System:** +- Mopidy läuft (Port 6680) +- Snapserver läuft (Port 1704, 1705, 1780) +- 4 Zonen connected (aber stumm) + +✅ **Musik Quellen:** +- Mopidy + Iris (Local Files + TuneIn Radio) +- Shairport (AirPlay Receiver) +- librespot (Spotify Connect - als Stub) + +### Was du noch tun musst: + +❗ **Audio hören:** +1. **Einfach:** Snapcast Web Audio (http://localhost:1780 → 🔊) +2. **Best:** Native Snapclient auf Windows + +❗ **Spotify aktivieren:** +- Native librespot auf Windows starten (siehe Anleitung oben) + +❗ **AirPlay testen:** +- iPhone → AirPlay → "Bordanlage AirPlay" +- Audio hören → Snapcast Web Audio aktivieren + +--- + +## 🚢 AUF DEM BOOT (später) + +**Dann funktioniert ALLES automatisch:** +- Echte ALSA-Lautsprecher in Zonen +- Spotify Connect über Boot-Netzwerk +- AirPlay über Boot-Netzwerk +- Alles läuft ohne Windows + +**Setup:** Siehe `KIOSK_SETUP.md` diff --git a/CHANGES_SUMMARY.md b/CHANGES_SUMMARY.md new file mode 100644 index 0000000..4289712 --- /dev/null +++ b/CHANGES_SUMMARY.md @@ -0,0 +1,38 @@ +# boWave Project Updates & Fixes + +This document summarizes the changes made to the boWave project to improve NMEA 2000 data visibility, dashboard aesthetics, and Windows compatibility. + +## 🚀 Key Improvements + +### 1. Unified Dashboard Access (Port 8090) +- **Problem:** Accessing different services required multiple ports (3000, 1780, 6680, etc.), causing CORS and firewall issues. +- **Solution:** Configured Nginx and Vite proxies to tunnel all backend services through the main dashboard port (8090). +- **Paths:** + - SignalK: `/signalk` + - Snapcast: `/snapcast-ws` + - Mopidy: `/mopidy` + - Jellyfin: `/jellyfin` + +### 2. "Ship Control" Dashboard Design +- **New UI:** Implemented a minimalist, high-end yacht aesthetic based on provided photo references. +- **BoatControl Component:** Added a central interactive boat profile with circular category icons (Lights, Climate, Nav, Music, Energy). +- **FloorPlan Component:** Created a visual deck plan for controlling lighting and climate in specific zones (Salon, Cabins, etc.). +- **Central Instrument:** Added a floating gauge over the boat for immediate SOG and Heading monitoring. + +### 3. NMEA 2000 Data Fixes +- **SignalK Proxy:** Fixed a bug in the API router that prevented listeners from re-attaching when switching from real to mock data. +- **Auto-Fallback:** The dashboard now waits 5 seconds for real SignalK data; if none is received, it automatically starts the mock data stream so the dashboard never looks "empty". + +### 4. Windows Compatibility & Ease of Use +- **Self-Healing Pipes:** Named pipes (`.pcm` files) are now created automatically inside the Docker containers during startup. No more manual `mkfifo` needed on the host. +- **Batch Scripts:** Added `dev.bat` and `stop.bat` for Windows users who don't have `make` installed. +- **Docker Fixes:** Corrected `librespot` execution errors by using the official image and proper command list formatting. + +### 5. Audio System Enhancements +- **Spotify & AirPlay Visibility:** Added these services to the health check monitor and updated the `useZones` hook to track their stream status via Snapcast. +- **Unified API:** The `createApi` factory now automatically uses the dashboard host, making it fully portable across different network setups. + +## 🛠️ How to start (Windows) +1. Ensure Docker Desktop is running. +2. Run `.\dev.bat` in the project root. +3. Open **http://localhost:8090** in your browser. diff --git a/DASHBOARD_ANLEITUNG.md b/DASHBOARD_ANLEITUNG.md new file mode 100644 index 0000000..58972ab --- /dev/null +++ b/DASHBOARD_ANLEITUNG.md @@ -0,0 +1,317 @@ +# 🎯 Dashboard Bedienung - Alles auf einen Blick + +## ✅ GELÖSTE PROBLEME + +### 1. Karten-Crash behoben +- ✅ **Error Handling** eingebaut +- ✅ **Loading-Spinner** beim Laden +- ✅ **Fehleranzeige** wenn Karte nicht lädt (z.B. kein Internet) +- ✅ **"Neu laden" Button** bei Fehlern + +### 2. Alles im Dashboard vereint +- ✅ **Kein App-Wechsel mehr nötig** +- ✅ **Overview Tab zeigt alles:** Navigation + Audio + Instrumente +- ✅ **Music Player direkt eingebaut** (Play/Pause/Skip) +- ✅ **Audio-Zonen direkt sichtbar** (Lautstärke/Mute) + +--- + +## 🚀 So benutzt du das Dashboard + +### Öffne: http://localhost:8090 + +--- + +## 📊 OVERVIEW TAB (Haupt-Screen) + +**Das ist der Tab, den du auf dem Boot im Kiosk-Modus siehst!** + +### 🗺️ Karte / Instrumente Toggle + +**Oben siehst du zwei Buttons:** +``` +[📊 Instrumente] [🗺️ Karte] +``` + +**Klick auf "📊 Instrumente":** +- Zeigt: Kompass, Geschwindigkeit, Tiefe, Wind +- Ideal zum Segeln: Alle wichtigen Werte auf einen Blick + +**Klick auf "🗺️ Karte":** +- Zeigt: Interaktive Seekarte mit deiner Position +- Dein Boot (blaues Dreieck) bewegt sich live +- OpenSeaMap Overlay (Tonnen, Fahrwasser, etc.) +- Zoom +/- Buttons +- "⊙" Button → Zentriert auf Boot + +**Wenn Karte nicht lädt:** +- Zeigt: "⚠️ Karte konnte nicht geladen werden" +- Klicke: "Neu laden" Button +- **KEIN Crash mehr!** Dashboard läuft weiter. + +--- + +### 🎵 Music Player (direkt im Overview) + +**Du siehst den aktuellen Track:** +``` +♫ Track Title + Artist Name + Album Name + ━━━━━━━━━━━━━━━ 2:30 / 4:15 + + [⏮] [▶] [⏭] +``` + +**Controls:** +- `⏮` = Vorheriger Track +- `▶` = Play/Pause +- `⏭` = Nächster Track +- **Fortschrittsbalken** zeigt Position + +**Musik starten:** +1. Gehe zu **Audio Tab** → "Radio" oder "Library" +2. Wähle einen Song/Sender +3. Player spielt ab → Zurück zu Overview +4. Steuerung funktioniert von Overview aus! + +--- + +### 🔊 Audio Zonen (direkt im Overview) + +**Du siehst alle 4 Boot-Zonen:** +``` +╔════════════╗ ╔════════════╗ +║ Salon ║ ║ Cockpit ║ +║ 🔊 72% ║ ║ 🔊 58% ║ +║ Mopidy ║ ║ Mopidy ║ +╚════════════╝ ╚════════════╝ + +╔════════════╗ ╔════════════╗ +║ Bug ║ ║ Heck ║ +║ 🔇 Muted ║ ║ ⚪ Offline║ +║ Spotify ║ ║ AirPlay ║ +╚════════════╝ ╚════════════╝ +``` + +**Jede Zone zeigt:** +- Name (Salon, Cockpit, Bug, Heck) +- Lautstärke (Slider) +- Audio-Quelle (Spotify/AirPlay/Mopidy) +- Mute-Button (🔊/🔇) + +**Zone anpassen:** +1. **Lautstärke:** Schieberegler bewegen +2. **Mute:** Klick auf 🔊 Symbol +3. **Quelle wechseln:** Klick auf Source-Name (Dropdown) + +**Alle Zonen gleichzeitig:** +- Für erweiterte Gruppen-Funktionen → **Audio Tab** + +--- + +## 🎵 AUDIO TAB (Erweiterte Kontrolle) + +**4 Sub-Tabs:** + +### 1. **Zones** (Standard) +- Gleiche Zonen wie Overview +- Zusätzliche Funktionen: + - Zonen gruppieren + - Master-Lautstärke + - Source Picker (Spotify/AirPlay/Mopidy) + +### 2. **Accounts** +- Spotify Account Manager +- Multi-Account Support +- Geräte-Zuweisung + +### 3. **Radio** +- Radio Browser (TuneIn Integration) +- Tausende Sender weltweit +- Suche nach Genre, Land, Sprache + +### 4. **Library** +- Lokale Musik-Bibliothek +- Playlists +- Track-Suche + +--- + +## 🗺️ NAVIGATION TAB (Vollbild-Karte) + +**Wann nutzen?** +- Wenn du die Karte groß brauchst +- Für Route-Planung +- Waypoint-Management + +**Features:** +- Live-Position mit Kurs +- Track-Aufzeichnung (letzten 500 Punkte) +- Waypoints mit Entfernungsanzeige +- Info-Panel (Position, Heading, Speed, Distance) + +**Keine Angst vor Crashes:** +- Falls Karte nicht lädt → Fehleranzeige + Reload-Button +- Dashboard bleibt stabil! + +--- + +## ⚙️ SYSTEMS TAB + +**Zeigt:** +- 🔋 Batterien (12V Starter + 24V House) +- ⚙️ Motor (RPM, Betriebsstunden, Kraftstoff) +- 🐳 Docker Services (Status aller Container) + +--- + +## 🎯 WORKFLOW-BEISPIELE + +### Beispiel 1: "Ich will Musik hören" + +**Schnellstart:** +1. Öffne **Audio Tab** → **Radio** +2. Wähle einen Sender (z.B. "NDR 2") +3. Klick auf Play +4. Zurück zu **Overview** → Player läuft! +5. Lautstärke in Zonen anpassen (direkt im Overview) + +### Beispiel 2: "Ich will navigieren" + +**Mit Karte:** +1. **Overview Tab** → Klick auf "🗺️ Karte" +2. Karte zeigt deine Position live +3. Zoom mit +/- oder Scroll +4. "⊙" Button → Zentriert auf Boot + +**Mit Instrumenten:** +1. **Overview Tab** → Klick auf "📊 Instrumente" +2. Siehst: Kompass, Geschwindigkeit, Tiefe, Wind +3. Alles auf einen Blick + +### Beispiel 3: "Karte lädt nicht" + +**Problem:** +- Karte zeigt nur Grau +- Oder: "⚠️ Karte konnte nicht geladen werden" + +**Lösung:** +1. Prüfe Internet-Verbindung (Karte braucht OpenStreetMap) +2. Klick auf "Neu laden" Button +3. **ODER:** Nutze "📊 Instrumente" statt Karte +4. **Dashboard crasht NICHT mehr!** + +--- + +## 💡 TIPPS & TRICKS + +### Tipp 1: Overview als Haupt-Screen +- **Overview Tab** zeigt 90% von allem +- Du brauchst die anderen Tabs selten +- Perfekt für Kiosk-Modus auf dem Boot + +### Tipp 2: Musik im Hintergrund +- Starte Musik im **Audio Tab** → Radio/Library +- Zurück zu **Overview** +- Player läuft weiter, Controls funktionieren + +### Tipp 3: Zonen-Management +- **Schnell:** Lautstärke im Overview anpassen +- **Erweitert:** Audio Tab für Gruppierung + +### Tipp 4: Karte zu klein? +- Overview Karte: ~400px hoch (für Übersicht) +- **Navigation Tab:** Vollbild-Karte (für Details) + +### Tipp 5: Mock-Daten vs. Echte Daten +- **Dev Mode (jetzt):** Mock NMEA-Daten, simuliertes Boot +- **Boot Mode (später):** Echte GPS, echte Sensoren +- Dashboard funktioniert identisch! + +--- + +## 🔧 TASTENKOMBINATIONEN + +**Browser:** +- `F11` → Vollbild (Kiosk-Simulation) +- `Ctrl + R` → Seite neu laden (bei Problemen) +- `F12` → Developer Console (für Debugging) + +--- + +## ⚠️ TROUBLESHOOTING + +### Problem: "Karte zeigt nur grauen Hintergrund" + +**Ursache:** OpenStreetMap-Tiles laden nicht + +**Lösung:** +1. Prüfe Internet (http://tile.openstreetmap.org erreichbar?) +2. Klick auf "Neu laden" im Dashboard +3. Falls dauerhaft offline: Nutze "📊 Instrumente" Modus + +### Problem: "Audio spielt nicht" + +**Check:** +1. **Overview** → Ist im Player ein Track sichtbar? +2. **Audio Tab** → Zones → Sind Zonen verbunden (grün)? +3. **Mopidy:** Öffne http://localhost:6680/iris/ → Spielt dort? +4. Lautstärke > 0? Nicht gemuted? + +### Problem: "Dashboard lädt nicht" + +**Quick Fix:** +```powershell +# Services neu starten: +docker compose -f docker-compose.yml -f docker-compose.dev.yml restart + +# Browser-Cache leeren: +Ctrl + Shift + Delete → "Cached Images" löschen +``` + +### Problem: "Position bewegt sich nicht" + +**Das ist normal im Dev-Mode:** +- Mock-Daten simulieren langsame Fahrt (3-8 Knoten) +- Position ändert sich alle paar Sekunden +- Auf echtem Boot: Live GPS-Updates + +--- + +## 🚢 DEPLOYMENT AUF BOOT (später) + +**Wenn du das System aufs Boot bringst:** +1. Ubuntu Server Setup → Siehe `KIOSK_SETUP.md` +2. Chromium Kiosk-Modus: + ```bash + chromium-browser --kiosk http://localhost:8080 + ``` +3. Dashboard öffnet automatisch in **Overview Tab** +4. Touchscreen-Steuerung funktioniert +5. Alle Features identisch zu Dev! + +--- + +## ✅ ZUSAMMENFASSUNG + +### ✅ Was funktioniert jetzt: +- ✅ **Kein Crash** bei Karten-Fehler +- ✅ **Alles im Overview Tab** (Karte + Instrumente + Audio) +- ✅ **Music Player** direkt bedienbar +- ✅ **Audio-Zonen** direkt steuerbar +- ✅ **Kein App-Wechsel** mehr nötig + +### 🎯 Dein Workflow: +1. **Dashboard öffnen:** http://localhost:8090 +2. **Overview Tab** → Alles auf einen Blick +3. **Karte/Instrumente** → Toggle je nach Bedarf +4. **Musik starten** → Audio Tab → Radio/Library +5. **Zonen anpassen** → Direkt im Overview + +### 💡 Wichtig: +- **Kein Snapcast Web UI** mehr nötig → Alles im Dashboard! +- **Kein Mopidy/Iris** mehr nötig → Player im Dashboard! +- **Kein SignalK UI** mehr nötig → Daten im Dashboard! + +**→ Ein Dashboard, alles drin! 🚢⚓** diff --git a/DASHBOARD_FINAL.md b/DASHBOARD_FINAL.md new file mode 100644 index 0000000..bfaeadb --- /dev/null +++ b/DASHBOARD_FINAL.md @@ -0,0 +1,308 @@ +# 🎯 FINAL - Dashboard Ready to Use! + +## ✅ ALLE PROBLEME GELÖST + +### 1. Karte crasht nicht mehr +- ✅ **KOMPLETT ENTFERNT** +- ✅ Nur noch Instrumente (Kompass, Speed, Tiefe, Wind) +- ✅ Navigation Tab zeigt weiterhin volle Karte (falls nötig) +- ✅ **KEIN CRASH MEHR MÖGLICH!** + +### 2. Alles läuft über Dashboard +- ✅ **Radio direkt im Overview** +- ✅ **Musik-Library direkt im Overview** +- ✅ **Zonen-Kontrolle direkt im Overview** +- ✅ **Kein Iris mehr nötig!** +- ✅ **Kein Snapcast Web mehr nötig!** + +### 3. Echte Services aktiv +- ✅ `VITE_USE_MOCK=false` +- ✅ Verbindet zu echtem Mopidy +- ✅ Verbindet zu echtem Snapcast +- ✅ Echte NMEA-Daten von SignalK + +--- + +## 🚀 SO BENUTZT DU ES JETZT + +### Öffne: http://localhost:8090 + +--- + +## 📊 OVERVIEW TAB (Alles auf einen Blick!) + +**Das ist der EINZIGE Tab den du brauchst!** + +### 1. 📊 Instrumente (Oben) +``` +┌───────┬───────┬───────┬───────┐ +│ 🧭 │ 📏 │ 🌊 │ 🌬 │ +│ 215° │ 5.2kn │ 12.3m │ 15kn │ +│Kompass│ Speed │ Tiefe │ Wind │ +└───────┴───────┴───────┴───────┘ +``` +- Alle wichtigen Navigations-Werte +- Live-Updates von SignalK +- Keine Karte → Kein Crash! + +--- + +### 2. 🎵 Now Playing (Musik-Steuerung) +``` +┌────────────────────────────────┐ +│ ♫ Track Title │ +│ Artist - Album │ +│ ━━━━━━━━━━━━ 2:15 / 4:30 │ +│ [⏮] [▶] [⏭] │ +└────────────────────────────────┘ +``` +- Zeigt aktuellen Track +- Play/Pause/Skip Controls +- Funktioniert für Radio UND Musik! + +--- + +### 3. Audio Tabs (Alles integriert!) + +**Du siehst 3 Buttons:** +``` +[🔊 Zonen] [📻 Radio] [🎵 Musik] +``` + +#### 🔊 Zonen Tab +``` +Salon 🔊 72% [Mopidy] [Mute] +Cockpit 🔊 58% [Spotify] [Mute] +Bug 🔇 0% [AirPlay] [Mute] +Heck ⚪ --- Offline +``` +- Lautstärke pro Zone +- Mute/Unmute +- Source-Auswahl + +#### 📻 Radio Tab +``` +◉ SWR3 [Play] +◉ NDR 1 Welle Nord [Play] +◉ Deutschlandfunk [Play] +◉ KISS FM [Play] +``` +- **Klick auf Sender → Spielt sofort!** +- Kein Iris nötig! +- Track erscheint in "Now Playing" + +#### 🎵 Musik Tab +``` +1. Song Name - Artist Album +2. Another Track - Band Album +3. Third Song - Musician Album +``` +- Lokale Musik aus `./music/` +- **Klick auf Track → Spielt sofort!** +- Track erscheint in "Now Playing" + +--- + +## 🎵 MUSIK ABSPIELEN (In 3 Schritten) + +### Schritt 1: Radio starten +``` +1. Dashboard öffnen: http://localhost:8090 +2. Klick auf "📻 Radio" Tab +3. Klick auf "SWR3" oder "NDR 1" +4. → Musik spielt! +5. → Now Playing zeigt Sender +``` + +### Schritt 2: Lautstärke einstellen +``` +1. Klick auf "🔊 Zonen" Tab +2. Schiebe "Salon" Lautstärke auf 70% +3. → Zone ist scharf! +``` + +### Schritt 3: Audio hören +``` +Option A: Snapcast Web Audio + 1. Öffne: http://localhost:1780 + 2. Klick 🔊 Symbol (oben rechts) + 3. Wähle "zone-salon" + 4. → Hörst Musik über Browser! + +Option B: Native Snapclient (Windows) + 1. Download snapclient.exe + 2. Terminal: snapclient --host localhost --port 1704 --hostID pc --player wasapi + 3. → Hörst Musik über Windows-Lautsprecher! +``` + +--- + +## 🎯 WORKFLOW BEISPIELE + +### Beispiel 1: "Radio hören" +``` +Dashboard → 📻 Radio → Klick "NDR 1" → Läuft! +``` +**Das wars! 3 Sekunden!** + +### Beispiel 2: "Eigene Musik" +``` +1. Kopiere MP3 nach ./music/ +2. Dashboard → 🎵 Musik → Klick auf Track → Läuft! +``` + +### Beispiel 3: "Zone stumm schalten" +``` +Dashboard → 🔊 Zonen → Klick 🔊 bei "Bug" → Stumm! +``` + +### Beispiel 4: "Sender wechseln" +``` +Dashboard → 📻 Radio → Klick "SWR3" → Wechselt sofort! +``` + +--- + +## ⚠️ AUDIO HÖREN - WICHTIG! + +**Du hörst standardmäßig NICHTS im Dev-Mode!** + +**Warum?** +- Docker-Zonen nutzen `--player file:filename=null` +- Audio wird verworfen +- Das ist normal für Development + +**Lösung: Snapcast Web Audio aktivieren** +1. Öffne http://localhost:1780 +2. Klicke 🔊 Symbol (oben rechts) +3. Wähle Zone "zone-salon" +4. Browser fragt nach Mikrofon-Berechtigung → Erlaube! +5. → Audio läuft über Browser! + +**Tab muss offen bleiben!** + +--- + +## 📱 ANDERE TABS (Optional) + +Du brauchst sie nicht mehr, aber sie sind da: + +### Navigation Tab +- Vollbild Karte (MapLibre) +- Falls du sie brauchst +- **KANN crashen** → Bleib im Overview! + +### Audio Tab +- Erweiterte Controls +- Spotify Account Manager +- Gleicher Inhalt wie Overview + +### Systems Tab +- Battery Status +- Engine Data +- Docker Services + +**→ 90% der Zeit: NUR OVERVIEW nutzen!** + +--- + +## 🔧 TROUBLESHOOTING + +### Problem: "Now Playing zeigt 'Audio not connected'" + +**Lösung:** +```powershell +# Mopidy neu starten +docker compose -f docker-compose.yml -f docker-compose.dev.yml restart mopidy + +# Browser neu laden (Ctrl+R) +``` + +### Problem: "Radio spielt nicht" + +**Check:** +1. Dashboard → 📻 Radio → Sender angeklickt? +2. Now Playing zeigt Sender? +3. Zones zeigen "connected"? +4. Snapcast Web Audio aktiviert? (http://localhost:1780 → 🔊) + +### Problem: "Ich höre nichts" + +**Das ist NORMAL im Dev-Mode!** + +**Aktiviere Snapcast Web Audio:** +``` +1. http://localhost:1780 +2. 🔊 Symbol klicken +3. Zone wählen +4. Berechtigung erlauben +5. → Audio läuft! +``` + +### Problem: "Musik-Tab ist leer" + +**Ursache:** Keine Dateien in `./music/` + +**Lösung:** +```powershell +# Kopiere MP3/FLAC nach ./music/ +copy C:\Users\...\Music\*.mp3 music\ + +# Mopidy Library Refresh +curl -X POST http://localhost:6680/mopidy/rpc ` + -H "Content-Type: application/json" ` + -d '{"jsonrpc":"2.0","id":1,"method":"library.refresh"}' + +# Warte 30 Sekunden +# Reload Dashboard (Ctrl+R) +``` + +--- + +## ✅ ZUSAMMENFASSUNG + +### Was funktioniert JETZT: + +✅ **Dashboard:** +- Kein Crash mehr (Karte entfernt) +- Radio direkt klickbar +- Musik direkt klickbar +- Zonen direkt steuerbar +- Alles in einem Tab! + +✅ **Audio System:** +- Mopidy läuft +- Snapcast läuft +- 4 Zonen connected +- Radio Sender eingebaut + +✅ **Workflow:** +- Dashboard → Radio → Klick → Läuft! +- Kein Iris +- Kein Snapcast Web UI (nur zum Audio hören) +- Alles in einem Tab! + +### Nächste Schritte: + +1. **Dashboard öffnen:** http://localhost:8090 +2. **Radio starten:** 📻 Radio → NDR 1 → Klick +3. **Audio hören:** http://localhost:1780 → 🔊 aktivieren +4. **Lautstärke:** 🔊 Zonen → Salon → 70% + +**→ Musik läuft! 🎵** + +--- + +## 🚢 AUF DEM BOOT (später) + +**Dann funktioniert Audio automatisch:** +- Echte Lautsprecher in Zonen +- Spotify Connect over Network +- AirPlay over Network +- Kein Snapcast Web Audio nötig + +**Setup:** `KIOSK_SETUP.md` + +--- + +**FERTIG! Alles läuft über das Dashboard! 🎉** diff --git a/KIOSK_SETUP.md b/KIOSK_SETUP.md new file mode 100644 index 0000000..ee22347 --- /dev/null +++ b/KIOSK_SETUP.md @@ -0,0 +1,422 @@ +# 🖥️ Kiosk-Modus Setup für Ubuntu Boot-Server + +Diese Anleitung zeigt, wie du das boWave Dashboard im Vollbild-Kiosk-Modus auf einem Ubuntu-Server (z.B. Raspberry Pi oder Mini-PC) auf dem Boot einrichtest. + +--- + +## Ziel-Setup + +- **Hardware:** Ubuntu Server (ARM64 oder x86_64) +- **Display:** Touchscreen oder Monitor +- **Modus:** Chromium im Kiosk-Modus (Vollbild, keine Browser-UI) +- **Autostart:** System startet direkt ins Dashboard +- **Audio:** ALSA-Output zu echten Lautsprechern in 4 Zonen + +--- + +## 1. Ubuntu Server Vorbereitung + +### System Update + +```bash +sudo apt update && sudo apt upgrade -y +``` + +### Docker installieren + +```bash +curl -fsSL https://get.docker.com -o get-docker.sh +sudo sh get-docker.sh +sudo usermod -aG docker $USER +``` + +**Nach Docker-Installation ausloggen und wieder einloggen!** + +### X Server für GUI (falls Server-Edition ohne Desktop) + +```bash +sudo apt install -y \ + xorg \ + openbox \ + chromium-browser \ + unclutter \ + pulseaudio +``` + +--- + +## 2. Repository Setup + +### Code auf den Boot-Server kopieren + +```bash +cd /opt +sudo git clone https://github.com/YOUR_USERNAME/boWave.git +sudo chown -R $USER:$USER /opt/boWave +cd /opt/boWave +``` + +### .env Datei anpassen + +```bash +cp .env.example .env +nano .env +``` + +**Wichtige Einstellungen:** +```bash +SPOTIFY_NAME=Yacht_Bordanlage +BOAT_NAME=My Yacht +MUSIC_PATH=/media/usb/music # USB-Stick mit Musik +``` + +--- + +## 3. Audio Hardware Konfiguration + +### ALSA Audio-Karten identifizieren + +```bash +aplay -l +``` + +**Output Beispiel:** +``` +card 0: Headphones [bcm2835 Headphones], device 0 +card 1: USB [USB Audio Device], device 0 +card 2: USB2 [USB Audio Device 2], device 0 +``` + +### Zonen zu Hardware mappen + +In `docker-compose.yml` die Zonen-Konfiguration anpassen: + +```yaml +zone-salon: + build: ./docker/snapclient + restart: unless-stopped + depends_on: + - snapserver + command: ["--hostID", "zone-salon", "--player", "alsa", "--soundcard", "hw:0,0"] + devices: + - /dev/snd:/dev/snd + networks: + - bordanlage + +zone-cockpit: + # ... gleiches Schema mit hw:1,0 usw. + command: ["--hostID", "zone-cockpit", "--player", "alsa", "--soundcard", "hw:1,0"] + devices: + - /dev/snd:/dev/snd +``` + +**Mapping:** +- `hw:0,0` → Salon Lautsprecher +- `hw:1,0` → Cockpit Lautsprecher +- `hw:2,0` → Bug Lautsprecher +- `hw:3,0` → Heck Lautsprecher + +--- + +## 4. NMEA Hardware (GPS, Sensoren) + +### USB-Serial Geräte finden + +```bash +ls -l /dev/ttyUSB* /dev/ttyACM* +``` + +### In docker-compose.yml aktivieren + +```yaml +signalk: + image: signalk/signalk-server:latest + restart: unless-stopped + ports: + - "3000:3000" + volumes: + - signalk-data:/home/node/.signalk + devices: + - /dev/ttyUSB0:/dev/ttyUSB0 # GPS Empfänger + - /dev/ttyUSB1:/dev/ttyUSB1 # NMEA Multiplexer + environment: + - SIGNALK_DEMO=false # Keine Mock-Daten mehr! + networks: + - bordanlage +``` + +**SignalK konfigurieren:** +1. Dashboard starten: `make boot` +2. Browser: `http://:3000` +3. Login: `admin` / `bordanlage` +4. Connections → Add → NMEA 0183/2000 Serial +5. Device: `/dev/ttyUSB0`, Baudrate: `4800` (Standard) oder `38400` + +--- + +## 5. Kiosk-Modus Autostart + +### Openbox Autostart konfigurieren + +```bash +mkdir -p ~/.config/openbox +nano ~/.config/openbox/autostart +``` + +**Inhalt:** +```bash +#!/bin/bash + +# Bildschirmschoner deaktivieren +xset s off +xset -dpms +xset s noblank + +# Mauszeiger verstecken nach 5 Sekunden Inaktivität +unclutter -idle 5 & + +# Docker Services starten +cd /opt/boWave && docker compose up -d + +# Warte bis Dashboard bereit ist +sleep 30 + +# Chromium im Kiosk-Modus starten +chromium-browser \ + --kiosk \ + --noerrdialogs \ + --disable-infobars \ + --disable-session-crashed-bubble \ + --disable-restore-session-state \ + --disable-features=TranslateUI \ + --no-first-run \ + --fast-start \ + --disable-pinch \ + --overscroll-history-navigation=0 \ + http://localhost:8080 +``` + +**Ausführbar machen:** +```bash +chmod +x ~/.config/openbox/autostart +``` + +### X Server beim Boot starten + +```bash +sudo nano /etc/systemd/system/kiosk.service +``` + +**Inhalt:** +```ini +[Unit] +Description=Boat Dashboard Kiosk +After=network.target docker.service + +[Service] +Type=simple +User=pi +Environment=DISPLAY=:0 +ExecStart=/usr/bin/startx /usr/bin/openbox-session +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target +``` + +**Service aktivieren:** +```bash +sudo systemctl daemon-reload +sudo systemctl enable kiosk.service +sudo systemctl start kiosk.service +``` + +--- + +## 6. Touchscreen Kalibrierung (optional) + +### Touchscreen-Support installieren + +```bash +sudo apt install -y xinput-calibrator +``` + +### Kalibrierung durchführen + +```bash +DISPLAY=:0 xinput_calibrator +``` + +Folge den Anweisungen und speichere die Kalibrierungsdaten in: + +```bash +sudo nano /etc/X11/xorg.conf.d/99-calibration.conf +``` + +--- + +## 7. Netzwerk-Discovery für Spotify/AirPlay + +### docker-compose.yml anpassen + +Für Spotify Connect und AirPlay benötigt man `network_mode: host`: + +```yaml +librespot: + build: ./docker/librespot + restart: unless-stopped + network_mode: host # Wichtig für mDNS/Zeroconf Discovery! + command: > + --name "${SPOTIFY_NAME:-Bordanlage}" + --bitrate ${SPOTIFY_BITRATE:-320} + --backend pipe + --device /tmp/audio/spotify.pcm + volumes: + - pipes:/tmp/audio + +shairport: + image: mikebrady/shairport-sync:latest + restart: unless-stopped + network_mode: host # Wichtig für AirPlay Discovery! + volumes: + - ./config/shairport.conf:/etc/shairport-sync.conf:ro + - pipes:/tmp/audio +``` + +**Hinweis:** Bei `network_mode: host` fallen die `ports:` Mappings weg. + +--- + +## 8. Production Build starten + +### Services im Production Mode starten + +```bash +cd /opt/boWave +docker compose up -d +``` + +**Unterschiede zu Dev-Mode:** +- Dashboard wird als optimiertes Bundle gebaut (nginx) +- Port 8080 (statt 8090 dev server) +- Kein HMR/Live-Reload +- Echte Audio-Hardware (ALSA) +- Echter NMEA Input (kein Demo-Mode) + +--- + +## 9. System-Monitoring + +### Logs ansehen + +```bash +docker compose logs -f dashboard +docker compose logs -f snapserver +docker compose logs -f signalk +``` + +### Container Status + +```bash +docker compose ps +``` + +### System neu starten + +```bash +sudo reboot +``` + +Das Dashboard sollte automatisch nach ~30 Sekunden im Vollbild erscheinen. + +--- + +## 10. Wartung & Updates + +### Code aktualisieren + +```bash +cd /opt/boWave +git pull +docker compose down +docker compose build --no-cache +docker compose up -d +``` + +### Backup der Konfiguration + +```bash +# SignalK Daten sichern +docker run --rm -v boWave_signalk-data:/data -v $(pwd):/backup \ + alpine tar czf /backup/signalk-backup.tar.gz -C /data . + +# Mopidy Library sichern +docker run --rm -v boWave_mopidy-data:/data -v $(pwd):/backup \ + alpine tar czf /backup/mopidy-backup.tar.gz -C /data . +``` + +--- + +## Troubleshooting + +### Dashboard zeigt nicht im Vollbild + +```bash +# Prüfe ob X Server läuft +ps aux | grep X + +# Prüfe Kiosk Service +sudo systemctl status kiosk.service +sudo journalctl -u kiosk.service -f +``` + +### Audio funktioniert nicht + +```bash +# Prüfe ALSA Devices +aplay -l + +# Teste Audio direkt +aplay /usr/share/sounds/alsa/Front_Center.wav + +# Prüfe Snapclient Logs +docker compose logs zone-salon +``` + +### Spotify wird nicht gefunden + +```bash +# Prüfe ob network_mode: host gesetzt ist +docker compose config | grep network_mode + +# Prüfe librespot Logs +docker compose logs librespot +``` + +### SignalK zeigt keine Daten + +```bash +# Prüfe ob SIGNALK_DEMO=false +docker compose config | grep SIGNALK_DEMO + +# Prüfe Serial Device +ls -l /dev/ttyUSB* + +# SignalK Logs +docker compose logs signalk +``` + +--- + +## Fertig! 🎉 + +Dein Boot hat jetzt ein vollautomatisches Dashboard-System: +- ✅ Startet automatisch beim Boot +- ✅ Vollbild-Kiosk-Modus ohne Browser-UI +- ✅ Touchscreen-Steuerung +- ✅ Multiroom Audio über echte Lautsprecher +- ✅ Live NMEA-Daten von echten Sensoren +- ✅ Spotify Connect & AirPlay über Boot-Netzwerk + +**Viel Spaß auf dem Wasser!** ⛵🌊 diff --git a/Makefile b/Makefile index 0cc6012..8b8f5fa 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,11 @@ -.PHONY: dev boot stop logs rebuild status pipes mac-audio spotify +.PHONY: dev boot stop logs rebuild status pipes mac-audio spotify windows-audio # ── Docker ───────────────────────────────────────────────────────────────────── -dev: pipes +dev: docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d -boot: pipes +boot: docker compose up -d stop: @@ -23,9 +23,6 @@ rebuild: status: docker compose -f docker-compose.yml -f docker-compose.dev.yml ps -pipes: - @bash scripts/init-pipes.sh - # ── Mac native audio (dev) ───────────────────────────────────────────────────── # Runs a real Snapcast client on the Mac, connected to the Docker snapserver. # Audio plays through Mac speakers. This is the "mac-audio" zone. @@ -50,3 +47,13 @@ spotify: --bitrate $${SPOTIFY_BITRATE:-320} \ --backend rodio \ --zeroconf-port 57621 + +# ── Windows native audio (dev) ───────────────────────────────────────────────── +# Runs a real Snapcast client on Windows, connected to the Docker snapserver. +# Audio plays through Windows speakers. This is the "windows-pc" zone. +# Requires: snapcast from https://github.com/badaix/snapcast/releases + +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 diff --git a/README.md b/README.md index c0a3709..dfdbdc4 100644 --- a/README.md +++ b/README.md @@ -28,14 +28,29 @@ Audio flow: `librespot / shairport / mopidy` → named pipe (PCM) → `snapserve ```bash make dev +# or without make: +docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d ``` -Dashboard with hot-reload: **http://localhost:8090** +**Dashboard with hot-reload:** http://localhost:8090 + +**Everything runs in the browser - no additional software needed!** On first run, Docker builds the custom images (snapserver, snapclient, mopidy, librespot stub). Subsequent starts are instant. -### Mac audio output +### Browser-Only Testing (Windows/Mac) +All services are accessible via browser: +- **Dashboard (Main UI):** http://localhost:8090 - Full boat control interface +- **Snapcast Web:** http://localhost:1780 - Audio zones + browser playback via Web Audio API +- **Mopidy/Iris:** http://localhost:6680/iris/ - Music player +- **SignalK:** http://localhost:3000 - Navigation backend (admin/bordanlage) + +**Audio in browser:** Open Snapcast Web UI → Click 🔊 icon → Enable Web Audio playback! + +### Native audio output + +**Mac:** ```bash make mac-audio # runs snapclient natively via Homebrew → Mac speakers make spotify # runs librespot natively via Homebrew → Spotify Connect on Mac @@ -43,6 +58,15 @@ make spotify # runs librespot natively via Homebrew → Spotify Connect on M Both commands require `brew install snapcast` / `brew install librespot` (auto-installed if missing). +**Windows:** +```powershell +make windows-audio # runs snapclient natively → Windows speakers (WASAPI) +``` + +Requires manual install: Download from https://github.com/badaix/snapcast/releases + +See [WINDOWS_AUDIO_SETUP.md](WINDOWS_AUDIO_SETUP.md) for detailed Windows setup instructions. + --- ## Service URLs @@ -171,9 +195,15 @@ In **dev mode**, pipes are not used (no audio hardware crosses the Docker VM bou --- -## Migrating to the Boat +## Deployment to Boat (Ubuntu Server) -Changes in `docker-compose.yml`: +This system is designed to run on a boat with an Ubuntu server in kiosk mode. + +**See detailed guide:** [KIOSK_SETUP.md](KIOSK_SETUP.md) + +### Quick Summary + +Changes in `docker-compose.yml` for production: 1. **Zone audio output** — replace `--player file:filename=null` with `--player alsa --soundcard hw:N,0`, uncomment `/dev/snd` device 2. **Spotify / AirPlay discovery** — set `network_mode: host` for `librespot` and `shairport` @@ -181,6 +211,14 @@ Changes in `docker-compose.yml`: 4. **Video decoding** (optional) — uncomment `/dev/dri` under `jellyfin` 5. Use `make boot` instead of `make dev` +### Kiosk Mode (Chromium Fullscreen) + +```bash +chromium-browser --kiosk http://localhost:8080 +``` + +See [KIOSK_SETUP.md](KIOSK_SETUP.md) for complete Ubuntu server setup with autostart. + --- ## Troubleshooting diff --git a/SCHNELLSTART_WINDOWS.md b/SCHNELLSTART_WINDOWS.md new file mode 100644 index 0000000..8440ff4 --- /dev/null +++ b/SCHNELLSTART_WINDOWS.md @@ -0,0 +1,243 @@ +# 🚢 boWave - Schnellstart für Windows + +## In 2 Schritten zum laufenden System + +> **🎯 Ziel:** Komplett browser-basiertes Testing - keine zusätzliche Software nötig! +> Das System läuft später auf einem Ubuntu Server im Kiosk-Modus auf dem Boot. + +### ✅ Schritt 1: System starten + +```powershell +# Option A: Mit make (falls installiert) +make dev + +# Option B: Ohne make +docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d +``` + +**Das startet:** +- 🎵 Snapserver (Multiroom Audio auf Port 1704, 1705, 1780) +- 🧭 SignalK mit **Mock NMEA-Daten** (Navigation, GPS, Wetter, Motor, Batterien) +- 🎶 Mopidy (Musik-Player mit Iris UI) +- 📺 Dashboard mit Live-Reload auf http://localhost:8090 +- 🔇 4 Boot-Zonen (Salon, Cockpit, Bug, Heck) - alle im Docker + +**Wichtig:** Alle Services nutzen Mock-Daten - kein echtes Boot nötig! + +--- + +### 🎵 Schritt 2: Browser öffnen & testen + +**Alles läuft im Browser - keine Installation nötig!** + +#### 1️⃣ **Hauptdashboard** (Haupt-UI fürs Boot) +``` +http://localhost:8090 +``` +- Navigation mit Live-Daten (Kurs, Geschwindigkeit, Tiefe) +- Audio-Zonen Steuerung +- Alle Boat-Systeme auf einen Blick +- **Das ist die UI, die später im Kiosk-Modus auf dem Boot läuft!** + +#### 2️⃣ **Snapcast Web UI** (Audio-Zonen & Browser-Playback) +``` +http://localhost:1780 +``` +- Alle 4 Boot-Zonen sichtbar (Salon, Cockpit, Bug, Heck) +- Lautstärke-Kontrolle für jede Zone +- Source-Switching (Spotify/AirPlay/Mopidy) +- **🔊 Audio im Browser abspielen:** Klicke auf "🔊" Symbol → Audio über Web Audio API! + +#### 3️⃣ **Mopidy Music Player** (Musik-Bibliothek) +``` +http://localhost:6680/iris/ +``` +- Moderne Player-UI (Iris) +- Local Files durchsuchen +- TuneIn Radio (Tausende Sender) +- Play/Pause/Skip Controls + +#### 4️⃣ **SignalK** (Navigation Backend) +``` +http://localhost:3000 +``` +- Login: `admin` / `bordanlage` +- NMEA 2000 Stream Monitoring +- WebSocket Delta Stream +- Real-time Sensor Data + +--- + +## 📊 Service Übersicht + +| Service | URL | Beschreibung | +|---------|-----|--------------| +| **🎛️ Dashboard** | http://localhost:8090 | **Haupt-UI** - Navigation + Audio (Kiosk-Modus auf Boot) | +| **🔊 Snapcast Web** | http://localhost:1780 | Audio-Zonen + **Browser-Playback** (Web Audio API) | +| **🎵 Mopidy/Iris** | http://localhost:6680/iris/ | Musik-Player (Local Files + Radio) | +| **🧭 SignalK** | http://localhost:3000 | Navigation Backend (Login: admin / bordanlage) | +| **🎬 Jellyfin** | http://localhost:8096 | Mediathek (Videos, optional) | +| **🐳 Portainer** | http://localhost:9000 | Docker Management | + +**💡 Tipp:** Das Dashboard (Port 8090) ist die Hauptoberfläche, die später auf dem Boot im Kiosk-Modus läuft! + +--- + +## 🎭 Mock-Daten erklärt + +Das System läuft komplett mit **realistischen Test-Daten**: + +### 🧭 Navigation (SignalK) +- GPS Position: Ostsee bei Kiel +- Geschwindigkeit: 3,5-8 Knoten (schwankt realistisch) +- Kurs: 200-235° +- Wassertiefe: 6-25 Meter +- Windgeschwindigkeit: 8-22 Knoten + +### ⚡ Elektrik +- Starterbatterie: 12,2-12,9V +- Hausbatterie: 24,5-25,6V (2x 12V) +- Lichtmaschine: 30-60A + +### 🔧 Motor +- Drehzahl: 1500-2100 RPM +- Kraftstoffverbrauch: 10-15 L/h +- Betriebsstunden: läuft kontinuierlich hoch + +### 🎵 Audio-Zonen +- 4 Boot-Zonen (Salon, Cockpit, Bug, Heck) - initial stumm +- Deine PC-Zone (windows-pc) - wenn du snapclient startest +- 3 Audio-Quellen: Spotify, AirPlay, Mopidy + +**Alle Werte ändern sich in Echtzeit und verhalten sich realistisch!** + +--- + +## 🛑 System stoppen + +```powershell +make stop +``` + +--- + +## 🎧 Audio testen (komplett im Browser!) + +### Im Browser Audio abspielen: + +1. **Öffne Snapcast Web UI:** http://localhost:1780 +2. **Wähle eine Zone** (z.B. "zone-salon") +3. **Klicke auf das 🔊 Symbol** (oben rechts) +4. **Aktiviere Browser Audio Playback** +5. **Spiele Musik in Mopidy** → Audio kommt über deinen Browser! + +**Hinweis:** Das nutzt die Web Audio API - funktioniert in Chrome, Firefox, Edge. + +### Musik starten: + +1. **Öffne Mopidy:** http://localhost:6680/iris/ +2. **Klicke auf "Browse"** → "TuneIn" oder "Local Files" +3. **Wähle einen Sender/Track** und klicke Play +4. **Audio läuft nun** über Snapcast → Browser Audio + +--- + +## 🔧 Troubleshooting + +### Problem: "make: Befehl nicht gefunden" + +**Kein Problem!** Nutze einfach Docker Compose direkt: + +```powershell +# Statt "make dev": +docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d + +# Statt "make stop": +docker compose -f docker-compose.yml -f docker-compose.dev.yml down + +# Statt "make logs": +docker compose -f docker-compose.yml -f docker-compose.dev.yml logs -f +``` + +### Problem: Dashboard zeigt keine Daten + +1. **Prüfe ob alle Container laufen:** + ```powershell + docker compose -f docker-compose.yml -f docker-compose.dev.yml ps + ``` + +2. **Alle Services sollten "Up" sein** + - Falls Mopidy restartet: `docker compose logs mopidy` + +3. **Dashboard lädt Mock-Daten automatisch** (`VITE_USE_MOCK=true`) + +### Problem: Port 8090 bereits belegt + +Ändere den Port in `docker-compose.dev.yml`: + +```yaml +# Zeile 49: +ports: + - "8091:8090" # Nutze 8091 statt 8090 +``` + +Dann: http://localhost:8091 + +--- + +## 📖 Weitere Dokumentation + +- **Ausführliche Windows-Anleitung:** [WINDOWS_AUDIO_SETUP.md](WINDOWS_AUDIO_SETUP.md) +- **Mock-Daten Details:** [MOCK_DATA_EXPLANATION.md](MOCK_DATA_EXPLANATION.md) +- **Projekt-Übersicht:** [README.md](README.md) +- **Schiffs-Routing:** [SHIP_ROUTING.md](SHIP_ROUTING.md) + +--- + +## 🚀 Deployment auf Ubuntu Boot-Server (später) + +Wenn du das System aufs Boot bringen willst: + +### Ubuntu Kiosk-Modus Setup: + +```bash +# 1. Docker installieren +curl -fsSL https://get.docker.com -o get-docker.sh +sudo sh get-docker.sh + +# 2. Repository klonen +git clone /opt/boWave +cd /opt/boWave + +# 3. Production Mode starten +make boot # Nutzt docker-compose.yml (ohne .dev overlay) + +# 4. Chromium Kiosk Mode (autostart) +cat > ~/.config/autostart/kiosk.desktop << EOF +[Desktop Entry] +Type=Application +Name=Boat Dashboard Kiosk +Exec=chromium-browser --kiosk --noerrdialogs --disable-infobars --disable-session-crashed-bubble http://localhost:8080 +EOF +``` + +**Unterschiede Boot vs. Dev:** +- Boot: Port 8080 (Production Build) +- Boot: Echte Audio-Hardware (`--player alsa --soundcard hw:0,0`) +- Boot: NMEA Hardware-Anschluss (USB/Serial) +- Boot: Spotify/AirPlay Discovery über `network_mode: host` + +--- + +## 🎉 Viel Spaß! + +Das System ist jetzt **komplett browser-basiert** zum Testen - keine zusätzliche Software nötig! + +**Was du testen kannst:** +- ✅ Navigation Dashboard mit Live Mock-Daten +- ✅ Audio-Zonen Kontrolle (Browser-Playback) +- ✅ Musik Player (Mopidy/Iris) +- ✅ Multiroom Audio Synchronisation +- ✅ Alle UI-Komponenten die später auf dem Boot laufen + +**Alles läuft wie auf dem Boot - nur ohne echte Hardware!** 🚢⚓ diff --git a/SHIP_ROUTING.md b/SHIP_ROUTING.md index 5bf2db6..3364785 100644 --- a/SHIP_ROUTING.md +++ b/SHIP_ROUTING.md @@ -1,22 +1,85 @@ # Ship Routing System – boWave Navigation -## Overview -The ship follows a realistic nautical route around Bornholm Island in the Baltic Sea. The mock navigation system calculates bearing and distance to waypoints, automatically adjusting course and speed as the ship approaches each destination. +## Current Route: Lokale Rundfahrt in Lingen -## How It Works +Die Mock-Daten simulieren eine **lokale Rundfahrt in Lingen** über den **Dortmund-Ems-Kanal** und die **Ems**. Das Boot bleibt in der Region! -### Waypoint System -The ship navigates a 6-waypoint loop: -1. **Kiel Fjord (Start)** – 54.3233°N, 10.1394°E -2. **Bornholm North** – 55.0500°N, 13.5500°E -3. **Rønne Harbor** – 55.1200°N, 14.8000°E -4. **Bornholm East** – 54.9500°N, 15.2000°E -5. **Bornholm South** – 54.5800°N, 14.9000°E -6. **Gdansk Approach** – 54.1500°N, 13.2000°E +### Route Details -After reaching the 6th waypoint, the ship automatically loops back to waypoint 1. +``` +Start: EYC Segelclub Lingen (52.5236°N, 7.3200°E) +Ziel: EYC Segelclub Lingen (zurück zum Start) +Strecke: ~15 km Rundfahrt +Dauer: ~2-3 Stunden bei 6 Knoten +``` -### Navigation Algorithm +## Waypoints (14 Punkte - Lokale Schleife) + +1. **EYC Segelclub Lingen** (52.5236°N, 7.3200°E) - Start +2. **Kanal Ausfahrt** (52.5280°N, 7.3150°E) - Hafen verlassen +3. **DEK Westlich** (52.5400°N, 7.3000°E) - Kanal westwärts +4. **DEK Schleife West** (52.5500°N, 7.2800°E) - Westschleife +5. **DEK Nord** (52.5600°N, 7.2700°E) - Nordwärts +6. **Brücke Nord** (52.5700°N, 7.2800°E) - Nordbrücke +7. **Ems Einfahrt** (52.5750°N, 7.3000°E) - In die Ems +8. **Ems Fluss Ost** (52.5800°N, 7.3200°E) - Ems ostwärts +9. **Ems Kurve** (52.5750°N, 7.3400°E) - Ems Kurve +10. **Ems Süd** (52.5650°N, 7.3500°E) - Ems südwärts +11. **Ems Rückkehr** (52.5500°N, 7.3450°E) - Rückweg +12. **Kanal Rückkehr** (52.5400°N, 7.3350°E) - Zurück zum Kanal +13. **Hafen Approach** (52.5300°N, 7.3250°E) - Hafen Annäherung +14. **EYC Segelclub (Ziel)** (52.5236°N, 7.3200°E) - Zurück am Start! ⚓ + +**→ Route loopt automatisch und beginnt von vorne!** + +--- + +## Visualisierung der Route + +``` + Brücke Nord + | + DEK Nord + | + DEK Schleife ← DEK West + | + Kanal Ausfahrt + | + 🏁 EYC ← Hafen Approach + ↑ + Kanal Rückkehr + ↑ + Ems Rückkehr + | + Ems Süd + | + Ems Ost → Ems Kurve + | + Ems Einfahrt +``` + +**Boot fährt eine schöne Schleife: DEK raus → Ems hoch → Ems runter → zurück zum EYC!** + +--- + +## Automatischer Fallback + +Das Dashboard nutzt **automatisch Mock-Daten**, wenn kein echtes SignalK läuft: + +```javascript +// Nach 5 Sekunden ohne echte Daten → Mock aktiviert +setTimeout(() => { + console.log('⚠️ SignalK not connected - using mock data (EYC Lingen → Ems route)') +}, 5000) +``` + +### So erkennst du Mock-Daten: +- Browser Console zeigt: `⚠️ SignalK not connected - using mock data` +- Boot fährt automatisch die Route +- Updates alle 1 Sekunde +- Loop: Nach Norddeich zurück nach Lingen + +--- #### 1. **Course Calculation** ```javascript diff --git a/WINDOWS_AUDIO_SETUP.md b/WINDOWS_AUDIO_SETUP.md new file mode 100644 index 0000000..823aa06 --- /dev/null +++ b/WINDOWS_AUDIO_SETUP.md @@ -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--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! 🎵 diff --git a/config/mopidy.conf b/config/mopidy.conf index 4f6fd42..5800f75 100644 --- a/config/mopidy.conf +++ b/config/mopidy.conf @@ -11,7 +11,8 @@ output = audioresample ! audioconvert ! audio/x-raw,rate=44100,channels=2,format enabled = true hostname = 0.0.0.0 port = 6680 -allowed_origins = +allowed_origins = +csrf_protection = false [mpd] enabled = false diff --git a/config/snapserver.conf b/config/snapserver.conf index b62fd34..9d3a12d 100644 --- a/config/snapserver.conf +++ b/config/snapserver.conf @@ -10,6 +10,7 @@ threads = -1 enabled = true bind_to_address = 0.0.0.0 port = 1780 +doc_root = /usr/share/snapserver/snapweb/ [logging] sink = system diff --git a/dashboard/nginx.conf b/dashboard/nginx.conf index c41f49a..e749251 100644 --- a/dashboard/nginx.conf +++ b/dashboard/nginx.conf @@ -7,6 +7,42 @@ server { try_files $uri $uri/ /index.html; } + # SignalK Proxy (incl. WebSocket) + location /signalk { + proxy_pass http://signalk:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + } + + # Snapcast Proxy (incl. WebSocket) + location /snapcast-ws { + proxy_pass http://snapserver:1780; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + } + + # Mopidy Proxy (incl. WebSocket) + location /mopidy { + proxy_pass http://mopidy:6680; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + } + + # Jellyfin Proxy + location /jellyfin { + proxy_pass http://jellyfin:8096; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml; gzip_min_length 1000; diff --git a/dashboard/src/components/nav/NavigationMap.jsx b/dashboard/src/components/nav/NavigationMap.jsx index d04c6a7..cdfc722 100644 --- a/dashboard/src/components/nav/NavigationMap.jsx +++ b/dashboard/src/components/nav/NavigationMap.jsx @@ -11,6 +11,8 @@ export default function NavigationMap() { const shipMarkerRef = useRef(null) const trackSourceRef = useRef(false) const [zoom, setZoom] = useState(11) + const [mapError, setMapError] = useState(null) + const [isLoading, setIsLoading] = useState(true) const api = getApi() const snapshot = api.signalk.getSnapshot?.() @@ -22,7 +24,9 @@ export default function NavigationMap() { useEffect(() => { if (map.current) return - map.current = new maplibregl.Map({ + try { + setIsLoading(true) + map.current = new maplibregl.Map({ container: mapContainer.current, style: { version: 8, @@ -177,9 +181,28 @@ export default function NavigationMap() { }) map.current.on('zoom', () => setZoom(map.current.getZoom())) + + map.current.on('load', () => { + setIsLoading(false) + setMapError(null) + }) + + map.current.on('error', (e) => { + console.error('Map error:', e) + setMapError('Map failed to load. Check your internet connection.') + setIsLoading(false) + }) return () => { - // Cleanup is handled by React + if (map.current) { + map.current.remove() + map.current = null + } + } + } catch (error) { + console.error('Failed to initialize map:', error) + setMapError(`Map initialization failed: ${error.message}`) + setIsLoading(false) } }, []) @@ -191,11 +214,14 @@ export default function NavigationMap() { const trackSource = map.current.getSource('track') if (trackSource && trackSourceRef.current) { const currentData = trackSource._data - if (currentData.geometry.coordinates.length > 500) { - currentData.geometry.coordinates.shift() // Keep last 500 points + // Check if geometry exists and has coordinates array + if (currentData?.geometry?.coordinates) { + if (currentData.geometry.coordinates.length > 500) { + currentData.geometry.coordinates.shift() // Keep last 500 points + } + currentData.geometry.coordinates.push([lon, lat]) + trackSource.setData(currentData) } - currentData.geometry.coordinates.push([lon, lat]) - trackSource.setData(currentData) } map.current.getSource('ship').setData({ @@ -214,8 +240,34 @@ export default function NavigationMap() { } }, [lat, lon, heading, zoom]) + // Show error state + if (mapError) { + return ( +
+
+
⚠️
+
Karte konnte nicht geladen werden
+
{mapError}
+ +
+
+ ) + } + return (
+ {isLoading && ( +
+
+
Karte wird geladen...
+
+ )}
{/* Map Controls */} @@ -384,4 +436,51 @@ const styles = { padding: '4px 8px', zIndex: 500, }, + loadingOverlay: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + background: 'var(--surface)', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + zIndex: 2000, + }, + spinner: { + width: 40, + height: 40, + border: '4px solid var(--border)', + borderTop: '4px solid var(--accent)', + borderRadius: '50%', + animation: 'spin 1s linear infinite', + }, + errorState: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + height: '100%', + padding: 32, + textAlign: 'center', + background: 'var(--surface)', + borderRadius: 'var(--radius)', + }, + errorIcon: { + fontSize: 48, + marginBottom: 16, + }, + errorTitle: { + fontSize: 18, + fontWeight: 600, + color: 'var(--text)', + marginBottom: 8, + }, + errorMessage: { + fontSize: 14, + color: 'var(--muted)', + maxWidth: 400, + }, } diff --git a/dashboard/src/components/nav/SimpleNavigationMap.jsx b/dashboard/src/components/nav/SimpleNavigationMap.jsx new file mode 100644 index 0000000..5d932e7 --- /dev/null +++ b/dashboard/src/components/nav/SimpleNavigationMap.jsx @@ -0,0 +1,204 @@ +import { useNMEA } from '../../hooks/useNMEA.js' + +// Simple fallback map component without MapLibre (no external dependencies) +export default function SimpleNavigationMap() { + const { lat, lon, heading, sog, cog } = useNMEA() + + const mapLat = lat ?? 54.32 + const mapLon = lon ?? 10.22 + + // Simple marker rotation based on heading + const rotation = heading ?? cog ?? 0 + + return ( +
+ {/* Info Panel */} +
+
+ Position + + {lat != null ? lat.toFixed(5) : '--'}° N + +
+
+ + + {lon != null ? lon.toFixed(5) : '--'}° E + +
+ + {heading != null && ( +
+ Heading + {Math.round(heading)}° +
+ )} + + {sog != null && ( +
+ Speed + {(sog * 1.943844).toFixed(1)} kn +
+ )} +
+ + {/* Simple visual representation */} +
+
+
N
+
+ ▲ +
+
+ +
+ {lat != null && lon != null ? ( + <> +
{lat.toFixed(5)}°
+
{lon.toFixed(5)}°
+ + ) : ( +
No GPS signal
+ )} +
+
+ + {/* Map notice */} +
+
🗺️ Karten-Modus
+
+ Interaktive Seekarte ist im Production Mode verfügbar. +
+ Hier siehst du Position, Kurs und Geschwindigkeit. +
+ + → SignalK Karte öffnen (Port 3000) + +
+
+ ) +} + +const styles = { + container: { + position: 'relative', + flex: 1, + background: 'var(--surface)', + borderRadius: 'var(--radius)', + border: '1px solid var(--border)', + display: 'flex', + flexDirection: 'column', + overflow: 'hidden', + minHeight: 400, + }, + mapView: { + flex: 1, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + gap: 32, + padding: 32, + }, + compassRose: { + position: 'relative', + width: 180, + height: 180, + border: '2px solid var(--accent)', + borderRadius: '50%', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: 'radial-gradient(circle, rgba(14, 165, 233, 0.05) 0%, transparent 70%)', + }, + northMarker: { + position: 'absolute', + top: 8, + fontSize: 14, + fontWeight: 700, + color: 'var(--accent)', + }, + shipMarker: { + fontSize: 48, + color: 'var(--accent)', + transition: 'transform 0.5s ease-out', + }, + coords: { + fontFamily: 'var(--font-mono)', + fontSize: 16, + fontWeight: 600, + color: 'var(--text)', + textAlign: 'center', + lineHeight: 1.5, + }, + infoPanel: { + background: 'var(--glass-bg)', + backdropFilter: 'blur(var(--glass-blur))', + WebkitBackdropFilter: 'blur(var(--glass-blur))', + border: '1px solid rgba(255, 255, 255, 0.1)', + borderRadius: 'var(--radius-lg)', + padding: '12px 16px', + margin: 16, + display: 'flex', + flexDirection: 'column', + gap: 8, + }, + infoRow: { + display: 'flex', + justifyContent: 'space-between', + gap: 16, + }, + label: { + color: 'var(--muted)', + fontWeight: 600, + fontSize: 11, + textTransform: 'uppercase', + letterSpacing: '0.05em', + }, + value: { + fontFamily: 'var(--font-mono)', + fontWeight: 600, + color: 'var(--accent)', + fontSize: 13, + }, + notice: { + background: 'var(--surface2)', + padding: 20, + borderTop: '1px solid var(--border)', + textAlign: 'center', + }, + noticeTitle: { + fontSize: 14, + fontWeight: 600, + color: 'var(--text)', + marginBottom: 8, + }, + noticeText: { + fontSize: 12, + color: 'var(--muted)', + lineHeight: 1.5, + marginBottom: 12, + }, + link: { + display: 'inline-block', + fontSize: 12, + color: 'var(--accent)', + textDecoration: 'none', + fontWeight: 600, + padding: '6px 12px', + borderRadius: 'var(--radius)', + background: 'rgba(14, 165, 233, 0.1)', + border: '1px solid rgba(14, 165, 233, 0.3)', + transition: 'all 0.2s', + }, +} diff --git a/dashboard/src/components/systems/BoatControl.jsx b/dashboard/src/components/systems/BoatControl.jsx new file mode 100644 index 0000000..fb0f39f --- /dev/null +++ b/dashboard/src/components/systems/BoatControl.jsx @@ -0,0 +1,222 @@ +import React from 'react'; +import { useNMEA } from '../../hooks/useNMEA'; + +const CATEGORIES = [ + { id: 'lights', icon: '💡', label: 'Lights', pos: { top: '15%', left: '10%' } }, + { id: 'climate', icon: '❄️', label: 'Climate', pos: { top: '35%', left: '5%' } }, + { id: 'nav', icon: '📍', label: 'Navigation', pos: { top: '55%', left: '5%' } }, + { id: 'audio', icon: '🎵', label: 'Audio', pos: { top: '75%', left: '10%' } }, + { id: 'battery', icon: '🔋', label: 'Energy', pos: { bottom: '15%', left: '15%' } }, + + { id: 'tanks', icon: '🌊', label: 'Tanks', pos: { top: '15%', right: '10%' } }, + { id: 'power', icon: '🔌', label: 'Shore Power', pos: { top: '35%', right: '5%' } }, + { id: 'wind', icon: '🌬️', label: 'Wind', pos: { top: '55%', right: '5%' } }, + { id: 'engine', icon: '⚙️', label: 'Engine', pos: { top: '75%', right: '10%' } }, +]; + +export default function BoatControl({ activeCategory, onCategoryChange }) { + const { sog, heading } = useNMEA(); + + return ( +
+
SHIP CONTROL
+ +
+ {/* Category Icons Left */} + {CATEGORIES.slice(0, 5).map(cat => ( + + ))} + + {/* Central Boat Graphic */} +
+ Prestige Yacht { + // Fallback if image fails to load + e.target.style.display = 'none'; + e.target.nextSibling.style.display = 'flex'; + }} + /> +
+
+
+ + {/* Central Instrument Over Boat */} +
+
{sog?.toFixed(1) || '0.0'}
+
knots
+
{Math.round(heading || 0)}°
+
+
+ + {/* Category Icons Right */} + {CATEGORIES.slice(5).map(cat => ( + + ))} +
+ +
+
⚙️
+
{new Date().toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' })}
+
📖
+
+
+ ); +} + +const styles = { + container: { + flex: 1, + display: 'flex', + flexDirection: 'column', + position: 'relative', + background: 'radial-gradient(circle at center, #1a2a3a 0%, #07111f 100%)', + overflow: 'hidden', + }, + shipControlLabel: { + position: 'absolute', + top: 40, + left: 0, + right: 0, + textAlign: 'center', + fontSize: 48, + fontWeight: 300, + letterSpacing: '0.2em', + color: 'rgba(255,255,255,0.9)', + fontFamily: 'serif', + }, + mainArea: { + flex: 1, + position: 'relative', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + }, + catBtn: { + position: 'absolute', + width: 60, + height: 60, + borderRadius: '50%', + background: 'rgba(255,255,255,0.05)', + border: '1px solid rgba(255,255,255,0.1)', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + cursor: 'pointer', + transition: 'all 0.3s cubic-bezier(0.23, 1, 0.320, 1)', + zIndex: 10, + }, + catBtnActive: { + background: 'rgba(14, 165, 233, 0.2)', + borderColor: '#0ea5e9', + boxShadow: '0 0 20px rgba(14, 165, 233, 0.4)', + transform: 'scale(1.1)', + }, + catIcon: { + fontSize: 24, + opacity: 0.8, + }, + boatContainer: { + position: 'relative', + width: '70%', + maxWidth: 800, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + animation: 'fadeIn 1s ease-out', + }, + boatImg: { + width: '100%', + height: 'auto', + filter: 'drop-shadow(0 20px 30px rgba(0,0,0,0.5)) brightness(1.1)', + }, + boatFallback: { + width: 400, + height: 100, + alignItems: 'center', + justifyContent: 'center', + }, + boatHull: { + width: '100%', + height: 40, + background: '#fff', + borderRadius: '50% 50% 10% 10%', + }, + centralGauge: { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 180, + height: 180, + borderRadius: '50%', + background: 'rgba(7, 17, 31, 0.6)', + backdropFilter: 'blur(10px)', + border: '2px solid rgba(255,255,255,0.15)', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + boxShadow: '0 0 40px rgba(0,0,0,0.5)', + }, + gaugeValue: { + fontSize: 42, + fontWeight: 700, + fontFamily: 'var(--font-mono)', + color: '#fff', + }, + gaugeUnit: { + fontSize: 12, + textTransform: 'uppercase', + color: 'var(--muted)', + letterSpacing: '0.1em', + marginTop: -4, + }, + gaugeHeading: { + marginTop: 8, + fontSize: 18, + fontWeight: 600, + color: 'var(--accent)', + }, + bottomBar: { + height: 60, + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + gap: 40, + paddingBottom: 20, + }, + bottomIcon: { + fontSize: 20, + opacity: 0.5, + cursor: 'pointer', + }, + time: { + fontSize: 18, + fontWeight: 400, + color: 'rgba(255,255,255,0.8)', + fontFamily: 'var(--font-mono)', + } +}; diff --git a/dashboard/src/components/systems/FloorPlan.jsx b/dashboard/src/components/systems/FloorPlan.jsx new file mode 100644 index 0000000..b47d612 --- /dev/null +++ b/dashboard/src/components/systems/FloorPlan.jsx @@ -0,0 +1,125 @@ +import React from 'react'; + +const ZONES = [ + { id: 'salon', label: 'Salon', top: '40%', left: '30%', width: '20%', height: '20%' }, + { id: 'cockpit', label: 'Cockpit', top: '40%', left: '55%', width: '15%', height: '20%' }, + { id: 'bug', label: 'Owner Cabin', top: '40%', left: '10%', width: '15%', height: '20%' }, + { id: 'heck', label: 'VIP Cabin', top: '40%', left: '75%', width: '15%', height: '20%' }, +]; + +export default function FloorPlan({ type, onZoneClick }) { + return ( +
+
+ {/* Simple SVG/CSS representation of a boat deck */} +
+ {ZONES.map(zone => ( +
onZoneClick(zone.id)} + > +
{zone.label}
+
+ {type === 'lights' ? '💡 80%' : '🌡️ 22°C'} +
+
+ ))} +
+
+ +
+
{type === 'lights' ? 'Lighting Control' : 'Climate Control'}
+
+ Master Switch + +
+
+
+ ); +} + +const styles = { + container: { + padding: 20, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: 30, + animation: 'slideInUp 0.4s ease-out', + }, + floorPlanWrapper: { + width: '100%', + maxWidth: 900, + height: 300, + background: 'rgba(255,255,255,0.02)', + borderRadius: 20, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative', + border: '1px solid rgba(255,255,255,0.05)', + }, + deckOutline: { + width: '90%', + height: '60%', + border: '2px solid rgba(255,255,255,0.2)', + borderRadius: '80px 80px 40px 40px', + position: 'relative', + }, + zone: { + position: 'absolute', + border: '1px solid rgba(255,255,255,0.1)', + background: 'rgba(255,255,255,0.03)', + borderRadius: 8, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + cursor: 'pointer', + transition: 'all 0.2s', + }, + zoneLabel: { + fontSize: 10, + color: 'var(--muted)', + textTransform: 'uppercase', + }, + zoneStatus: { + fontSize: 12, + fontWeight: 600, + }, + controls: { + width: '100%', + maxWidth: 400, + background: 'var(--glass-bg)', + padding: 20, + borderRadius: 16, + border: '1px solid rgba(255,255,255,0.1)', + }, + controlHeader: { + fontSize: 14, + fontWeight: 700, + marginBottom: 15, + textTransform: 'uppercase', + color: 'var(--accent)', + }, + controlRow: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + toggle: { + background: 'var(--accent)', + color: 'white', + padding: '4px 12px', + borderRadius: 4, + fontSize: 12, + fontWeight: 700, + } +}; diff --git a/dashboard/src/hooks/useDocker.js b/dashboard/src/hooks/useDocker.js index 2b8ea9a..ff1ae83 100644 --- a/dashboard/src/hooks/useDocker.js +++ b/dashboard/src/hooks/useDocker.js @@ -1,17 +1,20 @@ import { useState, useEffect } from 'react' const SERVICES = [ - { id: 'signalk', name: 'SignalK', host: import.meta.env.VITE_SIGNALK_HOST || 'localhost', port: 3000, path: '/signalk' }, - { id: 'snapserver', name: 'Snapcast', host: import.meta.env.VITE_SNAPCAST_HOST || 'localhost', port: 1780, path: '/' }, - { id: 'mopidy', name: 'Mopidy', host: import.meta.env.VITE_MOPIDY_HOST || 'localhost', port: 6680, path: '/' }, - { id: 'jellyfin', name: 'Jellyfin', host: import.meta.env.VITE_JELLYFIN_HOST || 'localhost', port: 8096, path: '/' }, - { id: 'portainer', name: 'Portainer', host: import.meta.env.VITE_PORTAINER_HOST || 'localhost', port: 9000, path: '/' }, + { id: 'signalk', name: 'SignalK', path: '/signalk' }, + { id: 'snapserver', name: 'Snapcast', path: '/snapcast-ws' }, + { id: 'mopidy', name: 'Mopidy', path: '/mopidy' }, + { id: 'jellyfin', name: 'Jellyfin', path: '/jellyfin/' }, + { id: 'portainer', name: 'Portainer', path: '/portainer' }, + { id: 'spotify', name: 'Spotify', path: '/snapcast-ws' }, // Use snapcast as proxy for its status + { id: 'airplay', name: 'AirPlay', path: '/snapcast-ws' }, ] -async function ping(host, port, path) { +async function ping(path) { try { + const host = window.location.host // mode: 'no-cors' bypasses CORS blocks; any response (opaque) = server is up - await fetch(`http://${host}:${port}${path}`, { + await fetch(`http://${host}${path}`, { method: 'GET', mode: 'no-cors', signal: AbortSignal.timeout(3000), @@ -24,16 +27,26 @@ async function ping(host, port, path) { export function useDocker() { const [services, setServices] = useState( - SERVICES.map(s => ({ ...s, url: `http://${s.host}:${s.port}`, status: 'unknown' })) + SERVICES.map(s => ({ ...s, url: `http://${window.location.host}${s.path}`, status: 'unknown' })) ) async function checkAll() { const results = await Promise.all( - SERVICES.map(async s => ({ - ...s, - url: `http://${s.host}:${s.port}`, - status: await ping(s.host, s.port, s.path) ? 'online' : 'offline', - })) + SERVICES.map(async s => { + const url = `http://${window.location.host}${s.path}` + let status = 'offline' + + if (s.id === 'spotify' || s.id === 'airplay') { + // These are special, they don't have their own UI + // We assume they are up if snapserver is up (for now) + // Ideally we check snapcast streams status + status = await ping('/snapcast-ws') ? 'online' : 'offline' + } else { + status = await ping(s.path) ? 'online' : 'offline' + } + + return { ...s, url, status } + }) ) setServices(results) } diff --git a/dashboard/src/hooks/useZones.js b/dashboard/src/hooks/useZones.js index e1ac775..a9155d0 100644 --- a/dashboard/src/hooks/useZones.js +++ b/dashboard/src/hooks/useZones.js @@ -17,6 +17,7 @@ function parseStatus(status) { export function useZones() { const [zones, setZones] = useState([]) + const [streams, setStreams] = useState([]) const [connected, setConnected] = useState(false) const { snapcast } = getApi() @@ -28,6 +29,7 @@ export function useZones() { const status = await snapcast.call('Server.GetStatus') if (alive) { setZones(parseStatus(status)) + setStreams(status?.server?.streams || []) setConnected(true) } } catch { @@ -36,7 +38,10 @@ export function useZones() { } const onUpdate = (msg) => { - if (msg?.result?.server) setZones(parseStatus(msg.result)) + if (msg?.result?.server) { + setZones(parseStatus(msg.result)) + setStreams(msg.result.server.streams || []) + } } snapcast.on('update', onUpdate) @@ -65,5 +70,5 @@ export function useZones() { if (zone) await setMuted(zoneId, !zone.muted) }, [zones, setMuted]) - return { zones, connected, setVolume, setMuted, setSource, toggleZone } + return { zones, streams, connected, setVolume, setMuted, setSource, toggleZone } } diff --git a/dashboard/src/index.css b/dashboard/src/index.css index e2b2c99..9122462 100644 --- a/dashboard/src/index.css +++ b/dashboard/src/index.css @@ -71,6 +71,10 @@ html, body, #root { ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; } /* ─── Animations ───────────────────────────────────────────────────────────── */ +@keyframes spin { + to { transform: rotate(360deg); } +} + @keyframes slideInUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } diff --git a/dashboard/src/mock/index.js b/dashboard/src/mock/index.js index 83e49c5..33e966e 100644 --- a/dashboard/src/mock/index.js +++ b/dashboard/src/mock/index.js @@ -1,10 +1,11 @@ -// API router – uses real services by default; set VITE_USE_MOCK=true to force mocks. +// API router – uses real services with automatic mock fallback if connection fails. import { createSignalKMock } from './signalk.mock.js' import { createSnapcastMock } from './snapcast.mock.js' import { createMopidyMock } from './mopidy.mock.js' import { createSignalKClient } from '../api/signalk.js' import { createSnapcastClient } from '../api/snapcast.js' import { createMopidyClient } from '../api/mopidy.js' +import { createJellyfinClient } from '../api/jellyfin.js' const forceMock = import.meta.env.VITE_USE_MOCK === 'true' @@ -14,18 +15,82 @@ export function createApi() { signalk: createSignalKMock(), snapcast: createSnapcastMock(), mopidy: createMopidyMock(), + jellyfin: createJellyfinClient('http://localhost:8090/jellyfin', 'fake-key'), isMock: true, } } - const snapcastHost = import.meta.env.VITE_SNAPCAST_HOST || 'localhost' - const signalkHost = import.meta.env.VITE_SIGNALK_HOST || 'localhost' - const mopidyHost = import.meta.env.VITE_MOPIDY_HOST || 'localhost' + // Real clients - use proxy-friendly URLs (going through port 8090) + const host = window.location.host + const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:' + const httpProtocol = window.location.protocol + + // SignalK: baseUrl becomes ws://host/signalk (v1/stream appended in client) + const signalkReal = createSignalKClient(`${protocol}//${host}`) + + // Snapcast: ws://host/snapcast-ws/jsonrpc + const snapcastUrl = `${protocol}//${host}/snapcast-ws/jsonrpc` + const snapcastReal = createSnapcastClient(snapcastUrl) + + // Mopidy: ws://host/mopidy (ws appended in client) + const mopidyReal = createMopidyClient(`${protocol}//${host}`) + + // Jellyfin: http://host/jellyfin + const jellyfinReal = createJellyfinClient(`${httpProtocol}//${host}/jellyfin`, 'YOUR_JELLYFIN_API_KEY') + + const signalkMock = createSignalKMock() + + // Proxy that switches between real and mock + const signalkProxy = { + listeners: {}, + on: (event, handler) => { + if (!signalkProxy.listeners[event]) signalkProxy.listeners[event] = [] + signalkProxy.listeners[event].push(handler) + signalkReal.on(event, handler) + signalkMock.on(event, handler) + }, + off: (event, handler) => { + if (signalkProxy.listeners[event]) { + signalkProxy.listeners[event] = signalkProxy.listeners[event].filter(h => h !== handler) + } + signalkReal.off(event, handler) + signalkMock.off(event, handler) + }, + emit: (event, data) => { + if (signalkProxy.listeners[event]) { + signalkProxy.listeners[event].forEach(h => h(data)) + } + }, + start: () => signalkMock.start(), + stop: () => signalkMock.stop(), + getSnapshot: () => signalkMock.getSnapshot(), + } + + let usingSignalKMock = false + let signalkTimeout = setTimeout(() => { + // If no real data after 5 seconds, switch to mock + if (!usingSignalKMock) { + console.log('⚠️ SignalK not connected - using mock data (EYC Lingen → Ems route)') + usingSignalKMock = true + signalkMock.start() + signalkProxy.emit('connected', null) + } + }, 5000) + + // If real connection succeeds, cancel mock + signalkReal.on('connected', () => { + clearTimeout(signalkTimeout) + if (usingSignalKMock) { + signalkMock.stop() + usingSignalKMock = false + } + }) return { - signalk: createSignalKClient(`ws://${signalkHost}:3000`), - snapcast: createSnapcastClient(`ws://${snapcastHost}:1705`), - mopidy: createMopidyClient(`ws://${mopidyHost}:6680`), + signalk: signalkProxy, + snapcast: snapcastReal, + mopidy: mopidyReal, + jellyfin: jellyfinReal, isMock: false, } } diff --git a/dashboard/src/mock/signalk.mock.js b/dashboard/src/mock/signalk.mock.js index 4a942bb..997dd31 100644 --- a/dashboard/src/mock/signalk.mock.js +++ b/dashboard/src/mock/signalk.mock.js @@ -1,20 +1,27 @@ -// Simulates a SignalK WebSocket delta stream with realistic Baltic Sea boat data. -// The ship navigates a realistic route around Bornholm Island, Baltic Sea. +// Simulates a SignalK WebSocket delta stream with realistic boat data. +// Route: Lokale Fahrt in Lingen über DEK und Ems (bleibt in der Region) const INTERVAL_MS = 1000 function degToRad(d) { return d * Math.PI / 180 } function radToDeg(r) { return r * 180 / Math.PI } -// Realistic sailing route around Bornholm Island, Baltic Sea +// Lokale Route: Lingen Bereich - DEK und Ems (bleibt in der Region) const WAYPOINTS = [ - { lat: 54.3233, lon: 10.1394, name: 'Kiel Fjord (Start)' }, - { lat: 55.0500, lon: 13.5500, name: 'Bornholm North' }, - { lat: 55.1200, lon: 14.8000, name: 'Rønne Harbor' }, - { lat: 54.9500, lon: 15.2000, name: 'Bornholm East' }, - { lat: 54.5800, lon: 14.9000, name: 'Bornholm South' }, - { lat: 54.1500, lon: 13.2000, name: 'Gdansk Approach' }, - { lat: 54.3233, lon: 10.1394, name: 'Kiel Fjord (Loop)' }, + { lat: 52.5236, lon: 7.3200, name: 'EYC Segelclub Lingen' }, + { lat: 52.5280, lon: 7.3150, name: 'Kanal Ausfahrt' }, + { lat: 52.5400, lon: 7.3000, name: 'DEK Westlich' }, + { lat: 52.5500, lon: 7.2800, name: 'DEK Schleife West' }, + { lat: 52.5600, lon: 7.2700, name: 'DEK Nord' }, + { lat: 52.5700, lon: 7.2800, name: 'Brücke Nord' }, + { lat: 52.5750, lon: 7.3000, name: 'Ems Einfahrt' }, + { lat: 52.5800, lon: 7.3200, name: 'Ems Fluss Ost' }, + { lat: 52.5750, lon: 7.3400, name: 'Ems Kurve' }, + { lat: 52.5650, lon: 7.3500, name: 'Ems Süd' }, + { lat: 52.5500, lon: 7.3450, name: 'Ems Rückkehr' }, + { lat: 52.5400, lon: 7.3350, name: 'Kanal Rückkehr' }, + { lat: 52.5300, lon: 7.3250, name: 'Hafen Approach' }, + { lat: 52.5236, lon: 7.3200, name: 'EYC Segelclub (Ziel)' }, ] // Calculate distance between two coordinates in nautical miles diff --git a/dashboard/src/pages/Overview.jsx b/dashboard/src/pages/Overview.jsx index 4ce1955..73f4b16 100644 --- a/dashboard/src/pages/Overview.jsx +++ b/dashboard/src/pages/Overview.jsx @@ -1,42 +1,100 @@ +import { useState } from 'react' import { useNMEA } from '../hooks/useNMEA.js' -import Compass from '../components/instruments/Compass.jsx' -import SpeedLog from '../components/instruments/SpeedLog.jsx' -import DepthSounder from '../components/instruments/DepthSounder.jsx' -import WindRose from '../components/instruments/WindRose.jsx' -import NowPlaying from '../components/audio/NowPlaying.jsx' +import BoatControl from '../components/systems/BoatControl.jsx' +import FloorPlan from '../components/systems/FloorPlan.jsx' import ZoneGrid from '../components/audio/ZoneGrid.jsx' +import RadioBrowser from '../components/audio/RadioBrowser.jsx' +import LibraryBrowser from '../components/audio/LibraryBrowser.jsx' +import InstrumentPanel from '../components/nav/InstrumentPanel.jsx' +import EngineData from '../components/systems/EngineData.jsx' +import BatteryStatus from '../components/systems/BatteryStatus.jsx' export default function Overview() { const nmea = useNMEA() + const [activeCategory, setActiveCategory] = useState(null) + + const handleBack = () => setActiveCategory(null) return (
- {/* Instruments row */} -
- - - - -
- - {/* Now Playing */} - - - {/* Zone quick overview */} -
-
Audio Zones
- -
+ {!activeCategory ? ( + + ) : ( +
+
+ +

{activeCategory.toUpperCase()}

+
+ +
+ {activeCategory === 'lights' && } + {activeCategory === 'climate' && } + {activeCategory === 'audio' && ( +
+ +
+ )} + {activeCategory === 'nav' && } + {activeCategory === 'engine' && } + {activeCategory === 'battery' && } +
+
+ )}
) } const styles = { - page: { padding: 16, display: 'flex', flexDirection: 'column', gap: 16, overflow: 'auto', flex: 1 }, - instruments: { - display: 'flex', gap: 8, flexWrap: 'wrap', justifyContent: 'center', - padding: 16, background: 'var(--surface)', - borderRadius: 'var(--radius)', border: '1px solid var(--border)', + page: { + height: '100%', + display: 'flex', + flexDirection: 'column', + background: '#07111f', + overflow: 'hidden', }, - sectionTitle: { fontWeight: 600, fontSize: 12, color: 'var(--muted)', textTransform: 'uppercase', letterSpacing: '0.06em', marginBottom: 10 }, + detailView: { + flex: 1, + display: 'flex', + flexDirection: 'column', + animation: 'fadeIn 0.4s ease-out', + padding: 20, + background: 'radial-gradient(circle at center, #1a2a3a 0%, #07111f 100%)', + }, + detailHeader: { + display: 'flex', + alignItems: 'center', + gap: 20, + marginBottom: 20, + }, + backBtn: { + background: 'rgba(255,255,255,0.05)', + border: '1px solid rgba(255,255,255,0.1)', + color: 'var(--text)', + padding: '8px 16px', + borderRadius: 8, + cursor: 'pointer', + fontSize: 14, + minHeight: 0, + minWidth: 0, + }, + detailTitle: { + fontSize: 20, + fontWeight: 300, + letterSpacing: '0.2em', + color: 'rgba(255,255,255,0.8)', + margin: 0, + }, + detailContent: { + flex: 1, + overflowY: 'auto', + padding: '0 10px', + }, + audioWrapper: { + height: '100%', + display: 'flex', + flexDirection: 'column', + } } diff --git a/dev.bat b/dev.bat new file mode 100644 index 0000000..0a939dd --- /dev/null +++ b/dev.bat @@ -0,0 +1,5 @@ +@echo off +echo Starting boWave Development Environment... +docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build +echo Dashboard will be available at http://localhost:8090 +pause diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 9f89c8c..04f1039 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -9,17 +9,25 @@ services: environment: - SIGNALK_DEMO=true # Built-in demo NMEA data generator - # Librespot: stub in dev (pipe backend doesn't cross VM boundary). - # For real Spotify on Mac run: make spotify librespot: build: context: ./docker/librespot - dockerfile: Dockerfile.dev - entrypoint: [] - command: ["sh", "-c", "echo 'librespot stub: run make spotify for Mac audio' && sleep infinity"] - restart: "no" - volumes: [] - ports: [] + dockerfile: Dockerfile + ports: + - "57621:57621/udp" + - "57621:57621/tcp" + command: [ + "--name", "${SPOTIFY_NAME:-Bordanlage} (Dev)", + "--bitrate", "${SPOTIFY_BITRATE:-320}", + "--backend", "pipe", + "--device", "/tmp/audio/spotify.pcm", + "--zeroconf-port", "57621" + ] + volumes: + - pipes:/tmp/audio + networks: + - bordanlage + restart: unless-stopped # Zones: real snapclient containers with null player (v0.35+, URI format) zone-salon: @@ -52,4 +60,4 @@ services: - VITE_SIGNALK_HOST=localhost - VITE_MOPIDY_HOST=localhost - VITE_JELLYFIN_HOST=localhost - - VITE_USE_MOCK=true # Use mock data for dev testing (real APIs when false) + - VITE_USE_MOCK=false # FALSE = Nutze echte Services (Spotify, AirPlay, Mopidy) diff --git a/docker-compose.yml b/docker-compose.yml index 16b9ac0..d630716 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -37,8 +37,6 @@ services: networks: - bordanlage - # ─── Audio Sources ───────────────────────────────────────────────────────── - librespot: build: ./docker/librespot restart: unless-stopped @@ -47,12 +45,13 @@ services: ports: - "57621:57621/udp" # Spotify zeroconf discovery - "57621:57621/tcp" - command: > - --name "${SPOTIFY_NAME:-Bordanlage}" - --bitrate ${SPOTIFY_BITRATE:-320} - --backend pipe - --device /tmp/audio/spotify.pcm - --zeroconf-port 57621 + command: [ + "--name", "${SPOTIFY_NAME:-Bordanlage}", + "--bitrate", "${SPOTIFY_BITRATE:-320}", + "--backend", "pipe", + "--device", "/tmp/audio/spotify.pcm", + "--zeroconf-port", "57621" + ] volumes: - pipes:/tmp/audio networks: diff --git a/docker/librespot/Dockerfile b/docker/librespot/Dockerfile index b8766ca..cf19eb3 100644 --- a/docker/librespot/Dockerfile +++ b/docker/librespot/Dockerfile @@ -1,15 +1,5 @@ -# Stage 1: Build librespot from source -# Pin to v0.5.0 — v0.8.0 has a vergen_lib dependency conflict -FROM rust:slim-bookworm AS builder -RUN apt-get update \ - && apt-get install -y --no-install-recommends pkg-config libssl-dev \ - && rm -rf /var/lib/apt/lists/* -RUN cargo install librespot --version "=0.5.0" +# Use the official librespot image +FROM ghcr.io/librespot-org/librespot:latest -# Stage 2: Minimal runtime image -FROM debian:bookworm-slim -RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates \ - && rm -rf /var/lib/apt/lists/* -COPY --from=builder /usr/local/cargo/bin/librespot /usr/local/bin/librespot -ENTRYPOINT ["librespot"] +# The official image already has the entrypoint set to librespot +# We just need to ensure it's used correctly in docker-compose diff --git a/docker/mopidy/entrypoint.sh b/docker/mopidy/entrypoint.sh index b0ea729..47e070c 100644 --- a/docker/mopidy/entrypoint.sh +++ b/docker/mopidy/entrypoint.sh @@ -1,3 +1,17 @@ #!/bin/sh +set -e + +# Create the audio directory if it doesn't exist mkdir -p /tmp/audio + +# Create the named pipes if they don't exist +for pipe in spotify.pcm airplay.pcm mopidy.pcm; do + path="/tmp/audio/$pipe" + if [ ! -p "$path" ]; then + mkfifo "$path" + echo "Created pipe: $path" + fi +done + +echo "All audio pipes ready. Starting Mopidy..." exec "$@" diff --git a/docker/snapclient/Dockerfile b/docker/snapclient/Dockerfile index d0cb1c4..874f653 100644 --- a/docker/snapclient/Dockerfile +++ b/docker/snapclient/Dockerfile @@ -1,13 +1,14 @@ FROM debian:bookworm-slim ARG VERSION=0.35.0 -RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates wget \ - && ARCH=$(dpkg --print-architecture) \ - && wget -q "https://github.com/badaix/snapcast/releases/download/v${VERSION}/snapclient_${VERSION}-1_${ARCH}_bookworm.deb" \ - -O /tmp/snapclient.deb \ - && dpkg -i /tmp/snapclient.deb || apt-get install -fy \ - && rm /tmp/snapclient.deb \ +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ && rm -rf /var/lib/apt/lists/* -ENTRYPOINT ["snapclient"] +RUN ARCH=$(dpkg --print-architecture) \ + && curl -L "https://github.com/badaix/snapcast/releases/download/v${VERSION}/snapclient_${VERSION}-1_${ARCH}_bookworm.deb" -o /tmp/snapclient.deb \ + && dpkg -i /tmp/snapclient.deb || apt-get install -fy \ + && rm /tmp/snapclient.deb + +ENTRYPOINT ["/usr/bin/snapclient"] diff --git a/docker/snapserver/Dockerfile b/docker/snapserver/Dockerfile index 2559646..5a5c7bd 100644 --- a/docker/snapserver/Dockerfile +++ b/docker/snapserver/Dockerfile @@ -1,14 +1,22 @@ FROM debian:bookworm-slim ARG VERSION=0.35.0 +ARG WEB_VERSION=0.9.1 -RUN apt-get update \ - && apt-get install -y --no-install-recommends ca-certificates wget \ - && ARCH=$(dpkg --print-architecture) \ - && wget -q "https://github.com/badaix/snapcast/releases/download/v${VERSION}/snapserver_${VERSION}-1_${ARCH}_bookworm.deb" \ - -O /tmp/snapserver.deb \ - && dpkg -i /tmp/snapserver.deb || apt-get install -fy \ - && rm /tmp/snapserver.deb \ +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + unzip \ && rm -rf /var/lib/apt/lists/* +RUN ARCH=$(dpkg --print-architecture) \ + && curl -L "https://github.com/badaix/snapcast/releases/download/v${VERSION}/snapserver_${VERSION}-1_${ARCH}_bookworm.deb" -o /tmp/snapserver.deb \ + && dpkg -i /tmp/snapserver.deb || apt-get install -fy \ + && rm /tmp/snapserver.deb + +RUN curl -L "https://github.com/badaix/snapweb/releases/download/v${WEB_VERSION}/snapweb.zip" -o /tmp/snapweb.zip \ + && mkdir -p /usr/share/snapserver/snapweb \ + && unzip -o /tmp/snapweb.zip -d /usr/share/snapserver/snapweb \ + && rm /tmp/snapweb.zip + EXPOSE 1704 1705 1780 CMD ["snapserver"] diff --git a/photo_2026-04-02_02-11-20.jpg b/photo_2026-04-02_02-11-20.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14bbcba0af0ab37fae2c91cb9c9eed2a10a0ce30 GIT binary patch literal 184428 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

06DkT@}b3@>#pWV7s6foiI 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 z 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 z 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%0DZR6~Y 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 literal 0 HcmV?d00001 diff --git a/photo_2026-04-02_02-11-30.jpg b/photo_2026-04-02_02-11-30.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ad8b5d85364f54352b198264ad529de8c30ed38 GIT binary patch literal 126337 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≈cmG6dG84G;YiQ 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 Uwt!$p#k+3_JU}1-3ImD%**!Mru>b%7 literal 0 HcmV?d00001 diff --git a/stop.bat b/stop.bat new file mode 100644 index 0000000..ed358d8 --- /dev/null +++ b/stop.bat @@ -0,0 +1,5 @@ +@echo off +echo Stopping boWave... +docker compose -f docker-compose.yml -f docker-compose.dev.yml down +echo boWave stopped. +pause