SMART HOME - ESP32: est une solution complète de domotique open-source conçue pour surveiller l'humidité du sol et contrôler des actionneurs (LEDs, Servomoteur, Pompe) en temps réel. Le projet se distingue par son architecture à trois couches garantissant une sécurité et une réactivité optimales.
Le projet repose sur une communication bidirectionnelle :
- Interface Mobile (React Native) : Application client qui affiche les données et envoie les commandes.
- Serveur Pont (Flask) : Serveur intermédiaire (Python) qui gère la logique métier, la synchronisation d'état et l'inversion des commandes pour le matériel.
- Matériel (ESP32) : Microcontrôleur gérant physiquement les capteurs et actionneurs.
- Dashboard en Temps Réel : Visualisation de l'humidité du sol avec barre de progression dynamique.
- Contrôle d'Éclairage : Gestion de 3 zones lumineuses avec retour d'état visuel.
- Accès Sécurisé : Animation 3D d'une porte s'ouvrant vers l'intérieur, synchronisée avec un servomoteur.
- Irrigation Intelligente : Mode manuel ou automatique (Hystérésis 30% - 70%).
- Optimistic UI : L'interface réagit instantanément aux commandes avant même la confirmation du serveur.
- Matériel : ESP32, Servo SG90, Relais (Pompe/LED), Capteur d'humidité capacitif.
- Logiciel : Python 3.x, Node.js, Arduino IDE.
Dans votre code Arduino, assurez-vous que l'ESP32 expose un endpoint JSON sur /data et accepte les routes /ledX/on, /ledX/off, /door/open, etc.
- IP Fixe recommandée :
172.17.227.166(modifiable dansapp.py).
Installez les dépendances et lancez le serveur :
pip install flask flask-cors requests
python app.pyLe serveur écoute sur le port 5000.
- Ouvrez l'application.
- Cliquez sur le badge de connexion (en haut à droite) pour ouvrir les réglages.
- Renseignez l'adresse IP de votre PC exécutant Flask (ex:
http://192.168.1.50:5000). - L'état passera au vert ("CONNECTÉ") une fois le lien établi.
Pour des raisons de montage physique ou de type de composants (relais "Active Low"), la logique est inversée au niveau du Serveur Flask (app.py) :
- Porte :
- UI "Ouvert": Envoie
closeà l'ESP32. - UI "Fermé": Envoie
openà l'ESP32.
- UI "Ouvert": Envoie
- Lumières/Pompe :
- UI "ON": Envoie
off(GND/0V) au relais. - UI "OFF": Envoie
on(VCC/5V) au relais.
- UI "ON": Envoie
Cette approche permet de modifier le comportement de la maison sans avoir à reflasher le microcontrôleur ESP32.
| Méthode | Route | Description |
|---|---|---|
GET |
/api/data |
Récupère l'état complet (Humidité, LEDs, Porte, Pompe). |
GET |
/api/led/<id>/<on/off> |
Contrôle une LED spécifique (Logiciel inversé). |
GET |
/api/door/<open/close> |
Actionne le servo de la porte (Logiciel inversé). |
GET |
/api/pump/<on/off> |
Contrôle manuel de la pompe. |
GET |
/api/mode?auto=1 |
Active/Désactive le mode automatique. |
L'application utilise Tailwind CSS pour le style et React Native Animated pour les transitions.
- Animation Porte : Utilisation d'une transformation
perspectiveetrotateYpour simuler une ouverture 3D. - Couleurs : Palette Slate/Zinc pour un aspect moderne, avec des accents Blue/Emerald pour l'état actif.
- Statut DÉCONNECTÉ : Vérifiez que votre téléphone et votre PC sont sur le même réseau Wi-Fi. Vérifiez le pare-feu du PC (port 5000).
- Le Servo vibre : Assurez-vous d'utiliser
detach()dans le code Arduino après chaque mouvement pour couper l'alimentation du signal. - Délai de réponse : Le polling est réglé sur 2 secondes pour économiser la batterie et la bande passante de l'ESP32.

