MQTT-Display-LaserCutter/html-template/Laser-Cutter-Display.html
MaPaLo76 c61a67f812 feat(web+mqtt): FR-010 Webinterface-Redesign + MQTT-Steuerung
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
2026-03-01 17:28:47 +01:00

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'>&#10003;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 &uuml;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%'>&#128191;Log Console</button>
</a>
</div>
<script>
setTimeout( () => location.reload(), 10000)
</script>
</body>
</html>