It appears that the repository has undergone several changes and renamings:

This commit is contained in:
2025-06-10 13:23:37 +02:00
parent a4a293a744
commit 7e4bfbd4d7
11470 changed files with 704 additions and 1206091 deletions

View File

@@ -0,0 +1,151 @@
#!/usr/bin/env python3.11
"""
Script zum Einrichten der Tapo-Steckdosen in der Datenbank
Hardkodierte IPs: 192.168.0.100 - 192.168.0.106 (außer 105)
"""
import sys
import os
# Pfad zum Backend-Verzeichnis hinzufügen
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from models import get_db_session, Printer
from utils.logging_config import get_logger
logger = get_logger("tapo_setup")
def setup_tapo_outlets():
"""Richtet die hardkodierten Tapo-Steckdosen-IPs in der Datenbank ein."""
# Hardkodierte IP-Adressen (192.168.0.100 - 192.168.0.106, außer 105)
tapo_ips = [
"192.168.0.100",
"192.168.0.101",
"192.168.0.102",
"192.168.0.103",
"192.168.0.104",
"192.168.0.106" # 105 ist ausgenommen
]
db_session = get_db_session()
try:
for i, ip in enumerate(tapo_ips, start=1):
# Prüfen ob bereits vorhanden
existing_printer = db_session.query(Printer).filter(
Printer.plug_ip == ip
).first()
if existing_printer:
logger.info(f"✅ Tapo-Steckdose {ip} bereits vorhanden (Drucker: {existing_printer.name})")
continue
# Neuen Drucker-Eintrag erstellen
printer_name = f"Tapo P110 ({ip})"
location = f"Werk 040 - Berlin - TBA"
new_printer = Printer(
name=printer_name,
model="P115", # Tapo P110/P115 Modell
location=location,
ip_address=ip,
mac_address=f"00:00:00:00:{int(ip.split('.')[-1]):02d}:00", # Dummy MAC
plug_ip=ip, # Wichtig: plug_ip für Tapo-Steuerung
plug_username="tapo_user", # Standard Tapo-Benutzername
plug_password="tapo_pass", # Standard Tapo-Passwort
active=True
)
db_session.add(new_printer)
logger.info(f" Tapo-Steckdose {ip} hinzugefügt: {printer_name}")
# Änderungen speichern
db_session.commit()
logger.info(f"🎉 Setup abgeschlossen: {len(tapo_ips)} Tapo-Steckdosen konfiguriert")
# Status anzeigen
show_tapo_status(db_session)
except Exception as e:
db_session.rollback()
logger.error(f"❌ Fehler beim Setup: {e}")
raise
finally:
db_session.close()
def show_tapo_status(db_session):
"""Zeigt den aktuellen Status aller Tapo-Steckdosen an."""
tapo_printers = db_session.query(Printer).filter(
Printer.plug_ip.isnot(None),
Printer.active == True
).order_by(Printer.plug_ip).all()
logger.info(f"\n📊 Tapo-Steckdosen Übersicht ({len(tapo_printers)} konfiguriert):")
logger.info("=" * 80)
for printer in tapo_printers:
logger.info(f" 📍 {printer.plug_ip} - {printer.name}")
logger.info(f" Standort: {printer.location}")
logger.info(f" Aktiv: {'' if printer.active else ''}")
logger.info("-" * 60)
def remove_all_tapo_outlets():
"""Entfernt alle Tapo-Steckdosen aus der Datenbank (Cleanup-Funktion)."""
db_session = get_db_session()
try:
tapo_printers = db_session.query(Printer).filter(
Printer.plug_ip.isnot(None)
).all()
count = len(tapo_printers)
if count == 0:
logger.info(" Keine Tapo-Steckdosen in der Datenbank gefunden")
return
for printer in tapo_printers:
logger.info(f"🗑️ Entferne: {printer.name} ({printer.plug_ip})")
db_session.delete(printer)
db_session.commit()
logger.info(f"{count} Tapo-Steckdosen erfolgreich entfernt")
except Exception as e:
db_session.rollback()
logger.error(f"❌ Fehler beim Entfernen: {e}")
raise
finally:
db_session.close()
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Tapo-Steckdosen Setup")
parser.add_argument("--setup", action="store_true", help="Tapo-Steckdosen einrichten")
parser.add_argument("--status", action="store_true", help="Status anzeigen")
parser.add_argument("--cleanup", action="store_true", help="Alle Tapo-Steckdosen entfernen")
args = parser.parse_args()
if args.setup:
logger.info("🔧 Starte Tapo-Steckdosen Setup...")
setup_tapo_outlets()
elif args.status:
logger.info("📊 Zeige Tapo-Status...")
db_session = get_db_session()
try:
show_tapo_status(db_session)
finally:
db_session.close()
elif args.cleanup:
logger.info("🗑️ Starte Cleanup...")
remove_all_tapo_outlets()
else:
logger.info("📋 Verwendung:")
logger.info(" python3.11 setup_tapo_outlets.py --setup # Steckdosen einrichten")
logger.info(" python3.11 setup_tapo_outlets.py --status # Status anzeigen")
logger.info(" python3.11 setup_tapo_outlets.py --cleanup # Alle entfernen")