WifiManager library
Posted: Sat Mar 24, 2018 10:48 pm
Hi,
I've started going in circles with this. I am using the Ken Taylor port of the wifiManager library and want to add my own website.
I have the wifiManager library working.
I have the website working when the credentials are hard coded.
Failed at combining the two.
What I would like to achieve:
- Use the wifiManager portal to enter the wifi credentials
- Connect to the local wifi
- serve a small website over the local network.
- Still have the wifiManager portal active but only only when connected directly to the ESP8266 on 192.168.4.1
In the below sketch. The ESP8266 connects to the local network but when I go to the new ip address I get the wifiManager portal. I don't get my website. It appears the captive portal is still active.
The Looping message is not displayed until after I close the portal. After closing the portal the Looping message is displayed but I get no response from the local network. My webpage is not served.
Everything tells me this should be straight forward but I cannot get it to work.
Here's what I get in the serial monitor. The Looping message starts when the portal is closed. Not sure if this is useful.
The Esp8266 is connected to the local network but the new webpage is not being served. The connection has been verified.
Would really appreciate some help or a working example.
I've started going in circles with this. I am using the Ken Taylor port of the wifiManager library and want to add my own website.
I have the wifiManager library working.
I have the website working when the credentials are hard coded.
Failed at combining the two.
What I would like to achieve:
- Use the wifiManager portal to enter the wifi credentials
- Connect to the local wifi
- serve a small website over the local network.
- Still have the wifiManager portal active but only only when connected directly to the ESP8266 on 192.168.4.1
In the below sketch. The ESP8266 connects to the local network but when I go to the new ip address I get the wifiManager portal. I don't get my website. It appears the captive portal is still active.
The Looping message is not displayed until after I close the portal. After closing the portal the Looping message is displayed but I get no response from the local network. My webpage is not served.
Everything tells me this should be straight forward but I cannot get it to work.
Code: Select all
#include <ESP8266WiFi.h>
WiFiServer server(80);
#include <ESP8266WiFi.h>
//needed for library
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <WiFiManager.h>
// Onboard LED I/O pin on NodeMCU board
const int PIN_LED = D4;
String request = "";
unsigned long time_now = 0;
unsigned long time_prev = 0;
void setup()
{
pinMode(PIN_LED, OUTPUT);
Serial.begin(115200);
Serial.println("\n Starting");
unsigned long startedAt = millis();
WiFi.printDiag(Serial); //Remove this line if you do not want to see WiFi password printed
Serial.println("Opening configuration portal");
digitalWrite(PIN_LED, LOW); // turn the LED on by making the voltage LOW to tell us we are in configuration mode.
//Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wifiManager;
//it starts an access point
//and goes into a blocking loop awaiting configuration
if (!wifiManager.startConfigPortal("ESP8266","password"))
{ //Delete these two parameters if you do not want a WiFi password on your configuration access point
Serial.println("Not connected to WiFi but continuing anyway.");
}
else
{
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
}
digitalWrite(PIN_LED, HIGH); // Turn led off as we are not in configuration mode.
// For some unknown reason webserver can only be started once per boot up
// so webserver can not be used again in the sketch.
Serial.print("After waiting ");
int connRes = WiFi.waitForConnectResult();
float waited = (millis()- startedAt);
Serial.print(waited/1000);
Serial.print(" secs in setup() connection result is ");
Serial.println(connRes);
if (WiFi.status()!=WL_CONNECTED)
{
Serial.println("failed to connect, finishing setup anyway");
}
else
{
Serial.print("local ip: ");
Serial.println(WiFi.localIP());
}
}
void loop()
{
// Check if a client has connected
WiFiClient client = server.available();
if (client)
{
Serial.println("Client is connected");
// Read the first line of the request
request = client.readStringUntil('\r');
Serial.print(F("request = ")); Serial.println( request );
client.flush();
client.print( "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" );
client.print( "<!DOCTYPE html><html><head><title>Title</title></head><body><div id='main'><h2>H2 title</h2></div></body></html>" );
delay(5);
client.stop();
Serial.println("Client disonnected");
time_prev = millis();
}
time_now = millis();
if (time_now - time_prev > 5000)
{
time_prev = millis();
Serial.println( "Looping" );
}
}
Here's what I get in the serial monitor. The Looping message starts when the portal is closed. Not sure if this is useful.
Code: Select all
*WM: Connection result:
*WM: WL_CONNECTED
*WM: Handle root
*WM: Info
*WM: Sent info page
*WM: Handle root
*WM: Server Close
*WM: Sent server close page
connected...yeey :)
After waiting 73.47 secs in setup() connection result is 3
local ip: 192.168.169.2
Looping
Looping
The Esp8266 is connected to the local network but the new webpage is not being served. The connection has been verified.
Would really appreciate some help or a working example.