Projet de contrôle de bandes LEDs Bluetooth BLEDDM avec interface locale, serveur API Flask et automatisation iPhone.
- Présentation
- Fonctionnalités
- Structure du projet
- Prérequis
- Installation
- Utilisation
- API Documentation
- Automatisation iPhone
- Dépannage
# 1. Clone et installe
git clone https://github.com/abduoqb/LED-BLEDDM-CONTRO
cd leds
pip install -r requirements.txt
# 2. Configure ton adresse MAC
cp .env.example .env
# Édite .env et remplace LED_ADDRESS par l'adresse de tes LEDs
# 3. Lance le contrôle local
cd control
python led_control_system.py
# OU lance le serveur web
cd serveur
python led_serveur.py
# Accède à http://localhost:5000/dashboardBesoin d'aide ? Voir Installation détaillée ou Dépannage
Ce projet permet de contrôler des LEDs Bluetooth BLEDDM/ELK-BLEDOM de deux façons :
- Interface locale : Menu interactif en ligne de commande sur PC
- Serveur web : API Flask + Interface web accessible depuis navigateur ou iPhone
- ✅ Contrôle Bluetooth via Python (bleak)
- ✅ 9+ effets lumineux (arc-en-ciel, aurores boréales, etc.)
- ✅ Mode Pomodoro pour la concentration
- ✅ API REST Flask pour contrôle à distance
- ✅ Interface web responsive
- ✅ Automatisation iPhone avec Raccourcis iOS
- ✅ Détection d'arrivée à domicile
- Allumer/Éteindre
- Changement de couleur RGB (0-255)
- Réglage de la luminosité (0-100%)
- Mode blanc
- 🌈 Arc-en-ciel : Cycle de couleurs continu
- 💨 Respiration : Variation douce de luminosité
- ⚡ Stroboscope : Clignotement rapide
- 🚨 Sirène de police : Alternance rouge/bleu
- 🌌 Aurores boréales : Transitions douces vert/violet/bleu
- 🎯 Mode Pomodoro : Cycles travail/pause avec alertes visuelles
- Rouge, Vert, Bleu, Jaune, Magenta, Cyan
leds/
├───control/
│ led_control_system.py
│
├───serveur/
| │ led_serveur.py
| │
| └───templates/
| index.html
|
├ .env.exemple
├ TOGGLE_SERVEUR_LED.vbs
├ SCRIPTS_VBS_README
├ README.md
├ TROUBLESHOOTING.md
├ requirements.txtcontrol/led_control_system.py
- Menu interactif en terminal
- Tous les effets disponibles
- Contrôle direct des LEDs via Bluetooth
- Effets en boucle (arrêt avec Entrée)
serveur/led_serveur.py
- Serveur Flask API REST
- Routes pour tous les contrôles
- Supporte requêtes depuis iPhone/navigateur
- Écoute sur
0.0.0.0:5000
serveur/templates/index.html
- Interface web responsive
- Boutons de contrôle visuels
- Feedback en temps réel
- Design moderne (fond sombre)
- Python 3.8+
- Windows 10/11 (Bluetooth intégré)
- LEDs BLEDDM/ELK-BLEDOM (allumées et appairées)
- Connexion Bluetooth active
⚠️ Application mobile des LEDs FERMÉE (importante : ne doit pas être ouverte)
Note importante : L'application mobile officielle BLEDDM/ELK-BLEDOM ne doit jamais être ouverte en même temps que ce système. Elle monopolise la connexion Bluetooth et empêche le contrôle depuis le PC. Fermez-la complètement avant d'utiliser ce projet.
git clone https://github.com/abduoqb/LED-BLEDDM-CONTROL
cd projet-ledspip install -r requirements.txtCela installera automatiquement : bleak, flask, flask-cors, python-dotenv
Crée ton fichier de configuration .env :
cp .env.example .envTrouve l'adresse MAC de tes LEDs :
Option 1 : nRF Connect (Android/iOS)
- Télécharge l'app nRF Connect
- Scanne les appareils Bluetooth
- Note l'adresse MAC (ex:
AA:BB:CC:DD:EE:FF)
Option 2 : Windows
- Paramètres → Bluetooth → Appareil BLEDDM → Propriétés
- Note l'adresse affichée
Modifie le fichier .env :
LED_ADDRESS=AA:BB:CC:DD:EE:FF # ← Ta vraie adresse MAC iciNote : Ne commit JAMAIS le fichier .env (déjà dans .gitignore)
cd control python led_control_system.py
Un menu s'affiche avec toutes les options disponibles. Les effets tournent en boucle jusqu'à ce que tu appuies sur Entrée.
Raccourci clavier VSCode (optionnel) :
- Crée
.vscode/tasks.json - Ajoute la configuration fournie
- Lance avec
Ctrl + Shift + B
🪟 Windows : Script Toggle (Recommandé)
Double-cliquez sur TOGGLE_SERVEUR_LED.vbs pour :
- Démarrer le serveur (si arrêté) + ouvre automatiquement le navigateur
- Arrêter le serveur (si actif)
✨ Un seul script pour tout gérer !
Lancement manuel (alternative) :
cd serveur
python led_serveur.pyNote : Le serveur utilise une connexion Bluetooth persistante pour une latence ultra-faible (~100ms au lieu de ~3.5s par commande).
Le serveur démarre sur :
http://127.0.0.1:5000 (local PC) http://192.168.X.XXX:5000 (réseau local - note ton IP)
Nouveautés :
- ⚡ Latence divisée par 35 (97% plus rapide)
- 🔄 Reconnexion automatique
- 📊 Statistiques en temps réel :
http://localhost:5000/api/stats - 💚 Health check :
http://localhost:5000/api/health
Ouvre ton navigateur et va sur :
http://localhost:5000/dashboard
Tu verras une interface avec des boutons pour contrôler tes LEDs !
Vérifie que le serveur fonctionne
curl http://localhost:5000/api/status
Réponse : {"status": "online", "message": "Serveur LED actif"}
Allume les LEDs curl -X POST http://localhost:5000/api/led/on
Réponse : {"status": "success", "message": "LEDs allumees"}
Éteint les LEDs curl -X POST http://localhost:5000/api/led/off
curl -X POST http://localhost:5000/api/led/color -H "Content-Type: application/json" -d '{"r": 255, "g": 0, "b": 0}'
Paramètres :
r: Rouge (0-255)g: Vert (0-255)b: Bleu (0-255)
Scénario d'arrivée à la maison (allume en couleur orange chaleureuse) curl -X POST http://localhost:5000/api/home-arrival
- iPhone et PC sur le même réseau Wi-Fi
- Serveur Flask en cours d'exécution
- Autoriser le port 5000 dans le pare-feu Windows
Windows : ipconfig
Note l'adresse IPv4 (ex: 192.168.1.226)
Dans l'app Raccourcis sur iPhone :
- Nouveau raccourci
- Ajoute l'action "Obtenir le contenu de l'URL"
- Configure :
- URL :
http://192.168.1.226:5000/api/home-arrival(remplace l'IP) - Méthode : POST
- URL :
- Nomme le raccourci "LEDs Maison"
Dans l'onglet Automatisation :
- Nouvelle automatisation → Arriver
- Sélectionne Domicile
- Action : Exécuter le raccourci → "LEDs Maison"
- Désactive "Demander avant d'exécuter"
Maintenant tes LEDs s'allument automatiquement quand tu rentres chez toi ! 🎉
Vérifications :
- Les LEDs sont allumées
- Le Bluetooth du PC est activé
- L'adresse MAC est correcte dans le code
- Les LEDs ne sont pas connectées à un autre appareil
- L'application mobile des LEDs (BLEDDM/ELK-BLEDOM) est FERMÉE
Solution :
- Ferme complètement l'application mobile des LEDs
- Déconnecte les LEDs dans les paramètres Bluetooth Windows
- Relance le script
Causes possibles :
-
Pare-feu Windows bloque le port 5000
- Paramètres → Pare-feu → Règles entrantes
- Autorise Python ou le port 5000
-
iPhone et PC pas sur le même Wi-Fi
- Vérifie que les deux sont sur le même réseau
-
Mauvaise adresse IP
- Vérifie avec
ipconfiget utilise l'IP locale (192.168.X.X)
- Vérifie avec
Test rapide : Ouvre Safari sur iPhone et va sur http://TON_IP:5000/api/status
Solution :
- Lance un scan Bluetooth pour vérifier la présence de l'appareil
- Rapproche-toi des LEDs
- Redémarre le Bluetooth sur le PC
C'est normal ! Appuyer sur Entrée arrête l'effet immédiatement. Le script gère l'interruption proprement.
Dans led_control_system.py, ajoute une nouvelle fonction async :
async def mon_effet(self): global stop_effect stop_effect = False
thread = threading.Thread(target=wait_for_enter, daemon=True) thread.start()
while not stop_effect: # Ton code ici await self.set_color(255, 0, 0) await asyncio.sleep(1)
Puis ajoute-le au menu dans main_menu().
Dans led_serveur.py :
@app.route('/api/mon-endpoint', methods=['POST']) def mon_endpoint():
return jsonify({"status": "success"})
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Projet personnel et éducatif, libre d'utilisation et de modification.
Développé pour contrôler des LEDs BLEDDM avec Python, Flask et automatisation iOS.
- bleak : Bibliothèque Python Bluetooth LE
- Flask : Framework web Python
- Communauté GitHub : Documentation BLEDDM/ELK-BLEDOM
Bon contrôle de LEDs ! 🎉💡