PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NodeMCUv3 Webserver nicht von überall erreichbar



Karl123
27.01.2017, 15:27
Hallo,

ich habe gerade erst angefangen mit dem NodeMCU (damit meine ich die Hardware - nicht die Software) von LoLin (www.ebay.de/itm/272484194635) zu programmieren und als erstes per Webserver eine LED steuerbar gemacht. Es funktioniert auch von meinem PC aus (über Kabel mit dem Router verbunden) mit den Firefox die Seite aufzurufen und die LED zu steuern. Wenn ich das jedoch über mein Handy welches mit dem Router über WLAN verbunden ist versuche, so klappt dies nicht. Egal welcher Browser (Firefox, Chrome, Samsung Browser, Sony Browser). Auch wenn ich von einem PC außerhalb meines Netzwerks mit dem Firefox versuche die Seite zu öffnen (dynDNS und Portweiterleitung sind eingerichtet) dann klappt dies nicht. Also glaube ich nicht das es an den Browsern liegt.

Mein Vorgehen soweit war:
Arduino IDE für ESP8266 einrichten.
NodeMCU über USB Kabel verbinden.
>Baud 115200
>NodeMCU 1.0 (ESP-12E Module)

und folgendes Programm flashen (der Einfachheit halber habe ich die Steuerung der LED hier raus genommen und zeige nur einen Text an):


#include <ESP8266WiFi.h>

const char* ssid = "SSID";
const char* password = "passwort";

WiFiServer server(80);

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

// 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 to connect: ");
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);
}

// 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("Hallo!");
client.println("</html>");

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

}


Ich habe ohne Erfolg versucht eine feste IP zu verwenden via:

// config static IP
IPAddress ip(192, 168, 2, xx); // where xx is the desired IP Address
IPAddress gateway(192, 168, 2, 1); // set gateway to match your network
Serial.print(F("Setting static ip to : "));
Serial.println(ip);
IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your
network
WiFi.config(ip, gateway, subnet);

Woran kann es liegen das ich mich nicht verbinden kann obwohl ich im selben LAN bin? Die ersten drei Teile der IP meines Handys, PCs und der NodeMCU sind gleich (192.168.2.XXX). Alle kommen in der DHCP Tabelle meines Routers vor (Telekom Speedport Smart Router). Auch kann ich problemlos mit dem Handy den Webserver meiner NAS erreichen. Jedoch antwortet das NodeMCU nicht auf Anfragen meines Handys - das klappt nur mit dem PC.

Auch habe ich bereits zwei verschiedene NodeMCUs ausprobiert - gleiches Ergebnis.

Hatte schon jemand ein ähnliches Problem? Ich bin für jede Idee dankbar.

Grüße
Karl

Andree-HB
27.01.2017, 15:48
....kannst Du die vergebene IP für den ESP anpingen ? (gibt entsprechende Apps für`s Smartphone)

Karl123
27.01.2017, 18:53
Gute Idee Andree-HB.
Von meinem Handy klappt es nicht.
Der PC bekommt allerdings eine Antwort auf den Ping.
Wenn ich vom Handy den PC anpinge klappt es jedoch auch.
Jetzt bin ich ratloser den je....

Ceos
30.01.2017, 07:14
Warum setzt du überhaupt ne statische IP?
Vll. hat dein Handy ein Problem damit?

Ein großer Anti-Frust-Tipp vorraus, benutze NICHT das WebServer + mDNS Sample, das funktioniert fast nie! Ersetz lieber alle mDNS Zeilen mit dem äquivalenten Code des Arduino DNS Server. Funktioniert erheblich zuverlässiger :)