Your new topic does not fit any of the above??? Check first. Then post here. Thanks.

Moderator: igrr

User avatar
By Larsen
#55002 Hi,

I have been playing with the code for a WiFi Web Server ( http://www.arduinesp.com/wifiwebserver ). The ESP8266 connects perfect to my router, and gets an IP address from it, but when I try to connect to it via my web browser, it just times out.

If I setup the ESP8266 to run in AP mode, and connects to that AP from my computer, I can access the ESP8266 Web Server via my web browser and it works as it should.

Why can I not connect to the ESP8266 Web Server when connected directly to my router, but need to switch to the AP to make it work? The IP address I use to access the ESP8266 Web Server when it is in AP mode, is the IP address my router has given to the ESP8266.

I am using the Arduino board manager version 2.3.0, and Arduino IDE version 1.6.11


The code for the web server is here (taken from http://www.arduinesp.com/wifiwebserver):
Code: Select all#include <ESP8266WiFi.h>

const char* ssid = "your-ssid";
const char* password = "your-password";

int ledPin = 2; // GPIO2

WiFiServer server(80);

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

  WiFi.mode(WIFI_STA);          // WiFi.mode(WIFI_AP);

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

  // 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("<br><br>");
  client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>");
  client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF<br>");
  client.println("</html>");

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


Regards
Larsen
User avatar
By Larsen
#55139 My router is a Linksys WRP400. I have been through the setup and I cannot find any specific setting about wireless clients or servers. Anyway, I will try to find another router to test it on, and I will get back with news about that.
User avatar
By mrburnette
#55516
Larsen wrote:Hi,
<...>The IP address I use to access the ESP8266 Web Server when it is in AP mode, is the IP address my router has given to the ESP8266.



Just for grins, can you ping the ESP8266 at the DHCP address?
When the ESP8266 client connects to the home AP, the DHCP should be in the router's scope of assignment.
Your ESP8266 softAP should not be active.
Your ESP8266 webserver is going to need to be set to a subnet address within the home AP subnet scope but not one that will be used by DHCP... in other words, you are going to have to limit the DHCP assignment scope to allow for a band of static assigned addresses ... then assign your webserver to one of those manual assignable addresses.
Disclaimer ... I actually have not tried this scenario here, but I can see how it would be useful. Of course, your browser must use the static webserver IP address in the URL for attachment unless you plan on implementing some DNS resolution scheme.

Ray