Squelette d'application web pour ESP32 avec implémentations de fonctions basiques telles que : -Authentification -Responsive design -Mise à jour OTA -Paramétrage
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3.3 KiB

Spécifications générales

  • Contexte: Application ESP32
  • Stack: Arduino C++, ESPAsyncWebServer, LittleFS
  • Carte: ESP32
  • Interface: Dashboard web responsive
  • Fonctionnalités clés: Gestion GPIO, OTA, WiFi/AP, Authentification, API REST

Arborescence des fichiers

src/
├── main.cpp                    [Point d'entrée]
├── auth.h/cpp                  [Authentification]
├── server.h/cpp                [API endpoints]
└── utils.h/cpp                 [Helpers]

data/
├── config.json                 [Config par défaut]
├── index.html                  [Dashboard]
├── login.html                  [Page de login]
├── settings.html               [Paramètres]
├── update.html                 [Mise à jour OTA]
└── js/
    ├── api.js                  [Client API]
    └── app.js                  [UI logic]
└── css/
    └── styles.css              [Styles CSS]

Spécificités ESP32

  • Framework: Arduino
  • Système de fichiers: LittleFS
  • Utilisation de platformio pour la gestion des dépendances et le build
[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
board_build.filesystem = littlefs
board_build.partitions = default.csv

lib_deps =
    ESP32Async/ESPAsyncWebServer
    ESP32Async/AsyncTCP
    bblanchon/ArduinoJson@^7.0.0

build_flags =
    -DBOARD_HAS_PSRAM

Spécificités dashboard web

  • Pages: Login, Dashboard, Paramètres, Mise à jour OTA
  • Technologies: HTML5, CSS3, JavaScript (Fetch API)
  • Sécurité: Sessions avec cookies, redirection vers login si non authentifié
  • Gestion des erreurs: Messages utilisateur clairs et en français
  • Responsive: Adapté aux mobiles et tablettes

Spécificités stockage fichiers

  • Système de fichiers: LittleFS
  • Fichiers: HTML, CSS, JS, config.json
  • Accès: Lecture seule pour fichiers web, lecture/écriture pour config.json
  • Création d'une config.json par défaut si absente au démarrage
  • Pas de fichiers compressés pour compatibilité avec LittleFS

Fonctionnalités OTA

  • Mise à jour via interface web ou via espota
  • Mise à jour firmware et système de fichiers depuis interface web

Spécificités API REST

  • Endpoints: /api/config, /api/stats
  • Sécurité: Authentification requise pour endpoints protégés
  • Réponses: Statuts HTTP et messages d'erreur clairs

Spécificités Authentification

  • Stockage: Nom d'utilisateur et hash SHA-256 du mot de passe dans config.json
  • Sécurité: Sessions avec timeout configurable
  • Gestion des sesssions avec cookies
  • Redirection vers page de login si non authentifié
  • Appel GET vers /logout pour déconnexion et /login pour connexion

Spécificités wifi

  • Modes: Station (client) et Point d'accès (AP) si absence de réseau et/ou paramètres non configurés
  • Sécurité: WPA2 pour Station et pour AP
  • Configuration: Via interface web ou fichier config.json

Spécificités logs

  • Sortie série pour debug en français
  • Niveau de log configurable (DEBUG, INFO, WARN, ERROR)

Format de configuration (config.json)

{
  "auth": {
    "username": "admin",
    "password_hash": "SHA-256"
  },
  "wifi": {
    "ssid": "Réseau WiFi",
    "password": "***",
    "ap_password": "Mode AP pwd"
  },
  "system": {
    "hostname": "WEBAPP",
    "session_timeout": 60,              // minutes
  },
  "params": {
  }
}