🎉 Feature: Enhanced Admin Guest Requests API & Startup Initialization Documentation 📚

This commit is contained in:
Till Tomczak
2025-06-20 08:36:07 +02:00
parent 939f14199d
commit cbea4cb765
27 changed files with 1653 additions and 52 deletions

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@

View File

@ -1946,6 +1946,28 @@ def main():
if scheduler:
scheduler.start()
app_logger.info("[STARTUP] ✅ Job Scheduler gestartet")
# Steckdosen beim Systemstart initialisieren
app_logger.info("[STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...")
try:
initialization_results = scheduler.initialize_all_outlets_on_startup()
if initialization_results:
success_count = sum(1 for result in initialization_results.values() if result.get('success', False))
total_count = len(initialization_results)
if success_count == total_count:
app_logger.info(f"[STARTUP] ✅ Alle {total_count} Steckdosen erfolgreich initialisiert")
elif success_count > 0:
app_logger.info(f"[STARTUP] ⚡ {success_count}/{total_count} Steckdosen erfolgreich initialisiert")
else:
app_logger.warning(f"[STARTUP] ⚠️ Keine der {total_count} Steckdosen konnte initialisiert werden")
else:
app_logger.info("[STARTUP] Keine Steckdosen zur Initialisierung gefunden")
except Exception as e:
app_logger.warning(f"[STARTUP] ⚠️ Fehler bei Steckdosen-Initialisierung: {str(e)}")
else:
app_logger.warning("[STARTUP] ⚠️ Job Scheduler nicht verfügbar")

Binary file not shown.

View File

@ -1855,3 +1855,22 @@ jinja2.exceptions.UndefinedError: 'maintenance_info' is undefined
2025-06-20 08:19:36 - [admin] admin - [INFO] INFO - Tapo-Monitoring aufgerufen von admin
2025-06-20 08:19:39 - [admin] admin - [INFO] INFO - Tapo-Monitoring geladen: 6 Steckdosen, 0 online
2025-06-20 08:19:42 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_tapo_health_check: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Admin-Check für Funktion tapo_monitoring: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Tapo-Monitoring aufgerufen von admin
2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Admin-Check für Funktion tapo_monitoring: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:20:20 - [admin] admin - [INFO] INFO - Tapo-Monitoring aufgerufen von admin
2025-06-20 08:20:23 - [admin] admin - [INFO] INFO - Tapo-Monitoring geladen: 6 Steckdosen, 0 online
2025-06-20 08:20:23 - [admin] admin - [INFO] INFO - Tapo-Monitoring geladen: 6 Steckdosen, 0 online
2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin
2025-06-20 08:22:15 - [admin] admin - [ERROR] ERROR - Fehler beim Laden des Admin-Dashboards: 'dict object' has no attribute 'online_printers'
2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Check für Funktion api_admin_live_stats: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:22:15 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_system_status_api: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:22:16 - [admin] admin - [INFO] INFO - System-Status abgerufen von admin
2025-06-20 08:22:17 - [admin] admin - [INFO] INFO - Admin-Check für Funktion guest_requests: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:22:48 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_guest_requests_api: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:22:48 - [admin] admin - [INFO] INFO - Gastanfragen abgerufen: 0 Einträge für Admin Administrator
2025-06-20 08:23:18 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_guest_requests_api: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:23:18 - [admin] admin - [INFO] INFO - Gastanfragen abgerufen: 0 Einträge für Admin Administrator
2025-06-20 08:23:48 - [admin] admin - [INFO] INFO - Admin-Check für Funktion get_guest_requests_api: User authenticated: True, User ID: 1, Is Admin: True
2025-06-20 08:23:48 - [admin] admin - [INFO] INFO - Gastanfragen abgerufen: 0 Einträge für Admin Administrator

View File

@ -704,3 +704,4 @@
2025-06-20 08:19:42 - [admin_api] admin_api - [ERROR] ERROR - Fehler beim Gesundheitscheck für Drucker 5: 'DruckerSteuerung' object has no attribute 'ping_address'
2025-06-20 08:19:42 - [admin_api] admin_api - [ERROR] ERROR - Fehler beim Gesundheitscheck für Drucker 6: 'DruckerSteuerung' object has no attribute 'ping_address'
2025-06-20 08:19:42 - [admin_api] admin_api - [INFO] INFO - Tapo-Gesundheitscheck abgeschlossen: {'total': 6, 'healthy': 0, 'warning': 0, 'critical': 6}
2025-06-20 08:22:15 - [admin_api] admin_api - [INFO] INFO - Live-Statistiken abgerufen von Admin admin

View File

