📚 Improved logging structure & efficiency across backend logs 🚀

This commit is contained in:
Till Tomczak 2025-06-01 18:01:23 +02:00
parent 5ad80ff995
commit 361901eefe
22 changed files with 806 additions and 17 deletions

View File

@ -1513,7 +1513,7 @@ def user_update_profile_api():
data = request.get_json() data = request.get_json()
db_session = get_db_session() db_session = get_db_session()
user = db_session.query(User).filter(User.id == int(current_user.id)).first() user = db_session.get(User, int(current_user.id))
if not user: if not user:
db_session.close() db_session.close()
@ -2669,7 +2669,7 @@ def toggle_printer_power(printer_id):
# Standard-Zustand ermitteln (Toggle-Verhalten) # Standard-Zustand ermitteln (Toggle-Verhalten)
db_session = get_db_session() db_session = get_db_session()
printer = db_session.get(Printer, printer_id) # Modernized from query().get() printer = db_session.get(Printer, printer_id)
if not printer: if not printer:
db_session.close() db_session.close()
@ -2730,7 +2730,7 @@ def test_printer_tapo_connection(printer_id):
""" """
try: try:
db_session = get_db_session() db_session = get_db_session()
printer = db_session.query(Printer).get(printer_id) printer = db_session.get(Printer, printer_id)
if not printer: if not printer:
db_session.close() db_session.close()
@ -3103,7 +3103,7 @@ def admin_update_user_form(user_id):
db_session = get_db_session() db_session = get_db_session()
user = db_session.query(User).get(user_id) user = db_session.get(User, user_id)
if not user: if not user:
db_session.close() db_session.close()
flash("Benutzer nicht gefunden.", "error") flash("Benutzer nicht gefunden.", "error")
@ -3174,7 +3174,7 @@ def admin_update_printer_form(printer_id):
db_session = get_db_session() db_session = get_db_session()
printer = db_session.query(Printer).get(printer_id) printer = db_session.get(Printer, printer_id)
if not printer: if not printer:
db_session.close() db_session.close()
flash("Drucker nicht gefunden.", "error") flash("Drucker nicht gefunden.", "error")
@ -3373,7 +3373,7 @@ def upload_avatar():
# Alte Avatar-Datei löschen falls vorhanden # Alte Avatar-Datei löschen falls vorhanden
db_session = get_db_session() db_session = get_db_session()
user = db_session.query(User).get(current_user.id) user = db_session.get(User, current_user.id)
if user and user.avatar_path: if user and user.avatar_path:
delete_file_safe(user.avatar_path) delete_file_safe(user.avatar_path)
@ -3833,7 +3833,7 @@ def delete_job(job_id):
"""Löscht einen Job.""" """Löscht einen Job."""
try: try:
db_session = get_db_session() db_session = get_db_session()
job = db_session.query(Job).get(job_id) job = db_session.get(Job, job_id)
if not job: if not job:
db_session.close() db_session.close()
@ -3963,7 +3963,7 @@ def create_job():
db_session = get_db_session() db_session = get_db_session()
# Prüfen, ob der Drucker existiert # Prüfen, ob der Drucker existiert
printer = db_session.query(Printer).get(printer_id) printer = db_session.get(Printer, printer_id)
if not printer: if not printer:
db_session.close() db_session.close()
return jsonify({"error": "Drucker nicht gefunden"}), 404 return jsonify({"error": "Drucker nicht gefunden"}), 404
@ -4016,7 +4016,7 @@ def update_job(job_id):
data = request.json data = request.json
db_session = get_db_session() db_session = get_db_session()
job = db_session.query(Job).get(job_id) job = db_session.get(Job, job_id)
if not job: if not job:
db_session.close() db_session.close()
@ -4626,7 +4626,7 @@ def approve_guest_request(request_id):
try: try:
db_session = get_db_session() db_session = get_db_session()
guest_request = db_session.query(GuestRequest).filter(GuestRequest.id == request_id).first() guest_request = db_session.get(GuestRequest, request_id)
if not guest_request: if not guest_request:
db_session.close() db_session.close()
@ -4656,7 +4656,7 @@ def approve_guest_request(request_id):
# Falls Drucker zugewiesen werden soll # Falls Drucker zugewiesen werden soll
if printer_id: if printer_id:
printer = db_session.query(Printer).filter(Printer.id == printer_id).first() printer = db_session.get(Printer, printer_id)
if printer: if printer:
guest_request.assigned_printer_id = printer_id guest_request.assigned_printer_id = printer_id
@ -4706,7 +4706,7 @@ def reject_guest_request(request_id):
try: try:
db_session = get_db_session() db_session = get_db_session()
guest_request = db_session.query(GuestRequest).filter(GuestRequest.id == request_id).first() guest_request = db_session.get(GuestRequest, request_id)
if not guest_request: if not guest_request:
db_session.close() db_session.close()
@ -4773,7 +4773,7 @@ def delete_guest_request(request_id):
try: try:
db_session = get_db_session() db_session = get_db_session()
guest_request = db_session.query(GuestRequest).filter(GuestRequest.id == request_id).first() guest_request = db_session.get(GuestRequest, request_id)
if not guest_request: if not guest_request:
db_session.close() db_session.close()
@ -4817,7 +4817,7 @@ def get_guest_request_detail(request_id):
try: try:
db_session = get_db_session() db_session = get_db_session()
guest_request = db_session.query(GuestRequest).filter(GuestRequest.id == request_id).first() guest_request = db_session.get(GuestRequest, request_id)
if not guest_request: if not guest_request:
db_session.close() db_session.close()
@ -4860,18 +4860,18 @@ def get_guest_request_detail(request_id):
# Bearbeiter-Informationen hinzufügen # Bearbeiter-Informationen hinzufügen
if guest_request.approved_by: if guest_request.approved_by:
approved_by_user = db_session.query(User).filter(User.id == guest_request.approved_by).first() approved_by_user = db_session.get(User, guest_request.approved_by)
if approved_by_user: if approved_by_user:
request_data['approved_by_name'] = approved_by_user.name or approved_by_user.username request_data['approved_by_name'] = approved_by_user.name or approved_by_user.username
if guest_request.rejected_by: if guest_request.rejected_by:
rejected_by_user = db_session.query(User).filter(User.id == guest_request.rejected_by).first() rejected_by_user = db_session.get(User, guest_request.rejected_by)
if rejected_by_user: if rejected_by_user:
request_data['rejected_by_name'] = rejected_by_user.name or rejected_by_user.username request_data['rejected_by_name'] = rejected_by_user.name or rejected_by_user.username
# Zugewiesener Drucker # Zugewiesener Drucker
if hasattr(guest_request, 'assigned_printer_id') and guest_request.assigned_printer_id: if hasattr(guest_request, 'assigned_printer_id') and guest_request.assigned_printer_id:
assigned_printer = db_session.query(Printer).filter(Printer.id == guest_request.assigned_printer_id).first() assigned_printer = db_session.get(Printer, guest_request.assigned_printer_id)
if assigned_printer: if assigned_printer:
request_data['assigned_printer'] = { request_data['assigned_printer'] = {
'id': assigned_printer.id, 'id': assigned_printer.id,

Binary file not shown.

View File

@ -74,3 +74,4 @@
2025-06-01 17:14:58 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 17:14:58 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 17:16:36 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 17:16:36 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 17:36:07 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 17:36:07 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 17:55:20 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert

View File

@ -1875,3 +1875,56 @@ WHERE jobs.status = ?) AS anon_1]
2025-06-01 17:36:09 - [app] app - [INFO] INFO - Job-Scheduler gestartet 2025-06-01 17:36:09 - [app] app - [INFO] INFO - Job-Scheduler gestartet
2025-06-01 17:36:09 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP) 2025-06-01 17:36:09 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-01 17:36:09 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert 2025-06-01 17:36:09 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
2025-06-01 17:55:19 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
2025-06-01 17:55:21 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
2025-06-01 17:55:21 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
2025-06-01 17:55:21 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
2025-06-01 17:55:21 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
2025-06-01 17:55:21 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-01 17:55:21 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
2025-06-01 17:55:21 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-01 17:55:21 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
2025-06-01 17:55:21 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
2025-06-01 17:55:25 - [app] app - [INFO] INFO - ✅ Steckdosen-Initialisierung: 0/2 Drucker erfolgreich
2025-06-01 17:55:25 - [app] app - [WARNING] WARNING - ⚠️ 2 Drucker konnten nicht initialisiert werden
2025-06-01 17:55:25 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
2025-06-01 17:55:25 - [app] app - [INFO] INFO - Job-Scheduler gestartet
2025-06-01 17:55:25 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-01 17:55:25 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
2025-06-01 17:55:33 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:55:33 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:55:43 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:55:43 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:55:43 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_logs: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:55:44 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_logs: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:55:44 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_logs: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:56:01 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_logs: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:56:13 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:56:44 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 17:56:44 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1
2025-06-01 17:56:44 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 2, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 2}
2025-06-01 17:56:44 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 2, 'total_jobs': 16, 'pending_jobs': 0, 'success_rate': 0.0, 'completed_jobs': 0, 'failed_jobs': None, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': None, 'offline_printers': 2}
2025-06-01 17:57:37 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:57:37 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:57:49 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:57:49 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:00 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:01 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:01 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_logs: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:01 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_logs: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:01 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_logs: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:10 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:10 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:24 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_fix_errors: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:24 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_fix_errors: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:40 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:42 - [app] app - [INFO] INFO - Automatische Fehlerbehebung abgeschlossen: 1 behoben, 0 fehlgeschlagen
2025-06-01 17:58:42 - [app] app - [INFO] INFO - Automatische Fehlerbehebung abgeschlossen: 1 behoben, 0 fehlgeschlagen
2025-06-01 17:58:44 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:50 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:50 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:55 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_advanced_settings: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:58:55 - [app] app - [INFO] INFO - 🔧 Erweiterte Einstellungen aufgerufen von Admin admin
2025-06-01 17:59:06 - [app] app - [INFO] INFO - Admin-Check für Funktion api_system_check: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 17:59:06 - [app] app - [INFO] INFO - 🔍 System-Integritätsprüfung gestartet von Benutzer admin
2025-06-01 17:59:06 - [app] app - [INFO] INFO - ✅ System-Integritätsprüfung abgeschlossen: 80.0% (4/5 Tests bestanden)

