WiFiManager Integration in ESP32

Hi all, I have an ESP32 receiving information from another ESP32 equipped with sensors. Below is the code for the receiving ESP:
C++
#include <WiFi.h>
#include <ESPAsyncWebServer.h>

const char* ssid = "XXXX";
const char* password = "XXXX";

const int buttonPin = 25;
const int ledPin = 23;

String message = "0";
String message_serveur = "";
int mem1 = 0;
int mem2 = 0;

AsyncWebServer server(80);

void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());

pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);

server.on("/get", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasParam("data"))
{
message = request->getParam("data")->value();
}
if (message.substring(0,1) == "1") {
message_serveur = message;
}
request->send(200, "text/plain", message_serveur);
});

server.begin();
}

void loop() {
if (message.substring(0,1) == "1") {
digitalWrite(ledPin, HIGH);
mem1 = 0;
if (mem2 == 0){
Serial.println("Alarm");
String num_alarm= message.substring(7,14);
Serial.println(num_alarm);
String voltage= message.substring(2,6);
Serial.print(voltage);
Serial.println(" v");
mem2 = 1;
}
}
if (digitalRead(buttonPin) == LOW) {
delay(100);
if (digitalRead(buttonPin) == LOW) {
digitalWrite(ledPin, LOW);
if (mem1 == 0) {
Serial.println("Reset");
mem1 = 1;
mem2 = 0;
}
}
}
}
C++
#include <WiFi.h>
#include <ESPAsyncWebServer.h>

const char* ssid = "XXXX";
const char* password = "XXXX";

const int buttonPin = 25;
const int ledPin = 23;

String message = "0";
String message_serveur = "";
int mem1 = 0;
int mem2 = 0;

AsyncWebServer server(80);

void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());

pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);

server.on("/get", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasParam("data"))
{
message = request->getParam("data")->value();
}
if (message.substring(0,1) == "1") {
message_serveur = message;
}
request->send(200, "text/plain", message_serveur);
});

server.begin();
}

void loop() {
if (message.substring(0,1) == "1") {
digitalWrite(ledPin, HIGH);
mem1 = 0;
if (mem2 == 0){
Serial.println("Alarm");
String num_alarm= message.substring(7,14);
Serial.println(num_alarm);
String voltage= message.substring(2,6);
Serial.print(voltage);
Serial.println(" v");
mem2 = 1;
}
}
if (digitalRead(buttonPin) == LOW) {
delay(100);
if (digitalRead(buttonPin) == LOW) {
digitalWrite(ledPin, LOW);
if (mem1 == 0) {
Serial.println("Reset");
mem1 = 1;
mem2 = 0;
}
}
}
}
It works, but I have to hardcode the SSID and password in the program. I would like to integrate WiFiManager to be able to select a network at startup. Is it possible, and how should I proceed?
2 Replies
techielew
techielew10mo ago
@abhishek awasthi
abhishek awasthi
abhishek awasthi10mo ago
yea wifi manager is a easy to use lib .. the basic instruction is following #include <WiFiManager.h>
WiFiManager wifiManager; void setup() { // Initialize the BUILTIN_LED pin as an output Serial.begin(115200); wifiManager.autoConnect("XYZ"); Serial.println("connected :)"); WiFi.softAPdisconnect (true); } void reConnect(){ Serial.println("not connected :)");
wifiManager.resetSettings(); wifiManager.autoConnect("XYZ"); Serial.println("connected :)"); WiFi.softAPdisconnect (true); } void loop() { if (!client.connected()) { reconnect(); } } its just the skeleton code ... you test the lib is working for you first and then integrate as per use ... the basic idea is when this autoconnct function is called then it initiates a local webserver with the given ssid to connect .,,, in the above case no password required to connect to it ,,, next you may connect to the XYZ wifi and check for manage router option or sometime it will ask the user to setup ... a basic setup page will open .. fill your credentials there and press save ... once the connection is successful it uses the same credentials to connect next time onwards, hope the insight helps .. BTW i use this for my personal esp8266 based local iot devices ...:1010: just you need to be careful about the wifi connection status with the esp while configuring as .. what happens with me is that my phone disconnects from esp access point as that does not have internet ...
Want results from more Discord servers?
Add your server