Advanced WiFi Manager library for ESP32 with elegant web interface, multi-language support, and flexible IP configuration.
- Auto-reconnect to saved WiFi network
- Access Point (AP) for easy configuration
- Asynchronous scanning of WiFi networks
- Secure storage of SSID and passwords in ESP32 Preferences
- DHCP (Automatic) - obtain IP address from router
- Static IP (Manual) - set fixed IP, gateway, subnet and DNS
- Persistent storage of IP settings
- Web interface for easy configuration
- Responsive design - adapts to all devices
- Modern CSS with gradients and animations
- Intuitive UX with visual feedback
- Progressive loading states
- 🇬🇧 English
- 🇸🇮 Slovenian (Slovenščina)
- 🇭🇷 Croatian (Hrvatski)
- 🇩🇪 German (Deutsch)
- 🇮🇹 Italian (Italiano)
- 🇪🇸 Spanish (Español)
- OTA Updates via AsyncElegantOTA
- mDNS support (access via hostname.local)
- Watchdog timer protection
- Safe switching between networks
| Main Page | WiFi Networks | IP Configuration |
|---|---|---|
![]() |
![]() |
![]() |
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
barbo/BarboWifiManager- Download the latest version from Releases
- Extract to
Arduino/libraries/BarboWifiManager/ - Restart Arduino IDE
#include "BarboWifiManager.h"
// Access Point settings
const char* apSSID = "ESP32_Setup";
const char* apPassword = "password123";
// LED settings (optional)
int redLED = 27;
int greenLED = 13;
BarboWifiManager wifiManager(apSSID, apPassword, redLED, greenLED);
void setup() {
Serial.begin(115200);
// Set hostname
wifiManager.setHostname("my-esp32");
// Start WiFi Manager
wifiManager.begin();
Serial.println("WiFi Manager started!");
}
void loop() {
wifiManager.loop();
}- ESP32 creates an Access Point named
ESP32_Setup - Connect to this network with password
password123 - Open browser and go to
http://192.168.4.1 - Configure WiFi and IP settings
wifiManager.setDHCP();IPAddress staticIP(192, 168, 1, 100);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns1(8, 8, 8, 8);
IPAddress dns2(8, 8, 4, 4);
wifiManager.setStaticIP(staticIP, gateway, subnet, dns1, dns2);// Set pins for status LEDs
wifiManager.setStatusLedPins(redPin, greenPin);
// Set blink speed
wifiManager.setBlinkInterval(500); // 500ms// Change web server port
wifiManager.setPort(8080);// Change AP SSID and password
wifiManager.setAPCredentials("NewName", "NewPassword");BarboWifiManager(
const char* ap_ssid = "ESP32_AP", // Access Point SSID
const char* ap_password = "password", // Access Point password
int statusLedRed = 27, // Red LED pin
int statusLedGreen = 13, // Green LED pin
long blinkInterval = 300, // Blink interval (ms)
uint16_t port = 80 // Web server port
);void begin(); // Start WiFi Manager
void loop(); // Call in main loop function
void setHostname(const char* hostname); // Set hostname
void setPort(uint16_t port); // Set server port
void setAPCredentials(const char* ssid, const char* password);
void setStatusLedPins(int redPin, int greenPin);
void setBlinkInterval(long interval);
String getSavedSSID(); // Get saved SSID
String getSavedPassword(); // Get saved passwordvoid setDHCP(); // Enable DHCP
void setStaticIP(IPAddress ip, IPAddress gateway, IPAddress subnet,
IPAddress dns1, IPAddress dns2);
bool getUseDHCP(); // Check if using DHCP
IPAddress getStaticIP(); // Get configured static IP
IPAddress getStaticGateway(); // Get configured gateway
IPAddress getStaticSubnet(); // Get configured subnet mask/- Main configuration page/scan- Scan WiFi networks/connect- Connect to WiFi (POST)/forget- Forget saved network/ipconfig- IP configuration/reset- Restart ESP32/update- OTA updates (AsyncElegantOTA)
/scan_json- Returns WiFi networks in JSON format/status_json- Returns connection status in JSON format
#include "BarboWifiManager.h"
BarboWifiManager wifiManager("SensorAP", "sensor123");
void setup() {
Serial.begin(115200);
// Set fixed IP for stable communication
wifiManager.setStaticIP(
IPAddress(192, 168, 1, 50),
IPAddress(192, 168, 1, 1),
IPAddress(255, 255, 255, 0)
);
wifiManager.setHostname("temperature-sensor");
wifiManager.begin();
}#include "BarboWifiManager.h"
BarboWifiManager wifiManager("LED_Controller", "led12345", 2, 4);
void setup() {
Serial.begin(115200);
// Use DHCP for simplicity
wifiManager.setDHCP();
wifiManager.setHostname("led-control");
wifiManager.begin();
}| LED Status | Meaning |
|---|---|
| 🔴 Red blinking | No WiFi connection |
| 🟢 Green solid | Connected to WiFi |
| 🔴 Red solid | System error |
- Check SSID and password
- Check WiFi signal strength
- Check if router supports ESP32
- Try DHCP instead of static IP
- Check if connected to ESP32 Access Point
- Try
http://192.168.4.1instead of hostname - Clear browser cache
- Check firewall settings
- Check if IP addresses are in correct format
- Check if gateway and IP belong to same subnet
- Check if IP is not already taken on network
- Try restarting ESP32
- Access:
http://[ESP32_IP]/update - Use username:
admin - Password:
87654321 - Check if firmware is compatible
- ✅ Added IP configuration (DHCP/Static)
- ✅ Improved web interface
- ✅ Added multi-language support for IP settings
- ✅ Persistent storage of IP settings
- ✅ Multi-language support (6 languages)
- ✅ Modern responsive design
- ✅ Improved connection security
- ✅ AsyncElegantOTA integration
- ✅ Asynchronous WiFi scanning
- ✅ Improved stability
- ✅ mDNS support
Your contributions are welcome! Please follow these steps:
- Fork this repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
git clone https://github.com/yourusername/BarboWifiManager.git
cd BarboWifiManager
# Open in PlatformIO or Arduino IDE- ESP32 development board
- 2x LED (optional for status)
- 2x 220Ω resistor (for LEDs)
- PlatformIO or Arduino IDE
- ESP32 Arduino Core 2.0.0+
ESPAsyncWebServerAsyncTCPAsyncElegantOTAESP32 Preferences
This project is licensed under the MIT License - see LICENSE file for details.
RobertBarbo - GitHub Profile
- ESPAsyncWebServer - Asynchronous web server
- AsyncElegantOTA - OTA updates
- ESP32 Arduino Core - ESP32 support
- Arduino/ESP32 community for inspiration and testing
If this project helped you, please star ⭐ this repository!
📚 Documentation • 🐛 Report Issues • 💬 Discussions
Made with ❤️ for the ESP32 community