View File

@ -74,3 +74,4 @@
2025-06-01 17:14:57 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 17:14:57 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 17:16:36 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 17:16:36 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 17:36:07 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 17:36:07 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 17:55:20 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)

View File

@ -31,3 +31,4 @@
2025-06-01 15:15:50 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 15:15:50 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 17:17:49 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 17:17:49 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 17:40:49 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 17:40:49 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 17:57:47 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 16 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00

View File

@ -289,3 +289,7 @@
2025-06-01 17:36:08 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet 2025-06-01 17:36:08 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 17:36:08 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) 2025-06-01 17:36:08 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 17:36:08 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) 2025-06-01 17:36:08 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
2025-06-01 17:55:21 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 17:55:21 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 17:55:21 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 17:55:21 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)

View File

@ -74,3 +74,4 @@
2025-06-01 17:14:57 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 17:14:57 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 17:16:36 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 17:16:36 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 17:36:07 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 17:36:07 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 17:55:20 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet

View File

@ -72,3 +72,4 @@
2025-06-01 17:14:58 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 17:14:58 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 17:16:36 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 17:16:36 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 17:36:08 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 17:36:08 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 17:55:21 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)

View File

@ -144,3 +144,5 @@
2025-06-01 17:16:36 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 17:16:36 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 17:36:08 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 17:36:08 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 17:36:08 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 17:36:08 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 17:55:21 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 17:55:21 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet

