DIYables ESP32 WebApps Bibliotheks-API-Referenz – Vollständige Dokumentation
Überblick
Die DIYables ESP32 WebApps Library bietet eine umfassende modulare Lösung zur Erstellung von WebSocket-basierten Webanwendungen auf dem ESP32. Sie umfasst mehrere vorgefertigte Webanwendungen und ein flexibles Framework zur Erstellung eigener Anwendungen.
Die Bibliothek verwendet eine modulare Architektur, bei der Sie nur die Webanwendungen einbinden, die Sie benötigen, was Speicher spart und die Leistung verbessert.
Funktionen
- Modulare Architektur: Fügen Sie nur die Web-Apps hinzu, die Sie benötigen, um den Speicherverbrauch zu optimieren
- Speichereffizient: Jede Webanwendung kann unabhängig voneinander aktiviert/deaktiviert werden
- 11+ einsatzbereite Webanwendungen: Vollständige ESP32-Steuerung ohne Kenntnisse in der Webprogrammierung
- Eigenes Web-App-Framework: Erstellen Sie Ihre eigenen Anwendungen mithilfe des Basisklassen-Systems
- Echtzeit-Kommunikation: WebSocket-basiert für sofortige Aktualisierungen
- Responsives Design: Funktioniert auf Desktop-, Tablet- und Mobilgeräten
- Einfache Integration: Callback-basierte API
- Unterstützung mehrerer Apps: Das gleichzeitige Hinzufügen mehrerer Webanwendungen wird unterstützt
Kernklassen
DIY-fähiger Web-App-Server
Die Hauptserverklasse, die Webanwendungen, HTTP-Anfragen und WebSocket-Kommunikation verwaltet.
Konstruktor
Erstellt eine Instanz eines Webanwendungsservers.
- httpPort: HTTP-Server-Port (Standardwert: 80)
- websocketPort: WebSocket-Server-Port (Standardwert: 81)
Methoden
Einrichtung und Verbindung
Initialisiert die Netzwerkverbindung (für Ethernet- oder vorkonfigurierte Verbindungen) und startet den Webserver.
- Rückgabewert: true, falls erfolgreich, false, falls fehlgeschlagen
- Anwendungsfall: Für zukünftige Ethernet-Unterstützung oder wenn WLAN-Zugangsdaten vorkonfiguriert sind
Initialisiert die WLAN-Verbindung und startet den Webserver.
- SSID: WLAN-Netzwerkname
- Passwort: WLAN-Passwort
- Rückgabewert: wahr, falls erfolgreich; falsch, falls fehlgeschlagen
- Anwendungsfall: Standard-WLAN-Verbindung mit Zugangsdaten
Verarbeitet HTTP-Anfragen und WebSocket-Kommunikation. Muss in der Hauptschleife aufgerufen werden.
Gibt true zurück, wenn WLAN verbunden ist.
Gibt die IP-Adresse des Arduino als String zurück.
Anwendungsmanagement
Fügt dem Server eine Webanwendung hinzu.
- app: Zeiger auf eine Webanwendungsinstanz
Entfernt eine Webanwendung anhand ihres URL-Pfads.
- Pfad: URL-Pfad der Anwendung (z. B. "/chat")
Ruft eine Webanwendung anhand ihres URL-Pfads ab.
- Pfad: URL-Pfad der Anwendung
- Rückgabe: Zeiger auf die App oder nullptr, falls nicht gefunden
Legen Sie die 404-Fehlerseite fest (optional).
- Seite: 404-Seiteninstanz
Spezialisierter App-Zugang
Gibt die Instanz der Seite Digitale Pins zurück, sofern sie hinzugefügt wurde.
- Rückgabewert: Zeiger auf die Seite der digitalen Pins oder nullptr
Ruft die Instanz der Sliderseite ab, falls sie hinzugefügt wurde.
- Rückgabewert: Zeiger auf die Slider-Seite oder nullptr
Gibt die Joystick-Seiteninstanz zurück, falls sie hinzugefügt wurde.
- Rückgabewert: Zeiger auf die Joystick-Seite oder nullptr
Basisklassen
DIYablesWebAppSeitenBasisklasse
Abstrakte Basisklasse, von der alle Webanwendungen erben. Bietet gemeinsame Funktionalität für die HTTP-Verarbeitung, WebSocket-Kommunikation und Seitenverwaltung.
Konstruktor
Erstellt eine Basis-Seiteninstanz mit dem angegebenen URL-Pfad.
- pagePath: URL-Pfad der Seite (z. B. "/web-joystick")
Virtuelle Methoden (müssen von abgeleiteten Klassen implementiert werden)
Bearbeitet HTTP-Anfragen für diese Seite. Reine virtuelle Methode.
- Client: Web-Client-Schnittstelle zum Senden der Antwort
Verarbeitet WebSocket-Nachrichten für diese Seite. Reine virtuelle Methode.
- ws: WebSocket-Verbindungsschnittstelle
- message: Inhalt der empfangenen Nachricht
- length: Nachrichtenlänge
Gibt die Seitenidentifikationszeichenfolge zurück, die in der Anzeige von Verbindungsinformationen verwendet wird. Reine virtuelle Methode.
- Rückgabewert: Seiten-Info-String (z. B. "🕹️ Web-Joystick: ")
Gibt HTML für die Navigationsschaltfläche der Startseite zurück. Reine virtuelle Methode.
- Rückgabewert: HTML-Zeichenkette für Navigationskarte
Virtuelle Methoden (Optionale Überschreibungen)
Wird aufgerufen, wenn eine neue WebSocket-Verbindung hergestellt wird.
- ws: neue WebSocket-Verbindung
Wird aufgerufen, wenn eine WebSocket-Verbindung geschlossen wird.
- ws: WebSocket-Verbindung geschlossen
Gängige Methoden
Gibt den URL-Pfad dieser Seite zurück.
- Rückgabewert: Seitenpfad-Zeichenkette
Prüft, ob die Seite derzeit aktiviert ist.
- Rückgabewert: true, wenn aktiviert, false, wenn deaktiviert
Aktiviert oder deaktiviert die Seite.
- Aktivieren: wahr zum Aktivieren, falsch zum Deaktivieren
Hilfsfunktionen
Sendet standardmäßige HTTP-Header an den Client.
- client: Web-Client-Schnittstelle
- contentType: MIME-Typ (Standardwert: "text/html")
Sendet eine Nachricht an einen bestimmten WebSocket-Client.
- ws: Ziel-WebSocket-Verbindung
- message: Nachricht zum Senden
Sendet eine Nachricht an alle verbundenen WebSocket-Clients.
- Nachricht: Nachricht zur Verbreitung
Sendet großen HTML-Inhalt mit Chunked-Transfer-Encoding.
- client: Web-Client-Schnittstelle
- html: HTML-Inhalt zum Senden
Anwendungsbeispiel
Webanwendungsklassen
DIYablesStartseite
Zentrales Navigationszentrum, das Links zu allen aktivierten Anwendungen bereitstellt.
Konstruktor
URL-Pfad
- Pfad: / (Wurzel)
DIYablesWebChatPage
Interaktive Chat-Oberfläche für die bidirektionale Kommunikation mit Arduino.
Konstruktor
URL-Pfad
- Pfad: /webchat
Methoden
Legt einen Callback für eingehende Chat-Nachrichten fest.
Eine Nachricht an die Webchat-Oberfläche senden.
DIYablesWebMonitorPage
webbasierter serieller Monitor für Ausgabe in Echtzeit und Befehlseingabe.
Konstruktor
URL-Pfad
- Pfad: /webmonitor
Methoden
Legt einen Callback für eingehende Monitormeldungen fest.
Sendet eine Nachricht an die Webmonitor-Schnittstelle.
DIYablesWebDigitalPinsPage
Steuern und überwachen Sie digitale Pins 0–13 über die Weboberfläche.
Konstruktor
URL-Pfad
- Pfad: /webdigitalpins
Methoden
Ermöglicht eine PIN für die Websteuerung.
- Pin: Pin-Nummer (0-13)
- Modus: WEB_PIN_OUTPUT oder WEB_PIN_INPUT
Legt einen Callback für Schreiboperationen an Pins (Ausgangspins) fest.
Legt einen Callback für das Auslesen von Pins fest (Eingangspins).
Setzt einen Callback für Änderungen des Pin-Modus.
Aktualisiert den Pin-Status in Echtzeit für Web-Clients.
DIYablesWebSliderSeite
Dualer Schieberegler für analoge und PWM-Anwendungen.
Konstruktor
URL-Pfad
- Pfad: /webslider
Methoden
Legt eine Callback-Funktion fest, die bei Änderungen des Sliderwerts aus dem Web aufgerufen wird.
- Parameter: slider1 (0-255), slider2 (0-255)
Setzt Callback-Funktion für den Web-Client, der aktuelle Werte anfordert.
Sendet die Werte der Schieberegler an die Weboberfläche.
DIYablesWebJoystickSeite
2D-Joysticksteuerung für Robotik- und Positionierungsanwendungen.
Konstruktor
- autoReturn: Ob der Joystick automatisch zur Mitte zurückkehrt
- sensitivity: Mindestbewegung in Prozent, um Updates auszulösen
URL-Pfad
- Pfad: /webjoystick
Methoden
Legt einen Callback für Joystick-Bewegungen aus dem Web fest.
- Parameter: x (-100 bis 100), y (-100 bis 100)
Legt den Callback für den Web-Client fest, der die aktuelle Position anfordert.
Sendet die Joystick-Position an die Weboberfläche.
Legt das Verhalten der automatischen Rückkehr fest.
Bewegungsempfindlichkeit festlegen (Prozentsatz).
DIYables Web-Plotter-Seite
Echtzeit-Datenvisualisierung mit Unterstützung mehrerer Datenreihen.
Konstruktor
URL-Pfad
- Pfad: /webplotter
Methoden
Legt den Plot-Titel fest.
Legt Achsenbeschriftungen fest.
Aktiviert bzw. deaktiviert die automatische Skalierung der Y-Achse.
Legt die maximale Anzahl der anzuzeigenden Datenpunkte fest.
Fügt einen Datenpunkt zu einer Serie hinzu.
Löscht alle Daten aus dem Diagramm.
DIYablesSeiteNichtGefunden
Optionale 404-Fehlerseite für eine bessere Benutzererfahrung.
Konstruktor
Grundlegendes Anwendungsbeispiel
Überblick über Webanwendungen
Startseite
- URL: http://[esp32-ip]/
- Zweck: Zentrale Navigationsplattform
- Funktionen: Links zu allen aktivierten Anwendungen, Verbindungsstatus
WebChat-Anwendung
- Webadresse: http://[esp32-ip]/webchat
- Zweck: Zweiseitige Kommunikationsschnittstelle
- Funktionen: Nachrichten in Echtzeit, Nachrichtenverlauf, WebSocket-Status
Web-Monitor
- URL: http://[esp32-ip]/webmonitor
- Zweck: Ersatz für den seriellen Monitor
- Funktionen: Echtzeit-serielle Ausgabe, Befehlseingabe, dunkles Design
Webbasierte Steuerung digitaler Pins
- URL: http://[esp32-ip]/webdigitalpins
- Purpose: Steuerung der digitalen Pins 0-13
- Features: Individuelle Pin-Steuerung, Massenoperationen, Status in Echtzeit
Web-Schieberegler-Steuerung
- URL: http://[esp32-ip]/webslider
- Zweck: duale Analog-/PWM-Steuerung
- Funktionen: Zwei unabhängige Schieberegler (0-255), voreingestellte Werte, Echtzeit-Feedback
Web-Joystick-Steuerung
- URL: http://[esp32-ip]/webjoystick
- Zweck: 2D-Positionssteuerung für Roboter/Fahrzeuge
- Funktionen: Touch-/Maussteuerung, Koordinatenanzeige, Empfindlichkeitseinstellung
Web-Plotter
- URL: http://[esp32-ip]/webplotter
- Zweck: Echtzeit-Datenvisualisierung
- Funktionen: Mehrere Datenreihen, automatische Skalierung, konfigurierbare Titel und Achsen
WebSocket-Kommunikation
Alle Anwendungen verwenden WebSocket auf Port 81 für die Echtzeitkommunikation:
- WebSocket-URL: ws://[esp32-ip]:81
- Verbindung: Automatische Wiederverbindung bei Verbindungsabbruch
- Protokoll: Textbasiertes Nachrichtenformat
Nachrichtenformate
WebChat-Nachrichten
- Aus dem Web: Direkte Textnachricht
- Zum Web: Direkte Textnachricht
Webmonitor-Meldungen
- Vom Web: direkte Textnachricht
- Zum Web: direkte Textnachricht
Web Digitale PIN-Nachrichten
- Aus dem Web: JSON-Format: {"pin": 13, "state": 1}
- Zum Web: JSON-Format: {"pin": 13, "state": 1}
Web-Slider-Nachrichten
- Aus dem Web: JSON-Format: {"slider1": 128, "slider2": 255}
- Zum Web: JSON-Format: {"slider1": 128, "slider2": 255}
Web-Joystick-Nachrichten
- Aus dem Web: JSON-Format: {"x": 50, "y": -25}
- Zum Web: JSON-Format: {"x": 50, "y": -25}
Web Plotter Nachrichten
- Aus dem Web: Nicht zutreffend (nur Anzeige)
- Zum Web: JSON-Format: {"series": "temp", "x": 10.5, "y": 23.4}
Fehlerbehandlung
Die Bibliothek umfasst automatische Fehlerbehandlung für:
- WLAN-Verbindungsabbrüche
- WebSocket-Verbindungsabbrüche
- Ungültige Nachrichtenformate
- Client-Verbindungsgrenzen
Speicherverbrauch
Vorteile der modularen Architektur: Fügen Sie nur die Webanwendungen hinzu, die Sie benötigen, um den Speicherverbrauch zu optimieren.
Ungefährer Speicherverbrauch pro Komponente:
- DIYablesWebAppServer: ~8KB Flash-Speicher, ~2KB Arbeitsspeicher
- DIYablesHomePage: ~3KB Flash-Speicher, ~1KB Arbeitsspeicher
- DIYablesWebChatPage: ~6KB Flash-Speicher, ~1.5KB Arbeitsspeicher
- DIYablesWebMonitorPage: ~5KB Flash-Speicher, ~1.5KB Arbeitsspeicher
- DIYablesWebDigitalPinsPage: ~8KB Flash-Speicher, ~2KB Arbeitsspeicher
- DIYablesWebSliderPage: ~6KB Flash-Speicher, ~1.5KB Arbeitsspeicher
- DIYablesWebJoystickPage: ~7KB Flash-Speicher, ~1.5KB Arbeitsspeicher
- DIYablesWebPlotterPage: ~10KB Flash-Speicher, ~2KB Arbeitsspeicher
- WebSocket-Puffer: ~1KB RAM pro Verbindung
Gesamt, wenn alle Apps aktiviert sind: ~53KB Flash-Speicher, ~12KB RAM
Minimale Einrichtung (Server + Home + 1 App): ~17 KB Flash-Speicher, ~4.5 KB RAM
Browser-Kompatibilität
Unterstützte Browser:
- Chrome 50+
- Firefox 45+
- Safari 10+
- Edge 79+
- Mobile-Browser (iOS Safari, Chrome Mobile)
Sicherheitshinweise
- Keine Authentifizierung implementiert (nur für lokale Netzwerke geeignet)
- Nur in vertrauenswürdigen Netzwerken verwenden
- Erwägen Sie, Authentifizierung für öffentliche Bereitstellungen hinzuzufügen
Fehlerbehebung
Häufige Probleme
i. Kann keine Verbindung zum WLAN herstellen
- Prüfe SSID und Passwort
- Überprüfen Sie, ob das Netzwerk 2,4 GHz nutzt (nicht 5 GHz)
- Signalstärke überprüfen
- WebSocket-Verbindung schlägt fehl
- Überprüfen Sie, ob die IP-Adresse korrekt ist.
- Firewall-Einstellungen überprüfen
- Versuchen Sie einen anderen Browser
- Hoher Speicherverbrauch
- Nicht verwendete Anwendungen deaktivieren
- Gleichzeitige Verbindungen begrenzen
- Starte den ESP32 neu, wenn Speicherfragmentierung auftritt.
- langsame Antwort
- WLAN-Signalstärke überprüfen
- Reduziere die Frequenz der WebSocket-Nachrichten
- Verwenden Sie kürzere Callback-Funktionen.
Beispielprojekte
Beispielanwendungen
Die DIYables ESP32 WebApps-Bibliothek enthält umfassende Beispiele, die für die ESP32-Bildungsplattform entwickelt wurden:
Verfügbare Beispiele
- Chat-Beispiel: zweiseitige Kommunikationsschnittstelle
- WebMonitor-Beispiel: Seriemonitor-Ersatz mit erweiterten Funktionen
- WebDigitalPins-Beispiel: Steuerung aller digitalen Pins mit visuellem Feedback
- WebSlider-Beispiel: Duale Analog-/PWM-Steuerung mit Voreinstellungen
- WebJoystick-Beispiel: 2D-Positionssteuerung für Robotikprojekte
- MultipleWebApps-Beispiel: Alle Anwendungen laufen gleichzeitig
Siehe den Ordner examples/ für vollständige Projekte und den Ordner docs/ für detaillierte Setup-Anleitungen.
Plattformabstraktionsschnittstellen
Die DIYables ESP32 WebApps-Bibliothek verwendet eine Plattformabstraktionsschicht mit Schnittstellen, die die Unterstützung mehrerer Hardware-Plattformen ermöglichen. Diese Schnittstellen trennen die Kern-WebApp-Funktionalität von plattformabhängigen Implementierungen.
Kern-Schnittstellen
IWebClient
Schnittstelle für HTTP-Client-Verbindungen.
IWebSocket
Schnittstelle für WebSocket-Verbindungen mit bidirektionaler Kommunikation.
IWebServer
Schnittstelle für die Funktionalität eines HTTP-Servers.
IWebSocketServer
Schnittstelle für einen WebSocket-Server mit Verbindungsverwaltung.
INetworkProvider
Schnittstelle zur Verwaltung der Netzwerkverbindung.
IServerFactory
Fabrik-Schnittstelle zur Erstellung plattformabhängiger Implementierungen.
Plattform-Implementierungsbeispiel
Für den ESP32 werden die Schnittstellen mit der DIYables_ESP32_WebServer-Bibliothek implementiert:
Unterstützung für neue Plattformen hinzufügen
Um Unterstützung für eine neue Plattform hinzuzufügen (z. B. ESP32):
- Alle Schnittstellen implementieren für die Zielplattform
- Erstelle eine ServerFactory, die deine Implementierungen instanziiert
- Behandle plattformabhängige Netzwerke und WebSocket-Protokolle
- Teste mit vorhandenen WebApp-Klassen (keine Änderungen erforderlich)
Beispielverwendung mit verschiedenen Plattformen:
Vorteile des Schnittstellen-basierten Designs
- Plattformunabhängigkeit: Die Kernlogik der WebApp funktioniert auf jeder Plattform
- Erweiterbarkeit: Einfach neue Hardwareunterstützung hinzufügen
- Wartbarkeit: Plattformspezifischer Code ist isoliert
- Testbarkeit: Schnittstellen können für Unit-Tests gemockt werden
- Konsistenz: Gleiche API über alle unterstützten Plattformen hinweg
Aktuelle Plattformunterstützung
- ✅ ESP32: Vollständig implementiert und getestet
- 🔄 ESP32: Verfügbar als eigenständige Erweiterung - DIYables_WebApps_ESP32
- 🚀 Zukünftige Plattformen: Können mit dem gleichen Schnittstellenmuster hinzugefügt werden