🎯 Introduction
SchreinWiFiManager est une bibliothèque Arduino pour ESP32/ESP8266 qui simplifie la gestion des connexions WiFi avec un portail de configuration web intégré.
✨ Fonctionnalités
- Dual ESP32/ESP8266 – Compatible avec les deux plateformes
- Portail Web – Interface de configuration intuitive
- Mode Config/Standard – Basculable via GPIO
- Persistance – Sauvegarde SPIFFS des paramètres
- Reconnexion auto – Gestion des pannes WiFi
- Vérification Internet – Test de connectivité
- Mode Client/Serveur – Configuration spécifique
📋 Installation
1. Dépendances Requises
; platformio.ini
[env]
lib_deps =
arduino-libraries/ArduinoJson @ ^6.21.02. Structure des Fichiers
SchreinWiFiManager/
├── examples/
│ └── Basic_Usage
│ └── Basic_Usage.ino
├── src/
│ ├── SchreinWiFiManager.h
│ ├── SchreinWiFiManager.cpp
│ └── WiFiPortalHTML.h
│
├── library.json
├── README.md
├── library.properties
└── keywords.txt🔧 Utilisation Basique
Mode Serveur
#include "SchreinWiFiManager.h"
SchreinWiFiManager wifiManager(true, 0); // Mode serveur, pin config = GPIO0
void setup() {
Serial.begin(115200);
if (wifiManager.begin()) {
Serial.println("✅ WiFi connecté!");
Serial.println("IP: " + wifiManager.getLocalIP());
// Récupérer le port configuré
uint16_t serverPort = wifiManager.getServerPort();
// Démarrer votre serveur sur ce port...
}
}
void loop() {
wifiManager.handle(); // Gestion WiFi obligatoire
}Mode Client
#include "SchreinWiFiManager.h"
SchreinWiFiManager wifiManager(false, 0); // Mode client
void setup() {
Serial.begin(115200);
if (wifiManager.begin()) {
Serial.println("✅ WiFi connecté!");
// Récupérer la configuration client
IPAddress serverIp = wifiManager.getServerIp();
uint16_t targetPort = wifiManager.getServerTargetPort();
uint16_t listenPort = wifiManager.getListenPort();
// Utiliser la configuration pour vos connexions client...
}
}
void loop() {
wifiManager.handle();
}🎛️ API Complète
Constructeur
SchreinWiFiManager(bool serverMode, uint8_t configPin)serverMode:true=mode serveur,false=mode clientconfigPin: GPIO pour activer le mode configuration (LOW=config)
Méthodes Publiques
// Initialisation
bool begin();
// Gestion cyclique (à appeler dans loop())
void handle();
// Informations réseau
String getLocalIP();
bool isWiFiAvailable();
bool isInternetAvailable(uint8_t attempts = 1, uint16_t timeout = 1000);
// Configuration (Mode Serveur)
uint16_t getServerPort();
// Configuration (Mode Client)
IPAddress getServerIp();
uint16_t getServerTargetPort();
uint16_t getListenPort();
// Administration
void resetCredentials();🌐 Portail de Configuration
Accès au Portail
- Mettre la broche configPin à LOW au démarrage
- Se connecter au WiFi « ConfigPortal »
- Ouvrir http://192.168.4.1
Broche de configuration
- Broche configurée en INPUT_PULLUP
- LOW = Mode configuration (démarre le portail AP)
- HIGH = Mode normal (connexion WiFi normale)
Fichiers de configuration
Les configurations sont sauvegardées dans SPIFFS :
/wifi.json– Credentials WiFi/server.json– Configuration mode serveur/client.json– Configuration mode client
Pages de Configuration
📶 Configuration WiFi
- SSID du réseau
- Mot de passe WiFi
📡 Mode Serveur
- Port d’écoute du serveur
🔗 Mode Client
- IP du serveur distant
- Port du serveur distant
- Port d’écoute local
💾 Format des Fichiers de Configuration
WiFi (/wifi.json)
{
"ssid": "MonReseau",
"password": "MonMotDePasse"
}Serveur (/server.json)
{
"serverPort": 8080
}Client (/client.json)
{
"serverIp": "192.168.1.100",
"serverTargetPort": 80,
"listenPort": 8080
}⚙️ Personnalisation
Modifier les Constantes
Dans SchreinWiFiManager.h :
#define WIFI_CHECK_INTERVAL 10000 // Vérification WiFi toutes les 10s
#define WIFI_MAX_FAILURES 5 // Redémarrage après 5 échecs
#define WIFI_CONNECT_TIMEOUT_MS 10000 // Timeout connexion WiFiPersonnaliser le Portail Web
Modifiez WiFiPortalHTML.h pour :
- Changer le style CSS
- Ajouter des champs de configuration
- Modifier les textes
🚨 Dépannage
Problèmes Courants
- Sur ESP8266

- Sur ESP32
A venir !!!!
Logs de Débogage
Activez le monitoring série à 115200 bauds pour voir :
[SchreinWiFi] Initialisation...
[SchreinWiFi] Mode CONFIGURATION activé
[SchreinWiFi] AP IP: 192.168.4.1📝 Exemple Complet
#include "SchreinWiFiManager.h"
SchreinWiFiManager wifiManager(true, 4); // Serveur, pin config = GPIO4
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("🚀 Démarrage SchreinWiFiManager...");
if (wifiManager.begin()) {
Serial.println("🌈 Configuration réussie!");
uint16_t port = wifiManager.getServerPort();
Serial.printf("📡 Serveur configuré sur le port: %d\n", port);
Serial.printf("🌐 IP locale: %s\n", wifiManager.getLocalIP().c_str());
if (wifiManager.isInternetAvailable()) {
Serial.println("✅ Internet accessible");
}
} else {
Serial.println("🔧 Mode configuration activé");
Serial.println("💡 Connectez-vous au WiFi 'ConfigPortal'");
}
}
void loop() {
wifiManager.handle(); // ⚠️ Nécessaire pour la gestion WiFi
// Votre code ici...
delay(100);
}🔄 Workflow Typique
- Premier démarrage → Mode configuration automatique
- Configuration via portail web → Redémarrage automatique
- Démarrages suivants → Connexion WiFi automatique
- Perte WiFi → Reconnexion automatique
- Échecs répétés → Redémarrage automatique
Cette bibliothèque fournit une solution complète pour la gestion WiFi sur ESP32/ESP8266 avec une interface utilisateur professionnelle et une gestion robuste des erreurs.
Note importante : N’oubliez pas d’appeler wifiManager.loop() dans votre loop() pour assurer le bon fonctionnement!