View File

@ -144,3 +144,5 @@
2025-06-01 17:16:36 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 17:16:36 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 17:36:08 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 17:36:08 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 17:36:08 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 17:36:08 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 17:55:21 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 17:55:21 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt

View File

@ -70,3 +70,4 @@
2025-06-01 17:14:58 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 17:14:58 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 17:16:36 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 17:16:36 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 17:36:08 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 17:36:08 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 17:55:21 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert

View File

@ -2338,3 +2338,23 @@
2025-06-01 17:36:26 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102 2025-06-01 17:36:26 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
2025-06-01 17:36:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105 2025-06-01 17:36:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-01 17:36:38 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 2/6 Steckdosen gefunden in 28.5s 2025-06-01 17:36:38 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 2/6 Steckdosen gefunden in 28.5s
2025-06-01 17:55:20 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
2025-06-01 17:55:20 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
2025-06-01 17:55:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
2025-06-01 17:55:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
2025-06-01 17:55:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
2025-06-01 17:55:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
2025-06-01 17:55:23 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.103): Steckdose konnte nicht ausgeschaltet werden
2025-06-01 17:55:25 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.104): Steckdose konnte nicht ausgeschaltet werden
2025-06-01 17:55:25 - [printer_monitor] printer_monitor - [INFO] INFO - 🎯 Steckdosen-Initialisierung abgeschlossen: 0/2 erfolgreich
2025-06-01 17:55:28 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
2025-06-01 17:55:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 17:55:33 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Prüfe Status von 2 aktiven Druckern...
2025-06-01 17:55:34 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
2025-06-01 17:55:40 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
2025-06-01 17:55:42 - [printer_monitor] printer_monitor - [WARNING] WARNING - 🔌 Tapo P110 (192.168.0.104): UNREACHABLE (Ping fehlgeschlagen)
2025-06-01 17:55:42 - [printer_monitor] printer_monitor - [WARNING] WARNING - 🔌 Tapo P110 (192.168.0.103): UNREACHABLE (Ping fehlgeschlagen)
2025-06-01 17:55:42 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Status-Update abgeschlossen für 2 Drucker
2025-06-01 17:55:46 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
2025-06-01 17:55:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-01 17:55:58 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.1s

