New Technology Design

SchreinWiFiManager (Arduino Library)

🎯 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.0

2. 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)

  • serverModetrue=mode serveur, false=mode client
  • configPin: 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

  1. Mettre la broche configPin à LOW au démarrage
  2. Se connecter au WiFi « ConfigPortal »
  3. 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 WiFi


Personnaliser 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

  1. Premier démarrage → Mode configuration automatique
  2. Configuration via portail web → Redémarrage automatique
  3. Démarrages suivants → Connexion WiFi automatique
  4. Perte WiFi → Reconnexion automatique
  5. É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!