🎉 Feature: Enhanced Admin Guest Requests API & Startup Initialization Documentation 📚
This commit is contained in:
1
backend/DOCS/ADMIN_GUEST_REQUESTS_API_FIX.md
Normal file
1
backend/DOCS/ADMIN_GUEST_REQUESTS_API_FIX.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
1
backend/DOCS/STECKDOSEN_STARTUP_INITIALISIERUNG.md
Normal file
1
backend/DOCS/STECKDOSEN_STARTUP_INITIALISIERUNG.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
@ -1946,6 +1946,28 @@ def main():
|
|||||||
if scheduler:
|
if scheduler:
|
||||||
scheduler.start()
|
scheduler.start()
|
||||||
app_logger.info("[STARTUP] ✅ Job Scheduler gestartet")
|
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:
|
else:
|
||||||
app_logger.warning("[STARTUP] ⚠️ Job Scheduler nicht verfügbar")
|
app_logger.warning("[STARTUP] ⚠️ Job Scheduler nicht verfügbar")
|
||||||
|
|
||||||
|
Binary file not shown.
@ -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: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: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: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
|
||||||
|
@ -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 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 - [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: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
|
||||||
|
@ -58774,3 +58774,565 @@ WHERE users.role = ?]
|
|||||||
2025-06-20 08:19:39 - [app] app - [DEBUG] DEBUG - Response:
|
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 - Request:
|
||||||
2025-06-20 08:19:42 - [app] app - [DEBUG] DEBUG - Response:
|
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
|
||||||
|
@ -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: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 - ✅ 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: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)
|
||||||
|
@ -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: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 - ✅ 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: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)
|
||||||
|
@ -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: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: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: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
|
||||||
|
@ -777,3 +777,10 @@
|
|||||||
2025-06-20 08:15:03 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert
|
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: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: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
|
||||||
|
@ -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: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.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: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
|
||||||
|
@ -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: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: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)
|
||||||
|
@ -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: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 - ✅ 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: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)
|
||||||
|
@ -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: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: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: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
|
||||||
|
@ -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: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-Thread gestartet
|
||||||
2025-06-20 08:18:48 - [scheduler] scheduler - [INFO] INFO - Scheduler 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
|
||||||
|
@ -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 - ✅ 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: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: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
|
||||||
|
@ -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-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 - 🔒 Windows-sichere Log-Rotation: Aktiviert
|
||||||
2025-06-20 08:18:47 - [startup] startup - [INFO] INFO - ==================================================
|
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 - ==================================================
|
||||||
|
@ -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: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 - ✅ 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: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)
|
||||||
|
@ -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: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 - 🔧 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: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
|
||||||
|
281
backend/scripts/diagnose_tapo.py
Normal file
281
backend/scripts/diagnose_tapo.py
Normal 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()
|
@ -93,7 +93,7 @@ async function loadGuestRequests() {
|
|||||||
try {
|
try {
|
||||||
showLoading(true);
|
showLoading(true);
|
||||||
|
|
||||||
const url = `${API_BASE_URL}/api/admin/guest-requests`;
|
const url = `${API_BASE_URL}/api/admin/requests`;
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
@ -138,7 +138,7 @@ function updateStats(stats) {
|
|||||||
const elements = {
|
const elements = {
|
||||||
'pending-count': stats.pending || 0,
|
'pending-count': stats.pending || 0,
|
||||||
'approved-count': stats.approved || 0,
|
'approved-count': stats.approved || 0,
|
||||||
'rejected-count': stats.rejected || 0,
|
'rejected-count': stats.denied || stats.rejected || 0,
|
||||||
'total-count': stats.total || 0
|
'total-count': stats.total || 0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -289,7 +289,7 @@ function createRequestRow(request) {
|
|||||||
<td class="px-6 py-4">
|
<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-900 dark:text-white font-medium">${escapeHtml(request.file_name || 'Keine Datei')}</div>
|
||||||
<div class="text-sm text-slate-500 dark:text-slate-400">
|
<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` : ''}
|
${request.copies ? ` • ${request.copies} Kopien` : ''}
|
||||||
</div>
|
</div>
|
||||||
${request.reason ? `<div class="text-xs text-slate-400 dark:text-slate-500 mt-1 truncate max-w-xs">${escapeHtml(request.reason)}</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',
|
'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',
|
'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',
|
'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'
|
'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';
|
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',
|
'pending': 'bg-yellow-400 dark:bg-yellow-300',
|
||||||
'approved': 'bg-green-400 dark:bg-green-300',
|
'approved': 'bg-green-400 dark:bg-green-300',
|
||||||
'rejected': 'bg-red-400 dark:bg-red-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'
|
'expired': 'bg-gray-400 dark:bg-gray-300'
|
||||||
};
|
};
|
||||||
return dots[status] || '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',
|
'pending': 'Wartend',
|
||||||
'approved': 'Genehmigt',
|
'approved': 'Genehmigt',
|
||||||
'rejected': 'Abgelehnt',
|
'rejected': 'Abgelehnt',
|
||||||
|
'denied': 'Abgelehnt',
|
||||||
'expired': 'Abgelaufen'
|
'expired': 'Abgelaufen'
|
||||||
};
|
};
|
||||||
return texts[status] || status;
|
return texts[status] || status;
|
||||||
@ -429,7 +432,7 @@ async function approveRequest(requestId) {
|
|||||||
try {
|
try {
|
||||||
showLoading(true);
|
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, {
|
const response = await fetch(url, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
@ -437,7 +440,7 @@ async function approveRequest(requestId) {
|
|||||||
'X-CSRFToken': csrfToken
|
'X-CSRFToken': csrfToken
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
approval_notes: notes || ''
|
notes: notes || ''
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -446,7 +449,7 @@ async function approveRequest(requestId) {
|
|||||||
if (data.success) {
|
if (data.success) {
|
||||||
showNotification('✅ Gastauftrag erfolgreich genehmigt', 'success');
|
showNotification('✅ Gastauftrag erfolgreich genehmigt', 'success');
|
||||||
if (data.otp_code) {
|
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();
|
loadGuestRequests();
|
||||||
} else {
|
} else {
|
||||||
@ -470,14 +473,14 @@ async function rejectRequest(requestId) {
|
|||||||
try {
|
try {
|
||||||
showLoading(true);
|
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, {
|
const response = await fetch(url, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'X-CSRFToken': csrfToken
|
'X-CSRFToken': csrfToken
|
||||||
},
|
},
|
||||||
body: JSON.stringify({ rejection_reason: reason.trim() })
|
body: JSON.stringify({ reason: reason.trim() })
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = await response.json();
|
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>
|
<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">
|
<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>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>Kopien:</strong> ${request.copies || 1}</p>
|
||||||
<p><strong>Status:</strong> ${getStatusText(request.status)}</p>
|
<p><strong>Status:</strong> ${getStatusText(request.status)}</p>
|
||||||
</div>
|
</div>
|
||||||
@ -738,7 +741,7 @@ function exportToCSV(data) {
|
|||||||
req.file_name || '',
|
req.file_name || '',
|
||||||
getStatusText(req.status),
|
getStatusText(req.status),
|
||||||
formatDateTime(req.created_at),
|
formatDateTime(req.created_at),
|
||||||
req.duration_minutes || '',
|
req.duration_min || '',
|
||||||
req.copies || '',
|
req.copies || '',
|
||||||
req.reason || ''
|
req.reason || ''
|
||||||
]);
|
]);
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
<!-- Favicon -->
|
<!-- Favicon -->
|
||||||
<link rel="icon" type="image/svg+xml" href="{{ url_for('static', filename='favicon.svg') }}">
|
<link rel="icon" type="image/svg+xml" href="{{ url_for('static', filename='favicon.svg') }}">
|
||||||
|
|
||||||
<!-- CSS Bundle -->
|
<!-- CSS Bundle - Optimiert für Performance -->
|
||||||
<link href="{{ url_for('static', filename='css/tailwind.min.css') }}" rel="stylesheet">
|
<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">
|
<link href="{{ url_for('static', filename='fontawesome/css/all.min.css') }}" rel="stylesheet">
|
||||||
|
|
||||||
<!-- Unified Dark/Light Mode System -->
|
<!-- Unified Dark/Light Mode System -->
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -33,6 +33,7 @@ except ImportError:
|
|||||||
# MYP Models & Utils
|
# MYP Models & Utils
|
||||||
from models import get_db_session, Printer, PlugStatusLog
|
from models import get_db_session, Printer, PlugStatusLog
|
||||||
from utils.logging_config import get_logger
|
from utils.logging_config import get_logger
|
||||||
|
import os
|
||||||
|
|
||||||
# Logger
|
# Logger
|
||||||
hardware_logger = get_logger("hardware_integration")
|
hardware_logger = get_logger("hardware_integration")
|
||||||
@ -353,27 +354,55 @@ class DruckerSteuerung:
|
|||||||
hardware_logger.warning(f"⚠️ Simulation: Steckdose {ip} würde {'eingeschaltet' if einschalten else 'ausgeschaltet'}")
|
hardware_logger.warning(f"⚠️ Simulation: Steckdose {ip} würde {'eingeschaltet' if einschalten else 'ausgeschaltet'}")
|
||||||
return True # Simulation immer erfolgreich
|
return True # Simulation immer erfolgreich
|
||||||
|
|
||||||
try:
|
# Zuerst Netzwerk-Erreichbarkeit prüfen
|
||||||
action = "einschalten" if einschalten else "ausschalten"
|
if not self._erweiterte_netzwerk_prüfung(ip):
|
||||||
hardware_logger.debug(f"🔌 Versuche Steckdose {ip} zu {action}")
|
hardware_logger.error(f"❌ Steckdose {ip} ist im Netzwerk nicht erreichbar")
|
||||||
|
|
||||||
# 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}")
|
|
||||||
return False
|
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:
|
def _drucker_status_pruefen(self, drucker: Printer) -> str:
|
||||||
"""Prüft den aktuellen Status eines Druckers"""
|
"""Prüft den aktuellen Status eines Druckers"""
|
||||||
@ -397,6 +426,51 @@ class DruckerSteuerung:
|
|||||||
except:
|
except:
|
||||||
return False
|
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):
|
def _status_log_erstellen(self, drucker_id: int, action: str, grund: str):
|
||||||
"""Erstellt einen Eintrag im Status-Log"""
|
"""Erstellt einen Eintrag im Status-Log"""
|
||||||
try:
|
try:
|
||||||
@ -443,33 +517,171 @@ class DruckerSteuerung:
|
|||||||
# Legacy-Format: (reachable, status)
|
# Legacy-Format: (reachable, status)
|
||||||
return (True, 'online')
|
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:
|
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 = PyP100(ip, self.tapo_username, self.tapo_password)
|
||||||
p100.handshake()
|
p100.handshake()
|
||||||
p100.login()
|
p100.login()
|
||||||
|
|
||||||
# Device Info abrufen
|
# Steckdose ausschalten
|
||||||
device_info = p100.getDeviceInfo()
|
p100.turnOff()
|
||||||
|
|
||||||
|
hardware_logger.info(f"✅ Steckdose {ip} erfolgreich ausgeschaltet")
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
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, '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')
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
hardware_logger.error(f"❌ Fehler beim Prüfen von Steckdose {ip}: {e}")
|
hardware_logger.error(f"❌ Fehler beim Ausschalten der Steckdose {ip}: {e}")
|
||||||
return (False, 'unreachable')
|
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 =====
|
# ===== GLOBALE INSTANZ =====
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ class BackgroundTaskScheduler:
|
|||||||
self._running = False
|
self._running = False
|
||||||
self._start_time: Optional[datetime] = None
|
self._start_time: Optional[datetime] = None
|
||||||
self.logger = get_scheduler_logger()
|
self.logger = get_scheduler_logger()
|
||||||
|
self._outlets_initialized = False # Flag für einmalige Initialisierung
|
||||||
|
|
||||||
def register_task(self,
|
def register_task(self,
|
||||||
task_id: str,
|
task_id: str,
|
||||||
@ -713,6 +714,188 @@ class BackgroundTaskScheduler:
|
|||||||
db_session.rollback()
|
db_session.rollback()
|
||||||
db_session.close()
|
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-Instanz erzeugen
|
||||||
scheduler = BackgroundTaskScheduler()
|
scheduler = BackgroundTaskScheduler()
|
||||||
|
Reference in New Issue
Block a user