View File

@ -4385,3 +4385,70 @@
2025-06-01 17:40:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) 2025-06-01 17:40:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:40:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker 2025-06-01 17:40:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:40:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.33ms 2025-06-01 17:40:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.33ms
2025-06-01 17:55:33 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:55:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:55:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9053.04ms
2025-06-01 17:55:43 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:55:43 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:55:43 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 3.83ms
2025-06-01 17:56:13 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:56:13 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:56:13 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.94ms
2025-06-01 17:56:14 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:56:14 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:56:14 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.77ms
2025-06-01 17:56:44 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:56:44 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:56:44 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.98ms
2025-06-01 17:56:45 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:56:45 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:56:45 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.72ms
2025-06-01 17:57:37 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:57:37 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:57:37 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.66ms
2025-06-01 17:57:49 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:57:49 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:57:49 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.91ms
2025-06-01 17:58:01 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:58:01 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:58:01 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.50ms
2025-06-01 17:58:10 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:58:10 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:58:10 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.01ms
2025-06-01 17:58:27 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.100: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:27 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.100: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:27 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3012.47ms
2025-06-01 17:58:27 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3012.74ms
2025-06-01 17:58:30 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.101: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:30 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.101: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:30 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3005.63ms
2025-06-01 17:58:30 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3005.61ms
2025-06-01 17:58:33 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.102: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:33 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.102: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:33 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3002.85ms
2025-06-01 17:58:33 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3003.00ms
2025-06-01 17:58:36 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.103: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:36 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.103: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:36 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3001.58ms
2025-06-01 17:58:36 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3001.78ms
2025-06-01 17:58:39 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.104: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:39 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.104: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:39 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3008.67ms
2025-06-01 17:58:39 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3008.88ms
2025-06-01 17:58:40 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:58:40 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:58:40 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.42ms
2025-06-01 17:58:42 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.106: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:42 - [printers] printers - [WARNING] WARNING - ❌ Drucker 192.168.0.106: OFFLINE (Steckdose nicht erreichbar)
2025-06-01 17:58:42 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3015.79ms
2025-06-01 17:58:42 - [printers] printers - [INFO] INFO - ✅ Drucker-Status-Prüfung 'check_printer_status' erfolgreich in 3015.90ms
2025-06-01 17:58:50 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:58:50 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:58:50 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.80ms
2025-06-01 17:58:55 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:58:55 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:58:55 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.83ms
2025-06-01 17:59:20 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 17:59:20 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 17:59:20 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker
2025-06-01 17:59:20 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.45ms

View File

