Here you are the working code allowing you to choose SSID
, password
, network name
and IP address
of your ESP8266 acting as an access point. In addition, you can specify wifi channel
to avoid interference with other devices. A password must be at least 8 characters long or it wouldn't work.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
IPAddress ip(192,168,1,81); // choose IP address
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80);
void handleRoot() {
String page = "<!DOCTYPE html>\n";
page += "<html>\n<body>\n<h1>Some heading</h1><br>Generated by ESP8266\n</body>\n</html>";
server.send(200, "text/html", page);
}
// what to do when accessed through http://ip_address/something_undefined
void handleNotFound(){
String message = "File not found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++){
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
}
void setup(void){
Serial.begin(74880); // so you can see debug messages automatically sent by ESP8266
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, ip, subnet); // declared as: bool softAPConfig (IPAddress local_ip, IPAddress gateway, IPAddress subnet)
WiFi.softAP("SOME_NAME", "password", 7); // network name, network password, wifi channel
IPAddress myIP = WiFi.softAPIP();
Serial.println();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.on("/", handleRoot); // what to do when accessed through browser using http://IP_address
// what to do when accessed through http://ip_address/test
server.on("/test", [](){
server.send(200, "text/plain", "This is another page");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started...");
}
void loop(void){
server.handleClient();
}
You can write something like:
server.on("/open_door", [](){
// the code to switch on the relay to open the door
// ... <-- put here the code
server.send(200, "text/html", "Door: opened");
});
so you can open the door with http://ip_address/open_door
.
You can try http://ip_address/something_undefined?a=24&b=25
to get an idea how to process the parameters.