From 7bf9d7e5aecfd941bd780fd968959b9d12810a23 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Wed, 12 Mar 2025 13:14:36 +0100 Subject: [PATCH] dinge getan --- CREDENTIALS | 3 ++- backend/app.py | 55 +++++++++++++++++--------------------------------- 2 files changed, 20 insertions(+), 38 deletions(-) diff --git a/CREDENTIALS b/CREDENTIALS index 0a5338f..e88a246 100644 --- a/CREDENTIALS +++ b/CREDENTIALS @@ -1 +1,2 @@ -TAPO ADMIN: vT6Vsd^p \ No newline at end of file +TAPO ADMIN: vT6Vsd^p +Admin-PW: 744563017196 \ No newline at end of file diff --git a/backend/app.py b/backend/app.py index efc72ef..e632c4e 100755 --- a/backend/app.py +++ b/backend/app.py @@ -32,8 +32,6 @@ app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # Steckdosen-Konfiguration TAPO_USERNAME = os.environ.get('TAPO_USERNAME') TAPO_PASSWORD = os.environ.get('TAPO_PASSWORD') -# SOCKET_DEVICES Format: {"192.168.1.100": {"number": "1"}, "192.168.1.101": {"number": "2"}, ...} -SOCKET_DEVICES = json.loads(os.environ.get('SOCKET_DEVICES', '{}')) # Logging if not os.path.exists('logs'): @@ -108,48 +106,27 @@ def init_db(): db.commit() -# Initialisierung der Steckdosen -def init_sockets(): - """ - Initialisiert die Steckdosen-Einträge in der Datenbank basierend auf SOCKET_DEVICES Umgebungsvariable. - Stellt sicher, dass alle Steckdosen zu Beginn ausgeschaltet sind. - """ - app.logger.info("Initialisiere Steckdosen aus Umgebungsvariablen") +PRINTERS = json.loads(os.environ.get('PRINTERS', '{}')) + +def init_printers(): + app.logger.info("Initialisiere Drucker aus Umgebungsvariablen") db = get_db() - # Alle IP-Adressen aus der Datenbank abrufen + # Existierende IP-Adressen aus der Datenbank abrufen existing_ips = {row['ip_address']: row['id'] for row in db.execute('SELECT id, ip_address FROM socket').fetchall() if row['ip_address']} - for ip_address, device_config in SOCKET_DEVICES.items(): - socket_number = device_config.get('number', '0') - name = f"Printer {socket_number}" - description = f"3D-Drucker mit SmartPlug (IP: {ip_address})" + for printer_name, config in PRINTERS.items(): + ip_address = config.get('ip') + if not ip_address: + continue # Überspringe Einträge ohne IP + description = f"Drucker mit IP: {ip_address}" if ip_address in existing_ips: - # Steckdose existiert bereits, nichts zu tun - app.logger.info(f"Steckdose mit IP {ip_address} existiert bereits in der Datenbank") - socket_id = existing_ips[ip_address] + app.logger.info(f"Drucker mit IP {ip_address} existiert bereits in der Datenbank") else: - # Steckdose erstellen, wenn sie noch nicht existiert - socket = create_socket(name=name, description=description, ip_address=ip_address, status=0) - socket_id = socket['id'] - app.logger.info(f"Neue Steckdose angelegt: {name} mit IP {ip_address}") - - # Steckdose ausschalten, um sicherzustellen, dass alle Steckdosen im AUS-Zustand starten - try: - turn_off_socket(ip_address) - app.logger.info(f"Steckdose {ip_address} wurde beim Start ausgeschaltet") - except Exception as e: - app.logger.error(f"Fehler beim Ausschalten der Steckdose {ip_address}: {e}") - -# Initialisiere die Datenbank und Steckdosen beim Starten der Anwendung -with app.app_context(): - init_db() - # Nur initialisieren, wenn Steckdosen konfiguriert sind - if SOCKET_DEVICES: - init_sockets() - -app.teardown_appcontext(close_db) + # Neuen Drucker eintragen + create_socket(name=printer_name, description=description, ip_address=ip_address, status=0) + app.logger.info(f"Neuer Drucker angelegt: {printer_name} mit IP {ip_address}") # Benutzerverwaltung def get_user_by_id(user_id): @@ -1214,4 +1191,8 @@ def stats_page(): # Server starten if __name__ == '__main__': + with app.app_context(): + init_db() + if PRINTERS: + init_printers() app.run(debug=True, host='0.0.0.0') \ No newline at end of file