app py korrigiert, env vars, git ignore

This commit is contained in:
Till Tomczak 2025-03-12 12:39:03 +01:00
parent 3972860be8
commit a651257b3b
4 changed files with 28 additions and 36 deletions

5
backend/.env Normal file
View File

@ -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"}}

View File

@ -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={}

1
backend/.gitignore vendored
View File

@ -24,7 +24,6 @@ wheels/
# Flask # Flask
instance/ instance/
.webassets-cache .webassets-cache
.env
# Logs # Logs
logs/ logs/

View File

@ -32,8 +32,8 @@ app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
# Steckdosen-Konfiguration # Steckdosen-Konfiguration
TAPO_USERNAME = os.environ.get('TAPO_USERNAME') TAPO_USERNAME = os.environ.get('TAPO_USERNAME')
TAPO_PASSWORD = os.environ.get('TAPO_PASSWORD') TAPO_PASSWORD = os.environ.get('TAPO_PASSWORD')
# PRINTERS Format: {"Printer 1": {"ip": "192.168.1.100"}, "Printer 2": {"ip": "192.168.1.101"}, ...} # SOCKET_DEVICES Format: {"192.168.1.100": {"number": "1"}, "192.168.1.101": {"number": "2"}, ...}
PRINTERS = json.loads(os.environ.get('PRINTERS', '{}')) SOCKET_DEVICES = json.loads(os.environ.get('SOCKET_DEVICES', '{}'))
# Logging # Logging
if not os.path.exists('logs'): if not os.path.exists('logs'):
@ -111,48 +111,42 @@ def init_db():
# Initialisierung der Steckdosen # Initialisierung der Steckdosen
def init_sockets(): 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. 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() db = get_db()
# Alle Druckernamen aus der Datenbank abrufen # Alle IP-Adressen aus der Datenbank abrufen
existing_printers = {row['name']: {'id': row['id'], 'ip': row['ip_address']} existing_ips = {row['ip_address']: row['id'] for row in db.execute('SELECT id, ip_address FROM socket').fetchall() if row['ip_address']}
for row in db.execute('SELECT id, name, ip_address FROM socket').fetchall()}
for printer_name, printer_config in PRINTERS.items(): for ip_address, device_config in SOCKET_DEVICES.items():
ip_address = printer_config.get('ip', '') socket_number = device_config.get('number', '0')
name = f"Printer {socket_number}"
description = f"3D-Drucker mit SmartPlug (IP: {ip_address})" description = f"3D-Drucker mit SmartPlug (IP: {ip_address})"
if printer_name in existing_printers: if ip_address in existing_ips:
# Drucker existiert bereits, überprüfe auf Änderungen an der IP # Steckdose existiert bereits, nichts zu tun
socket_id = existing_printers[printer_name]['id'] app.logger.info(f"Steckdose mit IP {ip_address} existiert bereits in der Datenbank")
if existing_printers[printer_name]['ip'] != ip_address: socket_id = existing_ips[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")
else: else:
# Drucker erstellen, wenn er noch nicht existiert # Steckdose erstellen, wenn sie noch nicht existiert
socket = create_socket(name=printer_name, description=description, ip_address=ip_address, status=0) socket = create_socket(name=name, description=description, ip_address=ip_address, status=0)
socket_id = socket['id'] 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 # Steckdose ausschalten, um sicherzustellen, dass alle Steckdosen im AUS-Zustand starten
if ip_address: try:
try: turn_off_socket(ip_address)
turn_off_socket(ip_address) app.logger.info(f"Steckdose {ip_address} wurde beim Start ausgeschaltet")
app.logger.info(f"Steckdose für {printer_name} (IP: {ip_address}) wurde beim Start ausgeschaltet") except Exception as e:
except Exception as e: app.logger.error(f"Fehler beim Ausschalten der Steckdose {ip_address}: {e}")
app.logger.error(f"Fehler beim Ausschalten der Steckdose für {printer_name} (IP: {ip_address}): {e}")
# Initialisiere die Datenbank und Steckdosen beim Starten der Anwendung # Initialisiere die Datenbank und Steckdosen beim Starten der Anwendung
with app.app_context(): with app.app_context():
init_db() init_db()
# Nur initialisieren, wenn Drucker konfiguriert sind # Nur initialisieren, wenn Steckdosen konfiguriert sind
if PRINTERS: if SOCKET_DEVICES:
init_sockets() init_sockets()
app.teardown_appcontext(close_db) app.teardown_appcontext(close_db)