ESP8266 - MySQL
Diese Anleitung zeigt Ihnen, wie Sie den ESP8266 verwenden, um Daten in eine MySQL-Datenbank einzufügen oder zu aktualisieren, oder Daten aus der MySQL-Datenbank abzurufen.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
ESP8266 - MySQL
Es gibt zwei Begriffe in MySQL, bei denen Anfänger normalerweise verwirrt sind: MySQL-Datenbank und MySQL-Server. Sie unterscheiden sich. Allerdings können Sie, wenn Sie Anfänger sind, davon ausgehen, dass sie gleich sind. Später werden Sie im Lernprozess die Unterschiede entdecken.
Der ESP8266 kann auf zwei Arten mit der MySQL-Datenbank interagieren:
- Direkt: ESP8266 verbindet sich direkt mit dem MySQL-Server und interagiert mit dem MySQL-Server mithilfe des MySQL-Protokolls
- Indirekt: ESP8266 verbindet sich indirekt mit dem MySQL-Server über einen Webserver, der das HTTP/HTTPS-Protokoll verwendet.
Welches ist das Beste für den ESP8266? Finden wir es heraus!
ESP8266 interagiert direkt mit dem MySQL-Server

Direkt mit MySQL zu interagieren scheint einfach zu sein, aber es gibt viele Nachteile:
- Wir müssen Remote-Zugriffsberechtigungen für ein MySQL-Benutzerkonto gewähren ⇒ Dies birgt Sicherheitsrisiken, selbst wenn wir dem Benutzerkonto nur eingeschränkte Privilegien gewähren.
- ESP8266 MUSS MySQL-Abfragen an den MySQL-Server speichern und senden ⇒ Es muss viel ESP8266-Code geschrieben werden, und außerdem werden die Ressourcen des ESP8266 (Speicher- und CPU-Auslastung) stark beansprucht.
- ESP8266 MUSS eine komplexe MySQL-Antwort verarbeiten (in einigen Fällen sehr große Datenmengen) ⇒ Dies kann dazu führen, dass dem ESP8266 der Speicher ausgeht.
- Der MySQL-Server muss Rohdaten verarbeiten ⇒ Erhöht die Komplexität des MySQL-Skripts.
- Die meisten MySQL-Bibliotheken für ESP8266 unterstützen kein SSL/TLS ⇒ Die Daten sowie der Benutzername und das Passwort werden ohne Verschlüsselung übertragen ⇒ Ein weiteres Sicherheitsproblem.
ESP8266 interagiert indirekt mit dem MySQL-Server über HTTP/HTTPS
Die indirekte Interaktion mit MySQL über HTTP/HTTPS löst alle Probleme des direkten Zugriffs.
Wie es funktioniert
- Schritt 1: ESP8266 enthält die Daten für die HTTP/HTTPS-Anfrage und sendet die Anfrage an den Webserver
- Schritt 2: Der Webserver führt ein PHP-Skript aus, das die Anfrage von ESP8266 verarbeitet
- Schritt 3: Das PHP-Skript extrahiert die Daten aus der HTTP-Anfrage, verarbeitet die Daten und interagiert dann mit der MySQL-Datenbank.
- Schritt 4: Das PHP-Skript verarbeitet das Ergebnis und gibt nur das notwendige Ergebnis an ESP8266 über die HTTP-Antwort zurück

Wir werden den MySQL-Server, den Webserver und PHP auf dem PC installieren. Tatsächlich können wir es auch auf einem dedizierten Server oder Cloud-Dienst wie AWS EC2 installieren.
Im Folgenden wird erläutert, wie der indirekte Weg die Probleme des direkten Weges löst.
- Wir können HTTP-Server und MySQL-Server auf demselben physischen Server installieren, wir können einem MySQL-Benutzerkonto eingeschränkten Zugriff gewähren (z. B. localhost-Zugriff) ⇒ sicher
- Der Benutzername und das Passwort des MySQL-Kontos werden auf dem Server gespeichert ⇒ sicher
- Daten werden von einem PHP-Skript verarbeitet ⇒ Dies reduziert die Last und die Komplexität für den ESP8266 und den MySQL-Server
- PHP-Skript kann die Daten deutlich leichter verarbeiten als der ESP8266-Code und das MySQL-Skript ⇒ ESP8266-Code und MySQL-Skript vereinfachen
- PHP-Skript kann die Daten verarbeiten und nur notwendige Daten an den ESP8266 senden (Schritt 4), um zu verhindern, dass dem ESP8266 der Speicher ausgeht
- Der ESP8266 kann problemlos HTTPS-Anfragen senden ⇒ Die Daten sind verschlüsselt
Beachten Sie, dass die Authentifizierung zwischen ESP8266 und Webserver unabhängig von der MySQL-Authentifizierung erfolgen sollte. Beispielsweise sollten der HTTP-Benutzername und das HTTP-Passwort sich vom MySQL-Benutzernamen und -Passwort unterscheiden.
Aufgrund dieser Vorteile wird dieses Tutorial den indirekten Weg verwenden.
ESP8266 zu MySQL über HTTP/HTTPS
Die folgenden Schritte müssen wir durchführen:
- Installation des XAMPP-Pakets, das MySQL-Server, Webserver und PHP auf Ihrem PC enthält
- Erstellen eines MySQL-Benutzerkontos
- Erstellen einer MySQL-Datenbank
- Erstellen einer MySQL-Tabelle
- Schreiben einer oder mehrerer PHP-Skripte
- ESP8266-Code schreiben
1. MySQL-Server, Webserver und PHP auf Ihrem PC installieren
- Laden Sie XAMPP von diesem Link herunter und installieren Sie es. Nach der Installation prüfen Sie den Ordner C:\xampp\htdocs auf Ihrem PC. Hier legen Sie Ihren PHP-Code ab (siehe später).
- Öffnen Sie das XAMPP-Kontrollfeld
- Klicken Sie auf die Start-Schaltflächen, um MySQL und den Webserver zu aktivieren (wie im untenstehenden Bild)

