Skip to content

RobertBarbo/BarboWifiManager

Repository files navigation

BarboWifiManager 📶

PlatformIO Registry License: MIT Arduino ESP32

Advanced WiFi Manager library for ESP32 with elegant web interface, multi-language support, and flexible IP configuration.


Key Features

🌐 WiFi Management

  • 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

🔧 IP Configuration

  • 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

🎨 Elegant Web Interface

  • Responsive design - adapts to all devices
  • Modern CSS with gradients and animations
  • Intuitive UX with visual feedback
  • Progressive loading states

🌍 Multi-language Support

  • 🇬🇧 English
  • 🇸🇮 Slovenian (Slovenščina)
  • 🇭🇷 Croatian (Hrvatski)
  • 🇩🇪 German (Deutsch)
  • 🇮🇹 Italian (Italiano)
  • 🇪🇸 Spanish (Español)

🔒 Security and Stability

  • OTA Updates via AsyncElegantOTA
  • mDNS support (access via hostname.local)
  • Watchdog timer protection
  • Safe switching between networks

📸 Screenshots

Main Page WiFi Networks IP Configuration
Main Networks IP Config

🚀 Quick Start

Installation

PlatformIO

[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = 
    barbo/BarboWifiManager

Arduino IDE

  1. Download the latest version from Releases
  2. Extract to Arduino/libraries/BarboWifiManager/
  3. Restart Arduino IDE

Basic Usage

#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();
}

Access Configuration

  1. ESP32 creates an Access Point named ESP32_Setup
  2. Connect to this network with password password123
  3. Open browser and go to http://192.168.4.1
  4. Configure WiFi and IP settings

🔧 Advanced Configuration

IP Configuration

DHCP (default)

wifiManager.setDHCP();

Static IP

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);

Customize LEDs

// Set pins for status LEDs
wifiManager.setStatusLedPins(redPin, greenPin);

// Set blink speed
wifiManager.setBlinkInterval(500); // 500ms

Customize Port

// Change web server port
wifiManager.setPort(8080);

Customize Access Point

// Change AP SSID and password
wifiManager.setAPCredentials("NewName", "NewPassword");

📡 API Reference

Constructor

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
);

Basic Methods

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 password

IP Configuration

void 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

🌐 Web Interface

Endpoints

  • / - 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)

JSON API

  • /scan_json - Returns WiFi networks in JSON format
  • /status_json - Returns connection status in JSON format

💡 Usage Examples

IoT sensor with fixed IP

#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();
}

LED controller with DHCP

#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();
}

🔍 Status LED Indicators

LED Status Meaning
🔴 Red blinking No WiFi connection
🟢 Green solid Connected to WiFi
🔴 Red solid System error

🛠 Troubleshooting

ESP32 won't connect to WiFi

  1. Check SSID and password
  2. Check WiFi signal strength
  3. Check if router supports ESP32
  4. Try DHCP instead of static IP

Cannot access web interface

  1. Check if connected to ESP32 Access Point
  2. Try http://192.168.4.1 instead of hostname
  3. Clear browser cache
  4. Check firewall settings

IP configuration not working

  1. Check if IP addresses are in correct format
  2. Check if gateway and IP belong to same subnet
  3. Check if IP is not already taken on network
  4. Try restarting ESP32

OTA updates not working

  1. Access: http://[ESP32_IP]/update
  2. Use username: admin
  3. Password: 87654321
  4. Check if firmware is compatible

🔄 Changelog

v2.1.0 (2025-10-13)

  • ✅ Added IP configuration (DHCP/Static)
  • ✅ Improved web interface
  • ✅ Added multi-language support for IP settings
  • ✅ Persistent storage of IP settings

v2.0.0 (2025-09-15)

  • ✅ Multi-language support (6 languages)
  • ✅ Modern responsive design
  • ✅ Improved connection security
  • ✅ AsyncElegantOTA integration

v1.5.0 (2025-08-20)

  • ✅ Asynchronous WiFi scanning
  • ✅ Improved stability
  • ✅ mDNS support

🤝 Contributing

Your contributions are welcome! Please follow these steps:

  1. Fork this repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Setup

git clone https://github.com/yourusername/BarboWifiManager.git
cd BarboWifiManager
# Open in PlatformIO or Arduino IDE

📋 Requirements

Hardware

  • ESP32 development board
  • 2x LED (optional for status)
  • 2x 220Ω resistor (for LEDs)

Software

  • PlatformIO or Arduino IDE
  • ESP32 Arduino Core 2.0.0+

Dependencies

  • ESPAsyncWebServer
  • AsyncTCP
  • AsyncElegantOTA
  • ESP32 Preferences

📄 License

This project is licensed under the MIT License - see LICENSE file for details.


👨‍💻 Author

RobertBarbo - GitHub Profile


🙏 Acknowledgments


If you like this project

If this project helped you, please star ⭐ this repository!


📚 Documentation🐛 Report Issues💬 Discussions

Made with ❤️ for the ESP32 community

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published