"Refactor job scheduling and printer monitoring"

This commit is contained in:
2025-05-29 23:24:13 +02:00
parent 9ce6b0b5e8
commit 00c3251b96
3 changed files with 53 additions and 62 deletions

View File

@@ -293,8 +293,8 @@ class BackgroundTaskScheduler:
Args:
ip: IP-Adresse der Steckdose
state: True = Ein, False = Aus
username: Benutzername für die Steckdose (optional)
password: Passwort für die Steckdose (optional)
username: Benutzername für die Steckdose (wird überschrieben mit globalen Credentials)
password: Passwort für die Steckdose (wird überschrieben mit globalen Credentials)
Returns:
bool: True wenn erfolgreich geschaltet
@@ -307,12 +307,11 @@ class BackgroundTaskScheduler:
self.logger.error("❌ PyP100-Modul nicht installiert - Steckdose kann nicht geschaltet werden")
return False
# Anmeldedaten aus Einstellungen verwenden, falls nicht angegeben
if not username or not password:
from config.settings import TAPO_USERNAME, TAPO_PASSWORD
username = TAPO_USERNAME
password = TAPO_PASSWORD
self.logger.debug(f"🔧 Verwende globale Tapo-Anmeldedaten für {ip}")
# IMMER globale Anmeldedaten verwenden (da diese funktionieren)
from config.settings import TAPO_USERNAME, TAPO_PASSWORD
username = TAPO_USERNAME
password = TAPO_PASSWORD
self.logger.debug(f"🔧 Verwende globale Tapo-Anmeldedaten für {ip}")
# P100-Verbindung herstellen (P100 statt P110 verwenden)
p100 = PyP100.P100(ip, username, password)
@@ -338,7 +337,9 @@ class BackgroundTaskScheduler:
def toggle_printer_plug(self, printer_id: int, state: bool) -> bool:
"""
Schaltet die Steckdose eines Druckers ein oder aus.
Schaltet die Steckdose eines Druckers ein oder aus mit korrektem Status-Mapping:
- Steckdose AUS = Drucker ONLINE (bereit zum Drucken)
- Steckdose AN = Drucker PRINTING (druckt gerade)
Args:
printer_id: ID des Druckers
@@ -367,16 +368,24 @@ class BackgroundTaskScheduler:
success = self.toggle_plug(
ip=printer.plug_ip,
state=state,
username=printer.plug_username,
password=printer.plug_password
username=printer.plug_username, # Wird überschrieben mit globalen Credentials
password=printer.plug_password # Wird überschrieben mit globalen Credentials
)
if success:
# Status in Datenbank aktualisieren
printer.status = "online" if state else "offline"
# Status in Datenbank aktualisieren entsprechend der neuen Logik
if state:
# Steckdose eingeschaltet = Drucker druckt
printer.status = "printing"
self.logger.info(f"🖨️ Drucker {printer.name}: Status auf 'printing' gesetzt (Steckdose eingeschaltet)")
else:
# Steckdose ausgeschaltet = Drucker bereit
printer.status = "online"
self.logger.info(f"✅ Drucker {printer.name}: Status auf 'online' gesetzt (Steckdose ausgeschaltet - bereit)")
printer.last_checked = datetime.now()
db_session.commit()
self.logger.info(f"✅ Status für Drucker {printer.name} aktualisiert: {'online' if state else 'offline'}")
self.logger.info(f"✅ Status für Drucker {printer.name} erfolgreich aktualisiert")
db_session.close()
return success