📚 Improved backend logs and CSS styling 🎉

This commit is contained in:
Till Tomczak 2025-06-02 15:32:03 +02:00
parent 170d7c95d2
commit 55d8ee39cc
27 changed files with 272 additions and 663 deletions

Binary file not shown.

Binary file not shown.

View File

@ -115,3 +115,4 @@
2025-06-02 14:50:27 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-02 14:51:08 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-02 15:18:14 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-02 15:29:06 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert

View File

@ -3027,3 +3027,33 @@ WHERE jobs.status = ?) AS anon_1]
2025-06-02 15:19:47 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_fix_errors: User authenticated: True, User ID: 1, Is Admin: True
2025-06-02 15:20:05 - [app] app - [INFO] INFO - Automatische Fehlerbehebung abgeschlossen: 1 behoben, 0 fehlgeschlagen
2025-06-02 15:20:26 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-02 15:29:05 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
2025-06-02 15:29:07 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-02 15:29:07 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
2025-06-02 15:29:07 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
2025-06-02 15:29:07 - [app] app - [INFO] INFO - ✅ Error-Recovery-Monitoring gestartet
2025-06-02 15:29:07 - [app] app - [INFO] INFO - ✅ System-Control-Manager initialisiert
2025-06-02 15:29:07 - [app] app - [WARNING] WARNING - ⚠️ Kiosk-Service nicht gefunden - Kiosk-Funktionen eventuell eingeschränkt
2025-06-02 15:29:07 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
2025-06-02 15:29:07 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-02 15:29:07 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
2025-06-02 15:29:07 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-02 15:29:07 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
2025-06-02 15:29:07 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
2025-06-02 15:29:09 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-02 15:29:12 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-02 15:29:12 - [app] app - [INFO] INFO - ✅ Steckdosen-Initialisierung: 0/2 Drucker erfolgreich
2025-06-02 15:29:12 - [app] app - [WARNING] WARNING - ⚠️ 2 Drucker konnten nicht initialisiert werden
2025-06-02 15:29:12 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
2025-06-02 15:29:12 - [app] app - [INFO] INFO - Job-Scheduler gestartet
2025-06-02 15:29:12 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-02 15:29:12 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
2025-06-02 15:29:14 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
2025-06-02 15:29:14 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
2025-06-02 15:29:14 - [app] app - [ERROR] ERROR - Fehler beim Abrufen der Dashboard-Statistiken: unsupported operand type(s) for /: 'NoneType' and 'int'
2025-06-02 15:29:14 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 0, 'online_printers': 0, 'offline_printers': 0}
2025-06-02 15:29:14 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 2, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 2, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': None, 'failed_jobs': None, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}
2025-06-02 15:31:02 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': None, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}

View File

@ -119,3 +119,4 @@
2025-06-02 14:50:27 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-02 14:51:08 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-02 15:18:14 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-02 15:29:06 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)

View File

@ -41,3 +41,6 @@
2025-06-01 23:41:21 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-02 14:31:48 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-02 15:19:57 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-02 15:29:46 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-02 15:29:51 - [calendar] calendar - [INFO] INFO - 📊 Verfügbarkeitsabfrage: 2/2 Drucker verfügbar
2025-06-02 15:29:52 - [calendar] calendar - [INFO] INFO - 📊 Verfügbarkeitsabfrage: 2/2 Drucker verfügbar

View File

@ -462,3 +462,7 @@
2025-06-02 15:18:16 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-02 15:18:16 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
2025-06-02 15:20:26 - [dashboard] dashboard - [ERROR] ERROR - Fehler beim Laden der Widget-Daten für system_alerts:
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-02 15:29:07 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)

View File

@ -115,3 +115,4 @@
2025-06-02 14:50:27 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-02 14:51:08 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-02 15:18:14 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-02 15:29:06 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet

View File

