Ce projet met en œuvre un système d’éclairage intelligent basé sur un ESP32, capable d’adapter automatiquement la lumière en fonction :
- de la proximité (détection d’ouverture de porte)
- de la luminosité ambiante
- d’un timer d’extinction automatique
- d’un mode manuel contrôlable via une interface Web
- d’un écran OLED affichant les informations essentielles
Le système fonctionne en point d’accès WiFi autonome, sans dépendance à un réseau externe.
La lumière s’allume automatiquement lorsque :
- la porte est ouverte
- la pièce est sombre
La luminosité est filtrée via une médiane sur 9 mesures pour éviter les variations brusques.
Depuis l’interface Web, l’utilisateur peut :
- forcer l’allumage
- forcer l’extinction
Le mode MANUEL désactive temporairement l’automatisme.
La lumière s’éteint automatiquement si :
- aucun mouvement n’a été détecté depuis un délai défini (10 secondes)
- ou si l’utilisateur l’éteint manuellement
Le timer est réinitialisé à chaque changement d’état.
L’ESP32 sert une interface Web moderne permettant :
- d’afficher :
- la température
- la pression
- l’humidité
- la résistance gaz
- la luminosité
- l’état de la lumière
- le temps écoulé depuis l’allumage
- de contrôler la lumière via un bouton dynamique
- d’afficher l’heure locale du navigateur
- d’utiliser un CSS externe pour un rendu propre
Toutes les données sont regroupées dans une seule route JSON :
/data
Elle renvoie :
{
"temp": ...,
"pressure": ...,
"humidity": ...,
"gas": ...,
"lum": ...,
"light": "ON/OFF",
"timer": "MM:SS"
}Cela remplace plusieurs requêtes séparées et améliore fortement la fluidité
L’écran OLED affiche :
- l’état de la lumière (ON/OFF)
- la température
- le temps écoulé depuis l’allumage (si ON)
L’affichage est rafraîchi périodiquement pour éviter les ralentissements.
- ESP32
- Capteur TMG3993 (proximité + RGB + Clear)
- Capteur BME680 (température, pression, humidité, gaz)
- Écran SSD1306 OLED
- LED simulant l’éclairage
- WiFi en mode Access Point
-
Modes
-
🤖 AUTO
- Allumage automatique (proximité + faible luminosité)
- Extinction automatique (timer)
-
🧑 MANUEL
- L’utilisateur contrôle la lumière
- Le mode AUTO est suspendu
-
-
Timer
- Basé sur millis()
- Réinitialisé à chaque changement d’état
- Affiché sur OLED et interface Web
| Route | Description |
|---|---|
/ |
Page principale |
/data |
Toutes les données en un seul JSON |
/light-on |
Allumage manuel |
/light-off |
Extinction manuelle |
/style.css |
Fichier CSS externe |