jojojojo aua

This commit is contained in:
2025-06-01 02:00:30 +02:00
parent 35caefdbfd
commit de66def651
65 changed files with 5977 additions and 8742 deletions

View File

@@ -1,169 +1,230 @@
# Häufige Fehler und Lösungen - Mercedes-Benz MYP Platform
# Häufige Fehler und Lösungen
## JavaScript-Fehler
Dieses Dokument enthält häufig auftretende Probleme bei der Einrichtung und Nutzung von MYP im Kiosk-Modus und deren Lösungen.
### 1. `animateCounters is not defined`
**Problem:** Die Funktion `animateCounters` wird in `admin.js` aufgerufen, aber nicht definiert.
**Lösung:** Funktion wurde hinzugefügt in `admin.js` mit Intersection Observer für bessere Performance.
## Installationsprobleme
### 2. `showPrinterModal is not defined`
**Problem:** Die Funktion `showPrinterModal` wird aufgerufen, aber nicht definiert.
**Lösung:** Vollständige Modal-Funktion mit Formular-Handling wurde hinzugefügt.
### Fehler: "Paket nicht gefunden"
### 3. `JSON.parse: unexpected character at line 1 column 1`
**Problem:** API-Aufrufe geben HTML statt JSON zurück (404-Fehler).
**Ursache:** Frontend läuft auf Port 8443, Backend auf Port 5000.
**Lösung:** Dynamische API-URL-Erkennung mit intelligentem Fallback implementiert.
**Problem**: Beim Ausführen von `apt install` werden Pakete nicht gefunden.
## API-Fehler (404 NOT FOUND)
**Lösung**:
1. Führe zuerst `sudo apt update` aus, um die Paketlisten zu aktualisieren
2. Stelle sicher, dass eine Internetverbindung besteht
3. Bei älteren Raspberry Pi OS Versionen ggf. Repository hinzufügen:
```bash
sudo apt-add-repository universe
sudo apt update
```
### 1. `/api/admin/stats/live` - 404 Fehler
**Problem:** Live-Statistiken API gibt 404 zurück.
**Ursache:** Port-Mismatch zwischen Frontend (8443) und Backend (5000).
**Lösung:**
- Dynamische API-Base-URL-Erkennung implementiert
- Automatischer Fallback von HTTPS:8443 zu HTTP:5000
- Verbesserte Fehlerbehandlung in der Route
- Sichere Admin-Berechtigung-Prüfung
### Fehler: "Permission denied" beim Kopieren nach /opt/myp
### 2. `/api/admin/system/status` - 404 Fehler
**Problem:** System-Status API gibt 404 zurück.
**Lösung:**
- Dynamische URL-Erkennung implementiert
- Sichere psutil-Imports mit Fallback
- Verbesserte Fehlerbehandlung
- Graceful degradation wenn Systemüberwachung nicht verfügbar
**Problem**: Beim Kopieren der Dateien nach /opt/myp wird ein Permission-Fehler angezeigt.
### 3. `/api/admin/database/status` - 404 Fehler
**Problem:** Datenbank-Status API gibt 404 zurück.
**Lösung:**
- Dynamische URL-Erkennung implementiert
- Sichere Datenbankpfad-Erkennung
- Verbesserte Verbindungstests
- Fallback für fehlende Dateien
**Lösung**:
1. Stelle sicher, dass du die Befehle in der richtigen Reihenfolge ausführst:
```bash
sudo mkdir -p /opt/myp
sudo chown $USER:$USER /opt/myp
```
2. Falls das nicht hilft, führe den Kopierbefehl mit sudo aus:
```bash
sudo cp -r ./myp/* /opt/myp/
sudo chown -R $USER:$USER /opt/myp/
```
## Modal-Dialog Probleme
## Flask-Backend Probleme
### 1. Automatische Weiterleitung zu 404-Seiten
**Problem:** Modal-Formulare submitten automatisch und leiten zu nicht existierenden Routen weiter.
**Ursache:** Fehlende `preventDefault()` in Form-Event-Handlers.
**Lösung:**
- `e.preventDefault()` zu allen Form-Submit-Handlers hinzugefügt
- Explizite Event-Handler-Bindung statt onclick-Attribute
- Verbesserte Modal-Schließung nach erfolgreichen Aktionen
### Fehler: "MYP-Dienst startet nicht"
### 2. Modal öffnet und schließt sofort
**Problem:** Modal-Dialoge erscheinen kurz und verschwinden dann.
**Ursache:** Automatische Form-Submission ohne preventDefault.
**Lösung:** Korrekte Event-Handler-Implementierung mit preventDefault.
**Problem**: Der systemd-Dienst für das Flask-Backend startet nicht.
## Port-Konfiguration Probleme
**Lösung**:
1. Überprüfe den Status des Dienstes:
```bash
sudo systemctl status myp.service
```
2. Schau in die Logs:
```bash
sudo journalctl -u myp.service -n 50
```
3. Häufige Ursachen:
- Falscher Pfad in myp.service: Überprüfe WorkingDirectory und ExecStart
- Python-Umgebung nicht korrekt: Überprüfe, ob die .venv-Umgebung existiert
- Abhängigkeiten fehlen: Führe `pip install -r requirements.txt` aus
### 1. Server läuft auf Port 5000 statt 8443
**Problem:** Logs zeigen Port 5000, aber Frontend erwartet 8443.
**Ursache:** SSL-Konfiguration fehlgeschlagen, Fallback auf HTTP.
**Lösung:**
- Intelligente Port-Erkennung implementiert
- Automatischer Fallback von HTTPS:8443 zu HTTP:5000
- Dynamische API-Base-URL-Generierung
- Detailliertes Logging der URL-Erkennung
### Fehler: "ModuleNotFoundError: No module named X"
### 2. Cross-Origin-Probleme
**Problem:** CORS-Fehler bei API-Aufrufen zwischen verschiedenen Ports.
**Lösung:** Dynamische URL-Erkennung verhindert Cross-Origin-Requests.
**Problem**: Beim Start der Flask-App wird ein Python-Modul nicht gefunden.
### 3. Favicon 404-Fehler
**Problem:** `/favicon.ico` gibt 404 zurück.
**Lösung:** Route hinzugefügt die vorhandene PNG-Datei verwendet.
**Lösung**:
1. Aktiviere die virtuelle Umgebung und installiere das fehlende Paket:
```bash
cd /opt/myp
source .venv/bin/activate
pip install <fehlende_module>
```
2. Überprüfe requirements.txt und installiere alle Abhängigkeiten:
```bash
pip install -r requirements.txt
```
## Debugging-Strategien
### Fehler: "Address already in use"
### 1. Admin-API-Test-Route
**Zweck:** Überprüfung ob Admin-API grundsätzlich funktioniert.
**Route:** `/api/admin/test`
**Verwendung:** Zeigt Benutzer-Status und Admin-Berechtigung an.
**Problem**: Flask kann nicht starten, weil Port 5000 bereits verwendet wird.
### 2. Debug-Routen-Übersicht
**Route:** `/debug/routes`
**Zweck:** Zeigt alle registrierten Flask-Routen an.
**Lösung**:
1. Finde den Prozess, der Port 5000 verwendet:
```bash
sudo lsof -i:5000
```
2. Beende den Prozess:
```bash
sudo kill <PID>
```
3. Falls nötig, ändere den Port in app.py:
```python
app.run(host="0.0.0.0", port=5001, debug=True)
```
(Und passe auch die URL im kiosk.sh an)
### 3. Verbesserte Fehlerbehandlung
- Alle Admin-API-Routen haben jetzt try-catch-Blöcke
- Detaillierte Fehlermeldungen
- Graceful degradation bei fehlenden Abhängigkeiten
- Intelligente URL-Erkennung mit Logging
## Chromium Kiosk-Modus Probleme
### 4. URL-Debugging
**Konsolen-Logs:** Alle API-Aufrufe loggen jetzt die verwendete URL
**Port-Erkennung:** Detaillierte Informationen über erkannte Ports und Protokolle
**Fallback-Mechanismus:** Automatische Umschaltung zwischen Ports
### Fehler: "Chromium startet nicht im Kiosk-Modus"
## Präventive Maßnahmen
**Problem**: Der Browser startet nicht automatisch oder nicht im Vollbildmodus.
### 1. JavaScript-Funktionen
- Alle aufgerufenen Funktionen sind jetzt definiert
- Fallback-Mechanismen für fehlende Elemente
- Bessere Fehlerbehandlung in Event-Listenern
- Korrekte Form-Event-Handler mit preventDefault
**Lösung**:
1. Überprüfe den Status des User-Services:
```bash
systemctl --user status kiosk.service
```
2. Führe kiosk.sh manuell aus, um Fehlermeldungen zu sehen:
```bash
/home/pi/kiosk.sh
```
3. Prüfe, ob die notwendigen Pakete installiert sind:
```bash
sudo apt install --reinstall chromium-browser unclutter
```
### 2. API-Routen
- Konsistente Admin-Berechtigung-Prüfung
- Sichere Datenbankzugriffe mit finally-Blöcken
- Fallback-Werte für alle Statistiken
- Dynamische URL-Erkennung für alle API-Aufrufe
### Fehler: "Chromium zeigt Fehlerdialoge statt der MYP-Oberfläche"
### 3. Template-Handling
- Alle Admin-Templates existieren
- Korrekte Template-Pfade
- Fehlerbehandlung für fehlende Templates
**Problem**: Der Browser zeigt Crash-Dialoge oder Warnungen an.
### 4. Port-Management
- Intelligente Port-Erkennung
- Automatische Fallback-Mechanismen
- Cross-Origin-Problem-Vermeidung
- Detailliertes URL-Logging
**Lösung**:
1. Lösche die Chromium-Einstellungen und starte neu:
```bash
rm -rf ~/.config/chromium/
```
2. Füge zusätzliche Parameter zu chromium-browser in kiosk.sh hinzu:
```bash
chromium-browser --kiosk --noerrdialogs --disable-infobars --disable-session-crashed-bubble \
--disable-features=DialMediaRouteProvider --window-position=0,0 \
--app=http://localhost:5000/ &
```
## Aktuelle Status
### Fehler: "Chromium öffnet sich, aber zeigt nicht die MYP-Seite"
**Behoben:**
- `animateCounters` Funktion hinzugefügt
- `showPrinterModal` Funktion implementiert
- Admin-API-Routen verbessert
- Favicon-Route hinzugefügt
- Fehlerbehandlung verstärkt
- **Dynamische API-URL-Erkennung implementiert**
- **Modal-Dialog preventDefault-Problem behoben**
- **Port-Mismatch-Problem gelöst**
- **JSON-Parse-Fehler behoben**
**Problem**: Der Browser startet, aber die Anwendung wird nicht angezeigt.
🔄 **In Bearbeitung:**
- SSL-Konfiguration optimieren
- Live-Updates stabilisieren
**Lösung**:
1. Überprüfe, ob der Flask-Dienst läuft:
```bash
systemctl status myp.service
```
2. Teste, ob die Anwendung im Browser erreichbar ist:
```bash
curl http://localhost:5000/
```
3. Prüfe, ob Chromium mit der richtigen URL startet:
```bash
# In kiosk.sh
chromium-browser --kiosk --noerrdialogs --disable-infobars \
--window-position=0,0 --app=http://localhost:5000/ &
```
⚠️ **Zu überwachen:**
- Admin-Berechtigung-Prüfung
- Datenbankverbindung-Stabilität
- JavaScript-Performance bei Animationen
- **API-URL-Fallback-Mechanismus**
## Watchdog-Probleme
## Nächste Schritte
### Fehler: "Watchdog-Script funktioniert nicht"
1. **Server-Neustart testen** - Die Port-Erkennung sollte jetzt funktionieren
2. **Admin-Dashboard-Funktionalität verifizieren** - Alle Modals sollten funktionieren
3. **Live-Updates überwachen** - API-Aufrufe sollten erfolgreich sein
4. SSL-Konfiguration finalisieren
5. Performance-Optimierungen implementieren
**Problem**: Der Watchdog-Cronjob scheint nicht zu funktionieren.
## Technische Details
**Lösung**:
1. Überprüfe, ob der Cron-Job eingerichtet ist:
```bash
crontab -l
```
2. Prüfe die Berechtigungen des Watchdog-Scripts:
```bash
chmod +x /home/pi/watchdog.sh
```
3. Führe das Script manuell aus und prüfe auf Fehler:
```bash
/home/pi/watchdog.sh
```
4. Überprüfe die Logdatei:
```bash
cat /home/pi/myp-watchdog.log
```
### Port-Erkennung-Algorithmus
1. **Gleicher Port:** Wenn Frontend und Backend auf gleichem Port → relative URLs
2. **HTTPS:8443 → HTTP:5000:** Automatischer Fallback für häufigsten Fall
3. **Andere Ports:** Standard-Backend-Port basierend auf Protokoll
4. **Logging:** Alle Entscheidungen werden in der Konsole geloggt
### Fehler: "Watchdog kann systemctl nicht ausführen"
### Modal-Dialog-Fixes
- `e.preventDefault()` in allen Form-Submit-Handlers
- Explizite Event-Listener statt onclick-Attribute
- Korrekte Modal-Schließung nach erfolgreichen API-Aufrufen
- Verbesserte Fehlerbehandlung mit Benutzer-Feedback
**Problem**: Der Watchdog kann systemctl-Befehle nicht ausführen.
**Lösung**:
1. Erlaubnis für den pi-Benutzer zum Ausführen von systemctl hinzufügen:
```bash
echo "pi ALL=NOPASSWD: /bin/systemctl restart myp.service" | sudo tee /etc/sudoers.d/myp-watchdog
```
## Allgemeine Probleme
### Fehler: "Bildschirm wird nach einiger Zeit schwarz"
**Problem**: Trotz Konfiguration schaltet sich der Bildschirm nach einiger Zeit aus.
**Lösung**:
1. Stelle sicher, dass die xset-Befehle in kiosk.sh korrekt ausgeführt werden:
```bash
xset s off
xset s noblank
xset -dpms
```
2. Aktualisiere die Autostart-Datei:
```bash
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
```
Füge folgende Zeilen hinzu:
```
@xset s off
@xset -dpms
@xset s noblank
```
3. Verwende ein Tool wie Caffeine:
```bash
sudo apt install caffeine
```
### Fehler: "System bootet nicht automatisch in den Kiosk-Modus"
**Problem**: Der automatische Start des Kiosk-Modus funktioniert nicht.
**Lösung**:
1. Überprüfe, ob der automatische Login aktiviert ist:
```bash
sudo raspi-config
# 1 System Options → S5 Boot/Auto Login → B4 Desktop Autologin
```
2. Stelle sicher, dass der User-Service aktiviert ist:
```bash
systemctl --user enable kiosk.service
```
3. Aktiviere Linger für den pi-Benutzer:
```bash
sudo loginctl enable-linger pi
```
4. Reboote das System und überprüfe den Status der Dienste:
```bash
sudo reboot
```