"feat: Integrate printer monitor for enhanced logging in backend"
This commit is contained in:
@@ -138,8 +138,15 @@ class PrinterMonitor:
|
||||
monitor_logger.error("⚠️ PyP100-Modul nicht verfügbar - kann Tapo-Steckdose nicht schalten")
|
||||
return False
|
||||
|
||||
# Fallback zu globalen Anmeldedaten wenn keine lokalen vorhanden
|
||||
if not username or not password:
|
||||
username = TAPO_USERNAME
|
||||
password = TAPO_PASSWORD
|
||||
monitor_logger.debug(f"🔧 Verwende globale Tapo-Anmeldedaten für {ip_address}")
|
||||
|
||||
try:
|
||||
# TP-Link Tapo P100 Verbindung herstellen (P100 statt P110 verwenden)
|
||||
from PyP100 import PyP100
|
||||
p100 = PyP100.P100(ip_address, username, password)
|
||||
p100.handshake() # Authentifizierung
|
||||
p100.login() # Login
|
||||
@@ -342,7 +349,7 @@ class PrinterMonitor:
|
||||
def _ping_address(self, ip_address: str, timeout: int = 3) -> bool:
|
||||
"""
|
||||
Führt einen Konnektivitätstest zu einer IP-Adresse durch.
|
||||
Verwendet TCP-Verbindung statt Ping, um Encoding-Probleme zu vermeiden.
|
||||
Verwendet ausschließlich TCP-Verbindung statt Ping, um Encoding-Probleme zu vermeiden.
|
||||
|
||||
Args:
|
||||
ip_address: Zu testende IP-Adresse
|
||||
@@ -355,10 +362,18 @@ class PrinterMonitor:
|
||||
# IP-Adresse validieren
|
||||
ipaddress.ip_address(ip_address.strip())
|
||||
|
||||
# TCP-Verbindung zu Port 80 (HTTP) oder 443 (HTTPS) versuchen
|
||||
import socket
|
||||
|
||||
# Erst Port 80 versuchen (HTTP)
|
||||
# Erst Port 9999 versuchen (Tapo-Standard)
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.settimeout(timeout)
|
||||
result = sock.connect_ex((ip_address.strip(), 9999))
|
||||
sock.close()
|
||||
|
||||
if result == 0:
|
||||
return True
|
||||
|
||||
# Falls Port 9999 nicht erfolgreich, Port 80 versuchen (HTTP)
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.settimeout(timeout)
|
||||
result = sock.connect_ex((ip_address.strip(), 80))
|
||||
@@ -481,15 +496,16 @@ class PrinterMonitor:
|
||||
|
||||
for ip in DEFAULT_TAPO_IPS:
|
||||
try:
|
||||
# Ping-Test für Grundkonnektivität
|
||||
ping_success = self._ping_address(ip, timeout=2)
|
||||
# TCP-Verbindungstest für Grundkonnektivität
|
||||
ping_success = self._ping_address(ip, timeout=3)
|
||||
|
||||
if ping_success:
|
||||
monitor_logger.info(f"✅ Steckdose mit IP {ip} ist pingbar")
|
||||
monitor_logger.info(f"✅ Steckdose mit IP {ip} ist erreichbar")
|
||||
|
||||
# Tapo-Verbindung testen
|
||||
if TAPO_AVAILABLE:
|
||||
try:
|
||||
from PyP100 import PyP100
|
||||
p100 = PyP100.P100(ip, TAPO_USERNAME, TAPO_PASSWORD)
|
||||
p100.handshake()
|
||||
p100.login()
|
||||
@@ -506,7 +522,7 @@ class PrinterMonitor:
|
||||
self._ensure_tapo_in_database(ip, nickname)
|
||||
|
||||
except Exception as e:
|
||||
monitor_logger.debug(f"❌ IP {ip} ist pingbar, aber keine Tapo-Steckdose: {str(e)}")
|
||||
monitor_logger.debug(f"❌ IP {ip} ist erreichbar, aber keine Tapo-Steckdose: {str(e)}")
|
||||
results[ip] = False
|
||||
else:
|
||||
monitor_logger.warning("⚠️ PyP100-Modul nicht verfügbar - kann Tapo-Verbindung nicht testen")
|
||||
|
Reference in New Issue
Block a user