"Refactor job scheduling and printer monitoring"
This commit is contained in:
@@ -1283,8 +1283,10 @@ def kiosk_restart_system():
|
||||
@measure_execution_time(logger=printers_logger, task_name="Drucker-Status-Prüfung")
|
||||
def check_printer_status(ip_address: str, timeout: int = 7) -> Tuple[str, bool]:
|
||||
"""
|
||||
Überprüft den Status eines Druckers anhand der IP-Adresse.
|
||||
Gibt den Status und die Erreichbarkeit zurück.
|
||||
Überprüft den Status eines Druckers anhand der Steckdosen-Logik:
|
||||
- Steckdose erreichbar aber AUS = Drucker ONLINE (bereit zum Drucken)
|
||||
- Steckdose erreichbar und AN = Drucker PRINTING (druckt gerade)
|
||||
- Steckdose nicht erreichbar = Drucker OFFLINE (kritischer Fehler)
|
||||
|
||||
Args:
|
||||
ip_address: IP-Adresse des Druckers oder der Steckdose
|
||||
@@ -1297,7 +1299,7 @@ def check_printer_status(ip_address: str, timeout: int = 7) -> Tuple[str, bool]:
|
||||
reachable = False
|
||||
|
||||
try:
|
||||
# Überprüfen, ob die Steckdose online ist
|
||||
# Überprüfen, ob die Steckdose erreichbar ist
|
||||
import socket
|
||||
|
||||
# Erst Port 9999 versuchen (Tapo-Standard)
|
||||
@@ -1318,48 +1320,30 @@ def check_printer_status(ip_address: str, timeout: int = 7) -> Tuple[str, bool]:
|
||||
# Geräteinformationen abrufen
|
||||
device_info = p100.getDeviceInfo()
|
||||
|
||||
# Status auswerten
|
||||
# 🎯 KORREKTE LOGIK: Status auswerten
|
||||
if device_info.get('device_on', False):
|
||||
status = "online"
|
||||
# Steckdose an = Drucker PRINTING (druckt gerade)
|
||||
status = "printing"
|
||||
printers_logger.info(f"🖨️ Drucker {ip_address}: PRINTING (Steckdose an - druckt gerade)")
|
||||
else:
|
||||
status = "standby"
|
||||
# Steckdose aus = Drucker ONLINE (bereit zum Drucken)
|
||||
status = "online"
|
||||
printers_logger.info(f"✅ Drucker {ip_address}: ONLINE (Steckdose aus - bereit zum Drucken)")
|
||||
|
||||
printers_logger.info(f"✅ Tapo-Steckdose {ip_address}: Status = {status}")
|
||||
except Exception as e:
|
||||
printers_logger.error(f"❌ Fehler bei Tapo-Status-Check für {ip_address}: {str(e)}")
|
||||
reachable = False
|
||||
status = "error"
|
||||
else:
|
||||
# Alternativ HTTP/HTTPS versuchen
|
||||
try:
|
||||
# HTTP auf Port 80
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.settimeout(timeout)
|
||||
result = sock.connect_ex((ip_address, 80))
|
||||
sock.close()
|
||||
# Steckdose nicht erreichbar = kritischer Fehler
|
||||
printers_logger.warning(f"❌ Drucker {ip_address}: OFFLINE (Steckdose nicht erreichbar)")
|
||||
reachable = False
|
||||
status = "offline"
|
||||
|
||||
if result == 0:
|
||||
reachable = True
|
||||
status = "online" # Standarddrucker ohne Tapo-Steckdose
|
||||
else:
|
||||
# HTTPS auf Port 443
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.settimeout(timeout)
|
||||
result = sock.connect_ex((ip_address, 443))
|
||||
sock.close()
|
||||
|
||||
if result == 0:
|
||||
reachable = True
|
||||
status = "online"
|
||||
except Exception as e:
|
||||
printers_logger.error(f"❌ Fehler bei Socket-Check für {ip_address}: {str(e)}")
|
||||
reachable = False
|
||||
status = "error"
|
||||
|
||||
except Exception as e:
|
||||
printers_logger.error(f"❌ Fehler bei Verbindungsprüfung zu {ip_address}: {str(e)}")
|
||||
status = "error"
|
||||
printers_logger.error(f"❌ Unerwarteter Fehler bei Status-Check für {ip_address}: {str(e)}")
|
||||
reachable = False
|
||||
status = "error"
|
||||
|
||||
return status, reachable
|
||||
|
||||
|
Reference in New Issue
Block a user