@ -16,3 +16,6 @@
2025-06-02 15:18:16 - [database_cleanup] database_cleanup - [INFO] INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
2025-06-02 15:18:16 - [database_cleanup] database_cleanup - [INFO] INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
2025-06-02 15:18:16 - [database_cleanup] database_cleanup - [INFO] INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 🧹 Starte umfassendes Datenbank-Cleanup...
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 📝 Schritt 1: Schließe alle Datenbankverbindungen...
2025-06-02 15:29:07 - [database_cleanup] database_cleanup - [INFO] INFO - 🔄 Schließe alle aktiven Datenbankverbindungen...

View File

@ -112,3 +112,4 @@
2025-06-02 14:50:28 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-02 14:51:09 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-02 15:18:15 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-02 15:29:07 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)

View File

@ -2,3 +2,7 @@
2025-06-02 15:18:16 - [error_recovery] error_recovery - [INFO] INFO - 🔍 Error-Monitoring gestartet
2025-06-02 15:18:16 - [error_recovery] error_recovery - [WARNING] WARNING - 🚨 Fehler erkannt: database_lock - 2025-06-01 00:29:13 - myp.app - ERROR - ❌ Fehler beim Datenbank-Cleanup: (sqlite3.OperationalError) database is locked
2025-06-02 15:18:16 - [error_recovery] error_recovery - [INFO] INFO - 🔧 Führe Recovery-Aktion aus: reset_database
2025-06-02 15:29:07 - [error_recovery] error_recovery - [INFO] INFO - 🛡️ Error-Recovery-Manager initialisiert
2025-06-02 15:29:07 - [error_recovery] error_recovery - [INFO] INFO - 🔍 Error-Monitoring gestartet
2025-06-02 15:29:07 - [error_recovery] error_recovery - [WARNING] WARNING - 🚨 Fehler erkannt: database_lock - 2025-06-01 00:29:13 - myp.app - ERROR - ❌ Fehler beim Datenbank-Cleanup: (sqlite3.OperationalError) database is locked
2025-06-02 15:29:07 - [error_recovery] error_recovery - [INFO] INFO - 🔧 Führe Recovery-Aktion aus: reset_database

View File

@ -230,3 +230,5 @@
2025-06-02 14:51:09 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-02 15:18:15 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-02 15:18:16 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-02 15:29:07 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-02 15:29:07 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet

View File

@ -228,3 +228,5 @@
2025-06-02 14:51:09 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-02 15:18:16 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-02 15:18:16 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-02 15:29:07 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-02 15:29:07 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt

View File

@ -114,3 +114,4 @@
2025-06-02 14:50:28 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-02 14:51:09 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-02 15:18:16 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-02 15:29:07 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert

View File

@ -3254,3 +3254,23 @@
2025-06-02 15:18:40 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Status-Update abgeschlossen für 2 Drucker
2025-06-02 15:18:46 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-02 15:18:52 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
2025-06-02 15:29:05 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
2025-06-02 15:29:05 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
2025-06-02 15:29:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
2025-06-02 15:29:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
2025-06-02 15:29:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
2025-06-02 15:29:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
2025-06-02 15:29:09 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.103): Steckdose konnte nicht ausgeschaltet werden
2025-06-02 15:29:12 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.104): Steckdose konnte nicht ausgeschaltet werden
2025-06-02 15:29:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🎯 Steckdosen-Initialisierung abgeschlossen: 0/2 erfolgreich
2025-06-02 15:29:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
2025-06-02 15:29:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-02 15:29:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Prüfe Status von 2 aktiven Druckern...
2025-06-02 15:29:20 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
2025-06-02 15:29:23 - [printer_monitor] printer_monitor - [WARNING] WARNING - 🔌 Tapo P110 (192.168.0.103): UNREACHABLE (Ping fehlgeschlagen)
2025-06-02 15:29:23 - [printer_monitor] printer_monitor - [WARNING] WARNING - 🔌 Tapo P110 (192.168.0.104): UNREACHABLE (Ping fehlgeschlagen)
2025-06-02 15:29:23 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Status-Update abgeschlossen für 2 Drucker
2025-06-02 15:29:26 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
2025-06-02 15:29:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
2025-06-02 15:29:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-02 15:29:44 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s

