diff --git a/backend/.env b/backend/.env new file mode 100644 index 0000000..a8650ad --- /dev/null +++ b/backend/.env @@ -0,0 +1,5 @@ +SECRET_KEY=7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F +DATABASE_PATH=instance/myp.db +TAPO_USERNAME=till.tomczak@mercedes-benz.com +TAPO_PASSWORD=Agent045 +PRINTERS = {"Printer 1": {"ip": "192.168.0.101"}, "Printer 2": {"ip": "192.168.1.102"}, "Printer 3": {"ip": "192.168.2.103"}, "Printer 4": {"ip": "192.168.3.104"}, "Printer 5": {"ip": "192.168.4.105"}, "Printer 6": {"ip": "192.168.5.106"}} diff --git a/backend/.env.example b/backend/.env.example deleted file mode 100644 index c5c6a69..0000000 --- a/backend/.env.example +++ /dev/null @@ -1,6 +0,0 @@ -SECRET_KEY=dev-secret-key-change-in-production -DATABASE_PATH=instance/myp.db -TAPO_USERNAME=your-tapo-email -TAPO_PASSWORD=your-tapo-password -# PRINTERS Format: {"Printer 1": {"ip": "192.168.1.100"}, "Printer 2": {"ip": "192.168.1.101"}, ...} -PRINTERS={} \ No newline at end of file diff --git a/backend/.gitignore b/backend/.gitignore index 98ed8f7..c7beae6 100755 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -24,7 +24,6 @@ wheels/ # Flask instance/ .webassets-cache -.env # Logs logs/ diff --git a/backend/app.py b/backend/app.py index 0f06be3..efc72ef 100755 --- a/backend/app.py +++ b/backend/app.py @@ -32,8 +32,8 @@ app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # Steckdosen-Konfiguration TAPO_USERNAME = os.environ.get('TAPO_USERNAME') TAPO_PASSWORD = os.environ.get('TAPO_PASSWORD') -# PRINTERS Format: {"Printer 1": {"ip": "192.168.1.100"}, "Printer 2": {"ip": "192.168.1.101"}, ...} -PRINTERS = json.loads(os.environ.get('PRINTERS', '{}')) +# 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'): @@ -111,48 +111,42 @@ def init_db(): # Initialisierung der Steckdosen def init_sockets(): """ - Initialisiert die Steckdosen-Einträge in der Datenbank basierend auf PRINTERS Umgebungsvariable. + 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 Drucker aus Umgebungsvariablen") + app.logger.info("Initialisiere Steckdosen aus Umgebungsvariablen") db = get_db() - # Alle Druckernamen aus der Datenbank abrufen - existing_printers = {row['name']: {'id': row['id'], 'ip': row['ip_address']} - for row in db.execute('SELECT id, name, ip_address FROM socket').fetchall()} + # Alle 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 printer_name, printer_config in PRINTERS.items(): - ip_address = printer_config.get('ip', '') + 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})" - if printer_name in existing_printers: - # Drucker existiert bereits, überprüfe auf Änderungen an der IP - socket_id = existing_printers[printer_name]['id'] - if existing_printers[printer_name]['ip'] != ip_address: - # Aktualisiere die IP-Adresse, wenn sie sich geändert hat - update_socket(socket_id, ip_address=ip_address) - app.logger.info(f"IP-Adresse für Drucker {printer_name} aktualisiert: {ip_address}") - else: - app.logger.info(f"Drucker {printer_name} existiert bereits in der Datenbank") + 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] else: - # Drucker erstellen, wenn er noch nicht existiert - socket = create_socket(name=printer_name, description=description, ip_address=ip_address, status=0) + # 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"Neuer Drucker angelegt: {printer_name} mit IP {ip_address}") + app.logger.info(f"Neue Steckdose angelegt: {name} mit IP {ip_address}") # Steckdose ausschalten, um sicherzustellen, dass alle Steckdosen im AUS-Zustand starten - if ip_address: - try: - turn_off_socket(ip_address) - app.logger.info(f"Steckdose für {printer_name} (IP: {ip_address}) wurde beim Start ausgeschaltet") - except Exception as e: - app.logger.error(f"Fehler beim Ausschalten der Steckdose für {printer_name} (IP: {ip_address}): {e}") + 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 Drucker konfiguriert sind - if PRINTERS: + # Nur initialisieren, wenn Steckdosen konfiguriert sind + if SOCKET_DEVICES: init_sockets() app.teardown_appcontext(close_db)