WifiWebServer aus Beispiele hängt nach ein paar Minuten

Hallo liebe Leute!

Ich habe folgen Testcode aus den Beispielen auf einen ESP8266_01 geflasht und eine LED an GPIO0 angeschlossen. Bei Eingabe der URL http://server_ip/gpio/0 schaltet die LED auch fein aus bzw. http://server_ip/gpio/1 ein.
Allerdings funktioniert das nur ein paar Minuten. Danach ist der ESP nicht mehr über die URL ansprechbar.
Einen Ping zum ESP funktioniert. Der Ladebalken da im Browser bleibt einfach bei 20% stehen. Eine Error Meldung gibt es weder im Browser, noch im Serial Monitor.

Ist da was am Code nicht in Ordnung? Ich könnte da jetzt als Leihe nichts feststellen …
Bei einem 2. ESP8266_01 Tritt dasselbe Problem auf.

/*
    This sketch demonstrates how to set up a simple HTTP-like server.
    The server will set a GPIO pin depending on the request
      http://server_ip/gpio/0 will set the GPIO2 low,
      http://server_ip/gpio/1 will set the GPIO2 high
    server_ip is the IP address of the ESP8266 module, will be
    printed to Serial when the module is connected.
*/

#include <ESP8266WiFi.h>

const char* ssid = "LAN";
const char* password = "lan";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // prepare GPIO2
  pinMode(0, OUTPUT);
  digitalWrite(0, 0);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }

  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();

  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1) {
    val = 0;
  } else if (req.indexOf("/gpio/1") != -1) {
    val = 1;
  } else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(0, val);

  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val) ? "high" : "low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}

Hallo,

ich hatte mit dem Beispiel auch probleme.

Nimm besser die Beispiele aus dem ESP Webserver Ordner. Die sind einfacher zu verstehen und laufen

Bau dir eine HTLM Seite mit zwei buttons dann kannst Du die mit Ein und Aus für deine LED belegen, und musst das nicht über verschiedene Adressen machen.

ich habe da was vor ein paar Wochen hier vorgestellt und vom Forum noch ein paar Tips dazu bekomme. Waren auch noch 2-3 kleine Böcke drin. Eigendlich kann man das ganz gut als vorlage benutzen und erweiter.

Wenn Du das hier nicht findest melde dich noch mal

Heinz

Nachtrag hab den Link noch angefügt.

Webserver mit Eingabe

Hallo und danke für deine Tips. Die Webseite mit den Buttons ist mir bekannt. Ich will allerdings aus FHEM einen Befehl zum ESP senden. Das geht meines Wissens nach ganz gut mit HTTPMOD. Dort wird dann der Request als HTTP String gesendet. Funktioniert ja auch alles bestens, nur halt nicht lange.

Ich werde mir da was mit ESPWebserver basteln. Danke sehr.

auch mit dem ESPWebserver kannst du einfach entsprechende Seiten machen und im jeweiligen handler dann die Port-Änderungen durchführen.

Oder eine Seite an die du parameter übergibst.

Die Parameterauswertung im ESPWebserver ist sehr einfach!

ESPWebserver funktioniert einwandfrei und stabil.

Danke!