@ -7220,3 +7220,364 @@
2025-06-01 17:55:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000001EB569C0270>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) 2025-06-01 17:55:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x000001EB569C0270>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:55:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten 2025-06-01 17:55:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:55:16 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee 2025-06-01 17:55:16 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:55:20 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 17:55:25 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-01 17:55:25 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-01 17:55:25 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:55:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F448A9450>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:55:28 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:55:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F449D1CD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:55:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:55:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F449D1810>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:55:32 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:55:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F4494D250>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:55:34 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:55:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA09E0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:55:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:55:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1370>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:55:39 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:55:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA17B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:55:41 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-01 17:55:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1AE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-01 17:55:43 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-01 17:55:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F44916E00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:55:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-01 17:55:45 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-01 17:55:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1BF0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:55:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:55:48 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:55:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0380>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:55:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-01 17:55:50 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-01 17:55:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3130>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:55:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-01 17:55:52 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-01 17:55:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0AF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-01 17:55:54 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-01 17:55:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2580>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-01 17:55:56 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-01 17:55:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2CF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:55:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-01 17:55:58 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-01 17:56:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA39B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:00 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-01 17:56:01 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:56:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3BD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:56:03 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:56:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2580>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:56:05 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:56:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2140>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:56:07 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:56:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3790>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:56:09 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:56:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2690>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:56:12 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:56:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0380>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:56:14 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:56:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA39B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:56:16 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-01 17:56:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2030>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-01 17:56:18 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-01 17:56:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA16A0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:56:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-01 17:56:20 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-01 17:56:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2E00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:56:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:56:22 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:56:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0AF0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:56:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-01 17:56:24 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-01 17:56:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2030>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:56:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-01 17:56:26 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-01 17:56:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA39B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-01 17:56:28 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-01 17:56:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1F20>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-01 17:56:30 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-01 17:56:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA07C0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-01 17:56:33 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-01 17:56:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1370>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-01 17:56:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:56:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1BF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:56:38 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:56:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3240>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:56:40 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:56:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1E10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:56:42 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:56:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA05A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:56:44 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:56:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0D10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:56:46 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:56:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1150>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:56:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:56:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0E20>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:56:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-01 17:56:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA38A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:56:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-01 17:56:53 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-01 17:56:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3460>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:56:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-01 17:56:55 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-01 17:56:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0D10>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:56:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:56:57 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:56:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3020>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:56:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-01 17:56:59 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-01 17:57:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3BD0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:57:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-01 17:57:01 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-01 17:57:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1BF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-01 17:57:03 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-01 17:57:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA28B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-01 17:57:05 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-01 17:57:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3460>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-01 17:57:07 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-01 17:57:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA38A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-01 17:57:10 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:57:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0E20>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:57:12 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:57:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2580>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:57:14 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:57:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3130>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:57:17 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:57:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2690>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:57:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:57:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3790>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:57:21 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:57:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2BE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:57:23 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:57:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2250>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:57:25 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-01 17:57:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1AE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-01 17:57:27 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-01 17:57:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1480>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:57:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-01 17:57:29 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-01 17:57:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3790>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:57:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:57:31 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:57:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2690>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:57:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-01 17:57:33 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-01 17:57:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3130>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:57:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-01 17:57:35 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-01 17:57:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2580>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-01 17:57:37 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-01 17:57:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0E20>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-01 17:57:40 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-01 17:57:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2690>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-01 17:57:42 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-01 17:57:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0E20>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-01 17:57:45 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:57:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1F20>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:57:47 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:57:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA39B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:57:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:57:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2BE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:57:51 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:57:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3CE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:57:53 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:57:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2AD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:57:55 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:57:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0C00>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:57:57 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:57:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1150>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:57:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:57:59 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-01 17:58:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2CF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-01 17:58:02 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-01 17:58:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F44916E00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-01 17:58:04 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-01 17:58:06 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2AD0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:06 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:58:06 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:58:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2140>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-01 17:58:08 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-01 17:58:10 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA06B0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:10 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-01 17:58:10 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-01 17:58:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F44914490>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-01 17:58:12 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-01 17:58:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA17B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-01 17:58:15 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-01 17:58:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2690>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-01 17:58:17 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-01 17:58:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA28B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-01 17:58:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:58:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1AE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:58:22 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:58:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F44914490>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:58:24 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:58:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2BE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:58:26 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:58:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2AD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:58:28 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:58:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA06B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:58:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:58:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3CE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:58:32 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:58:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA38A0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:58:35 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-01 17:58:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA0D10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-01 17:58:37 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-01 17:58:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1260>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-01 17:58:39 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-01 17:58:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F44914490>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:58:41 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:58:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1260>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-01 17:58:43 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-01 17:58:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1D00>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:58:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-01 17:58:45 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-01 17:58:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2250>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-01 17:58:47 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-01 17:58:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3680>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-01 17:58:49 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-01 17:58:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3240>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-01 17:58:52 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-01 17:58:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F44914490>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-01 17:58:55 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:58:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3680>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:58:57 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:58:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F44916030>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:58:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:58:59 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:59:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2250>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:59:01 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:59:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3240>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:59:03 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:59:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3460>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:59:05 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:59:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3570>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:59:07 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:59:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1AE0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:59:09 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test
2025-06-01 17:59:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3BD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten
2025-06-01 17:59:11 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi
2025-06-01 17:59:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA38A0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:59:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten
2025-06-01 17:59:14 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi
2025-06-01 17:59:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1260>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:59:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten
2025-06-01 17:59:16 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee
2025-06-01 17:59:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2F10>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:59:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten
2025-06-01 17:59:18 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee
2025-06-01 17:59:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1BF0>, 'Connection to 192.168.0.104 timed out. (connect timeout=2)'))
2025-06-01 17:59:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten
2025-06-01 17:59:20 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2
2025-06-01 17:59:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1260>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten
2025-06-01 17:59:22 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2
2025-06-01 17:59:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA1BF0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten
2025-06-01 17:59:24 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test
2025-06-01 17:59:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3020>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten
2025-06-01 17:59:26 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test
2025-06-01 17:59:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA2AD0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten
2025-06-01 17:59:29 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test
2025-06-01 17:59:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3240>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten
2025-06-01 17:59:31 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test
2025-06-01 17:59:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F45FA3570>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten
2025-06-01 17:59:33 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test
2025-06-01 17:59:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F4621C380>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten
2025-06-01 17:59:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test
2025-06-01 17:59:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F4621C6B0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten
2025-06-01 17:59:38 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test
2025-06-01 17:59:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F4621C9E0>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten
2025-06-01 17:59:40 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test
2025-06-01 17:59:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F4621CD10>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten
2025-06-01 17:59:42 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test
2025-06-01 17:59:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000020F4621D040>, 'Connection to 192.168.0.103 timed out. (connect timeout=2)'))
2025-06-01 17:59:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten
2025-06-01 17:59:44 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test

