ESP32 benutzerdefiniertes WebApp-Beispiel – Einfaches Tutorial zur Weboberfläche für Anfänger
Überblick
Dieses Beispiel bietet eine vollständige Vorlage zur Erstellung eigener benutzerdefinierter Webanwendungen, die nahtlos in die DIYables ESP32 WebApps-Bibliothek integriert werden.

Die CustomWebApp-Vorlage ist perfekt für Anfänger, die ihre eigene Weboberfläche in das DIYables ESP32 WebApps-Ökosystem integrieren möchten! Dieses Tutorial zeigt dir, wie du eine einfache Webseite mit Echtzeit-Zwei-Wege-Datenaustausch zwischen Webbrowser und ESP32 über WebSocket erstellst, die kann:
- Textnachrichten senden vom Webbrowser an ESP32 sofort über WebSocket
- Nachrichten empfangen vom ESP32 und sie in Echtzeit auf der Webseite anzeigen
- Eine dauerhafte WebSocket-Verbindung aufrechterhalten für kontinuierliche Kommunikation
- Automatisches Wiederverbinden, wenn die WebSocket-Verbindung verloren geht
- Auf mobilen Geräten mit responsivem Design
Für ESP32 entwickelt - diese Vorlage integriert sich nahtlos in vorhandene DIYables-Web-Apps und bildet die Grundlage für den Aufbau eigener maßgeschneiderter IoT-Schnittstellen!
Dieses Template stellt minimalen Code bereit, um Ihnen den Einstieg zu erleichtern. Benutzer können eigene, anspruchsvolle Webanwendungen entwickeln, indem sie dieses Template anpassen. Grundlegende Kenntnisse der Web-Programmierung (HTML, CSS, JavaScript) werden empfohlen, zur Anpassung der Weboberfläche und zum Hinzufügen fortgeschrittener Funktionen.
Was Sie lernen werden
- Wie man eine benutzerdefinierte Web-App erstellt, die sich in die DIYables ESP32 WebApps-Bibliothek integriert
- Wie man Ihre benutzerdefinierte Seite dem DIYables WebApps-Ökosystem hinzufügt
- Wie man Textnachrichten vom Webbrowser zum ESP32 sendet
- Wie man Daten vom ESP32 an den Webbrowser sendet
- Wie man WebSocket-Verbindungen verwaltet und eine automatische Wiederverbindung herstellt
- Wie man mobil-responsiven Weboberflächen erstellt
- Wie man das DIYables ESP32 WebApps-Vorlagensystem für schnelle Entwicklung verwendet
Funktionen
- DIYables ESP32 WebApps-Integration: Integriert sich nahtlos in das Ökosystem der DIYables ESP32 WebApps-Bibliothek
- Minimaler Template-Code: Bietet eine grundlegende Basis, die Sie erweitern und anpassen können
- Vorlagenbasierte Entwicklung: Vollständiger Ausgangspunkt, den Sie anpassen können, um anspruchsvolle Anwendungen zu erstellen
- Einfache Textnachrichten: Nachrichten zwischen Webbrowser und Arduino senden
- Automatische Wiederverbindung: Stellt automatisch die Verbindung wieder her, wenn sie verloren geht
- Mobil-Responsive: Funktioniert perfekt auf Smartphones, Tablets und Computern
- Anfängerfreundlich: Sauberer, einfacher Code, der leicht zu verstehen ist
- Erweiterbares Framework: Erfordert grundlegende Kenntnisse in der Web-Programmierung (HTML/CSS/JavaScript) für fortgeschrittene Anpassungen
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
| 1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
So fängt man an
Sie können beginnen, Ihre benutzerdefinierte Webanwendung für das ESP32-Board zu erstellen, indem Sie die folgenden Hauptschritte durchlaufen:
- Führen Sie die Standardvorlage für benutzerdefinierte Apps auf Ihrem ESP32-Board aus.
- Testen und Verifizieren Sie, dass die Standard-Web-App für benutzerdefinierte Apps ordnungsgemäß funktioniert.
- Verstehen Sie das Kommunikationsprotokoll und wie es im Hintergrund funktioniert.
- Passen Sie die Vorlage an, um Ihre Anwendung zu konfigurieren.
- Verwalten mehrerer benutzerdefinierter Web-Apps – Wesentlicher Leitfaden zur Konfliktvermeidung
Lassen Sie uns der Reihe nach anfangen.
Führen Sie die Standard-Benutzerdefinierte App-Vorlage auf Ihrem ESP32-Board aus
Schnelle Schritte
- Wenn Sie den ESP32 zum ersten Mal verwenden, konsultieren Sie das Tutorial zur Einrichtung der ESP32-Umgebung in der Arduino-IDE.
- Schließen Sie das ESP32-Entwicklungsboard mit einem USB-Kabel an Ihren Computer an.
- Starten Sie die Arduino-IDE auf Ihrem Computer.
- Wählen Sie das passende ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
- Gehen Sie zum Libraries-Symbol in der linken Leiste der Arduino-IDE.
- Suchen Sie "DIYables ESP32 WebApps", dann finden Sie die DIYables ESP32 WebApps-Bibliothek von DIYables.
- Klicken Sie auf die Installieren-Schaltfläche, um die Bibliothek zu installieren.