@ -58774,3 +58774,565 @@ WHERE users.role = ?]
2025-06-20 08:19:39 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:19:42 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:19:42 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:14 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 08:20:16 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 08:20:16 - [app] app - [WARNING] WARNING - Fehler beim Korrigieren der Admin-Berechtigungen:
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) wurde angelegt.
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 1 (192.168.0.100)
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 2 (192.168.0.101)
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 3 (192.168.0.102)
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 4 (192.168.0.103)
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 5 (192.168.0.104)
2025-06-20 08:20:16 - [app] app - [INFO] INFO - Drucker erstellt: Drucker 6 (192.168.0.106)
2025-06-20 08:20:16 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 6 erstellt, 0 aktualisiert
2025-06-20 08:20:16 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 08:20:16 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 08:20:16 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 08:20:18 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 08:20:19 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 08:20:19 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 08:20:19 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 08:20:20 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 08:20:20 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 08:20:20 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 08:20:20 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 08:20:23 - [app] app - [INFO] INFO - Locating template 'admin_tapo_monitoring.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_tapo_monitoring.html')
2025-06-20 08:20:23 - [app] app - [INFO] INFO - Locating template 'base.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html')
2025-06-20 08:20:23 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:23 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:23 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers :
2025-06-20 08:20:23 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:20:23 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:20:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:20:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:34 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:20:34 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:20:36 - [app] app - [INFO] INFO - Locating template 'printers.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\printers.html')
2025-06-20 08:20:36 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:37 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:20:37 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:20:44 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:44 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:44 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:20:44 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:45 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:20:45 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:20:47 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:20:58 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:20:58 - [app] app - [INFO] INFO - Locating template 'energy_dashboard.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\energy_dashboard.html')
2025-06-20 08:20:58 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:11 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:15 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:15 - [app] app - [INFO] INFO - Locating template 'energy_device_details.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\energy_device_details.html')
2025-06-20 08:21:15 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:16 - [app] app - [INFO] INFO - Locating template 'dashboard.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html')
2025-06-20 08:21:16 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html')
2025-06-20 08:21:16 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:22 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:22 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:21:22 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:21:22 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:21:22 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:21:23 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:21:23 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:21:23 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:21:23 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:21:25 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:21:25 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:21:25 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:26 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:26 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:21:56 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:21:56 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:15 - [app] app - [INFO] INFO - Locating template 'admin.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin.html')
2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:15 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:16 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:17 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:17 - [app] app - [INFO] INFO - Locating template 'admin_guest_requests.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_guest_requests.html')
2025-06-20 08:22:17 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:18 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers :
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:30 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:30 - [app] app - [INFO] INFO - Not Found (404):
2025-06-20 08:22:30 - [app] app - [INFO] INFO - Locating template 'errors/404.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\errors\\404.html')
2025-06-20 08:22:30 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:22:48 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:23:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:23:48 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:24:07 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:08 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:24:08 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:10 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:10 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:24:10 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:24:11 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:24:11 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:24:14 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:15 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:24:15 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:17 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:17 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:24:17 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:24:18 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:24:18 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:24:30 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:24:31 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:24:31 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:31 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:24:31 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:24:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:34 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:24:34 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:24:36 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:25:06 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:25:06 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:25:36 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:25:36 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:25:55 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:25:56 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:25:56 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:25:59 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:25:59 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:25:59 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:26:29 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:26:29 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system
2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system
2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:26:33 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system
2025-06-20 08:26:33 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:26:35 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system
2025-06-20 08:26:35 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:26:36 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system
2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für Drucker erfolgreich gespeichert
2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:26:36 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:27:07 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:27:07 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:31:43 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db
2025-06-20 08:33:20 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 08:33:21 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 08:33:21 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 08:33:21 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 08:33:21 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 08:33:22 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 08:33:22 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 08:33:22 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 08:33:22 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 08:33:22 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 08:33:22 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 08:33:40 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden
2025-06-20 08:33:40 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 08:33:41 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 08:33:42 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 08:33:42 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 08:33:42 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 08:33:42 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 08:34:00 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden
2025-06-20 08:34:00 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 08:34:00 - [app] app - [INFO] INFO - Locating template 'dashboard.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html')
2025-06-20 08:34:00 - [app] app - [INFO] INFO - Locating template 'base.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html')
2025-06-20 08:34:00 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html')
2025-06-20 08:34:00 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:34:01 - [app] app - [DEBUG] DEBUG - Request:
2025-06-20 08:34:01 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:34:06 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system
2025-06-20 08:34:06 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker ->
2025-06-20 08:34:09 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-20 08:34:09 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-20 08:34:09 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler:
2025-06-20 08:34:10 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 08:34:11 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 08:34:11 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 08:34:11 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 08:34:11 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 08:34:29 - [app] app - [WARNING] WARNING - [STARTUP] ⚠️ Keine der 6 Steckdosen konnte initialisiert werden
2025-06-20 08:34:29 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://:
2025-06-20 08:34:30 - [app] app - [INFO] INFO - Locating template 'guest_request.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\guest_request.html')
2025-06-20 08:34:30 - [app] app - [INFO] INFO - Locating template 'base.html':
1: trying loader of application '__main__'
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates
-> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html')
2025-06-20 08:34:30 - [app] app - [DEBUG] DEBUG - Response:
2025-06-20 08:34:30 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers :
2025-06-20 08:34:36 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt...
2025-06-20 08:34:36 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt
2025-06-20 08:34:36 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler:
2025-06-20 08:34:37 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung:
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [CONFIG] Production-Modus:
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Konfiguration aktiviert
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment:
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode:
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo:
2025-06-20 08:34:39 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O)
2025-06-20 08:34:39 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: erstellt, aktualisiert
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP -Umgebung
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] 🏢
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped:
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank...
2025-06-20 08:34:39 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert
2025-06-20 08:34:39 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin...
2025-06-20 08:34:40 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker...
2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100)
2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101)
2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102)
2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103)
2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104)
2025-06-20 08:34:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106)
2025-06-20 08:34:40 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert
2025-06-20 08:34:40 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert
2025-06-20 08:34:40 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105)
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager...
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler...
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet
2025-06-20 08:34:40 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Steckdosen (alle auf 'aus' = frei)...
2025-06-20 08:34:45 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: backend/database/myp.db

View File

@ -416,3 +416,15 @@
2025-06-20 08:18:43 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 08:18:46 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 08:18:46 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 08:20:14 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 08:20:14 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 08:20:17 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 08:20:17 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 08:33:20 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 08:33:20 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 08:33:41 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 08:33:41 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 08:34:10 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 08:34:10 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)
2025-06-20 08:34:37 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert
2025-06-20 08:34:37 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion)

View File

@ -947,3 +947,15 @@
2025-06-20 08:18:43 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:18:46 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 08:18:46 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:20:14 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 08:20:14 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:20:18 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 08:20:18 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:33:20 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 08:33:20 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:33:41 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 08:33:41 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:34:10 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 08:34:10 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:34:37 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert
2025-06-20 08:34:37 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)

View File

@ -62,3 +62,8 @@
2025-06-20 08:15:03 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 08:18:44 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 08:18:47 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 08:20:16 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 08:20:19 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 08:33:21 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 08:33:42 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen
2025-06-20 08:34:11 - [drucker_steuerung] drucker_steuerung - [INFO] INFO - 🖨️ Drucker-Steuerungs-Blueprint (Backend-Kontrolle) geladen

View File

@ -777,3 +777,10 @@
2025-06-20 08:15:03 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 08:18:44 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 08:18:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 08:20:16 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 08:20:19 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 08:20:58 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin
2025-06-20 08:21:15 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔍 Gerätedetails für ID 4 aufgerufen von admin
2025-06-20 08:33:21 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 08:33:42 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
2025-06-20 08:34:11 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert

View File

