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.
 
 
 
 
scayac 9609989102 Initial commit 3 months ago
include Initial commit 3 months ago
lib Initial commit 3 months ago
src Initial commit 3 months ago
test Initial commit 3 months ago
.gitignore Initial commit 3 months ago
README.md Initial commit 3 months ago
cert.pem Initial commit 3 months ago
index.html Initial commit 3 months ago
key.pem Initial commit 3 months ago
platformio.ini Initial commit 3 months ago
server.js Initial commit 3 months ago
server.py Initial commit 3 months ago
start.sh Initial commit 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

  1. Cliquez sur "Connecter un module"
  2. Sélectionnez votre ESP32 dans la liste
  3. Les GPIOs s'affichent en temps réel
  4. 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://localhost ou http://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