View File

@ -6690,3 +6690,24 @@
2025-06-02 15:20:18 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:20:18 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:20:18 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.77ms
2025-06-02 15:29:14 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:29:23 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:29:23 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9017.22ms
2025-06-02 15:29:26 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:29:26 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:29:26 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.60ms
2025-06-02 15:29:30 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:29:30 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:29:30 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.49ms
2025-06-02 15:29:40 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:29:40 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:29:40 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.68ms
2025-06-02 15:30:02 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:30:02 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:30:02 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.35ms
2025-06-02 15:30:32 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:30:32 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:30:32 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.32ms
2025-06-02 15:31:02 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-02 15:31:02 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-02 15:31:02 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.42ms

View File

@ -28298,3 +28298,163 @@
2025-06-02 15:20:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000263D8913AC0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:20:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-02 15:20:25 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-02 15:29:05 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-02 15:29:12 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-02 15:29:12 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-02 15:29:12 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-02 15:29:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB729450>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-02 15:29:14 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-02 15:29:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB7443E0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-02 15:29:16 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-02 15:29:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FBD9F5C0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-02 15:29:18 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-02 15:29:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FBE30050>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-02 15:29:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-02 15:29:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DAE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-02 15:29:22 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-02 15:29:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82E470>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-02 15:29:24 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-02 15:29:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69FF00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-02 15:29:26 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-02 15:29:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69E580>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-02 15:29:28 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-02 15:29:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69E690>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:29:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-02 15:29:30 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-02 15:29:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69FF00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:29:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-02 15:29:32 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-02 15:29:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69EAD0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:29:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-02 15:29:35 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-02 15:29:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69D480>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:29:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-02 15:29:37 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-02 15:29:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69E470>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-02 15:29:39 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-02 15:29:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69FBD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-02 15:29:41 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-02 15:29:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69E690>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-02 15:29:43 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-02 15:29:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69E9C0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-02 15:29:46 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-02 15:29:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69FBD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-02 15:29:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-02 15:29:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69EBE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-02 15:29:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-02 15:29:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69D8C0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-02 15:29:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-02 15:29:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69F020>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-02 15:29:54 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-02 15:29:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DE10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-02 15:29:56 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-02 15:29:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82E470>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:29:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-02 15:29:59 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-02 15:30:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D590>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-02 15:30:01 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-02 15:30:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D6A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-02 15:30:03 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-02 15:30:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69D8C0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-02 15:30:05 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-02 15:30:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D260>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-02 15:30:07 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-02 15:30:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69F020>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-02 15:30:09 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-02 15:30:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82E030>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-02 15:30:11 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-02 15:30:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D590>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-02 15:30:13 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-02 15:30:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DE10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-02 15:30:15 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-02 15:30:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D8C0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-02 15:30:18 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-02 15:30:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DBF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-02 15:30:21 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-02 15:30:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69F020>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-02 15:30:23 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-02 15:30:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69DD00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-02 15:30:25 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-02 15:30:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82E250>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-02 15:30:27 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-02 15:30:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DF20>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-02 15:30:29 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-02 15:30:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D6A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-02 15:30:31 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-02 15:30:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82E470>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-02 15:30:33 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-02 15:30:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69E140>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-02 15:30:35 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-02 15:30:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D6A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-02 15:30:38 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-02 15:30:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D7B0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-02 15:30:40 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-02 15:30:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82E250>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-02 15:30:42 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-02 15:30:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DAE0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-02 15:30:44 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-02 15:30:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DD00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-02 15:30:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-02 15:30:46 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-02 15:30:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D150>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-02 15:30:48 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-02 15:30:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82CF30>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-02 15:30:50 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-02 15:30:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69DD00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-02 15:30:52 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-02 15:30:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB69F020>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-02 15:30:55 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-02 15:30:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82CD10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:30:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-02 15:30:57 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-02 15:31:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82D370>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:31:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-02 15:31:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-02 15:31:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82E030>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:31:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-02 15:31:02 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-02 15:31:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000242FB82DBF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-02 15:31:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-02 15:31:04 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test

