🔧 Aktualisierung der Tapo-Steckdosen-Integration: Umstellung auf zentralen tapo_controller für Statusprüfungen und Verbindungs-Tests. Verbesserung der Fehlerbehandlung und Protokollierung. Anpassungen in der Dokumentation und Umbenennung von Funktionen zur besseren Lesbarkeit. 🛠️

This commit is contained in:
2025-06-05 11:13:43 +02:00
parent 502d63bc20
commit 0a1b24c4ef
27 changed files with 320 additions and 196 deletions

View File

@@ -2217,24 +2217,29 @@ def check_printer_status(ip_address: str, timeout: int = 7) -> Tuple[str, bool]:
if result == 0:
reachable = True
try:
# TP-Link Tapo Steckdose mit PyP100 überprüfen
from PyP100 import PyP100
p100 = PyP100.P100(ip_address, TAPO_USERNAME, TAPO_PASSWORD)
p100.handshake() # Authentifizierung
p100.login() # Login
# Geräteinformationen abrufen
device_info = p100.getDeviceInfo()
# TP-Link Tapo Steckdose mit zentralem tapo_controller überprüfen
from utils.tapo_controller import tapo_controller
reachable, outlet_status = tapo_controller.check_outlet_status(ip_address)
# 🎯 KORREKTE LOGIK: Status auswerten
if device_info.get('device_on', False):
# Steckdose an = Drucker PRINTING (druckt gerade)
status = "printing"
printers_logger.info(f"🖨️ Drucker {ip_address}: PRINTING (Steckdose an - druckt gerade)")
if reachable:
if outlet_status == "on":
# Steckdose an = Drucker PRINTING (druckt gerade)
status = "printing"
printers_logger.info(f"🖨️ Drucker {ip_address}: PRINTING (Steckdose an - druckt gerade)")
elif outlet_status == "off":
# Steckdose aus = Drucker ONLINE (bereit zum Drucken)
status = "online"
printers_logger.info(f"[OK] Drucker {ip_address}: ONLINE (Steckdose aus - bereit zum Drucken)")
else:
# Unbekannter Status
status = "error"
printers_logger.warning(f"[WARNING] Drucker {ip_address}: Unbekannter Steckdosen-Status")
else:
# Steckdose aus = Drucker ONLINE (bereit zum Drucken)
status = "online"
printers_logger.info(f"[OK] Drucker {ip_address}: ONLINE (Steckdose aus - bereit zum Drucken)")
# Steckdose nicht erreichbar
reachable = False
status = "error"
printers_logger.error(f"[ERROR] Drucker {ip_address}: Steckdose nicht erreichbar")
except Exception as e:
printers_logger.error(f"[ERROR] Fehler bei Tapo-Status-Check für {ip_address}: {str(e)}")
@@ -3288,7 +3293,7 @@ def test_printer_tapo_connection(printer_id):
db_session.close()
# Tapo-Verbindung testen
from utils.job_scheduler import test_tapo_connection
from utils.tapo_controller import test_tapo_connection
test_result = test_tapo_connection(
printer.plug_ip,
printer.plug_username,
@@ -3325,7 +3330,7 @@ def test_all_printers_tapo_connection():
})
# Alle Drucker testen
from utils.job_scheduler import test_tapo_connection
from utils.tapo_controller import test_tapo_connection
results = []
for printer in printers: