Esp8266 Datenübertragung zu Webserver?

Servus, ich will mit dem ESP8266 messdaten an eine datenbank übertragen. Dafür nutzte ich dieses PHP script

<?php
// Datenbankverbindung
$servername = "";
$username = "";
$password = "";
$dbname = "";


// Verbindung zur Datenbank herstellen
$conn = new mysqli($servername, $username, $password, $dbname);


// Verbindung überprüfen
if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}


// POST-Daten empfangen
$startTime = $_POST['startTime'];
$elapsedTime = $_POST['elapsedTime'];


// SQL-Abfrage zur Einfügung der Daten
$sql = "INSERT INTO deine_tabelle (start_time, elapsed_time) VALUES ('$startTime', '$elapsedTime')";


if ($conn->query($sql) === TRUE) {
    echo "Daten erfolgreich gespeichert";
} else {
    echo "Fehler: " . $sql . "<br>" . $conn->error;
}


// Verbindung schließen
$conn->close();
?>

Und das ist mein Esp code:

#include <SPI.h>
#include <MFRC522.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>


#define SS_PIN D4  // SDA Pin (Slave Select)
#define RST_PIN D3 // Reset Pin
#define BUTTON_PIN D2  // Pin für den Button


const char* ssid = "";
const char* password = "";
const char* serverName = ""; // Pfad zum PHP-Skript


MFRC522 mfrc522(SS_PIN, RST_PIN);  // RFID-Instanz


unsigned long startTime;
bool timerActive = false;    // Gibt an, ob der Timer läuft
bool buttonPressed = false;  // Gibt an, ob der Button gedrückt wurde
bool waitingForCard = false; // Gibt an, ob wir auf eine Karte warten
bool cardDetectedOnce = false; // Gibt an, ob die Karte einmal erkannt wurde


WiFiClient client;  // WiFiClient-Instanz


void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);  // Button als Eingang mit internem Pullup-Widerstand
  Serial.begin(115200);               // Initialisiere die serielle Kommunikation
  SPI.begin();                        // Initialisiere den SPI-Bus
  mfrc522.PCD_Init();                 // Initialisiere den RFID-Leser


  // WLAN verbinden
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Verbinden mit WiFi...");
  }
  Serial.println("Mit WiFi verbunden!");
}


void loop() {
  // Überprüfen, ob der Button gedrückt wurde
  if (digitalRead(BUTTON_PIN) == LOW && !buttonPressed) {
    Serial.println("Button gedrückt. Warten auf Karte...");
    buttonPressed = true;      // Verhindert mehrfaches Auslösen
    waitingForCard = true;     // Aktiviert die Kartenüberprüfung
    cardDetectedOnce = false; // Zurücksetzen der Karteerkennung
  }


  // Überprüfen, ob wir auf eine Karte warten
  if (waitingForCard) {
    // Überprüfen, ob eine Karte in der Nähe ist
    if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
      if (!timerActive) {
        // Timer starten, wenn er nicht bereits läuft
        Serial.println("Karte erkannt! Timer startet.");
        startTime = millis();   // Startzeit speichern
        timerActive = true;     // Timer aktiv
        cardDetectedOnce = true; // Karte einmal erkannt
      } else if (cardDetectedOnce) {
        // Timer stoppen, wenn die Karte erneut erkannt wird
        unsigned long elapsedTime = millis() - startTime;
        Serial.print("Karte erneut erkannt! Timer gestoppt. Zeit: ");
        Serial.print(elapsedTime);
        Serial.println(" ms");


        // Daten an Server senden
        sendToServer(startTime, elapsedTime);


        timerActive = false;    // Timer stoppen
        buttonPressed = false;  // Erlaubt erneutes Drücken des Buttons
        waitingForCard = false; // Beendet die Kartenüberprüfung
      }


      // Karte gelesen, Lesevorgang stoppen
      mfrc522.PICC_HaltA();
      mfrc522.PCD_StopCrypto1();
    }
  }
}


// Funktion zum Senden der Daten an den Server
void sendToServer(unsigned long startTime, unsigned long elapsedTime) {
  if (WiFi.status() == WL_CONNECTED) { // Überprüfen, ob wir mit dem WLAN verbunden sind
    HTTPClient http;


    // URL festlegen mit WiFiClient
    http.begin(client, serverName);


    // HTTP-POST-Daten
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    String postData = "startTime=" + String(startTime) + "&elapsedTime=" + String(elapsedTime);
    Serial.print("POST-Daten: ");
    Serial.println(postData);


    // HTTP-POST-Anfrage senden
    int httpResponseCode = http.POST(postData);


    if (httpResponseCode > 0) {
      String response = http.getString(); // Antwort vom Server lesen
      Serial.println("Antwort vom Server:");
      Serial.println(response);           // Antwort anzeigen
    } else {
      Serial.print("Fehler bei der HTTP-Anfrage: ");
      Serial.println(httpResponseCode);
      Serial.println("Möglicherweise ein Netzwerkproblem oder Server-Fehler.");
    }


    // Verbindung schließen
    http.end();
  } else {
    Serial.println("Nicht mit WiFi verbunden");
  }
}

Leider erhalte ich jedesmal folgende Fehlermeldung Fehler bei HTTP-Anfrage :-1

SQL, Webseite, Arduino, Code, Datenbank, MySQL, PHP, Programmiersprache, Webentwicklung, C (Programmiersprache), Arduino Uno, Arduino IDE

Meistgelesene Beiträge zum Thema PHP