Chat freely about anything...

User avatar
By pthieu
#57257 I'm following the example web server code for the ESP8266. All it does is connect to a network, starts up a web server to take in some GET requests and responds to front end some how, and triggers some GPIOs. However, it both connects to a wifi network while also creating it's own open network. How do I prevent the creation of its own network? it's listed as `ESP_<identifier>` when I scan for networks. Here's my code:

Code: Select all/*
 *  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 = "SSID";
const char* password = "PASSWORD";

// 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(2, OUTPUT);
  digitalWrite(2, 0);
  pinMode(0, OUTPUT);
  digitalWrite(0, 0);
 
  // 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.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();
 
  Serial.println(req);
  Serial.println("indexOf:");
  Serial.println(req.indexOf("/"));


  if (req.indexOf("/gpio") != -1) {
    // 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);
    digitalWrite(2, 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
  } else if (req.indexOf("/") == 4) {
    client.flush();
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nhi!</html>";
    client.print(s);
    delay(1);
    Serial.println("Client disonnected");
  } else {
    client.flush();
    String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nsomething went wrong</html>";
    client.print(s);
    delay(1);
    Serial.println("Client disonnected");
  }
}


The code is pretty straight forward, I don't see anywhere where it explicitly creates the access point. I am using the nodeMCU (ESP-12E) development board.

Maybe I'm just using the wrong classes, if anyone has a better example to follow, would appreciate it.