ESP32 WebTable-Beispiel – Tutorial zur Datentabellen-Schnittstelle
Überblick
Das WebTable-Beispiel bietet eine webbasierte Datentabellen-Schnittstelle mit zwei Spalten zur Anzeige von Echtzeitdaten aus Ihren ESP32-Projekten. Für die ESP32-Bildungsplattform entwickelt mit fortschrittlichen Visualisierungsmöglichkeiten von Daten, intelligenter Hervorhebung von Wertänderungen und nahtloser Integration in das Bildungsökosystem.

Schlüsselmerkmale
Kernfunktionalität
- Zweispaltige Datentabelle: Saubere Attribut-Wert-Paare für eine übersichtliche Datenanzeige
- Echtzeit-Wertaktualisierungen: WebSocket-basierte sofortige Datenaktualisierung ohne Neuladen der Seite
- Speichereffizientes Design: Keine Wertspeicherung im ESP32-Speicher – alles Tracking erfolgt in der Weboberfläche
- Dynamische Konfiguration: Die Tabellenstruktur einmal in der ESP32-setup()-Funktion festlegen
- Interaktive Steuerelemente: Aktualisierungsschaltfläche für manuelle Datenanfragen und automatische Wiederverbindungsfähigkeit
Intelligentes Hervorhebungssystem
- Intelligente Änderungserkennung: Erkennt automatisch, welche Werte sich im Laufe der Zeit tatsächlich ändern
- Automatische Werteverfolgung: Vergleicht automatisch aktuelle und vorherige Werte
- Zweistufige Hervorhebung:
- Rote Hervorhebung: Für Werte, die sich aktiv ändern
- Blaue Hervorhebung: Für Werte, die im Laufe der Zeit stabil bleiben
- Keine Einrichtung erforderlich: Das System lernt automatisch, welche Werte sich ändern, ohne jegliche Konfiguration
- Visuelles Feedback: Sanfte Animationen liefern klares visuelles Feedback für Werteaktualisierungen
Moderne Weboberfläche
- Responsives Design: Funktioniert nahtlos auf Desktop-, Tablet- und Mobilgeräten
- Professionelles Styling: Kartenlayout mit Hover-Effekten und moderner Ästhetik
- Verbindungsstatus: Visuelle Indikatoren für den WebSocket-Verbindungsstatus
- Footer-Integration: Konsistente Stilgebung, die mit anderen DIYables-Web-Apps übereinstimmt
- Umgang mit leeren Zuständen: Benutzerfreundliche Meldungen, wenn keine Daten verfügbar sind
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) |
Anweisungen zur Einrichtung
Schnelle Schritte
Folgen Sie diesen Anweisungen Schritt für Schritt:
- Wenn Sie den ESP32 zum ersten Mal verwenden, lesen Sie das Tutorial zur Einrichtung der Entwicklungsumgebung für den ESP32 in der Arduino IDE.
- Verbinden Sie das ESP32-Board mit Ihrem Computer über ein USB-Kabel.
- 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 Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
- Suchen Sie "DIYables ESP32 WebApps", und finden Sie anschließend die DIYables ESP32 WebApps-Bibliothek von DIYables.
- Klicken Sie auf die Install-Schaltfläche, um die Bibliothek zu installieren.

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

- Im Arduino IDE gehen Sie zu Datei Beispiele DIYables ESP32 WebApps WebTable Beispiel, oder kopieren Sie den Code und fügen Sie ihn in den Editor der Arduino IDE ein
WLAN-Konfiguration
Konfigurieren Sie die WLAN-Zugangsdaten im Code, indem Sie diese Zeilen aktualisieren:
- Klicken Sie in der Arduino-IDE auf die Upload-Schaltfläche, um Code auf den ESP32 hochzuladen.
- Öffnen Sie den seriellen Monitor.
- Schauen Sie sich das Ergebnis im seriellen Monitor an. Es sieht wie folgt aus.
- Wenn Sie nichts sehen, starten Sie das ESP32-Board neu.
Die Weboberfläche verwenden
- Öffnen Sie einen Webbrowser auf Ihrem Computer oder Mobilgerät, das mit demselben WLAN-Netzwerk verbunden ist.
- Geben Sie die im Serial Monitor angezeigte IP-Adresse in den Webbrowser ein.
- Beispiel: http://192.168.1.100
- Sie sehen die Startseite wie im folgenden Bild:

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