@ -3611,3 +3611,79 @@
2025-06-20 08:19:37 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:19:39 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x000001EFE74739B0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:19:39 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:14 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 08:20:18 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:20 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32E690>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:20:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32E030>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:20:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:34 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32EE00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:20:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:44 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:44 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:44 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:45 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:20:47 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32E9C0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:20:47 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:21:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:21:22 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:21:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:21:23 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:21:25 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32EE00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:21:25 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:08 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:10 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32F790>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:24:10 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:14 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:15 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:15 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:15 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:17 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32D7B0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:24:17 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:31 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:31 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: HTTPConnectionPool(host='192.168.0.102', port=80): Read timed out. (read timeout=2)
2025-06-20 08:24:34 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:24:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32DAE0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:24:36 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:25:56 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:25:59 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32FCE0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:25:59 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.100: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.101: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.102: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:26:33 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.103: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:26:35 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von 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 0x00000279EA32D7B0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-20 08:26:35 - [hardware_integration] hardware_integration - [ERROR] ERROR - ❌ Fehler beim Prüfen von Steckdose 192.168.0.106: Error Code: -1501, Invalid Request or Credentials
2025-06-20 08:33:20 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 08:33:22 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 08:33:41 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 08:33:42 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 08:34:06 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ 192.168.0.100 ist über keine Methode erreichbar
2025-06-20 08:34:06 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Steckdose 192.168.0.100 ist im Netzwerk nicht erreichbar
2025-06-20 08:34:10 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 08:34:11 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 08:34:37 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 08:34:40 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE
2025-06-20 08:34:45 - [hardware_integration] hardware_integration - [INFO] INFO - 🚀 Hardware Integration (Backend-Kontrolle) erfolgreich geladen
2025-06-20 08:34:45 - [hardware_integration] hardware_integration - [INFO] INFO - 🎯 DruckerSteuerung initialisiert - BACKEND ÜBERNIMMT KONTROLLE

View File

@ -1825,3 +1825,24 @@
2025-06-20 08:18:48 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 08:19:52 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 08:19:52 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 08:20:14 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 08:20:14 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 08:20:16 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 08:20:18 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 08:20:18 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 08:20:20 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 08:27:32 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 08:27:32 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 08:33:20 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 08:33:20 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 08:33:22 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 08:33:41 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 08:33:41 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 08:33:42 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 08:34:09 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 08:34:10 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 08:34:10 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)
2025-06-20 08:34:11 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität)
2025-06-20 08:34:36 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität)
2025-06-20 08:34:37 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert
2025-06-20 08:34:37 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion)

View File

@ -937,3 +937,13 @@
2025-06-20 08:18:44 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:18:47 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 08:18:47 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:20:16 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 08:20:16 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:20:19 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 08:20:19 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:33:21 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 08:33:21 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:33:42 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 08:33:42 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:34:11 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert
2025-06-20 08:34:11 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)

View File

@ -494,3 +494,14 @@ WHERE user_permissions.user_id = ?
2025-06-20 08:15:03 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 08:18:44 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 08:18:48 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 08:20:16 - [permissions] permissions - [ERROR] ERROR - Fehler beim Korrigieren der Admin-Berechtigungen: (sqlite3.OperationalError) no such table: users
[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout
FROM users
WHERE users.role = ?]
[parameters: ('admin',)]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
2025-06-20 08:20:19 - [permissions] permissions - [INFO] INFO - UserPermission für Admin admin (ID: 1) erstellt
2025-06-20 08:20:19 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 1 erstellt, 0 aktualisiert
2025-06-20 08:33:21 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 08:33:42 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert
2025-06-20 08:34:11 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert

View File

@ -2587,3 +2587,74 @@
2025-06-20 08:18:46 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:18:48 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 08:18:48 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 08:20:14 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:20:16 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 08:20:16 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 08:20:18 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:20:20 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 08:20:20 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 08:33:20 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 08:33:22 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 08:33:25 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 08:33:28 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar
2025-06-20 08:33:31 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar
2025-06-20 08:33:34 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar
2025-06-20 08:33:37 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar
2025-06-20 08:33:40 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar
2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN
2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen
2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0
2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6
2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0
2025-06-20 08:33:40 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden!
2025-06-20 08:33:40 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 08:33:41 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 08:33:42 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 08:33:45 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 08:33:48 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar
2025-06-20 08:33:51 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar
2025-06-20 08:33:54 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar
2025-06-20 08:33:57 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar
2025-06-20 08:34:00 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar
2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN
2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen
2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0
2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6
2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0
2025-06-20 08:34:00 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden!
2025-06-20 08:34:00 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 08:34:10 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 08:34:11 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 08:34:14 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 08:34:17 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar
2025-06-20 08:34:20 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 3: Steckdose 192.168.0.102 nicht erreichbar
2025-06-20 08:34:23 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 4: Steckdose 192.168.0.103 nicht erreichbar
2025-06-20 08:34:26 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 5: Steckdose 192.168.0.104 nicht erreichbar
2025-06-20 08:34:29 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 6: Steckdose 192.168.0.106 nicht erreichbar
2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - 🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN
2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - 📊 Gesamt: 6 Steckdosen
2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ✅ Erfolgreich: 0
2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - 📡 Nicht erreichbar: 6
2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ❌ Fehlgeschlagen: 0
2025-06-20 08:34:29 - [scheduler] scheduler - [WARNING] WARNING - ⚠️ KEINE Steckdose konnte initialisiert werden!
2025-06-20 08:34:29 - [scheduler] scheduler - [INFO] INFO - ============================================================
2025-06-20 08:34:37 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Systemstart...
2025-06-20 08:34:40 - [scheduler] scheduler - [INFO] INFO - 🔍 Prüfe 6 konfigurierte Steckdosen...
2025-06-20 08:34:43 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 1: Steckdose 192.168.0.100 nicht erreichbar
2025-06-20 08:34:45 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-20 08:34:46 - [scheduler] scheduler - [WARNING] WARNING - 📡 Drucker 2: Steckdose 192.168.0.101 nicht erreichbar

View File

@ -1416,3 +1416,21 @@
2025-06-20 08:18:46 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 08:18:46 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:18:48 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 08:20:14 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 08:20:14 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:20:16 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 08:20:18 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 08:20:18 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:20:19 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 08:33:20 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 08:33:20 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:33:21 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 08:33:41 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 08:33:41 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:33:42 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 08:34:10 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 08:34:10 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:34:11 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert
2025-06-20 08:34:37 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert
2025-06-20 08:34:37 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion)
2025-06-20 08:34:39 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert

View File

