next step - added control.html and functions

This commit is contained in:
2026-02-03 16:03:05 +01:00
parent 8955cff47b
commit 127754ba15
3 changed files with 250 additions and 15 deletions
+48 -14
View File
@@ -47,35 +47,69 @@ def index():
return render_template('index.html', configs=configs)
current_config = None
current_filename = None
@app.route('/load_config/<filename>')
def load_config(filename):
# Später: Config in Session speichern oder global (für Entwicklung erstmal redirect)
# Hier nur redirect zur Steuerseite – echte Logik kommt später
global current_config, current_filename
path = os.path.join(app.config['CONFIG_DIR'], filename)
if not os.path.exists(path):
return "Konfigurationsdatei nicht gefunden", 404
# Für den Moment nur redirect – später speichern wir current_config
return redirect(url_for('control_page', filename=filename))
try:
with open(path, 'r', encoding='utf-8') as f:
current_config = json.load(f)
current_config['filename'] = filename
current_filename = filename
logger.info(f"Konfiguration geladen: {filename}")
return redirect(url_for('control_page'))
except Exception as e:
logger.error(f"Fehler beim Laden der Config {filename}: {e}")
return "Fehler beim Laden der Konfiguration", 500
@app.route('/control/<filename>')
def control_page(filename):
# Später: Config laden und übergeben
# Aktuell nur Dummy-Template
return render_template('control.html', filename=filename)
@app.route('/control')
def control_page():
if current_config is None:
return redirect(url_for('index'))
return render_template('control.html', config=current_config)
@app.route('/configs/<path:filename>')
def serve_config_file(filename):
"""Bilder und andere Dateien aus configs/ ausliefern"""
return send_from_directory(app.config['CONFIG_DIR'], filename)
# Neue API-Route (Platzhalter – später echte Bluetooth-Steuerung)
@app.route('/api/connect', methods=['POST'])
def api_connect():
# Hier kommt später der echte Code mit MouldKing
# Aktuell nur simuliert
if current_config is None:
return jsonify({"success": False, "message": "Keine Konfiguration geladen"}), 400
logger.info(f"Simulierter Connect zu Hub {current_config.get('hub_id')}")
return jsonify({
"success": True,
"message": "Verbunden (Simulation)",
"hub_id": current_config.get('hub_id')
})
@app.route('/api/control', methods=['POST'])
def api_control():
# Platzhalter für spätere echte Steuerung
data = request.get_json()
logger.info(f"Steuerbefehl empfangen: {data}")
return jsonify({"success": True, "message": "Befehl gesendet (Simulation)"})
@app.route('/api/stop_all', methods=['POST'])
def api_stop_all():
logger.info("Alle stoppen (Simulation)")
return jsonify({"success": True, "message": "Alle Kanäle gestoppt"})
@app.route('/admin')
def admin():
return render_template('admin.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5050, debug=True)
app.run(host='0.0.0.0', port=5055, debug=True)