"Refactor job scheduling and printer monitoring"
This commit is contained in:
@@ -314,38 +314,58 @@ def toggle_plug(printer_id: int, state: bool) -> bool:
|
||||
db_session.close()
|
||||
return False
|
||||
|
||||
# Konfiguration validieren und Fallback verwenden
|
||||
plug_ip = printer.plug_ip
|
||||
plug_username = printer.plug_username or TAPO_USERNAME
|
||||
plug_password = printer.plug_password or TAPO_PASSWORD
|
||||
|
||||
if not plug_ip:
|
||||
logger.error(f"Keine Steckdosen-IP für Drucker {printer.name} (ID: {printer_id}) konfiguriert")
|
||||
# Konfiguration validieren
|
||||
if not printer.plug_ip or not printer.plug_username or not printer.plug_password:
|
||||
logger.error(f"Unvollständige Steckdosen-Konfiguration für Drucker {printer.name}")
|
||||
db_session.close()
|
||||
return False
|
||||
|
||||
if not plug_username or not plug_password:
|
||||
logger.error(f"Unvollständige Tapo-Konfiguration für Drucker {printer.name} (ID: {printer_id}) - verwende globale Anmeldedaten")
|
||||
# Importiere PyP100 für Tapo-Unterstützung
|
||||
try:
|
||||
from PyP100 import PyP100
|
||||
except ImportError:
|
||||
logger.error("PyP100-Modul nicht verfügbar - kann Tapo-Steckdosen nicht steuern")
|
||||
db_session.close()
|
||||
return False
|
||||
|
||||
# TP-Link Tapo P110 Verbindung herstellen
|
||||
logger.debug(f"Verbinde zu Tapo-Steckdose {plug_ip} für Drucker {printer.name}")
|
||||
p110 = PyP110.P110(plug_ip, plug_username, plug_password)
|
||||
p110.handshake() # Authentifizierung
|
||||
p110.login() # Login
|
||||
# Verwende die in der Datenbank gespeicherten Anmeldedaten
|
||||
# Fallback zu config/settings.py wenn nicht vorhanden
|
||||
username = printer.plug_username
|
||||
password = printer.plug_password
|
||||
|
||||
# Steckdose ein-/ausschalten
|
||||
if not username or not password:
|
||||
from config.settings import TAPO_USERNAME, TAPO_PASSWORD
|
||||
username = TAPO_USERNAME
|
||||
password = TAPO_PASSWORD
|
||||
logger.debug(f"Verwende globale Tapo-Anmeldedaten für {printer.name}")
|
||||
|
||||
# TP-Link Tapo P100 Verbindung herstellen
|
||||
p100 = PyP100.P100(printer.plug_ip, username, password)
|
||||
p100.handshake() # Authentifizierung
|
||||
p100.login() # Login
|
||||
|
||||
# Steckdose schalten
|
||||
if state:
|
||||
p110.turnOn()
|
||||
logger.info(f"✅ Steckdose für Drucker {printer.name} (ID: {printer_id}) eingeschaltet")
|
||||
p100.turnOn()
|
||||
logger.info(f"Steckdose für {printer.name} eingeschaltet")
|
||||
else:
|
||||
p110.turnOff()
|
||||
logger.info(f"✅ Steckdose für Drucker {printer.name} (ID: {printer_id}) ausgeschaltet")
|
||||
p100.turnOff()
|
||||
logger.info(f"Steckdose für {printer.name} ausgeschaltet")
|
||||
|
||||
# Status in Datenbank aktualisieren
|
||||
printer.status = "online" if state else "offline"
|
||||
printer.last_checked = datetime.now()
|
||||
db_session.commit()
|
||||
db_session.close()
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Fehler beim Schalten der Steckdose für Drucker {printer_id}: {str(e)}")
|
||||
db_session.close()
|
||||
logger.error(f"Fehler beim Schalten der Steckdose für Drucker {printer_id}: {str(e)}")
|
||||
try:
|
||||
db_session.close()
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user