@ -3709,3 +3709,48 @@
2025-06-20 08:18:47 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 08:18:47 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 08:18:47 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 08:20:16 - [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-20 08:20:16 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:20:16.099487
2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 08:20:16 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 08:20:19 - [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-20 08:20:19 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:20:19.575052
2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 08:20:19 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 08:33:21 - [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-20 08:33:21 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:33:21.669124
2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 08:33:21 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 08:33:42 - [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-20 08:33:42 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:33:42.280402
2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 08:33:42 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - ==================================================
2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet...
2025-06-20 08:34:11 - [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-20 08:34:11 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-20T08:34:11.469430
2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-20 08:34:11 - [startup] startup - [INFO] INFO - ==================================================

View File

@ -1229,3 +1229,19 @@
2025-06-20 08:18:43 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:18:46 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:18:46 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:20:14 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:20:14 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:20:18 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:20:18 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:31:43 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:31:43 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:33:20 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:33:20 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:33:41 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:33:41 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:34:10 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:34:10 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:34:37 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:34:37 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)
2025-06-20 08:34:45 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert
2025-06-20 08:34:45 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion)

View File

@ -419,3 +419,15 @@
2025-06-20 08:18:43 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 08:18:46 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 08:18:46 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 08:20:14 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 08:20:14 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 08:20:17 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 08:20:17 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 08:33:20 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 08:33:20 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 08:33:41 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 08:33:41 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 08:34:10 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 08:34:10 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-20 08:34:37 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-20 08:34:37 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet

View File

@ -0,0 +1,281 @@
#!/usr/bin/env python3
"""
Tapo Steckdosen Diagnose-Tool
============================
Dieses Script hilft bei der Diagnose von Verbindungsproblemen mit Tapo-Steckdosen.
Autor: Till Tomczak
Datum: 2025-06-20
"""
import sys
import socket
import subprocess
import time
import os
from datetime import datetime
# Farben für Terminal-Ausgabe
class Colors:
GREEN = '\033[92m'
YELLOW = '\033[93m'
RED = '\033[91m'
BLUE = '\033[94m'
ENDC = '\033[0m'
BOLD = '\033[1m'
def print_header(text):
"""Druckt eine formatierte Überschrift"""
print(f"\n{Colors.BOLD}{Colors.BLUE}{'=' * 60}{Colors.ENDC}")
print(f"{Colors.BOLD}{Colors.BLUE}{text:^60}{Colors.ENDC}")
print(f"{Colors.BOLD}{Colors.BLUE}{'=' * 60}{Colors.ENDC}\n")
def print_success(text):
"""Druckt eine Erfolgsmeldung"""
print(f"{Colors.GREEN}{text}{Colors.ENDC}")
def print_warning(text):
"""Druckt eine Warnung"""
print(f"{Colors.YELLOW}⚠️ {text}{Colors.ENDC}")
def print_error(text):
"""Druckt eine Fehlermeldung"""
print(f"{Colors.RED}{text}{Colors.ENDC}")
def print_info(text):
"""Druckt eine Info-Meldung"""
print(f"{Colors.BLUE} {text}{Colors.ENDC}")
def test_port_connection(ip, port, timeout=3):
"""
Testet die Verbindung zu einem bestimmten Port.
Args:
ip: IP-Adresse
port: Port-Nummer
timeout: Timeout in Sekunden
Returns:
bool: True wenn Verbindung möglich
"""
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
result = sock.connect_ex((ip, port))
sock.close()
return result == 0
except Exception as e:
print_error(f"Socket-Fehler: {e}")
return False
def test_icmp_ping(ip):
"""
Führt einen ICMP Ping durch.
Args:
ip: IP-Adresse
Returns:
bool: True wenn Ping erfolgreich
"""
try:
# Windows und Linux kompatibel
param = '-n' if os.name == 'nt' else '-c'
command = ['ping', param, '1', '-w', '2000', ip]
result = subprocess.run(command, capture_output=True, text=True, timeout=5)
return result.returncode == 0
except Exception as e:
print_error(f"Ping-Fehler: {e}")
return False
def test_dns_resolution(hostname):
"""
Testet die DNS-Auflösung eines Hostnamens.
Args:
hostname: Hostname zum Auflösen
Returns:
str: Aufgelöste IP oder None
"""
try:
ip = socket.gethostbyname(hostname)
return ip
except Exception as e:
print_error(f"DNS-Auflösung fehlgeschlagen: {e}")
return None
def test_tapo_connection(ip, username="admin", password="admin"):
"""
Testet die Tapo-Verbindung.
Args:
ip: IP-Adresse der Steckdose
username: Tapo-Benutzername
password: Tapo-Passwort
Returns:
dict: Ergebnis der Tests
"""
results = {
"timestamp": datetime.now().isoformat(),
"ip": ip,
"tests": {}
}
# Test 1: ICMP Ping
print_info(f"Teste ICMP Ping zu {ip}...")
ping_result = test_icmp_ping(ip)
results["tests"]["icmp_ping"] = ping_result
if ping_result:
print_success(f"ICMP Ping zu {ip} erfolgreich")
else:
print_warning(f"ICMP Ping zu {ip} fehlgeschlagen (kann durch Firewall blockiert sein)")
# Test 2: Port 80 (HTTP)
print_info(f"Teste Port 80 (HTTP) auf {ip}...")
port80_result = test_port_connection(ip, 80)
results["tests"]["port_80"] = port80_result
if port80_result:
print_success(f"Port 80 auf {ip} ist erreichbar")
else:
print_error(f"Port 80 auf {ip} ist NICHT erreichbar")
# Test 3: Port 9999 (Tapo-spezifisch)
print_info(f"Teste Port 9999 (Tapo) auf {ip}...")
port9999_result = test_port_connection(ip, 9999)
results["tests"]["port_9999"] = port9999_result
if port9999_result:
print_success(f"Port 9999 auf {ip} ist erreichbar")
else:
print_warning(f"Port 9999 auf {ip} ist nicht erreichbar")
# Test 4: PyP100 Verbindung
try:
print_info("Teste PyP100 Bibliothek...")
from PyP100.PyP100 import P100
print_info(f"Versuche Tapo-Handshake mit {ip}...")
p100 = P100(ip, username, password)
# Handshake
p100.handshake()
print_success("Tapo-Handshake erfolgreich")
results["tests"]["tapo_handshake"] = True
# Login
p100.login()
print_success("Tapo-Login erfolgreich")
results["tests"]["tapo_login"] = True
# Device Info
device_info = p100.getDeviceInfo()
if device_info and 'error_code' in device_info and device_info['error_code'] == 0:
print_success("Tapo-Geräteinformationen erfolgreich abgerufen")
results["tests"]["tapo_device_info"] = True
results["device_info"] = device_info.get('result', {})
# Status anzeigen
device_on = device_info.get('result', {}).get('device_on', False)
print_info(f"Steckdosen-Status: {'EIN' if device_on else 'AUS'}")
else:
print_error("Konnte Geräteinformationen nicht abrufen")
results["tests"]["tapo_device_info"] = False
except ImportError:
print_error("PyP100 Bibliothek nicht installiert!")
print_info("Installiere mit: pip install PyP100")
results["tests"]["pyp100_available"] = False
except Exception as e:
print_error(f"Tapo-Verbindung fehlgeschlagen: {e}")
results["tests"]["tapo_connection"] = False
results["error"] = str(e)
return results
def diagnose_network():
"""Führt eine allgemeine Netzwerk-Diagnose durch"""
print_header("Netzwerk-Diagnose")
# Lokale IP-Adresse ermitteln
try:
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
print_info(f"Lokaler Hostname: {hostname}")
print_info(f"Lokale IP-Adresse: {local_ip}")
except Exception as e:
print_error(f"Konnte lokale IP nicht ermitteln: {e}")
# Gateway ermitteln (nur Linux/Unix)
if os.name != 'nt':
try:
result = subprocess.run(['ip', 'route', 'show'], capture_output=True, text=True)
if result.returncode == 0:
lines = result.stdout.strip().split('\n')
for line in lines:
if 'default' in line:
gateway = line.split()[2]
print_info(f"Standard-Gateway: {gateway}")
break
except:
pass
# DNS-Test
print_info("Teste DNS-Auflösung...")
google_ip = test_dns_resolution("google.com")
if google_ip:
print_success(f"DNS funktioniert (google.com -> {google_ip})")
else:
print_error("DNS-Auflösung fehlgeschlagen")
def main():
"""Hauptfunktion"""
print_header("Tapo Steckdosen Diagnose-Tool")
print_info(f"Start: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
# Argumente prüfen
if len(sys.argv) < 2:
print_error("Verwendung: python diagnose_tapo.py <IP-Adresse> [username] [password]")
print_info("Beispiel: python diagnose_tapo.py 192.168.1.100")
print_info("Beispiel: python diagnose_tapo.py 192.168.1.100 admin admin")
sys.exit(1)
ip_address = sys.argv[1]
username = sys.argv[2] if len(sys.argv) > 2 else "admin"
password = sys.argv[3] if len(sys.argv) > 3 else "admin"
# Netzwerk-Diagnose
diagnose_network()
# Tapo-Diagnose
print_header(f"Teste Tapo-Steckdose: {ip_address}")
results = test_tapo_connection(ip_address, username, password)
# Zusammenfassung
print_header("Diagnose-Zusammenfassung")
successful_tests = sum(1 for test, result in results["tests"].items() if result is True)
total_tests = len(results["tests"])
print_info(f"Erfolgreiche Tests: {successful_tests}/{total_tests}")
# Empfehlungen
if not results["tests"].get("port_80", False):
print_warning("\nEmpfehlungen:")
print_warning("1. Stelle sicher, dass die Steckdose eingeschaltet ist")
print_warning("2. Prüfe, ob die IP-Adresse korrekt ist")
print_warning("3. Stelle sicher, dass sich die Steckdose im gleichen Netzwerk befindet")
print_warning("4. Prüfe Firewall-Einstellungen")
print_warning("5. Versuche die Steckdose zurückzusetzen (Reset-Knopf)")
if results["tests"].get("port_80", False) and not results["tests"].get("tapo_login", False):
print_warning("\nAuthentifizierungsproblem:")
print_warning("1. Prüfe Benutzername und Passwort")
print_warning("2. Standard-Credentials sind meist 'admin'/'admin'")
print_warning("3. Wurden die Credentials in der Tapo-App geändert?")
print_info(f"\nEnde: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
if __name__ == "__main__":
main()

View File

@ -93,7 +93,7 @@ async function loadGuestRequests() {
try {
showLoading(true);
const url = `${API_BASE_URL}/api/admin/guest-requests`;
const url = `${API_BASE_URL}/api/admin/requests`;
const response = await fetch(url, {
method: 'GET',
headers: {
@ -138,7 +138,7 @@ function updateStats(stats) {
const elements = {
'pending-count': stats.pending || 0,
'approved-count': stats.approved || 0,
'rejected-count': stats.rejected || 0,
'rejected-count': stats.denied || stats.rejected || 0,
'total-count': stats.total || 0
};
@ -289,7 +289,7 @@ function createRequestRow(request) {
<td class="px-6 py-4">
<div class="text-sm text-slate-900 dark:text-white font-medium">${escapeHtml(request.file_name || 'Keine Datei')}</div>
<div class="text-sm text-slate-500 dark:text-slate-400">
${request.duration_minutes ? `${request.duration_minutes} Min.` : 'Unbekannte Dauer'}
${request.duration_min ? `${request.duration_min} Min.` : 'Unbekannte Dauer'}
${request.copies ? `${request.copies} Kopien` : ''}
</div>
${request.reason ? `<div class="text-xs text-slate-400 dark:text-slate-500 mt-1 truncate max-w-xs">${escapeHtml(request.reason)}</div>` : ''}
@ -378,6 +378,7 @@ function getStatusColor(status) {
'pending': 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300',
'approved': 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300',
'rejected': 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300',
'denied': 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300',
'expired': 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300'
};
return colors[status] || 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300';
@ -388,6 +389,7 @@ function getStatusDot(status) {
'pending': 'bg-yellow-400 dark:bg-yellow-300',
'approved': 'bg-green-400 dark:bg-green-300',
'rejected': 'bg-red-400 dark:bg-red-300',
'denied': 'bg-red-400 dark:bg-red-300',
'expired': 'bg-gray-400 dark:bg-gray-300'
};
return dots[status] || 'bg-gray-400 dark:bg-gray-300';
@ -398,6 +400,7 @@ function getStatusText(status) {
'pending': 'Wartend',
'approved': 'Genehmigt',
'rejected': 'Abgelehnt',
'denied': 'Abgelehnt',
'expired': 'Abgelaufen'
};
return texts[status] || status;
@ -429,7 +432,7 @@ async function approveRequest(requestId) {
try {
showLoading(true);
const url = `${API_BASE_URL}/api/admin/guest-requests/${requestId}/approve`;
const url = `${API_BASE_URL}/api/requests/${requestId}/approve`;
const response = await fetch(url, {
method: 'POST',
headers: {
@ -437,7 +440,7 @@ async function approveRequest(requestId) {
'X-CSRFToken': csrfToken
},
body: JSON.stringify({
approval_notes: notes || ''
notes: notes || ''
})
});
@ -446,7 +449,7 @@ async function approveRequest(requestId) {
if (data.success) {
showNotification('✅ Gastauftrag erfolgreich genehmigt', 'success');
if (data.otp_code) {
showNotification(`🔑 OTP-Code für ${data.guest_name}: ${data.otp_code}`, 'info');
showNotification(`🔑 OTP-Code für ${data.guest_name || 'Gast'}: ${data.otp_code}`, 'info');
}
loadGuestRequests();
} else {
@ -470,14 +473,14 @@ async function rejectRequest(requestId) {
try {
showLoading(true);
const url = `${API_BASE_URL}/api/admin/guest-requests/${requestId}/reject`;
const url = `${API_BASE_URL}/api/requests/${requestId}/deny`;
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': csrfToken
},
body: JSON.stringify({ rejection_reason: reason.trim() })
body: JSON.stringify({ reason: reason.trim() })
});
const data = await response.json();
@ -563,7 +566,7 @@ function showRequestDetail(requestId) {
<h4 class="text-lg font-semibold text-gray-900 dark:text-white">Auftrag Details</h4>
<div class="bg-slate-50 dark:bg-slate-700 rounded-lg p-4">
<p><strong>Datei:</strong> ${escapeHtml(request.file_name || 'Keine Datei')}</p>
<p><strong>Dauer:</strong> ${request.duration_minutes || 'Unbekannt'} Minuten</p>
<p><strong>Dauer:</strong> ${request.duration_min || 'Unbekannt'} Minuten</p>
<p><strong>Kopien:</strong> ${request.copies || 1}</p>
<p><strong>Status:</strong> ${getStatusText(request.status)}</p>
</div>
@ -738,7 +741,7 @@ function exportToCSV(data) {
req.file_name || '',
getStatusText(req.status),
formatDateTime(req.created_at),
req.duration_minutes || '',
req.duration_min || '',
req.copies || '',
req.reason || ''
]);

View File

@ -17,8 +17,8 @@
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="{{ url_for('static', filename='favicon.svg') }}">
<!-- CSS Bundle -->
<link href="{{ url_for('static', filename='css/tailwind.min.css') }}" rel="stylesheet">
<!-- CSS Bundle - Optimiert für Performance -->
<link href="{{ url_for('static', filename='css/output.min.css') }}" rel="stylesheet">
<link href="{{ url_for('static', filename='fontawesome/css/all.min.css') }}" rel="stylesheet">
<!-- Unified Dark/Light Mode System -->

View File

@ -33,6 +33,7 @@ except ImportError:
# MYP Models & Utils
from models import get_db_session, Printer, PlugStatusLog
from utils.logging_config import get_logger
import os
# Logger
hardware_logger = get_logger("hardware_integration")
@ -353,28 +354,56 @@ class DruckerSteuerung:
hardware_logger.warning(f"⚠️ Simulation: Steckdose {ip} würde {'eingeschaltet' if einschalten else 'ausgeschaltet'}")
return True # Simulation immer erfolgreich
try:
action = "einschalten" if einschalten else "ausschalten"
hardware_logger.debug(f"🔌 Versuche Steckdose {ip} zu {action}")
# P100-Verbindung herstellen
p100 = PyP100(ip, self.tapo_username, self.tapo_password)
p100.handshake()
p100.login()
# Schalten
if einschalten:
p100.turnOn()
else:
p100.turnOff()
hardware_logger.info(f"✅ Steckdose {ip} erfolgreich {action}")
return True
except Exception as e:
hardware_logger.error(f"❌ Fehler beim Schalten der Steckdose {ip}: {e}")
# Zuerst Netzwerk-Erreichbarkeit prüfen
if not self._erweiterte_netzwerk_prüfung(ip):
hardware_logger.error(f" Steckdose {ip} ist im Netzwerk nicht erreichbar")
return False
retry_count = 0
max_retries = 3
while retry_count < max_retries:
try:
action = "einschalten" if einschalten else "ausschalten"
hardware_logger.debug(f"🔌 Versuche Steckdose {ip} zu {action} (Versuch {retry_count + 1}/{max_retries})")
# P100-Verbindung herstellen mit Timeout
p100 = PyP100(ip, self.tapo_username, self.tapo_password)
p100.handshake()
p100.login()
# Schalten
if einschalten:
p100.turnOn()
else:
p100.turnOff()
hardware_logger.info(f"✅ Steckdose {ip} erfolgreich {action}")
return True
except Exception as e:
retry_count += 1
error_msg = str(e)
# Spezifische Fehlerbehandlung
if "Connection refused" in error_msg:
hardware_logger.error(f"❌ Verbindung zu {ip} verweigert - Steckdose antwortet nicht auf Port 80")
elif "timeout" in error_msg.lower():
hardware_logger.error(f"❌ Zeitüberschreitung bei Verbindung zu {ip}")
elif "handshake" in error_msg.lower():
hardware_logger.error(f"❌ Tapo-Handshake fehlgeschlagen für {ip} - Möglicherweise falsche Credentials")
elif "login" in error_msg.lower():
hardware_logger.error(f"❌ Tapo-Login fehlgeschlagen für {ip} - Benutzername/Passwort prüfen")
else:
hardware_logger.error(f"❌ Fehler beim Schalten der Steckdose {ip}: {e}")
if retry_count < max_retries:
hardware_logger.info(f"🔄 Warte 2 Sekunden vor erneutem Versuch...")
time.sleep(2)
hardware_logger.error(f"❌ Alle {max_retries} Versuche für Steckdose {ip} fehlgeschlagen")
return False
def _drucker_status_pruefen(self, drucker: Printer) -> str:
"""Prüft den aktuellen Status eines Druckers"""
if not drucker.plug_ip:
@ -397,6 +426,51 @@ class DruckerSteuerung:
except:
return False
def _erweiterte_netzwerk_prüfung(self, ip: str) -> bool:
"""
Erweiterte Netzwerk-Prüfung mit mehreren Tests.
Args:
ip: IP-Adresse zum Prüfen
Returns:
bool: True wenn erreichbar
"""
hardware_logger.debug(f"🔍 Erweiterte Netzwerk-Prüfung für {ip}")
# Test 1: Port 80 (HTTP)
if self._ping_test(ip, timeout=2):
hardware_logger.debug(f"{ip} auf Port 80 erreichbar")
return True
# Test 2: Port 9999 (Tapo-spezifisch für manche Modelle)
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
result = sock.connect_ex((ip, 9999))
sock.close()
if result == 0:
hardware_logger.debug(f"{ip} auf Port 9999 erreichbar")
return True
except:
pass
# Test 3: ICMP Ping (falls verfügbar)
try:
import subprocess
# Windows und Linux kompatibel
param = '-n' if os.name == 'nt' else '-c'
command = ['ping', param, '1', '-w', '2000', ip]
result = subprocess.run(command, capture_output=True, text=True, timeout=3)
if result.returncode == 0:
hardware_logger.debug(f"{ip} via ICMP Ping erreichbar")
return True
except:
pass
hardware_logger.warning(f"⚠️ {ip} ist über keine Methode erreichbar")
return False
def _status_log_erstellen(self, drucker_id: int, action: str, grund: str):
"""Erstellt einen Eintrag im Status-Log"""
try:
@ -443,33 +517,171 @@ class DruckerSteuerung:
# Legacy-Format: (reachable, status)
return (True, 'online')
# Zuerst Netzwerk-Erreichbarkeit prüfen
if not self._erweiterte_netzwerk_prüfung(ip):
hardware_logger.warning(f"⚠️ Steckdose {ip} ist im Netzwerk nicht erreichbar")
return (False, 'unreachable')
retry_count = 0
max_retries = 2
while retry_count < max_retries:
try:
# Tapo P100/P110 Verbindung
p100 = PyP100(ip, self.tapo_username, self.tapo_password)
p100.handshake()
p100.login()
# Device Info abrufen
device_info = p100.getDeviceInfo()
if device_info and 'error_code' in device_info:
if device_info['error_code'] == 0:
device_on = device_info.get('result', {}).get('device_on', False)
hardware_logger.debug(f"✅ Steckdose {ip}: {'EIN' if device_on else 'AUS'}")
# Legacy-Format: (reachable, status)
return (True, 'on' if device_on else 'off')
else:
hardware_logger.warning(f"⚠️ Steckdose {ip} Error Code: {device_info['error_code']}")
return (False, 'error')
else:
hardware_logger.error(f"❌ Steckdose {ip}: Keine gültige Antwort")
return (False, 'unreachable')
except Exception as e:
retry_count += 1
error_msg = str(e)
if "Connection refused" in error_msg:
hardware_logger.error(f"❌ Verbindung zu {ip} verweigert")
elif "timeout" in error_msg.lower():
hardware_logger.error(f"❌ Zeitüberschreitung bei {ip}")
elif "handshake" in error_msg.lower():
hardware_logger.error(f"❌ Handshake-Fehler bei {ip}")
else:
hardware_logger.error(f"❌ Fehler beim Prüfen von Steckdose {ip}: {e}")
if retry_count < max_retries:
time.sleep(1)
return (False, 'unreachable')
def ping_address(self, ip: str, timeout: int = 5) -> bool:
"""
Prüft die Netzwerk-Erreichbarkeit einer IP-Adresse.
Args:
ip: IP-Adresse zum Testen
timeout: Timeout in Sekunden
Returns:
bool: True wenn erreichbar, False sonst
"""
hardware_logger.debug(f"📡 Teste Netzwerk-Erreichbarkeit: {ip}")
try:
# Tapo P100/P110 Verbindung
# Socket-basierter Ping-Test auf Port 80 (HTTP)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
result = sock.connect_ex((ip, 80))
sock.close()
is_reachable = (result == 0)
hardware_logger.debug(f"📡 {ip}: {'✅ erreichbar' if is_reachable else '❌ nicht erreichbar'}")
return is_reachable
except Exception as e:
hardware_logger.debug(f"❌ Ping-Test für {ip} fehlgeschlagen: {e}")
return False
def turn_off(self, ip: str, username: str = None, password: str = None, printer_id: int = None) -> bool:
"""
Schaltet eine Tapo-Steckdose aus.
Args:
ip: IP-Adresse der Steckdose
username: Benutzername (wird ignoriert, verwendet interne Credentials)
password: Passwort (wird ignoriert, verwendet interne Credentials)
printer_id: Optional - ID des Druckers für Logging
Returns:
bool: True wenn erfolgreich ausgeschaltet
"""
hardware_logger.debug(f"🔴 Schalte Steckdose aus: {ip}" + (f" (Drucker ID: {printer_id})" if printer_id else ""))
if not TAPO_AVAILABLE:
hardware_logger.info(f"🔄 SIMULATION: Steckdose {ip} ausgeschaltet")
return True
try:
# P100-Verbindung mit internen Credentials
p100 = PyP100(ip, self.tapo_username, self.tapo_password)
p100.handshake()
p100.login()
# Device Info abrufen
device_info = p100.getDeviceInfo()
# Steckdose ausschalten
p100.turnOff()
if device_info and 'error_code' in device_info:
if device_info['error_code'] == 0:
device_on = device_info.get('result', {}).get('device_on', False)
hardware_logger.info(f"✅ Steckdose {ip} erfolgreich ausgeschaltet")
hardware_logger.debug(f"✅ Steckdose {ip}: {'EIN' if device_on else 'AUS'}")
# Status-Log erstellen falls Drucker-ID verfügbar
if printer_id:
try:
self._status_log_erstellen(printer_id, 'turned_off', 'Startup-Initialisierung')
except:
pass # Fehler beim Logging nicht kritisch
# Legacy-Format: (reachable, status)
return (True, 'online' if device_on else 'offline')
else:
hardware_logger.warning(f"⚠️ Steckdose {ip} Error Code: {device_info['error_code']}")
return (False, 'error')
else:
hardware_logger.error(f"❌ Steckdose {ip}: Keine gültige Antwort")
return (False, 'unreachable')
return True
except Exception as e:
hardware_logger.error(f"❌ Fehler beim Prüfen von Steckdose {ip}: {e}")
return (False, 'unreachable')
hardware_logger.error(f"❌ Fehler beim Ausschalten der Steckdose {ip}: {e}")
return False
def turn_on(self, ip: str, username: str = None, password: str = None, printer_id: int = None) -> bool:
"""
Schaltet eine Tapo-Steckdose ein.
Args:
ip: IP-Adresse der Steckdose
username: Benutzername (wird ignoriert, verwendet interne Credentials)
password: Passwort (wird ignoriert, verwendet interne Credentials)
printer_id: Optional - ID des Druckers für Logging
Returns:
bool: True wenn erfolgreich eingeschaltet
"""
hardware_logger.debug(f"🟢 Schalte Steckdose ein: {ip}" + (f" (Drucker ID: {printer_id})" if printer_id else ""))
if not TAPO_AVAILABLE:
hardware_logger.info(f"🔄 SIMULATION: Steckdose {ip} eingeschaltet")
return True
try:
# P100-Verbindung mit internen Credentials
p100 = PyP100(ip, self.tapo_username, self.tapo_password)
p100.handshake()
p100.login()
# Steckdose einschalten
p100.turnOn()
hardware_logger.info(f"✅ Steckdose {ip} erfolgreich eingeschaltet")
# Status-Log erstellen falls Drucker-ID verfügbar
if printer_id:
try:
self._status_log_erstellen(printer_id, 'turned_on', 'Manuell')
except:
pass # Fehler beim Logging nicht kritisch
return True
except Exception as e:
hardware_logger.error(f"❌ Fehler beim Einschalten der Steckdose {ip}: {e}")
return False
# ===== GLOBALE INSTANZ =====

View File

@ -39,6 +39,7 @@ class BackgroundTaskScheduler:
self._running = False
self._start_time: Optional[datetime] = None
self.logger = get_scheduler_logger()
self._outlets_initialized = False # Flag für einmalige Initialisierung
def register_task(self,
task_id: str,
@ -713,6 +714,188 @@ class BackgroundTaskScheduler:
db_session.rollback()
db_session.close()
def initialize_all_outlets_on_startup(self) -> Dict[str, bool]:
"""
Initialisiert alle konfigurierten Steckdosen beim Systemstart.
Schaltet alle im Netzwerk erreichbaren Tapo-Steckdosen aus, um einen
einheitlichen Startzustand (aus = frei) zu gewährleisten.
Returns:
Dict[str, bool]: Ergebnis der Initialisierung pro Drucker
"""
if self._outlets_initialized:
self.logger.info("🔄 Steckdosen bereits initialisiert - überspringe")
return {}
self.logger.info("🚀 Starte Steckdosen-Initialisierung beim Systemstart...")
results = {}
success_count = 0
total_count = 0
unreachable_count = 0
try:
db_session = get_db_session()
# Alle aktiven Drucker mit Steckdosen-Konfiguration laden
printers = db_session.query(Printer).filter(
Printer.active == True,
Printer.plug_ip.isnot(None)
).all()
if not printers:
self.logger.warning("⚠️ Keine aktiven Drucker mit Steckdosen-Konfiguration gefunden")
db_session.close()
return results
total_count = len(printers)
self.logger.info(f"🔍 Prüfe {total_count} konfigurierte Steckdosen...")
# Tapo-Controller für die Operationen verwenden
tapo_controller = get_tapo_controller()
# Jede Steckdose einzeln verarbeiten
for printer in printers:
printer_name = printer.name
plug_ip = printer.plug_ip
try:
self.logger.debug(f"🔌 Verarbeite {printer_name} ({plug_ip})...")
# 1. Netzwerk-Erreichbarkeit prüfen
is_reachable = tapo_controller.ping_address(plug_ip, timeout=3)
if not is_reachable:
self.logger.warning(f"📡 {printer_name}: Steckdose {plug_ip} nicht erreichbar")
results[printer_name] = {
'success': False,
'reason': 'nicht_erreichbar',
'ip': plug_ip
}
unreachable_count += 1
continue
# 2. Aktuellen Status prüfen
reachable, current_status = tapo_controller.check_outlet_status(
plug_ip,
printer_id=printer.id,
debug=True
)
if not reachable:
self.logger.warning(f"🔗 {printer_name}: Tapo-Verbindung fehlgeschlagen")
results[printer_name] = {
'success': False,
'reason': 'verbindung_fehlgeschlagen',
'ip': plug_ip
}
unreachable_count += 1
continue
# 3. Steckdose ausschalten (nur wenn nötig)
if current_status == "on":
self.logger.info(f"🔄 {printer_name}: Schalte Steckdose von 'an' auf 'aus' um...")
success = tapo_controller.turn_off(
plug_ip,
printer_id=printer.id
)
if success:
self.logger.info(f"{printer_name}: Erfolgreich ausgeschaltet")
# Drucker-Status in Datenbank aktualisieren
printer.status = "offline"
printer.last_checked = datetime.now()
results[printer_name] = {
'success': True,
'action': 'ausgeschaltet',
'previous_status': 'an',
'ip': plug_ip
}
success_count += 1
else:
self.logger.error(f"{printer_name}: Ausschalten fehlgeschlagen")
results[printer_name] = {
'success': False,
'reason': 'ausschalten_fehlgeschlagen',
'ip': plug_ip
}
elif current_status == "off":
self.logger.info(f"{printer_name}: Bereits ausgeschaltet - keine Aktion nötig")
# Status in Datenbank aktualisieren
printer.status = "offline"
printer.last_checked = datetime.now()
results[printer_name] = {
'success': True,
'action': 'bereits_aus',
'previous_status': 'aus',
'ip': plug_ip
}
success_count += 1
else:
self.logger.warning(f"⚠️ {printer_name}: Unbekannter Status '{current_status}'")
results[printer_name] = {
'success': False,
'reason': 'unbekannter_status',
'status': current_status,
'ip': plug_ip
}
except Exception as e:
self.logger.error(f"{printer_name}: Fehler bei Initialisierung - {str(e)}")
results[printer_name] = {
'success': False,
'reason': 'ausnahme',
'error': str(e),
'ip': plug_ip
}
# Änderungen in der Datenbank speichern
try:
db_session.commit()
self.logger.debug("💾 Datenbank-Änderungen gespeichert")
except Exception as e:
self.logger.error(f"❌ Fehler beim Speichern der Datenbank-Änderungen: {str(e)}")
db_session.rollback()
db_session.close()
# Zusammenfassung loggen
self.logger.info("=" * 60)
self.logger.info("🎯 STECKDOSEN-INITIALISIERUNG ABGESCHLOSSEN")
self.logger.info(f"📊 Gesamt: {total_count} Steckdosen")
self.logger.info(f"✅ Erfolgreich: {success_count}")
self.logger.info(f"📡 Nicht erreichbar: {unreachable_count}")
self.logger.info(f"❌ Fehlgeschlagen: {total_count - success_count - unreachable_count}")
if success_count == total_count:
self.logger.info("🌟 ALLE Steckdosen erfolgreich initialisiert!")
elif success_count > 0:
self.logger.info(f"{success_count}/{total_count} Steckdosen erfolgreich initialisiert")
else:
self.logger.warning("⚠️ KEINE Steckdose konnte initialisiert werden!")
self.logger.info("=" * 60)
# Flag setzen um Mehrfach-Initialisierung zu verhindern
self._outlets_initialized = True
except Exception as e:
self.logger.error(f"❌ Kritischer Fehler bei Steckdosen-Initialisierung: {str(e)}")
try:
db_session.rollback()
db_session.close()
except:
pass
return results
# Scheduler-Instanz erzeugen
scheduler = BackgroundTaskScheduler()