2. Erstellen eines MySQL-Benutzerkontos
Wir erstellen ein MySQL-Konto, das ausschließlich Zugriff von localhost erlaubt.
- Selbst wenn Angreifer den Benutzernamen und das Passwort kennen, können sie nicht auf Ihre MySQL-Datenbank zugreifen, es sei denn, sie übernehmen die Kontrolle über Ihren PC.
- Dieser Benutzername und dieses Passwort werden von PHP verwendet, um eine Verbindung zur MySQL-Datenbank herzustellen.
Dieses Tutorial erstellt ein MySQL-Benutzerkonto, dessen Benutzername und Passwort ESP8266 bzw. newbiely.com lauten:
- Öffnen Sie die Eingabeaufforderung auf Ihrem PC. Schließen Sie sie nicht bis zum Ende des Tutorials.
- Geben Sie den folgenden Befehl in die Eingabeaufforderung ein:
- Standardmäßig verfügt MySQL über das Root-Konto ohne Passwort. Es wird dringend empfohlen, aus Sicherheitsgründen das Passwort für das Root-Konto festzulegen (z. B. YOUR_ROOT_PASSWORD). Geben Sie den folgenden Befehl in der Eingabeaufforderung ein:
- Geben Sie den folgenden Befehl in der Eingabeaufforderung ein, um sich am MySQL-Server anzumelden:
- Geben Sie YOUR_ROOT_PASSWORD ein und drücken Sie die Eingabetaste
- Lass uns ein MySQL-Benutzerkonto erstellen, wobei der Benutzername ESP8266 und das Passwort newbiely.com sind, indem wir die untenstehenden Befehle kopieren und in der Eingabeaufforderung einfügen:
Sie haben erfolgreich ein MySQL-Benutzerkonto erstellt. Notieren Sie den Benutzernamen und das Passwort. Es wird in einem PHP-Skript verwendet.
3. Eine MySQL-Datenbank erstellen
Erstellen Sie eine Datenbank db_esp8266, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
4. Eine MySQL-Tabelle erstellen
Erstelle eine Tabelle tbl_temp, indem du die folgenden Befehle kopierst und in die Eingabeaufforderung einfügst:
6. Schreibe PHP-Skriptdateien
Erstellen Sie eine Datei insert_temp.php mit einem beliebigen Texteditor (z. B. Notepad/Notepad++). Wir schreiben das Skript in diese Datei, um den Temperaturwert aus der HTTP-Anfrage zu extrahieren und den Temperaturwert in die Datenbank einzufügen.
- Legen Sie diese Datei in den Ordner C:\xampp\htdocs ab.
- Ermitteln Sie die IP-Adresse Ihres PCs. Falls Sie nicht wissen, wie, googeln Sie es.
- Testen Sie den PHP-Code, indem Sie einen Webbrowser (z. B. Chrome) öffnen und diesen Link aufrufen: http://192.168.0.19/insert_temp.php?temperature=26.2. Beachten Sie, dass Sie die oben genannte IP-Adresse durch Ihre PC-Adresse ersetzen müssen.
- Der Webbrowser zeigt Folgendes:

- Prüfen Sie, ob Daten in der Datenbank gespeichert sind, indem Sie den folgenden Befehl in der Eingabeaufforderung eingeben:
Wie Sie sehen können, ist die Temperatur von 26,2 in der Datenbank gespeichert. Der nächste Schritt besteht darin, ESP8266-Code zu schreiben, der eine HTTP-Anfrage an den Webserver auf Ihrem PC sendet.
7. Schreibe ESP8266-Code
Der folgende ESP8266-Code sendet HTTP-Anfragen an Ihren PC, um eine Temperatur von 30,5 °C in die Datenbank einzufügen.
Schnelle Schritte
- Wenn Sie ESP8266 zum ersten Mal verwenden, sehen Sie wie man die Umgebung für ESP8266 in der Arduino IDE einrichtet.
- Schließen Sie die Verkabelung wie im obigen Bild an.
- Schließen Sie das ESP8266-Board über ein Micro-USB-Kabel an Ihren PC an.
- Ändern Sie die IP-Adresse im Code auf die IP-Adresse Ihres PCs.
- Kompilieren Sie den Code und laden Sie ihn auf den ESP8266 hoch.
- Öffnen Sie den seriellen Monitor in der Arduino IDE.
- Das Ergebnis im seriellen Monitor.
- Prüfen Sie, ob Daten in der Datenbank gespeichert sind, indem Sie den folgenden Befehl in der Eingabeaufforderung verwenden:
Wie Sie sehen, ist die Temperatur 30,5 in der Datenbank gespeichert.
Wie ESP8266 Daten in eine MySQL-Datenbank einfügt, aktualisiert oder aus einer MySQL-Datenbank abruft
Das obige Beispiel zeigt, wie man Daten in die MySQL-Datenbank einfügt. Es gilt auch für das Aktualisieren und das Auslesen von Daten aus der Datenbank. Sie müssen lediglich die MySQL-Abfrage im PHP-Code anpassen. Weitere Informationen finden Sie auf W3Schools.com.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.