View File

@ -114,3 +114,4 @@
2025-06-02 14:50:28 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-02 14:51:09 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-02 15:18:16 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-02 15:29:07 - [security] security - [INFO] INFO - 🔒 Security System initialisiert

View File

@ -200,3 +200,4 @@
2025-06-02 14:50:28 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-02 14:51:09 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-02 15:18:16 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-02 15:29:07 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert

View File

@ -1034,3 +1034,12 @@
2025-06-02 15:18:16 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-02 15:18:16 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-02 15:18:16 - [startup] startup - [INFO] INFO - ==================================================
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - ==================================================
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-02T15:29:07.268087
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-02 15:29:07 - [startup] startup - [INFO] INFO - ==================================================

View File

@ -1 +1,2 @@
2025-06-02 15:18:16 - [system_control] system_control - [INFO] INFO - 🔧 System-Control-Manager initialisiert
2025-06-02 15:29:07 - [system_control] system_control - [INFO] INFO - 🔧 System-Control-Manager initialisiert

View File

@ -12,3 +12,4 @@
2025-06-01 15:33:40 - [user] user - [INFO] INFO - Benutzer admin hat seine Einstellungsseite aufgerufen
2025-06-01 23:43:04 - [user] user - [INFO] INFO - Benutzer admin hat seine Einstellungsseite aufgerufen
2025-06-01 23:43:55 - [user] user - [INFO] INFO - Benutzer admin hat seine Einstellungsseite aufgerufen
2025-06-02 15:29:32 - [user] user - [INFO] INFO - Benutzer admin hat seine Einstellungsseite aufgerufen

View File

@ -491,3 +491,7 @@
2025-06-02 15:18:14 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-02 15:18:14 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-02 15:18:14 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-02 15:29:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet

View File

