DIYables ESP32 WebApps Bibliothek API-Referenz für Arduino Nano ESP32
Übersicht
Diese Seite dokumentiert die vollständige API der DIYables ESP32 WebApps Bibliothek auf dem Board Arduino Nano ESP32. Die Bibliothek folgt einer modularen Architektur — jede Webanwendung ist eine eigenständige Klasse, die Sie beim Server registrieren. Fügen Sie nur die Seitenklassen ein, die Ihr Projekt benötigt; ungenutzte Klassen verbrauchen keinen Flash oder RAM.
Die Bibliothek verwaltet die WiFi-Verbindung, HTTP-Serving und WebSocket-Kommunikation. Ihr Sketch interagiert damit vollständig über Callbacks und Send-Methoden.
Bibliotheksfunktionen
- Modulares Seitensystem: Registrieren Sie nur die Apps, die Sie benötigen; jede ist unabhängig
- Speicherkontrolle: Die Pro-App-Einbeziehung bedeutet, dass Sie Flash und RAM kontrollieren
- 11 integrierte Webanwendungen: Einsatzbereit ohne Webprogrammierung
- Erweiterbare Basisklasse: Leiten Sie von DIYablesWebAppPageBase ab, um benutzerdefinierte Seiten zu erstellen
- WebSocket-First-Design: Alle Echtzeit-Datenaustausche verwenden WebSocket auf Port 81
- Responsive Benutzeroberfläche: Alle integrierten Seiten funktionieren auf Desktop, Tablet und Mobilgeräten
- Callback-basierte API: Einfache Funktionsregistrierung — kein Polling erforderlich
- Unterstützung gleichzeitiger Apps: Mehrere Seiten können gleichzeitig auf einem Server laufen
Kernklassen
DIYablesWebAppServer
Die zentrale Serverklasse. Sie verwaltet HTTP-Routing, WebSocket-Verbindungen und leitet eingehende Nachrichten zum korrekten registrierten Page-Handler weiter.
Konstruktor
Instanziiert den Server mit den angegebenen Portnummern.
- httpPort: Port für HTTP-Anfragen (Standard: 80)
- websocketPort: Port für WebSocket-Verbindungen (Standard: 81)
Verbindungsmethoden
Startet den Server, wobei angenommen wird, dass WiFi oder Ethernet bereits extern konfiguriert wurden.
- Rückgabe: true bei Erfolg, false bei Fehler
Verbindet sich mit den bereitgestellten Anmeldedaten mit WiFi und startet dann die HTTP- und WebSocket-Server.
- ssid: Netzwerkname
- password: Netzwerkpasswort
- Rückgabe: true bei Erfolg, false bei Fehler
Verarbeitet ausstehende HTTP-Anfragen und WebSocket-Ereignisse. Rufen Sie dies in loop() bei jeder Iteration auf.
Gibt true zurück, wenn das Board eine aktive WiFi-Verbindung hat.
Gibt die aktuelle IP-Adresse des Boards als String zurück.
Seitenregistrierung
Registriert eine Seiteninstanz beim Server. Der URL-Pfad der Seite wird in ihrem Konstruktor definiert.
- app: Zeiger auf ein Seitenobjet
Hebt die Registrierung der Seite unter dem angegebenen URL-Pfad auf.
- path: Pfad-String (z.B. "/chat")
Gibt einen Zeiger auf die registrierte Seite im angegebenen Pfad zurück, oder nullptr, wenn nicht gefunden.
Weist eine benutzerdefinierte 404-Seite zu, die angezeigt wird, wenn keine registrierte Seite mit einer Anfrage übereinstimmt.
Typisierte Seitenattribute
Gibt die registrierte Digital-Pins-Seite zurück, oder nullptr, wenn sie nicht hinzugefügt wurde.
Gibt die registrierte Slider-Seite zurück, oder nullptr, wenn sie nicht hinzugefügt wurde.
Gibt die registrierte Joystick-Seite zurück, oder nullptr, wenn sie nicht hinzugefügt wurde.
Basisklasse
DIYablesWebAppPageBase
Alle integrierten und benutzerdefinierten Seitenklassen erweitern diese abstrakte Basis. Sie bietet HTTP-Antwortdienstprogramme, WebSocket-Broadcasting und Page-Lifecycle-Hooks.
Konstruktor
Registriert die Seite unter dem angegebenen URL-Pfad.
- pagePath: URL-Route für diese Seite (z.B. "/web-joystick")
Abstrakte Methoden — erforderlich in benutzerdefinierten Seiten
Aufgerufen, wenn ein Browser diese Seite über HTTP anfordert.
- client: Schnittstelle zum Schreiben der HTTP-Antwort
Aufgerufen, wenn eine WebSocket-Nachricht ankommt und ihr Präfix dieser Seite entspricht.
- ws: Die WebSocket-Verbindung, die die Nachricht gesendet hat
- message: Roher Nachrichteninhalt
- length: Byte-Länge der Nachricht
Gibt eine kurze Label-Zeichenkette zurück, die in der Serial-Monitor-Startausgabe angezeigt wird (z.B. "🕹️ Web Joystick: ").
Gibt ein HTML-Fragment für die Karte dieser Seite auf der Homepage zurück.
Optionale Override-Methoden
Aufgerufen, wenn sich ein neuer WebSocket-Client verbindet. Überschreiben Sie, um den Initialzustand zu senden.
Aufgerufen, wenn sich ein WebSocket-Client trennt.
Hilfsmethoden
Gibt den registrierten URL-Pfad dieser Seite zurück.
Gibt true zurück, wenn diese Seite aktiv ist und auf Anfragen antwortet.
Aktiviert oder deaktiviert die Seite, ohne sie vom Server zu entfernen.
Schreibt Standard-200-OK-HTTP-Header an den Client.
Sendet eine Nachricht an eine einzelne WebSocket-Verbindung.
Liefert eine Nachricht an alle derzeit verbundenen WebSocket-Clients.
Überträgt große HTML-Nutzlasten mit Chunk-Transfer-Kodierung.
Beispiel einer benutzerdefinierten Seite
Integrierte Seitenklassen
DIYablesHomePage
Navigationszentrale, die alle registrierten Anwendungen auflistet.
Konstruktor
URL
- /
---
DIYablesWebChatPage
Bidirektionales Textnachrichtensystem zwischen Browser und Board.
Konstruktor
URL
- /webchat
Methoden
Registriert einen Handler, der jedes Mal aufgerufen wird, wenn der Browser eine Chat-Nachricht sendet.
Sendet eine Nachricht vom Board an die Browser-Chat-Ansicht.
---
DIYablesWebMonitorPage
Browser-zugänglicher serieller Monitor für Ausgabeprotokollierung und Befehlseingabe.
Konstruktor
URL
- /webmonitor
Methoden
Registriert einen Handler, der aufgerufen wird, wenn der Browser einen Befehl sendet.
Sendet eine Protokollnachricht vom Board an den Browser-Monitor.
---
DIYablesWebDigitalPinsPage
Webschnittstelle zum Lesen und Schreiben von Digitalpins 0–13.
Konstruktor
URL
- /webdigitalpins
Methoden
Macht den Pin in der Webschnittstelle sichtbar und steuerbar.
- pin: Pinnummer (0–13)
- mode: WEB_PIN_OUTPUT oder WEB_PIN_INPUT
Handler, der aufgerufen wird, wenn der Browser einen Ausgangspin umschaltet. Empfängt (pin, state).
Handler, der aufgerufen wird, wenn der Browser einen Eingangspinstatus anfordert. Gibt den aktuellen Status zurück.
Handler, der aufgerufen wird, wenn der Browser die Richtung eines Pins ändert.
Sendet einen aktualisierten Pin-Status an alle verbundenen Browser-Clients.
---
DIYablesWebSliderPage
Duale Schieberegler im Bereich 0–255, geeignet für PWM und Analogsteuerung.
Konstruktor
URL
- /webslider
Methoden
Handler, der aufgerufen wird, wenn einer der Schieberegler sich bewegt. Empfängt (slider1, slider2) im Bereich 0–255.
Handler, der aufgerufen wird, wenn ein neu verbundener Browser die aktuellen Schiebereglerpositionen anfordert.
Sendet Schiebereglerwerte an den Browser und aktualisiert die angezeigten Positionen.
---
DIYablesWebJoystickPage
Virtueller 2D-Joystick, der X/Y-Koordinaten für Richtungssteuerung zurückgibt.
Konstruktor
- autoReturn: Wenn true, kehrt der Joystick bei Freigabe in die Mitte zurück
- sensitivity: Mindestverschiebungsprozentsatz, der erforderlich ist, bevor eine Aktualisierung gesendet wird
URL
- /webjoystick
Methoden
Handler, der bei Joystick-Bewegung aufgerufen wird. Empfängt (x, y) jeweils im Bereich –100 bis +100.
Handler, der aufgerufen wird, wenn ein Browser die aktuelle Joystick-Position anfordert.
Sendet die aktuelle Joystick-Position an verbundene Browser.
Aktualisiert das Auto-Center-Return-Verhalten zur Laufzeit.
Aktualisiert den Bewegungsempfindlichkeitsschwellenwert zur Laufzeit.
---
DIYablesWebPlotterPage
Streaming-Datenplotter, der bis zu 8 gleichzeitige Datenreihen unterstützt.
Konstruktor
URL
- /webplotter
Methoden
Setzt den über dem Plot angezeigten Diagrammtitel.
Setzt die X-Achsen- und Y-Achsen-Beschriftungen.
Wenn true, passt sich der Y-Achsen-Bereich automatisch an eingehende Daten an.
Begrenzt die Anzahl der beibehaltenen Datenpunkte pro Reihe, bevor ältere Punkte verworfen werden.
Hängt einen einzelnen (x, y) Punkt an die benannte Reihe an.
Entfernt alle Daten aus allen Reihen.
---
DIYablesNotFoundPage
Optionale 404-Antwortseite, die für nicht registrierte Routen angezeigt wird.
Konstruktor
Grundlegende Verwendung
Der folgende Sketch demonstriert das Hinzufügen einer Chat- und Monitor-Seite zu einem Arduino-Nano-ESP32-Projekt:
Webanwendungs-URL-Referenz
| Anwendung | Standard-URL | |
|---|---|---|
| Startseite | http | //[board-ip]/ |
| Chat | http | //[board-ip]/webchat |
| Web-Monitor | http | //[board-ip]/webmonitor |
| Digitalpins | http | //[board-ip]/webdigitalpins |
| Schieberegler | http | //[board-ip]/webslider |
| Joystick | http | //[board-ip]/webjoystick |
| Plotter | http | //[board-ip]/webplotter |
WebSocket-Protokoll
Alle Echtzeitkommunikation läuft über einen einzelnen WebSocket-Server auf Port 81.
- WebSocket-Endpunkt: ws://[board-ip]:81
- Wiederverbindung: Browser verbinden sich automatisch nach Trennung wieder
- Nachrichtenformat: Textbasiert; jede integrierte App verwendet ein eindeutiges Präfix, um ihre Nachrichten zu identifizieren
Per-App-Nachrichtenmuster
Chat — Nur-Text in beide Richtungen
Monitor — Nur-Text in beide Richtungen
Digitalpins
- Browser → Board: {"pin": 13, "state": 1}
- Board → Browser: {"pin": 13, "state": 1}
Schieberegler
- Browser → Board: {"slider1": 128, "slider2": 255}
- Board → Browser: {"slider1": 128, "slider2": 255}
Joystick
- Browser → Board: {"x": 50, "y": -25}
- Board → Browser: {"x": 50, "y": -25}
Plotter
- Browser → Board: nicht anwendbar (nur Anzeige)
- Board → Browser: {"series": "temp", "x": 10.5, "y": 23.4}
Speicherreferenz
Fügen Sie nur die Seiten ein, die Ihr Projekt verwendet. Ungefährer Fußabdruck pro Komponente:
| Komponente | Flash | RAM |
|---|---|---|
| DIYablesWebAppServer | ~8 KB | ~2 KB |
| DIYablesHomePage | ~3 KB | ~1 KB |
| DIYablesWebChatPage | ~6 KB | ~1,5 KB |
| DIYablesWebMonitorPage | ~5 KB | ~1,5 KB |
| DIYablesWebDigitalPinsPage | ~8 KB | ~2 KB |
| DIYablesWebSliderPage | ~6 KB | ~1,5 KB |
| DIYablesWebJoystickPage | ~7 KB | ~1,5 KB |
| DIYablesWebPlotterPage | ~10 KB | ~2 KB |
| WebSocket-Puffer (pro Client) | — | ~1 KB |
Minimales Projekt (Server + Startseite + eine App): ~17 KB Flash, ~4,5 KB RAM
Alle Apps aktiviert: ~53 KB Flash, ~12 KB RAM