- Sie werden aufgefordert, einige andere Bibliotheksabhängigkeiten zu installieren
- Klicken Sie auf die Schaltfläche Alle installieren, um alle Bibliotheksabhängigkeiten zu installieren

- Gehen Sie in der Arduino-IDE zu Datei > Beispiele > DIYables ESP32 WebApps > CustomWebApp
- Sie sehen 4 Dateien, die die vollständige Vorlage der benutzerdefinierten Webanwendung bilden:
- CustomWebApp.ino - Haupt-ESP32-Code (hier fügen Sie Ihre benutzerdefinierte Logik hinzu!)
- CustomWebApp.h - Header-Datei (definiert die Schnittstelle zur DIYables ESP32 WebApps-Bibliothek)
- CustomWebApp.cpp - Implementierungsdatei (übernimmt die Integration mit dem Bibliotheks-Framework)
- custom_page_html.h - Webseitendesign (passen Sie hier Ihre Weboberfläche an!)
- Konfigurieren Sie die WLAN-Einstellungen, indem Sie diese Zeilen in CustomWebApp.ino ändern:
Schritt 5: Hochladen und Testen
- Klicken Sie auf die Upload-Schaltfläche in der Arduino IDE, um Code auf den ESP32 hochzuladen
- Öffnen Sie den Serial Monitor, um den Verbindungsstatus anzuzeigen
- Notieren Sie die im Serial Monitor angezeigte IP-Adresse
- Öffnen Sie den Serial Monitor
- Prüfen Sie das Ergebnis im Serial Monitor. Es sieht unten so aus
- Wenn Sie nichts sehen, starten Sie das ESP32-Board neu.
- Notieren Sie sich die angezeigte IP-Adresse und geben Sie diese Adresse in die Adressleiste eines Webbrowsers auf Ihrem Smartphone oder PC ein.
- Beispiel: http://192.168.0.2
- Sie sehen die Startseite wie im untenstehenden Bild:

- Klicken Sie auf den Web Custom-Link, dann sehen Sie die Benutzeroberfläche der Web Custom-App wie unten dargestellt:

