app py korrigiert, env vars, git ignore
This commit is contained in:
parent
3972860be8
commit
a651257b3b
5
backend/.env
Normal file
5
backend/.env
Normal 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"}}
|
@ -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
1
backend/.gitignore
vendored
@ -24,7 +24,6 @@ wheels/
|
|||||||
# Flask
|
# Flask
|
||||||
instance/
|
instance/
|
||||||
.webassets-cache
|
.webassets-cache
|
||||||
.env
|
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
logs/
|
logs/
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user