View File

@ -70,3 +70,4 @@
2025-06-01 17:14:58 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 17:14:58 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 17:16:36 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 17:16:36 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 17:36:08 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 17:36:08 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 17:55:21 - [security] security - [INFO] INFO - 🔒 Security System initialisiert

View File

@ -148,3 +148,4 @@
2025-06-01 17:14:58 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 17:14:58 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 17:16:36 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 17:16:36 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 17:36:08 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 17:36:08 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 17:55:21 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert

View File

@ -638,3 +638,12 @@
2025-06-01 17:36:08 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-01 17:36:08 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-01 17:36:08 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-01 17:36:08 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-01 17:36:08 - [startup] startup - [INFO] INFO - ================================================== 2025-06-01 17:36:08 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 17:55:21 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 17:55:21 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
2025-06-01 17:55: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-01 17:55:21 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-01 17:55:21 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-01 17:55:21 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T17:55:21.272792
2025-06-01 17:55:21 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-01 17:55:21 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-01 17:55:21 - [startup] startup - [INFO] INFO - ==================================================

View File

@ -296,3 +296,7 @@
2025-06-01 17:36:07 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) 2025-06-01 17:36:07 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 17:36:07 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet 2025-06-01 17:36:07 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 17:36:07 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-01 17:36:07 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-01 17:55:19 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-01 17:55:19 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 17:55:19 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 17:55:19 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet

View File