@ -1,661 +0,0 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
/**
* MYP Platform - Raspberry Pi Optimierte Styles
* Alle performance-kritischen Glassmorphism-Effekte, backdrop-filter und komplexe Animationen entfernt
* Design bleibt unverändert, aber Performance ist deutlich besser
*/
@layer base {
:root {
/* Light Mode Farben - Mercedes-Benz Professional - UNVERÄNDERT */
--color-bg-primary: #ffffff;
--color-bg-secondary: #fafbfc;
--color-bg-tertiary: #f3f5f7;
--color-bg-accent: #fbfcfd;
--color-text-primary: #111827;
--color-text-secondary: #374151;
--color-text-muted: #6b7280;
--color-text-accent: #0073ce;
--color-border-primary: #e5e7eb;
--color-border-secondary: #d1d5db;
--color-accent: #0073ce;
--color-accent-hover: #005a9f;
--color-accent-light: #eff6ff;
--color-accent-text: #ffffff;
--color-shadow: rgba(0, 0, 0, 0.04);
--color-shadow-strong: rgba(0, 0, 0, 0.08);
--color-shadow-accent: rgba(0, 115, 206, 0.08);
--card-radius: 1rem;
/* Vereinfachte Gradients - Raspberry Pi optimiert */
--gradient-primary: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%);
--gradient-card: var(--color-bg-primary);
--gradient-hero: var(--color-bg-secondary);
--gradient-accent: var(--color-accent);
--gradient-surface: var(--color-bg-primary);
}
.dark {
/* Dark Mode Farben - UNVERÄNDERT */
--color-bg-primary: #000000;
--color-bg-secondary: #0a0a0a;
--color-bg-tertiary: #1a1a1a;
--color-text-primary: #ffffff;
--color-text-secondary: #e2e8f0;
--color-text-muted: #94a3b8;
--color-border-primary: #1a1a1a;
--color-border-secondary: #2a2a2a;
--color-accent: #ffffff;
--color-accent-hover: #f0f0f0;
--color-accent-light: #1e3a8a;
--color-accent-text: #000000;
--color-shadow: rgba(0, 0, 0, 0.6);
--color-shadow-strong: rgba(0, 0, 0, 0.8);
--mb-black: #000000;
}
body {
@apply bg-white dark:bg-black text-slate-900 dark:text-white;
background: var(--gradient-primary);
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
line-height: 1.65;
font-size: 15px;
transition: background-color 0.2s ease, color 0.2s ease;
/* Entfernt: transition-colors duration-300 für bessere Performance */
}
.dark body {
background: linear-gradient(135deg, #000000 0%, #0a0a0a 100%);
}
/* Body Background - STARK VEREINFACHT */
body::before {
content: '';
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: radial-gradient(circle at 50% 50%, rgba(0, 115, 206, 0.01) 0%, transparent 70%);
pointer-events: none;
z-index: -1;
}
.dark body::before {
background: radial-gradient(circle at 50% 50%, rgba(59, 130, 246, 0.02) 0%, transparent 70%);
}
/* Navbar - RASPBERRY PI OPTIMIERT */
nav {
background: rgba(255, 255, 255, 0.98);
border-bottom: 1px solid var(--color-border-primary);
transition: background-color 0.2s ease;
/* ENTFERNT: backdrop-filter, komplexe box-shadows, cubic-bezier */
}
.dark nav {
background: rgba(0, 0, 0, 0.95);
border-bottom-color: var(--color-border-primary);
}
/* Card Styles - RASPBERRY PI OPTIMIERT */
.card-enhanced {
background: var(--color-bg-primary);
border: 1px solid var(--color-border-primary);
border-radius: var(--card-radius);
transition: background-color 0.2s ease, border-color 0.2s ease;
/* ENTFERNT: backdrop-filter, box-shadow, transform, pseudo-elements */
}
.card-enhanced:hover {
background: var(--color-bg-secondary);
border-color: var(--color-border-secondary);
/* ENTFERNT: transform, box-shadow für bessere Performance */
}
.dark .card-enhanced {
background: var(--color-bg-secondary);
border-color: var(--color-border-primary);
}
/* Button Styles - RASPBERRY PI OPTIMIERT */
.btn-enhanced {
background: var(--color-accent);
color: var(--color-accent-text);
border: none;
border-radius: 0.5rem;
padding: 0.75rem 1.75rem;
font-weight: 600;
font-size: 0.875rem;
text-transform: uppercase;
letter-spacing: 0.05em;
transition: background-color 0.2s ease;
/* ENTFERNT: gradient, box-shadow, pseudo-elements, transform */
}
.btn-enhanced:hover {
background: var(--color-accent-hover);
/* ENTFERNT: transform, box-shadow für bessere Performance */
}
.btn-enhanced:active {
background: var(--color-accent-hover);
/* ENTFERNT: transform für bessere Performance */
}
.btn-secondary {
background: var(--color-bg-primary);
color: var(--color-text-primary);
border: 1px solid var(--color-border-primary);
}
.btn-secondary:hover {
background: var(--color-bg-secondary);
border-color: var(--color-accent);
color: var(--color-accent);
}
/* Form Elements - RASPBERRY PI OPTIMIERT */
.input-enhanced {
background: rgba(255, 255, 255, 0.98);
border: 1px solid var(--color-border-primary);
border-radius: 0.5rem;
padding: 0.75rem 1rem;
color: var(--color-text-primary);
font-size: 0.9rem;
transition: border-color 0.2s ease, background-color 0.2s ease;
/* ENTFERNT: backdrop-filter, box-shadow für bessere Performance */
}
.input-enhanced:focus {
outline: none;
border-color: var(--color-accent);
background: rgba(255, 255, 255, 1);
/* ENTFERNT: box-shadow für bessere Performance */
}
.input-enhanced::placeholder {
color: var(--color-text-muted);
opacity: 0.8;
}
.dark .input-enhanced {
background: rgba(26, 26, 26, 0.9);
border-color: var(--color-border-primary);
color: var(--color-text-primary);
}
.dark .input-enhanced:focus {
border-color: #60a5fa;
background: rgba(26, 26, 26, 1);
}
/* Alert Styles - RASPBERRY PI OPTIMIERT */
.alert-enhanced {
border-radius: 1rem;
padding: 1.25rem;
border: 1px solid transparent;
position: relative;
/* ENTFERNT: backdrop-filter für bessere Performance */
}
.alert-enhanced::before {
content: '';
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 4px;
}
.alert-info-enhanced {
background: rgba(239, 246, 255, 0.95);
border-color: rgba(59, 130, 246, 0.2);
color: #1e40af;
}
.alert-info-enhanced::before {
background: var(--color-accent);
}
.alert-success-enhanced {
background: rgba(236, 253, 245, 0.95);
border-color: rgba(16, 185, 129, 0.2);
color: #065f46;
}
.alert-success-enhanced::before {
background: #10b981;
}
.alert-warning-enhanced {
background: rgba(255, 251, 235, 0.95);
border-color: rgba(251, 191, 36, 0.2);
color: #92400e;
}
.alert-warning-enhanced::before {
background: #fbbf24;
}
.alert-error-enhanced {
background: rgba(254, 242, 242, 0.95);
border-color: rgba(239, 68, 68, 0.2);
color: #991b1b;
}
.alert-error-enhanced::before {
background: #ef4444;
}
/* Flash Messages - RASPBERRY PI OPTIMIERT */
.flash-message-light {
background: rgba(255, 255, 255, 0.98);
border: 1px solid rgba(226, 232, 240, 0.6);
color: var(--color-text-primary);
/* ENTFERNT: backdrop-filter, komplexe box-shadows */
}
.flash-message-light.success {
border-left: 4px solid #10b981;
background: rgba(236, 253, 245, 0.95);
}
.flash-message-light.error {
border-left: 4px solid #ef4444;
background: rgba(254, 242, 242, 0.95);
}
.flash-message-light.warning {
border-left: 4px solid #fbbf24;
background: rgba(255, 251, 235, 0.95);
}
.flash-message-light.info {
border-left: 4px solid #3b82f6;
background: rgba(239, 246, 255, 0.95);
}
/* Table Styles - RASPBERRY PI OPTIMIERT */
.table-enhanced {
background: var(--color-bg-primary);
border: 1px solid var(--color-border-primary);
border-radius: var(--card-radius);
overflow: hidden;
/* ENTFERNT: box-shadow für bessere Performance */
}
.table-enhanced th {
background: var(--color-bg-secondary);
color: var(--color-text-primary);
font-weight: 600;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--color-border-primary);
}
.table-enhanced td {
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--color-border-primary);
color: var(--color-text-secondary);
transition: background-color 0.2s ease;
}
.table-enhanced tbody tr:hover {
background: var(--color-bg-secondary);
/* ENTFERNT: transform für bessere Performance */
}
.dark .table-enhanced {
background: var(--color-bg-secondary);
border-color: var(--color-border-primary);
}
.dark .table-enhanced th {
background: var(--color-bg-tertiary);
color: var(--color-text-primary);
}
.dark .table-enhanced tbody tr:hover {
background: var(--color-bg-tertiary);
}
/* Modal Styles - RASPBERRY PI OPTIMIERT */
.modal-enhanced {
background: rgba(255, 255, 255, 0.98);
border: 1px solid rgba(226, 232, 240, 0.7);
border-radius: 1.5rem;
position: relative;
/* ENTFERNT: backdrop-filter, komplexe box-shadows */
}
.dark .modal-enhanced {
background: rgba(10, 10, 10, 0.98);
border-color: rgba(42, 42, 42, 0.7);
}
/* Status Badges - RASPBERRY PI OPTIMIERT */
.status-badge-enhanced {
display: inline-flex;
align-items: center;
padding: 0.5rem 1rem;
font-size: 0.75rem;
font-weight: 700;
border-radius: 9999px;
text-transform: uppercase;
letter-spacing: 0.05em;
border: 1px solid transparent;
transition: background-color 0.2s ease;
}
.status-online-enhanced {
background: #ecfdf5;
color: #065f46;
border-color: rgba(16, 185, 129, 0.2);
}
.status-offline-enhanced {
background: #fef2f2;
color: #991b1b;
border-color: rgba(239, 68, 68, 0.2);
}
.status-printing-enhanced {
background: #eff6ff;
color: #1d4ed8;
border-color: rgba(59, 130, 246, 0.2);
}
/* Dark Mode Toggle - RASPBERRY PI OPTIMIERT */
.dark-mode-toggle-new {
background: rgba(255, 255, 255, 0.95);
border: 1px solid var(--color-border-primary);
border-radius: 0.75rem;
padding: 0.5rem;
transition: background-color 0.2s ease, border-color 0.2s ease;
/* ENTFERNT: box-shadow, transform für bessere Performance */
}
.dark-mode-toggle-new:hover {
background: rgba(255, 255, 255, 1);
border-color: var(--color-border-secondary);
/* ENTFERNT: transform für bessere Performance */
}
.dark .dark-mode-toggle-new {
background: rgba(26, 26, 26, 0.95);
border-color: var(--color-border-primary);
}
.dark .dark-mode-toggle-new:hover {
background: rgba(26, 26, 26, 1);
}
/* Icon Animations - STARK VEREINFACHT */
.dark-mode-toggle-new .sun-icon,
.dark-mode-toggle-new .moon-icon {
transition: opacity 0.2s ease;
/* ENTFERNT: komplexe transform animations */
}
.dark .sun-icon { display: none; }
.dark .moon-icon { display: block; }
.sun-icon { display: block; }
.moon-icon { display: none; }
/* User Menu Button - RASPBERRY PI OPTIMIERT */
.user-menu-button-new {
background: rgba(255, 255, 255, 0.95);
border: 1px solid var(--color-border-primary);
border-radius: 0.75rem;
padding: 0.5rem;
transition: background-color 0.2s ease;
/* ENTFERNT: box-shadow, transform für bessere Performance */
}
.user-menu-button-new:hover {
background: rgba(255, 255, 255, 1);
/* ENTFERNT: transform für bessere Performance */
}
.dark .user-menu-button-new {
background: rgba(26, 26, 26, 0.95);
border-color: var(--color-border-primary);
}
.dark .user-menu-button-new:hover {
background: rgba(26, 26, 26, 1);
}
/* Hover Effects - STARK VEREINFACHT */
.hover-lift-enhanced {
transition: background-color 0.2s ease;
/* ENTFERNT: cubic-bezier transition für bessere Performance */
}
.hover-lift-enhanced:hover {
background-color: var(--color-bg-secondary);
/* ENTFERNT: transform, box-shadow für bessere Performance */
}
.dark .hover-lift-enhanced:hover {
background-color: var(--color-bg-tertiary);
}
/* Scrollbar Styles - UNVERÄNDERT */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--color-bg-secondary);
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
background: var(--color-border-secondary);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--color-text-muted);
}
.dark ::-webkit-scrollbar-track {
background: var(--color-bg-tertiary);
}
.dark ::-webkit-scrollbar-thumb {
background: var(--color-border-secondary);
}
.dark ::-webkit-scrollbar-thumb:hover {
background: var(--color-text-muted);
}
/* Loading Animation - VEREINFACHT */
.loading-enhanced {
background: var(--color-bg-secondary);
border-radius: 0.5rem;
overflow: hidden;
}
.loading-enhanced::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
animation: loading-shimmer 1.5s infinite;
}
@keyframes loading-shimmer {
0% { left: -100%; }
100% { left: 100%; }
}
/* Focus Styles - VEREINFACHT */
.focus-enhanced:focus {
outline: 2px solid var(--color-accent);
outline-offset: 2px;
/* ENTFERNT: box-shadow für bessere Performance */
}
.dark .focus-enhanced:focus {
outline-color: #60a5fa;
}
/* Responsive Anpassungen */
@media (max-width: 768px) {
.card-enhanced {
border-radius: 0.75rem;
padding: 1rem;
}
.btn-enhanced {
padding: 0.625rem 1.25rem;
font-size: 0.8rem;
}
.modal-enhanced {
border-radius: 1rem;
margin: 1rem;
}
.dark-mode-toggle-new {
padding: 0.4rem;
}
}
/* Reduced Motion Support - ERWEITERT */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
transform: none !important;
}
}
/* High Contrast Support */
@media (prefers-contrast: high) {
:root {
--color-border-primary: #000000;
--color-border-secondary: #000000;
--color-shadow: rgba(0, 0, 0, 0.2);
}
.dark {
--color-border-primary: #ffffff;
--color-border-secondary: #ffffff;
}
}
/* Weitere optimierte Komponenten folgen... */
/* Notification Styles - RASPBERRY PI OPTIMIERT */
.notification {
background: rgba(255, 255, 255, 0.98);
border: 1px solid var(--color-border-primary);
border-radius: 0.75rem;
padding: 1rem;
/* ENTFERNT: backdrop-filter, komplexe box-shadows */
}
.dark .notification {
background: rgba(26, 26, 26, 0.95);
border-color: var(--color-border-primary);
}
.notification:hover {
background: rgba(255, 255, 255, 1);
/* ENTFERNT: transform, box-shadow für bessere Performance */
}
.dark .notification:hover {
background: rgba(26, 26, 26, 1);
}
/* Status Dot - VEREINFACHT */
.status-dot {
width: 0.75rem;
height: 0.75rem;
border-radius: 50%;
display: inline-block;
}
.status-dot.online {
background: #10b981;
}
.status-dot.offline {
background: #ef4444;
}
/* ENTFERNT: Alle pulse-Animationen für bessere Performance */
/* Weitere Komponenten werden nach gleichem Muster optimiert... */
}
/* Flash Messages - RASPBERRY PI OPTIMIERT */
.flash-message {
background: rgba(255, 255, 255, 0.98);
border: 1px solid var(--color-border-primary);
border-radius: 0.75rem;
padding: 1rem 1.25rem;
margin-bottom: 1rem;
/* ENTFERNT: backdrop-filter, box-shadow */
}
.dark .flash-message {
background: rgba(26, 26, 26, 0.95);
border-color: var(--color-border-primary);
}
.flash-message:hover {
background: rgba(255, 255, 255, 1);
/* ENTFERNT: transform für bessere Performance */
}
.dark .flash-message:hover {
background: rgba(26, 26, 26, 1);
}
.flash-message.info {
border-left: 4px solid #3b82f6;
background: rgba(239, 246, 255, 0.95);
}
.flash-message.success {
border-left: 4px solid #10b981;
background: rgba(236, 253, 245, 0.95);
}
.flash-message.warning {
border-left: 4px solid #fbbf24;
background: rgba(255, 251, 235, 0.95);
}
.flash-message.error {
border-left: 4px solid #ef4444;
background: rgba(254, 242, 242, 0.95);
}
/* Einfache Animationen - NUR OPACITY */
@keyframes flash-fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
/* Alle weiteren Komponenten folgen dem gleichen Optimierungsmuster:
- Entfernung von backdrop-filter
- Entfernung von komplexen box-shadows
- Entfernung von transform-Animationen
- Vereinfachung von transitions zu opacity/background-color only
- Beibehaltung des visuellen Designs
*/

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@