- Oder greifen Sie direkt über die IP-Adresse zu, gefolgt von /web-table. Zum Beispiel: http://192.168.1.100/web-table
- Sie sehen die Web Table-Oberfläche, die Folgendes zeigt:
- Echtzeit-Datentabelle: Zwei-Spalten-Tabelle mit Attributen und deren aktuellen Werten
- Intelligente Hervorhebung: Automatische Farbcodierung von sich ändernden Werten im Vergleich zu stabilen Werten
- Verbindungsstatus: visuelle Anzeige des WebSocket-Verbindungszustandes
- Aktualisieren-Schaltfläche: Manuelle Aktualisierung der neuesten Daten
- Automatische Updates: Werte werden in Echtzeit über WebSocket aktualisiert
Intelligentes Hervorhebungssystem
Wie es funktioniert
WebTable verfügt über ein fortschrittliches Hervorhebungssystem, das automatisch erkennt, welche Werte sich im Laufe der Zeit ändern, ohne dass in Ihrem ESP32-Code eine Konfiguration erforderlich ist.
Automatische Änderungserkennung
Die Weboberfläche verfolgt automatisch Ihre Daten und liefert visuelles Feedback:
- Rote Hervorhebung: Wird auf Werte angewendet, die sich häufig ändern (wie Sensorwerte, Zähler, Timer)
- Blaue Hervorhebung: Wird auf Werte angewendet, die stabil bleiben (wie Gerätenamen, IP-Adressen, Konfigurationseinstellungen)
- Keine Einrichtung erforderlich: Das System lernt automatisch, während Ihr ESP32 Updates sendet
Was Sie sehen
- Werte, die sich im Laufe der Zeit ändern (Temperatur, Betriebszeit, Sensorwerte), werden in Rot hervorgehoben
- Statische Informationen (Gerätename, WiFi-SSID, IP-Adresse) werden in Blau hervorgehoben
- Dies hilft Ihnen schnell zu erkennen, welche Daten sich aktiv ändern und welche stabil bleiben
Hauptvorteile
- Keine Konfiguration erforderlich: Verwenden Sie einfach sendValueUpdate() und die Hervorhebung funktioniert automatisch
- Visuelles Lernen: Sehen Sie einfach, welche Teile Ihres Systems aktiv sind
- Für Anfänger geeignet: Funktioniert ohne jegliche Kenntnisse in Web-Programmierung
- Speichereffizient: Alle Hervorhebungen erfolgen im Webbrowser, nicht auf Ihrem Arduino
- Aktualisierungen in Echtzeit: Die Hervorhebung erfolgt sofort, wenn Werte aktualisiert werden
Tabellenstruktur-Konfiguration
Die Tabellenstruktur wird einmal in der Funktion setup() konfiguriert, wobei die Methode addRow() verwendet wird:
Werteaktualisierungen in Echtzeit
Werte werden während der Laufzeit mit der Methode sendValueUpdate() aktualisiert:
Direkte Aktualisierungsmethode (Empfohlen)
Vorteile direkter Aktualisierungen
- Speichereffizient: Keine Speicherung von Werten im ESP32-Speicher
- Echtzeit: Sofortige Aktualisierungen der Weboberfläche
- Automatische Hervorhebung: Die Weboberfläche erkennt automatisch Änderungen
- Vereinfachter Code: Kein Bedarf, lokale Werte zu speichern
Code-Erklärung
Schlüsselkomponenten
Setup-Funktion
Echtzeit-Updates in der Schleife
Callback-Funktion
Funktionen zur Aktualisierung von Werten
API-Methoden
DIYablesWebTablePage Klassenmethoden
addRow(Attribut, Initialwert)
- Fügt eine neue Zeile zur Tabellenstruktur hinzu
- Parameter:
- attribute: String - Der Attributname (linke Spalte)
- initialValue: String - Initialwert (rechte Spalte, optional)
- Verwendung: Wird in setup() aufgerufen, um die Tabellenstruktur zu konfigurieren
aktualisiereWert(attribut, wert)
- Aktualisiert einen Wert anhand des Attributnamens (nur lokaler Speicher)
- Parameter:
- attribute: String - Der Attributname, der aktualisiert werden soll
- value: String - Neuer Wert, der gesetzt werden soll
- Verwendung: Aktualisiert lokale Tabellendaten
aktualisiereWert(index, wert)
- Aktualisiert einen Wert anhand des Zeilenindexes (nur im lokalen Speicher)
- Parameter:
- index: int - Zeilenindex (0-basiert)
- value: String - Neuer Wert, der festgelegt werden soll
- Verwendung: Aktualisiert lokale Tabellendaten nach Position
sendeWertAktualisierung(attribut, wert)
- Sendet eine Aktualisierung des Wertes an Web-Clients anhand des Attributnamens
- Parameter:
- attribute: String - Der Attributname, der aktualisiert werden soll
- value: String - Neuer Wert zum Senden
- Verwendung: Echtzeitaktualisierung der Weboberfläche
sendeWertAktualisierung(Index, wert)
- Sendet eine Wertaktualisierung an Web-Clients anhand des Zeilenindexes
- Parameter:
- index: int - Zeilenindex (0-basiert)
- value: String - Neuer Wert zum Senden
- Verwendung: Echtzeitaktualisierung der Weboberfläche basierend auf der Position
sendTableData()
- Sendet vollständige Tabellendaten an Webclients
- Verwendung: Aktualisieren Sie die gesamte Tabelle auf der Weboberfläche
tabelleLeeren()
- Löscht alle Tabellendaten und setzt die Zeilenanzahl zurück
- Verwendung: Tabellenstruktur zurücksetzen (selten erforderlich)
Zeilenanzahl abrufen()
- Gibt die Anzahl der Zeilen in der Tabelle zurück
- Rückgabewert: int - Aktuelle Zeilenanzahl
- Verwendung: Informationen zur Tabellengröße abrufen
Attribut abrufen(index)
- Ermittelt den Attributnamen anhand des Zeilenindex
- Parameter: index: int - Zeilenindex (0-basiert)
- Rückgabewert: String - Attributname
- Verwendung: Zugriff auf Tabellenstrukturinformationen
WertAbrufen(Index)
- Wert nach Zeilenindex abrufen
- Parameter: index: int - Zeilenindex (0-basiert)
- Rückgabe: String - Aktueller Wert
- Verwendung: Zugriff auf aktuelle Tabellenwerte
onTableValueRequest(callback)
- Setzt eine Callback-Funktion für Datenanfragen von Web-Clients
- Parameter: void (*callback)() - Funktion, die aufgerufen wird, wenn Daten angefordert werden
- Verwendung: Bearbeitung von Datenanfragen von Web-Clients
WebSocket-Kommunikation
Nachrichten vom Web an Arduino
- TABLE:GET_DATA - Vollständige Tabellendaten anfordern
- TABLE:UPDATE:attribute:value - Wert für ein bestimmtes Attribut aktualisieren
Nachrichten vom ESP32 zum Web
- TABLE_DATA:attr1:val1|attr2:val2|... - Vollständige Tabellendaten senden
- VALUE_UPDATE:attribute:value - Aktualisierung eines einzelnen Werts senden
Fehlerbehebung
Häufige Probleme
- Tabelle zeigt keine Daten an
- Problem: Leere Tabelle oder Meldung „Keine Daten verfügbar“
- Ursache: Tabellenstruktur nicht konfiguriert oder WLAN-Verbindungsprobleme
- Lösung:
- Überprüfen Sie, ob setupTableStructure() in setup() aufgerufen wird.
- WLAN-Verbindungsstatus überprüfen
- Klicken Sie auf die Schaltfläche Aktualisieren, um Daten manuell abzurufen.
- Überprüfen Sie den seriellen Monitor auf Fehlermeldungen
2. Werte werden nicht in Echtzeit aktualisiert
- Problem: Tabelle zeigt trotz ESP32-Updates alte Werte
- Ursache: WebSocket-Verbindung verloren oder Update-Funktionen wurden nicht aufgerufen
- Lösung:
- Überprüfen Sie den Verbindungsstatus-Indikator auf der Webseite.
Seite neu laden.
- Prüfen Sie, ob sendValueUpdate() ordnungsgemäß aufgerufen wird.
- Netzwerkstabilität prüfen
- Hervorhebung funktioniert nicht
- Problem: Werte zeigen keine rote oder blaue Hervorhebung
- Ursache: JavaScript erkennt Wertänderungen nicht korrekt
- Lösung:
- Laden Sie die Webseite neu, um die Änderungserkennung zurückzusetzen
- Stellen Sie sicher, dass sich die Werte tatsächlich ändern (prüfen Sie den Serial Monitor).
- Leeren Sie den Browser-Cache, wenn die Hervorhebung festhängt.
- Werte benötigen mehrere Aktualisierungen, um das Hervorhebungssystem auszulösen
- „Nicht mit Arduino verbunden“ Fehler
- Problem: Fehler beim Klicken auf die Aktualisierungsschaltfläche
- Ursache: Die WebSocket-Verbindung konnte nicht hergestellt werden
- Lösung:
- Überprüfen Sie, ob die ESP32-IP-Adresse korrekt ist.
- Prüfe, ob sich der ESP32 im gleichen WLAN-Netzwerk befindet.
- ESP32 neu starten und die Webseite aktualisieren.
- Firewall-Einstellungen prüfen
3. "Nicht mit Arduino verbunden" Fehler
- Problem: Fehler beim Klicken auf die Aktualisierungsschaltfläche
- Ursache: WebSocket-Verbindung fehlgeschlagen
- Lösung:
- Überprüfen Sie, ob die IP-Adresse des ESP32 korrekt ist.
- Prüfe, ob der ESP32 im selben WLAN-Netzwerk ist
- ESP32 neu starten und die Webseite neu laden
- Überprüfe die Firewall-Einstellungen
4. Tabellenstrukturänderungen werden nicht widergespiegelt
- Problem: Hinzugefügte/entfernte Zeilen erscheinen nicht auf der Weboberfläche
- Ursache: Die Tabellenstruktur wird nur in setup() konfiguriert
- Lösung:
- Starten Sie den ESP32 neu, um Strukturänderungen anzuwenden.
- Verwenden Sie clearTable() und addRow(), falls dynamische Änderungen erforderlich sind.
- Webseite nach dem ESP32-Neustart aktualisieren
Debug-Tipps
Serielles Debugging aktivieren:
Wertaktualisierungen des Monitors:
Verbindungsstatus prüfen:
Fortgeschrittene Anwendungsbeispiele
Sensorüberwachung mit intelligenter Hervorhebung
Systemstatus-Dashboard
Bedingte Statusaktualisierungen
Integration mehrerer Web-Apps
Anwendungen und Anwendungsfälle
Bildungsprojekte
- Sensorüberwachung: Anzeige von Echtzeit-Sensorwerten mit automatischer Hervorhebung von Änderungen
- Systemstatus-Dashboard: ESP32-Systeminformationen mit visuellem Feedback anzeigen
- IoT-Datenvisualisierung: Live-Daten mit intelligenter Hervorhebung für aktive und statische Werte anzeigen
- Lernwerkzeug: Konzepte der Datenvisualisierung und der Echtzeitkommunikation demonstrieren
Anwendungen in der realen Welt
- Umweltüberwachung: Temperatur, Luftfeuchtigkeit, Luftqualität mit Veränderungserkennung
- Hausautomation: Systemstatus, Gerätezustände und Betriebsparameter
- Industrielle Überwachung: Anlagestatus, Alarme und Leistungskennzahlen
- Landwirtschaftliche Systeme: Bodenbedingungen, Wetterdaten und Bewässerungsstatus
Wesentliche Vorteile der MINT-Bildung
- Visuelles Lernen: Sehen Sie, welche Daten sich im Laufe der Zeit durch automatische Hervorhebung ändern
- Echtzeitsysteme: Erleben Sie WebSocket-Kommunikation und Live-Datenaktualisierungen
- Keine Konfiguration erforderlich: Intelligente Hervorhebung funktioniert automatisch
- Moderne Weboberfläche: Lernen Sie zeitgemäße Webentwicklungstechniken
Technische Spezifikationen
Speicherverbrauch (optimiertes Design)
- Flash-Speicher: ~8KB für WebTable-Funktionalität (einschließlich intelligenter Hervorhebung)
- SRAM-Verwendung: ~1KB während des Betriebs (keine Wertspeicherung im Arduino)
- WebSocket-Puffer: ~1KB zur Nachrichtenbearbeitung
- Maximale Zeilen: 20 (konfigurierbar über MAX_TABLE_ROWS)
- Speichereffizienz: Werte werden im Webbrowser nachverfolgt, nicht im ESP32-Speicher
Leistungsmerkmale
- Aktualisierungsfrequenz: Echtzeit über WebSocket (kein Polling)
- Antwortzeit: <50 ms bei Werteaktualisierungen
- Hervorhebungsgeschwindigkeit: Sofortiges visuelles Feedback bei Wertänderungen
- Netzwerk-Overhead: ca. 30–50 Bytes pro Werteaktualisierung
- Änderungserkennung: Automatischer Vergleich von Werten über die Zeit
Intelligente Hervorhebungsfunktionen
- Automatische Erkennung: Identifiziert, welche Werte sich im Laufe der Zeit ändern, ohne jegliche Einrichtung
- Zweistufiges System: Rot für sich ändernde Werte, Blau für stabile Werte
- Keine Konfiguration: Funktioniert ohne jegliche manuelle Einrichtung oder ESP32-Programmierung
- Speichereffizienz: Alle Aufzeichnungen erfolgen im Webbrowser, nicht auf dem Arduino
- Professionelles Erscheinungsbild: Sanfte Animationen liefern klares visuelles Feedback
Zusammenfassung
Das WebTable-Beispiel zeigt, wie man:
- Erstellen Sie strukturierte Datenanzeigen mit Attribut-Wert-Paaren
- Implementieren Sie Echtzeit-Wertaktualisierungen über WebSocket-Kommunikation
- Nutzen Sie intelligente Hervorhebungen, die automatisch Werteänderungen erkennen
- Erstellen Sie speichereffiziente Systeme, bei denen Werte nicht im Arduino gespeichert werden
- Konfigurieren Sie die Tabellenstruktur einmal in setup() für eine konsistente Organisation
- Verarbeiten Sie Anfragen von Webclients mit automatischen Datenaktualisierungen
- Bieten Sie visuelles Feedback durch intelligente Veränderungserkennungsalgorithmen
- Erstellen Sie responsive Weboberflächen für moderne Datenüberwachungsanwendungen
Schlüsselinnovation: Intelligentes Hervorheben
Das herausragende Merkmal dieser WebTable-Implementierung ist sein intelligentes Hervorhebungssystem, das:
- Lernt automatisch, welche Werte sich ändern, ohne Hardcodierung
- Passt sich dynamisch an, während sich Datenmuster im Laufe der Zeit ändern
- Bietet visuelles Feedback durch eine zweistufige Farbkodierung
- Funktioniert effizient, ohne den ESP32-Speicher zu beanspruchen
- Funktioniert universell für jeden Datentyp ohne Konfiguration
Dieses Beispiel ist perfekt für Projekte, die eine geordnete Datendarstellung, Dashboards zur Echtzeitüberwachung mit visuellem Feedback, Systemstatusschnittstellen mit automatischer Änderungserkennung sowie pädagogische Demonstrationen fortschrittlicher Techniken der Datenvisualisierung in IoT-Anwendungen erfordern.