@ -205,6 +205,16 @@ class AdminDashboard {
const printerId = e.target.closest('button').dataset.printerId; const printerId = e.target.closest('button').dataset.printerId;
this.showPrinterSettings(printerId); this.showPrinterSettings(printerId);
} }
// Smart-Plug Ein/Aus Toggle für Drucker
if (e.target.closest('.toggle-printer-power-btn')) {
e.preventDefault();
e.stopPropagation();
const button = e.target.closest('button');
const printerId = button.dataset.printerId;
const printerName = button.dataset.printerName;
this.togglePrinterPower(printerId, printerName, button);
}
}); });
} }
@ -805,6 +815,70 @@ class AdminDashboard {
this.showNotification(`Drucker-Einstellungen werden geladen...`, 'info'); this.showNotification(`Drucker-Einstellungen werden geladen...`, 'info');
} }
// Smart-Plug Ein/Aus Toggle für Drucker
async togglePrinterPower(printerId, printerName, button) {
console.log(`🔌 Smart-Plug Toggle für Drucker ${printerId} (${printerName})`);
// Bestätigungsdialog
const confirmMessage = `Möchten Sie die Steckdose für "${printerName}" umschalten?\n\nDies schaltet den Drucker ein/aus.`;
if (!confirm(confirmMessage)) return;
// Button-Zustand während der Anfrage anzeigen
const originalContent = button.innerHTML;
button.disabled = true;
button.innerHTML = `
<div class="animate-spin rounded-full h-4 w-4 border-2 border-white border-t-transparent"></div>
<span class="hidden lg:inline">Schaltet...</span>
`;
try {
const response = await fetch(`${this.apiBaseUrl}/api/admin/printers/${printerId}/toggle`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': this.csrfToken
},
body: JSON.stringify({
reason: 'Admin-Panel Smart-Plug Toggle'
})
});
const data = await response.json();
if (response.ok && data.success) {
const action = data.action || 'umgeschaltet';
this.showNotification(`✅ Steckdose für "${printerName}" erfolgreich ${action}`, 'success');
// Button-Visual-Feedback
button.classList.remove('from-orange-500', 'to-red-500');
button.classList.add('from-green-500', 'to-green-600');
setTimeout(() => {
button.classList.remove('from-green-500', 'to-green-600');
button.classList.add('from-orange-500', 'to-red-500');
}, 2000);
// Live-Statistiken nach kurzer Verzögerung aktualisieren
setTimeout(() => {
this.loadLiveStats();
}, 1000);
} else {
const errorMsg = data.error || 'Unbekannter Fehler beim Schalten der Steckdose';
this.showNotification(`❌ Fehler: ${errorMsg}`, 'error');
console.error('Smart-Plug Toggle Fehler:', data);
}
} catch (error) {
console.error('Netzwerkfehler beim Smart-Plug Toggle:', error);
this.showNotification(`❌ Netzwerkfehler beim Schalten der Steckdose für "${printerName}"`, 'error');
} finally {
// Button-Zustand zurücksetzen
button.disabled = false;
button.innerHTML = originalContent;
}
}
// Job-Management // Job-Management
handleJobAction(action, jobId) { handleJobAction(action, jobId) {
console.log(`📋 Job-Aktion "${action}" für Job ${jobId}`); console.log(`📋 Job-Aktion "${action}" für Job ${jobId}`);

View File

@ -482,6 +482,16 @@ document.addEventListener('DOMContentLoaded', function() {
<button class="manage-printer-btn flex-1 px-3 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors text-sm font-medium" data-printer-id="{{ printer.id }}"> <button class="manage-printer-btn flex-1 px-3 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors text-sm font-medium" data-printer-id="{{ printer.id }}">
Verwalten Verwalten
</button> </button>
<!-- Smart-Plug Ein/Aus Button für Admins -->
<button class="toggle-printer-power-btn px-3 py-2 bg-gradient-to-r from-orange-500 to-red-500 text-white rounded-lg hover:from-orange-600 hover:to-red-600 transition-all duration-300 text-sm font-medium flex items-center space-x-1"
data-printer-id="{{ printer.id }}"
data-printer-name="{{ printer.name }}"
title="Steckdose ein/ausschalten">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/>
</svg>
<span class="hidden lg:inline">Ein/Aus</span>
</button>
<button class="settings-printer-btn px-3 py-2 bg-slate-200 dark:bg-slate-600 text-slate-700 dark:text-slate-300 rounded-lg hover:bg-slate-300 dark:hover:bg-slate-500 transition-colors text-sm" data-printer-id="{{ printer.id }}"> <button class="settings-printer-btn px-3 py-2 bg-slate-200 dark:bg-slate-600 text-slate-700 dark:text-slate-300 rounded-lg hover:bg-slate-300 dark:hover:bg-slate-500 transition-colors text-sm" data-printer-id="{{ printer.id }}">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/>

View File

@ -2044,6 +2044,163 @@ class PrinterManager {
console.log('Lade Details für Drucker:', printer); console.log('Lade Details für Drucker:', printer);
// TODO: Implementiere Detail-Ansicht // TODO: Implementiere Detail-Ansicht
} }
// Performance Monitoring initialisieren
initializePerformanceMonitoring() {
// Performance-Metriken für Drucker-Dashboard
this.performanceMetrics = {
loadTime: 0,
renderTime: 0,
filterTime: 0,
lastUpdate: new Date()
};
// Start der Performance-Messung
this.performanceStart = performance.now();
console.log('📊 Performance-Monitoring für Drucker-Manager aktiviert');
// Performance-Dashboard initialisieren falls vorhanden
if (typeof window.performanceDashboard !== 'undefined') {
window.performanceDashboard.registerComponent('printers', this.performanceMetrics);
}
}
// Test-Print Funktion
async testPrint(printerId) {
console.log(`🖨️ Test-Druck wird gestartet für Drucker ${printerId}`);
try {
const printer = allPrinters.find(p => p.id == printerId);
if (!printer) {
this.showError('Drucker nicht gefunden');
return;
}
// Bestätigungsdialog
const confirmed = confirm(`Test-Druck für "${printer.name}" starten?\n\nDies schaltet die Steckdose ein und führt einen Probe-Druckauftrag aus.`);
if (!confirmed) return;
// Test-Print über API starten
const response = await fetch(`/api/printers/${printerId}/test-print`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': this.getCSRFToken()
},
body: JSON.stringify({
test_type: 'probe_print',
reason: 'UI-Test durch Admin'
})
});
const result = await response.json();
if (response.ok && result.success) {
this.showSuccess(`Test-Druck für "${printer.name}" erfolgreich gestartet`);
// Status sofort aktualisieren
await this.loadPrinters();
} else {
this.showError(`Test-Druck fehlgeschlagen: ${result.error || 'Unbekannter Fehler'}`);
}
} catch (error) {
console.error('Fehler beim Test-Druck:', error);
this.showError(`Netzwerkfehler beim Test-Druck: ${error.message}`);
}
}
// Drucker pausieren
async pausePrint(printerId) {
console.log(`⏸️ Druckauftrag wird pausiert für Drucker ${printerId}`);
try {
const response = await fetch(`/api/printers/${printerId}/pause`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': this.getCSRFToken()
}
});
const result = await response.json();
if (response.ok && result.success) {
this.showSuccess('Druckauftrag pausiert');
await this.loadPrinters();
} else {
this.showError(`Pausieren fehlgeschlagen: ${result.error || 'Unbekannter Fehler'}`);
}
} catch (error) {
console.error('Fehler beim Pausieren:', error);
this.showError(`Netzwerkfehler: ${error.message}`);
}
}
// Drucker zurücksetzen
async resetPrinter(printerId) {
console.log(`🔄 Drucker wird zurückgesetzt: ${printerId}`);
try {
const printer = allPrinters.find(p => p.id == printerId);
if (!printer) {
this.showError('Drucker nicht gefunden');
return;
}
const confirmed = confirm(`Drucker "${printer.name}" zurücksetzen?\n\nDies beendet alle laufenden Jobs und startet den Drucker neu.`);
if (!confirmed) return;
const response = await fetch(`/api/printers/${printerId}/reset`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': this.getCSRFToken()
}
});
const result = await response.json();
if (response.ok && result.success) {
this.showSuccess('Drucker erfolgreich zurückgesetzt');
await this.loadPrinters();
} else {
this.showError(`Reset fehlgeschlagen: ${result.error || 'Unbekannter Fehler'}`);
}
} catch (error) {
console.error('Fehler beim Reset:', error);
this.showError(`Netzwerkfehler: ${error.message}`);
}
}
// Drucker verbinden
async connectPrinter(printerId) {
console.log(`🔗 Verbindung wird hergestellt zu Drucker ${printerId}`);
try {
const response = await fetch(`/api/printers/${printerId}/connect`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': this.getCSRFToken()
}
});
const result = await response.json();
if (response.ok && result.success) {
this.showSuccess('Verbindung hergestellt');
await this.loadPrinters();
} else {
this.showError(`Verbindung fehlgeschlagen: ${result.error || 'Unbekannter Fehler'}`);
}
} catch (error) {
console.error('Fehler beim Verbinden:', error);
this.showError(`Netzwerkfehler: ${error.message}`);
}
}
} }
// Initialize Printer Manager // Initialize Printer Manager
@ -2067,6 +2224,24 @@ function refreshPrinters() {
}); });
} }
// Globale testPrinterConnection Funktion für Kompatibilität
function testPrinterConnection() {
console.log('🔗 Test-Verbindung wird gestartet...');
const printerId = document.getElementById('printerId')?.value;
if (!printerId) {
alert('Fehler: Keine Drucker-ID gefunden');
return;
}
// Verwende printerManager falls verfügbar
if (window.printerManager) {
printerManager.testPrint(printerId);
} else {
alert('Drucker-Manager nicht verfügbar');
}
}
function toggleAutoRefresh() { function toggleAutoRefresh() {
isAutoRefreshEnabled = !isAutoRefreshEnabled; isAutoRefreshEnabled = !isAutoRefreshEnabled;
const button = document.getElementById('auto-refresh-toggle'); const button = document.getElementById('auto-refresh-toggle');