WeMos D1 per WiFI Daten in mySQL schreiben
Mit dem nachfolgendem Sketch ist der WeMos D1 in der Lage Messdaten in eine mySQL Datenbank zu senden.
Das eigentliche schreiben der Daten erfolgt mit dem Aufrufen einer PHP Datei in Form eines GET Befehls.
<?php /* Daten per GET in eine mySQL Datenbank schrieben by Tobias Guggenberger guggenberber.me */ // POD Verbindung zur Datenbank $datenbank_name = "NAME_DATENBANK"; $datenbank_username = "USER"; $datenbank_passwort = "PASS"; // Datenbankverbindung aufbauen $pdo = new PDO('mysql:host=localhost;dbname='.$datenbank_name, $datenbank_username, $datenbank_passwort); // Neuen Datensatz schreiben $neuer_datensatz = array(); $neuer_datensatz['WERT1'] = time(); $neuer_datensatz['WERT2'] = $_GET['temperatur']; $neuer_datensatz['WERT3'] = $_GET['sensor']; $statement = $pdo->prepare("INSERT INTO TABELLE (wert1, wert2, wert3) VALUES (:wert1, :wert2, :wert3)"); $statement->execute($neuer_datensatz); ?>
Der passende Sketch sieht so aus:
#include <ESP8266WiFi.h> const char* ssid = "SSID"; // SSID const char* password = "PASS"; // Password const char* host = "SERVER_DB"; // IP ServeP const int port = 80; // Port const int watchdog = 5000; // Schreibefruenz unsigned long previousMillis = millis(); void setup() { Serial.begin(115200); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { delay(5000); unsigned long currentMillis = millis(); if ( currentMillis - previousMillis > watchdog ) { previousMillis = currentMillis; WiFiClient client; if (!client.connect(host, port)) { Serial.println("connection failed"); return; } String url = "/arduino/FILE_zum-SCHREIBEN.php?wert1=wer1&usw"; url += String(millis()); url += "&ip="; url += WiFi.localIP().toString(); // Envoi la requete au serveur - This will send the request to the server client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); return; } } while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } } }