|
|
3 months ago | |
|---|---|---|
| include | 3 months ago | |
| lib | 3 months ago | |
| src | 3 months ago | |
| test | 3 months ago | |
| .gitignore | 3 months ago | |
| README.md | 3 months ago | |
| cert.pem | 3 months ago | |
| index.html | 3 months ago | |
| key.pem | 3 months ago | |
| platformio.ini | 3 months ago | |
| server.js | 3 months ago | |
| server.py | 3 months ago | |
| start.sh | 3 months ago | |
README.md
ESP32 Bluetooth HTML Monitor
Système de surveillance Bluetooth permettant de connecter plusieurs modules ESP32 et d'afficher l'état de leurs GPIOs en temps réel sur une page web.
📋 Fonctionnalités
- ✅ Connexion de plusieurs modules ESP32 via Bluetooth (Web Bluetooth API)
- ✅ Affichage en temps réel de l'état des GPIOs
- ✅ Interface web moderne et responsive
- ✅ Notifications visuelles lors des changements d'état
- ✅ Gestion automatique de la reconnexion
🔧 Configuration
ESP32 (src/main.cpp)
Par défaut, le code surveille 4 GPIOs : 15, 16, 17, 18
Pour modifier les GPIOs surveillés, éditez cette ligne :
const int GPIO_PINS[] = {15, 16, 17, 18}; // Modifier selon vos besoins
Pour changer le nom du module (important pour différencier plusieurs ESP32) :
String moduleName = "ESP32-Module-1"; // Changer pour chaque ESP32
GPIOs avec Pull-up
Les GPIOs sont configurés en INPUT_PULLUP, ce qui signifie :
- État normal (non connecté) : HIGH (3.3V)
- État actif (connecté à GND) : LOW (0V)
Le système envoie une notification à la page HTML quand un GPIO passe à l'état BAS.
🚀 Installation et utilisation
1. Compiler et téléverser sur ESP32
# Compiler le projet
pio run
# Téléverser sur l'ESP32
pio run --target upload
# Monitorer le port série (optionnel)
pio device monitor
2. Démarrer le serveur HTTPS
⚠️ Important : Web Bluetooth nécessite HTTPS (ou localhost en HTTP)
Option A - Serveur Python (recommandé) :
python3 server.py
Option B - Serveur Node.js :
node server.js
Les deux serveurs :
- Génèrent automatiquement un certificat SSL auto-signé
- Démarrent sur
https://localhost:8443 - Servent la page HTML avec support Bluetooth
3. Ouvrir dans le navigateur
Ouvrez Chrome, Edge ou Opera et accédez à :
https://localhost:8443
Note :
- Vous verrez un avertissement de sécurité (certificat auto-signé) → Cliquez sur "Avancé" puis "Continuer vers localhost"
- Firefox et Safari ne supportent pas encore Web Bluetooth
3. Connecter les modules
- Cliquez sur "Connecter un module"
- Sélectionnez votre ESP32 dans la liste
- Les GPIOs s'affichent en temps réel
- Répétez pour connecter plusieurs modules
🌐 Pourquoi HTTPS est nécessaire ?
Web Bluetooth API nécessite un contexte sécurisé pour des raisons de sécurité :
- ✅
https://(avec certificat SSL) - ✅
http://localhostouhttp://127.0.0.1 - ❌
file://(ouverture directe du fichier HTML)
Les serveurs fournis (server.py et server.js) génèrent automatiquement un certificat SSL auto-signé.
🔌 Branchement des GPIOs
Pour tester, connectez vos GPIOs à la masse (GND) :
ESP32 Bouton/Capteur
GPIO 15 ---- [Switch] ---- GND
GPIO 16 ---- [Switch] ---- GND
GPIO 17 ---- [Switch] ---- GND
GPIO 18 ---- [Switch] ---- GND
📊 Format des données
Les données sont envoyées en JSON :
{
"module": "ESP32-Module-1",
"gpios": [
{"pin": 15, "state": "0"},
{"pin": 16, "state": "1"},
{"pin": 17, "state": "0"},
{"pin": 18, "state": "0"}
]
}
state: "0"= GPIO HIGH (état normal)state: "1"= GPIO LOW (état actif)
🎨 Interface
L'interface affiche :
- Le nom de chaque module connecté
- L'état de chaque GPIO (HAUT/BAS) avec code couleur
- L'horodatage de la dernière mise à jour
- Des animations visuelles lors des changements d'état
⚙️ Personnalisation
Changer les UUID Bluetooth
Dans main.cpp et index.html, modifiez :
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
Modifier le délai de lecture
Dans main.cpp, ligne finale :
delay(100); // Modifier selon vos besoins (en millisecondes)
🐛 Dépannage
L'ESP32 n'apparaît pas dans la liste Bluetooth
- Vérifiez que le module est alimenté
- Consultez le moniteur série pour voir les messages de démarrage
- Assurez-vous que le Bluetooth est activé sur votre PC
Pas de données reçues
- Vérifiez les UUID dans le code ESP32 et HTML
- Consultez la console JavaScript (F12) pour les erreurs
- Testez en connectant un GPIO à GND
Déconnexions fréquentes
- Vérifiez la distance entre l'ESP32 et le PC
- Assurez-vous que l'alimentation de l'ESP32 est stable
📝 Notes
- Plusieurs modules peuvent être connectés simultanément
- Chaque module doit avoir un nom unique
- La page HTML doit être servie en HTTPS ou localhost pour Web Bluetooth
- Les changements d'état sont détectés et envoyés automatiquement
🔐 Sécurité
Pour un usage en production, considérez :
- Ajouter une authentification Bluetooth
- Chiffrer les données transmises
- Implémenter une validation côté serveur