MQTT-Display-LaserCutter/include/web_server.h
MaPaLo76 6bef93210e feat(ota): ArduinoOTA integration + platformio.ini refactor
- ArduinoOTA in web_server.cpp integriert (Hostname: lasercutter-display)
- WebServerManager::loop() hinzugefuegt -> ArduinoOTA.handle()
- webServer.loop() in main.cpp aufgerufen
- platformio.ini: gemeinsamer [env]-Basisblock (lib_deps einmalig)
- Neues env az-delivery-devkit-v4-ota (espota, upload_flags --auth Anleitung)
- Neues env az-delivery-devkit-v4-ota-http (ElegantOTA HTTP Fallback)
- upload_ota.py: HTTP-Multipart-Upload Script fuer ElegantOTA
- README.md: Abschnitt Via WiFi (OTA) mit Passwort-Anleitung
- Implementation-Plan.md: Task 9.9 dokumentiert
2026-02-26 21:35:55 +01:00

54 lines
1.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
// =============================================================================
// web_server.h HTTP-Webinterface für Statusanzeige und Konfiguration
// Projekt: MQTT-Display LaserCutter
//
// Basierend auf ESPAsyncWebServer (non-blocking, Task-safe).
//
// Routen:
// GET / Statusseite (Session, Gesamtzeit, WLAN/MQTT-Status)
// GET /config Konfigurationsformular (MQTT, Gratiszeit, Polarität)
// POST /config Konfiguration speichern (NVS via SettingsManager)
// POST /reset Gesamtzeit zurücksetzen (laserTracker.resetTotal())
// GET /update OTA-Update-Seite (ElegantOTA)
// POST /update Firmware-Upload (ElegantOTA)
//
// Verwendung:
// webServer.begin(); // einmalig in setup(), nach WiFi-Connect
// // kein loop() nötig ESPAsyncWebServer ist vollständig async
// =============================================================================
#include <Arduino.h>
// Forward-Declarations: ESPAsyncWebServer.h nur in web_server.cpp einbinden
// (verhindert HTTP_GET/POST-Enum-Konflikt mit WiFiManager in main.cpp)
class AsyncWebServer;
class AsyncWebServerRequest;
class WebServerManager {
public:
WebServerManager();
// Routen registrieren und Server starten (einmalig nach WiFi-Connect)
void begin();
// ArduinoOTA verarbeiten in jedem loop()-Durchlauf aufrufen
void loop();
private:
AsyncWebServer* _server; // PIMPL: Pointer, full type only in web_server.cpp
void registerRoutes();
// HTTP-Basic-Auth pruefen; gibt false zurueck und sendet 401 wenn nicht autorisiert
bool requireAuth(AsyncWebServerRequest* request);
// HTML-Seiten als Strings aufbauen
String buildStatusPage();
String buildConfigPage();
};
// Globale Instanz
extern WebServerManager webServer;