- Oder Sie können die Seite auch direkt über die IP-Adresse aufrufen, gefolgt von /custom. Zum Beispiel: http://[IP_ADDRESS]/custom
Testen und Verifizieren, dass die standardmäßige benutzerdefinierte Webanwendung korrekt funktioniert
Wenn Sie die Standardvorlage CustomWebApp ausführen, sehen Sie hier Folgendes:
In der Weboberfläche:
- Verbindungsstatus: Zeigt 'Verbunden' in Blau, wenn der WebSocket aktiv ist
- Nachrichten-Eingabefeld: Textfeld zum Eingeben von Nachrichten an den Arduino
- Senden-Button: Klicken Sie, um Ihre Nachricht zu senden (oder die Eingabetaste drücken)
- Arduino-Nachrichtenanzeige: Zeigt Nachrichten, die vom ESP32 empfangen werden, in blauem Text
ESP32-Verhalten:
- Echo-Antwort: Wenn Sie vom Web aus "Hello" senden, antwortet der ESP32 mit "Echo: Hello"
- Periodische Aktualisierungen: ESP32 sendet alle 5 Sekunden Betriebszeitmeldungen: "Arduino Betriebszeit: X Sekunden"
- Serieller Monitor: Alle empfangenen Nachrichten werden zum Debuggen protokolliert
Kommunikation testen:
- Geben Sie im Eingabefeld eine Nachricht ein (z. B. "Testnachricht")
- Senden klicken oder Enter drücken
- Seriellen Monitor prüfen – Sie sollten sehen: "Empfangen vom Web: Testnachricht"
- Webseite prüfen – Sie sollten sehen: "Echo: Testnachricht"
- Warten Sie ein paar Sekunden – Sie werden periodische Betriebszeitmeldungen sehen, die alle 3 Sekunden aktualisiert werden (z. B. "Arduino-Betriebszeit: 15 Sekunden", "Arduino-Betriebszeit: 18 Sekunden", usw.)
Verständnis des Kommunikationsprotokolls und wie es im Hintergrund funktioniert
Das Verständnis der inneren Funktionsweisen hilft Ihnen, die Vorlage effektiv anzupassen.
System der App-Identifikatoren
Die CustomWebApp-Vorlage verwendet eindeutige Nachrichten-Tags (genannt 'App-Identifikatoren'), die dem ESP32-Code und Web-Clients helfen, Nachrichten zu filtern, die ihnen gehören. Das ist wesentlich, weil Ihre Anwendung möglicherweise mehrere Web-Apps umfasst, und jede App muss nur ihre eigenen Nachrichten verarbeiten und andere ignorieren:
ESP32-Seite (CustomWebApp.h & CustomWebApp.cpp)
JavaScript-Seite (custom_page_html.h)
Vorteile dieses Designs:
- Einzige Quelle der Wahrheit: Ändern Sie den Bezeichner an einer Stelle pro Sprache
- Keine magischen Zeichenfolgen: Entfernt hartkodierte "CUSTOM:" im gesamten Code
- Typensicherheit: Die Verwendung von Konstanten verhindert Tippfehler
- Erweiterbar: Einfach, mehrere benutzerdefinierte Apps mit unterschiedlichen Identifikatoren zu erstellen
- Datenkonflikte zwischen mehreren Apps vermeiden: Jede App verwendet einen eindeutigen Identifikator, um Nachrichtenstörungen zu verhindern
- Professionell: Befolgt objektorientierte Designprinzipien
Wichtige Hinweise:
- Sie können den aktuellen Bezeichner "CUSTOM:" beibehalten, wenn Sie diese benutzerdefinierte Web-App-Vorlage an Ihr Projekt anpassen. Wenn Sie jedoch mehr als eine benutzerdefinierte App erstellen, stellen Sie sicher, ihn zu ändern, um Konflikte zu vermeiden.
- Wenn Sie den Bezeichner ändern, stellen Sie sicher, dass der Wert in JavaScript (.h-Datei) und dem ESP32-Code (.cpp-Datei) derselbe ist (z. B. verwenden beide "TEMP:" oder beide "SENSOR:").
- Vorab reservierte Bezeichner durch integrierte Apps: Die folgenden Bezeichner werden bereits von den integrierten Anwendungen der DIYables ESP32 WebApps verwendet und sollten vermieden werden:
- Hauptanwendungs-Identifikatoren: "CHAT:", "MONITOR:", "PLOTTER:", "DIGITAL_PINS:", "JOYSTICK:", "SLIDER:", "TABLE:", "RTC:", "ROTATOR:", "GAUGE:"
- Unterprotokoll-Identifikatoren: "TIME:", "DATETIME:", "JOYSTICK_CONFIG:", "PLOTTER_DATA:", "PLOTTER_CONFIG:", "SLIDER_VALUES:", "TABLE_CONFIG:", "TABLE_DATA:", "VALUE_UPDATE:", "PIN_CONFIG:", "PIN_STATES:", "PIN_UPDATE:"
Kommunikationsfluss
Von der Webseite zum ESP32:
Wenn Sie eine Nachricht in der Weboberfläche eingeben und auf die Senden-Schaltfläche klicken, zum Beispiel: Hello, erfolgt der folgende Ablauf:
- JavaScript fügt App-Bezeichner hinzu: JavaScript fügt unter Verwendung der APP_IDENTIFIER-Konstante automatisch den App-Bezeichner hinzu (der in dieser Vorlage "CUSTOM:" ist) und sendet dann die Nachricht über WebSocket an den ESP32. Die eigentliche gesendete Nachricht lautet: CUSTOM:Hello
- DIYables ESP32 WebApps-Bibliothek empfängt: Die Bibliothek erhält die Nachricht CUSTOM:Hello und übergibt sie an Ihre CustomWebAppPage::handleWebSocketMessage-Methode
- CustomWebAppPage-Klasse entfernt Bezeichner: In handleWebSocketMessage prüft die Klasse CustomWebAppPage, ob die Nachricht mit ihrem APP_IDENTIFIER beginnt, entfernt den Bezeichner mit .substring(APP_IDENTIFIER.length()), und übergibt dann die verbleibende Nachricht Hello durch Aufruf der in Ihrer .ino-Datei implementierten Callback-Funktion
- Ihre Anwendung verarbeitet: Ihre Anwendung in der .ino-Datei empfängt nur Hello und kann die Nachricht je nach Ihrer benutzerdefinierten Logik verarbeiten. Die aktuelle Vorlage gibt sie einfach aus und sendet eine Antwort zurück
Vom ESP32 zur Webseite:
Wenn Ihr ESP32 Daten an die Weboberfläche senden möchte, zum Beispiel: Temperatur: 25°C, erfolgt der folgende Ablauf:
- Ihre Anwendung ruft sendToWeb() auf: In Ihrer .ino-Datei rufen Sie customPage.sendToWeb("Temperature: 25°C") auf, um Daten an den Webbrowser zu senden
- Die CustomWebAppPage-Klasse fügt automatisch die App-Identifikation hinzu und sendet: Die CustomWebAppPage-Klasse fügt automatisch die App-Identifikation mithilfe ihrer APP_IDENTIFIER-Konstante zu Ihrer Nachricht hinzu und sendet CUSTOM:Temperature: 25°C an alle verbundenen Web-Clients über WebSocket
- JavaScript empfängt und filtert Nachrichten: Der Webbrowser empfängt CUSTOM:Temperature: 25°C über den ws.onmessage-Event-Handler, aber das JavaScript verarbeitet nur Nachrichten, die mit APP_IDENTIFIER beginnen, und entfernt den Identifikator mit .substring(APP_IDENTIFIER.length())
- Webseite zeigt saubere Nachricht an: Die aktuelle Vorlage zeigt die saubere Nachricht Temperature: 25°C (ohne Identifikator) im Abschnitt "Nachricht vom Arduino". Sie können das JavaScript anpassen, um die Daten je nach Bedarf Ihrer Anwendung auf unterschiedliche Weise zu parsen und anzuzeigen
Architekturübersicht
Das CustomWebApp-Beispiel besteht aus vier Hauptdateien:
- CustomWebApp.ino - Haupt-ESP32-Skizze mit Ihrer Anwendungslogik
- CustomWebApp.h - Header-Datei, die die benutzerdefinierte Seitenklasse (Bibliotheksschnittstelle) definiert
- CustomWebApp.cpp - Implementierung mit Kommunikationslogik (Bibliothekscode)
- custom_page_html.h - HTML-Schnittstelle separat für einfache Anpassung
Passen Sie die Vorlage an, um Ihre Anwendung anzupassen
Die Vorlage ist so gestaltet, dass sie sich leicht an Ihre spezifischen Bedürfnisse anpassen lässt. So passen Sie sie an:
1. Hardware-Integration
Hardware-Initialisierung hinzufügen
In der setup()-Funktion von CustomWebApp.ino:
Benutzerdefinierte Befehle verarbeiten
Erweitern Sie die Callback-Funktion, um Ihre benutzerdefinierten Befehle zu verarbeiten:
Echtzeit-Sensordaten senden
2. Anpassung der Weboberfläche
HTML-Layout ändern
Bearbeiten Sie den HTML-Code in custom_page_html.h, um die Benutzeroberfläche zu ändern:
JavaScript-Verarbeitung anpassen
Aktualisiere die Funktion ws.onmessage, um bestimmte Datentypen zu verarbeiten:
Styling hinzufügen
Passen Sie das CSS für Ihre Anwendung an:
Weitere Anpassungen
Darüber hinaus können Sie auch anpassen, wie Ihre App im DIYables ESP32 WebApps-Ökosystem erscheint:
1. App-Pfad anpassen
Sie können den URL-Pfad ändern, unter dem Ihre benutzerdefinierte Webanwendung erreichbar ist, indem Sie den Konstruktor in Ihrer Header-Datei ändern.
Standardpfad:
Benutzerdefinierte Pfadbeispiele:
Wichtige Hinweise:
- Pfad muss mit einem führenden Schrägstrich beginnen: Beginnen Sie Ihren Pfad immer mit einem führenden Schrägstrich
- Verwenden Sie aussagekräftige Namen: Wählen Sie Pfade, die die Funktion Ihrer App eindeutig beschreiben
- Vermeiden Sie Konflikte: Verwenden Sie keine Pfade, die bereits von integrierten Apps wie /chat, /monitor, /plotter usw. belegt sind
- Verwenden Sie Kleinbuchstaben und Bindestriche: Folgen Sie den Web-URL-Konventionen für eine bessere Kompatibilität
2. App-Karte auf der Startseite anpassen
Sie können anpassen, wie Ihre App auf der DIYables ESP32 WebApps-Startseite angezeigt wird, indem Sie die Methode getNavigationInfo() in Ihrer Implementierungsdatei ändern:
Grundlegende App-Karte:
Fortgeschrittene App-Karte mit Inline-CSS:
Mehrere benutzerdefinierte Web-Apps verwalten - Wesentlicher Leitfaden zur Konfliktvermeidung
Bei der Entwicklung mehrerer maßgeschneiderter Webanwendungen ist es entscheidend, Konflikte zwischen verschiedenen Anwendungen zu vermeiden. Nehmen wir an, wir möchten drei maßgeschneiderte Apps mit den Namen "Temperature Monitor", "Motor Controller" und "Sensor Dashboard" zu unserem ESP32-Projekt hinzufügen. So stellen Sie sicher, dass sie harmonisch zusammenarbeiten:
1. Verwenden Sie eindeutige App-Identifikatoren
Jede benutzerdefinierte Webanwendung muss einen eindeutigen Bezeichner haben, um Nachrichtenkonflikte zu vermeiden:
Beispiel: Temperaturüberwachungs-App
Beispiel: Motorsteuerungs-App
Beispiel: Sensor-Dashboard-App
2. Verwenden Sie eindeutige Seitenpfade
Jede Webanwendung benötigt einen eindeutigen URL-Pfad:
3. Verwenden Sie eindeutige Klassennamen
Vermeiden Sie Namenskonflikte, indem Sie beschreibende Klassennamen verwenden:
4. Mehrere Apps in einem Projekt organisieren
So strukturieren Sie ein Projekt mit mehreren benutzerdefinierten Apps:
5. Bewährte Praktiken für mehrere Apps
Datei-Organisation
Navigation zwischen Apps
Aktualisieren Sie die getNavigationInfo()-Methode in jeder App, um eine einfache Navigation zu ermöglichen:
6. Tests mehrerer Apps
Beim Testen mehrerer Apps:
- Teste jede App zuerst einzeln
- Teste den Serial Monitor auf Nachrichtenkonflikte
- Teste, ob eindeutige Identifikatoren korrekt funktionieren
- Teste die Navigation zwischen verschiedenen Apps
- Teste den Speicherverbrauch bei mehreren geladenen Apps
Indem Sie diese Richtlinien befolgen, können Sie mehrere benutzerdefinierte Webanwendungen erstellen, die nahtlos zusammenarbeiten, ohne sich gegenseitig oder andere DIYables ESP32 WebApps zu stören.