Wemos D1 Mini

Hallo Zusammen,

ich bin noch Anfänger im Arduino/Mikrocontroller-Universum und habe mir mal einen Wemos D1 Mini zugelegt. Ich möchte später über diesen z.B. Wetterdaten online darstellen.

Um den Wemos zu testen, habe ich mir folgenden Beispiel-Sketch aus dem Internet heruntergeladen:

#include <ESP8266WiFi.h>

const char* ssid = "YYYY";
const char* password = "XXXX";

int ledPin = D5;
WiFiServer server(80);

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

pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);

// Connect to WiFi network
Serial.println();
Serial.println();
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");

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

// Print the IP address
Serial.print("Use this URL : ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");

}

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 request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

// Match the request

int value = LOW;
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1){
digitalWrite(ledPin, LOW);
value = LOW;
}

// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // do not forget this one
client.println("");
client.println("");

client.print("Led pin is now: ");

if(value == HIGH) {
client.print("On");
} else {
client.print("Off");
}
client.println("

");
client.println("Click <a href="/LED=ON">here turn the LED on pin 5 ON
");
client.println("Click <a href="/LED=OFF">here turn the LED on pin 5 OFF
");
client.println("");

delay(1);
Serial.println("Client disconnected");
Serial.println("");

}

Wenn ich den Serial Monitor aufrufe, funktioniert noch alles einwandfrei; wenn ich die Adresse "http://192.168.101.31/" in meinem Chrome-Browser oben eingebe, lädt die Seite sehr lange und nach ein paar Minuten erscheint die Fehlermeldung
"Die Website ist nicht erreichbar. Die Antwort von 192.168.101.31 hat zu lange gedauert"

Könnt ihr mir sagen was ich falsch gemacht habe?

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar und Du erreichst mehr Helfer.
Das kannst Du auch noch nachträglich ändern.

Kommt denn der "new client" Testausschrieb?

Um den Wemos zu testen, habe ich mir folgenden Beispiel-Sketch aus dem Internet heruntergeladen:

Und das sollen wir jetzt zum laufen bringen...

Im ESP Boardpaket findet sich die ESP8266WebServer Library.
Diese hat nicht den Zweck, dass man sie ignoriert.
Auch die zugehörigen Beispiele sollte man sich anschauen.
Die haben zumindest den Vorteil, dass sie funktionieren.

ping 192.168.101.31

Könnt ihr mir sagen was ich falsch gemacht habe?

wie schon angesprochen - falsche Ausgangsbasis.

Nimm das IDE Beispiel ESP8266Webserver | HelloServer

Danke für eure Antworten; anbei der Code mit "Code-Befehl" zur besseren Lesbarkeit.

#include <ESP8266WiFi.h>
 
const char* ssid = "YYYY";
const char* password = "XXXX";
 
int ledPin = D5;
WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 
 
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  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");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address
  Serial.print("Use this URL : ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
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 request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
 
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1) {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1){
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
 
 
 
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
 
  client.print("Led pin is now: ");
 
  if(value == HIGH) {
    client.print("On"); 
  } else {
    client.print("Off");
  }
  client.println("

");
  client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 5 ON
");
  client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 5 OFF
");
  client.println("</html>");
 
  delay(1);
  Serial.println("Client disconnected");
  Serial.println("");
 
}

Ok, alles klar; habe mal das Testbeispiel ESP8266Webserver | HelloServer getestet.

Leider habe ich hier exakt das gleiche Problem. Die Internetseite 192.168.101.31 lädt einfach nicht bzw. es kommt die oben beschriebene Fehlermeldung.

Im Seriellen Monitor steht:
Connected to XXXXX
IP address: 192.168.101.31
MDNS responder started
HTTP server started

ping 192.168.101.31
traceroute 192.168.101.31

Was meinst du damit? :slight_smile:
Sry bin noch Anfänger

Habe mal folgendes gemacht:
„Ping“ wurde gestartet …

PING 192.168.101.31 (192.168.101.31): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
Request timeout for icmp_seq 6
Request timeout for icmp_seq 7
Request timeout for icmp_seq 8

--- 192.168.101.31 ping statistics ---
10 packets transmitted, 0 packets received, 100.0% packet loss

du sollst schaun, ob das ding überhaupt über's netzwerk ansprechbar ist. die bedeutung der befehle sagt dir google gerne.

und jetzt gib mal in einem cmd Fenster auf deinem PC folgendes ein

tracert 192.168.101.31

was schreibt der PC raus?

Ich habe einen Mac (glaube da ist es etwas anders)
Habe mal das Netzwerkdiagnoseprogramm gestartet und dort die Rubrik "Trace" geöffnet:

Folgendes erscheint:
„Traceroute“ wurde gestartet …

traceroute to 192.168.101.31 (192.168.101.31), 64 hops max, 72 byte packets
1 192.168.0.1 (192.168.0.1) 6.623 ms 3.291 ms 3.403 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *

traceroute to 192.168.101.31 (192.168.101.31), 64 hops max, 72 byte packets
1 192.168.0.1 (192.168.0.1) 6.623 ms 3.291 ms 3.403 ms

OK; kann nicht passen.
Kopier mal alles aus derm Seriellen Monitor wenn er startet, inkl. der Punkte während des Wifi Connect.

dann ergänze mal

WiFi.disconnect();
direkt nach dem Serial.begin();

Dann noch mal alles aus dem Seriellen Monitor posten.

Folgendes steht im seriellen Monitor, wenn ich diesen starte:

sdd⸮⸮|⸮d⸮| ⸮ d⸮ b|⸮⸮⸮⸮{⸮c⸮ #⸮⸮'o⸮lno⸮⸮⸮ cp⸮⸮dsl{lp⸮'⸮⸮ d ⸮⸮ c n⸮|⸮$⸮⸮c⸮⸮gg⸮l⸮⸮l⸮eeg'l '{⸮⸮⸮o clas⸮⸮gb$⸮c ⸮⸮d;⸮⸮⸮o⸮
....
Connected to MojoGast-Zugang
IP address: 192.168.101.31
MDNS responder started
HTTP server started

naja - dein Arbeitsplatz dürfte nicht im Gastnetz sein. Dein ESP aber schon.

Noch Fragen?

Folgendes erscheint, nachdem ich "WiFi.disconnect();" ergänzt habe und neu hochgeladen habe im seriellen Monitor:

⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮{ll⸮⸮<⸮l⸮| ⸮ l⸮c|⸮⸮⸮e⸮s⸮b⸮c⸮⸮og⸮lgn⸮⸮⸮cx⸮l{lsd8⸮o⸮ ⸮ l⸮⸮ #g⸮|⸮d⸮ ⸮b⸮⸮no⸮d⸮⸮d⸮og$aorǛ⸮g c${⸮⸮o cl⸮c ⸮⸮ls⸮`⸮⸮'⸮
.........
Connected to MojoGast-Zugang
IP address: 192.168.101.31
MDNS responder started
HTTP server started

Hallo,
bei mir funktioniert auch das von Dir gepostete Beispiel auf Anhieb ohne Probleme.

Connecting to XXXX
.......
WiFi connected
Server started
Use this URL : http://192.168.1.190/
new client
GET / HTTP/1.1
Client disconnected

new client
GET /favicon.ico HTTP/1.1
Client disconnected

Ist dein PC auch über WLAN verbunden? Und ist dein Router so konfiguriert, dass er Kommunikation zwischen lokalen (WLAN) -Clients zulässt? Beim Gastzugang ist das in der Regel nicht der Fall

Ich vermute es hängt irgendwie mit meiner Hardware zusammen;

Ich nutze ein Macbook. Dieses ist über Wlan mit meinem Router verbunden. An dem Macbook habe ich per USB-Anschluss den Wemos angeschlossen.

Ist hier irgendwo ein Fehler?

Achso ich nutze die Wifi-Connect Box von Unitymedia, falls das hilft....hmm....

Ich hab es geschafft; jetzt funktioniert alles!!!

Der Fehler lag bei dem Gastzugang; ich habe jetzt auf den normalen WLan umgeschaltet und jetzt erscheint auch der Hinweis "hello from esp8266!" wenn ich die 192.168.... aufrufe .

Besten Dank für die schnelle und gute Hilfe :slight_smile: