WeMos D1 per WiFI Daten in mySQL schreiben

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);
    }
  }
}

Projektdatein zum Download

Tobias Guggenberger

Schreibe einen Kommentar