Un système IoT complet permettant de contrôler à distance l'alimentation d'un PC fixe. Ce projet relie une interface de commande web/API à l'électronique physique de la carte mère du PC grâce à une architecture distribuée et conteneurisée.
Ce projet permet d'allumer, d'éteindre ou de forcer l'arrêt d'un ordinateur à distance en simulant une pression sur le bouton d'alimentation physique du boîtier. Il a été conçu avec une approche microservices pour garantir la fiabilité et la rapidité des commandes.
Fonctionnalités principales :
- Contrôle physique sécurisé : Utilisation d'un optocoupleur connecté à un ESP8266 pour isoler électriquement le circuit du microcontrôleur de celui de la carte mère.
- Communication Temps Réel : Utilisation d'un broker MQTT (Eclipse Mosquitto) pour transmettre les commandes de l'API vers le microcontrôleur presque instantanément.
- API REST Robuste : Développée avec Fastify pour des performances optimales, incluant la validation des schémas de requêtes.
- Interface Web Typée : Application React + TypeScript construite avec Vite, proposant un pupitre de commande adapté au contrôle physique du PC.
- Déploiement Facilité : Conteneurisation complète de la stack (Frontend + API + Broker MQTT) via Docker Compose.
Le projet est divisé en quatre composants majeurs :
-
Frontend Web (React / TypeScript / Vite) : Fournit une interface de commande responsive, servie par Nginx en production et reliée à l'API via un proxy
/api. -
Backend API (Node.js / Fastify) : Reçoit les requêtes HTTP (ex:
SHORT_PRESSouLONG_PRESS) et les publie sur le topic MQTTbureau/pc/power/set. -
Broker MQTT (Eclipse Mosquitto) : Agit comme un intermédiaire léger pour distribuer les messages entre l'API et le hardware.
-
Firmware ESP8266 (C++ / Arduino) : Connecté au réseau WiFi local, il s'abonne au topic MQTT. À la réception d'un message, il déclenche une impulsion (High/Low) d'une durée spécifique (300ms pour un appui court, 6000ms pour un appui long) sur la broche
D1reliée à l'optocoupleur.
Le code source se trouve dans le dossier esp8266/. Le projet est configuré avec PlatformIO.
- Copiez
config.ini.exempleversconfig.iniet ajoutez vos identifiants WiFi ainsi que l'IP de votre serveur MQTT. - Compilez et téléversez le code C++ sur votre Wemos D1 Mini / ESP8266.
Assurez-vous d'avoir Docker et Docker Compose installés sur votre machine ou votre serveur cible (ex: Raspberry Pi).
# Clonez le dépôt
git clone https://github.com/AnMaLeNo/pc-power-controller.git
cd pc-power-controller
# Lancez les conteneurs en tâche de fond
docker compose up -d --buildL'interface web est disponible sur http://localhost:18080. En mode développement avec l'override Docker Compose, Vite est aussi exposé sur http://localhost:5174.