Webinterface: - /: oeffentlich, Laser Cutter Status, m:ss, an/aus, Display-Toggle (fetch/204) - /config: H2-Abschnitte (Status, MQTT, Webzugang, Geraet, Tools) Maschinenlaufzeit h:mm:ss, Reboot-Button (disabled bei aktivem Laser) - /reset-total: neue POST-Route fuer NVS-Maschinenlaufzeit-Reset (Auth) - /display-toggle: POST, 204, kein Seitenwechsel - /reboot: POST, Auth, ESP.restart() DisplayManager: - setEnabled()/isEnabled() via MAX7219 SHUTDOWN-Modus MQTT: - lasercutter/reset -> lasercutter/cmd (MQTT_TOPIC_CMD) - Kommandos: reset_session_nvs, reset_session_ram, display, reboot - Heartbeat lasercutter/status: display_on-Feld hinzugefuegt
50 lines
2.5 KiB
HTML
50 lines
2.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<meta name='viewport' content='width=device-width,initial-scale=1'>
|
|
<title>LaserCutter Display</title>
|
|
<style>
|
|
body { font-family: sans-serif; max-width: 480px; margin: 2rem auto; padding: 0 1rem }
|
|
h1 { color: #333 }
|
|
table { width: 100%; border-collapse: collapse; margin-bottom: 1.5rem }
|
|
td { padding: .5rem; border-bottom: 1px solid #eee }
|
|
td:first-child { color: #666; width: 50% }
|
|
.btn { display: inline-block; padding: .5rem 1.2rem; border: none; border-radius: 4px; cursor: pointer; text-decoration: none; font-size: 1rem }
|
|
.btn-primary { background: #3182ce; color: #fff }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>LaserCutter Display</h1>
|
|
<table>
|
|
<tr><td>Summe Laserzeit</td><td>8 min</td></tr>
|
|
<tr><td>Aktuelle Laserzeit</td><td>423 s</td></tr>
|
|
<tr><td>Letzte Laserzeit</td><td>0 s</td></tr>
|
|
<tr><td>Laser</td><td><span style='color:orange'>aktiv</span></td></tr>
|
|
<tr><td>Maschinenlaufzeit (gesamt)</td><td>619.50 min</td></tr>
|
|
<tr><td>IP-Adresse</td><td>192.168.2.62</td></tr>
|
|
<tr><td>MQTT</td><td><span style='color:green'>✓verbunden</span></td></tr>
|
|
<tr><td>Broker</td><td>mqtt.majufilo.eu:8883</td></tr>
|
|
<tr><td>Gratiszeit</td><td>10 s</td></tr>
|
|
<tr><td>Firmware</td><td>v1.3.0 (Mar 1 2026)</td></tr>
|
|
</table>
|
|
<div style='display:flex;flex-direction:column;gap:.6rem;margin-top:.5rem'>
|
|
<form action='/reset' method='post' style='width:100%' onsubmit="return confirm('Summe Laserzeit wirklich zur\u00fccksetzen?')">
|
|
<button class='btn btn-primary' type='submit' style='width:100%'>Summe Laserzeit zur ücksetzen</button>
|
|
</form>
|
|
<a href='/config' style='display:block'>
|
|
<button class='btn btn-primary' type='button' style='width:100%'>Konfiguration</button>
|
|
</a>
|
|
<a href='/update' style='display:block'>
|
|
<button class='btn btn-primary' type='button' style='width:100%'>OTA Update</button>
|
|
</a>
|
|
<a href='/log' style='display:block'>
|
|
<button class='btn btn-primary' type='button' style='width:100%'>💿Log Console</button>
|
|
</a>
|
|
</div>
|
|
<script>
|
|
setTimeout( () => location.reload(), 10000)
|
|
</script>
|
|
</body>
|
|
</html>
|