# Présentation des divers services liés à BrainBlast. ## 📟 Gestionnaire de Buzzer pour BrainBlast (*`Buzzer-Manager.js`*) Ce script Node.js gère les buzzers du jeu **BrainBlast** en utilisant MQTT pour la communication entre les buzzers et les autres composants du système. ### 🚀 Fonctionnalités Principales * **Connexion au Broker MQTT** : Se connecte à un broker MQTT (*`mqtt://localhost`* par défaut) pour envoyer et recevoir des messages. * **Gestion des Buzzers** : * **Blocage/Déblocage** : Bloque les buzzers lorsqu'un est activé pour empêcher les autres de répondre, et les débloque sur demande. * **Mode Tilt** : Permet d'ignorer certains buzzers en les ajoutant au mode "tilt". * **Validation des Données** : Vérifie que les informations reçues des buzzers sont valides (ID du buzzer, couleur, etc.). * **Intégration Lumineuse** : Contrôle les effets lumineux en fonction des actions des buzzers via le gestionnaire de lumières. ### 🛠️ Configuration et Utilisation * **Installation des Dépendances** : ```bash npm install mqtt ``` * **Configuration** : * Modifier l'URL du broker MQTT et le client ID si nécessaire dans le script : ```javascript // Configuration du broker MQTT const brokerUrl = 'mqtt://votre-broker'; const clientId = 'buzzer_manager'; ``` * **Lancement du Script** : ```bash node buzzer-manager.js ``` ### 📡 Sujets MQTT Utilisés * **Souscriptions** : * `brainblast/buzzer/pressed/#` : Détecte lorsqu'un buzzer est pressé. * `brainblast/buzzer/unlock` : Gère les demandes de déblocage des buzzers. * `brainblast/buzzer/tilt` : Gère l'ajout ou le retrait des buzzers en mode tilt. * **Publications** : * `brainblast/buzzer/confirmation/{buzzer_id}` : Confirme la réception des actions des buzzers. * `brainblast/buzzer/status` : Informe sur l'état actuel des buzzers (bloqués, débloqués, tilt). * `brainblast/light/change` : Demande des changements d'effets lumineux au gestionnaire de lumières. --- ## 🖥️ Moniteur de Statut des Buzzers pour BrainBlast (*`BuzzerWatcher.js`*) Ce script Node.js surveille l'état des buzzers du jeu **BrainBlast** en les pingant régulièrement et en publiant leur statut (en ligne/hors ligne) sur un broker MQTT. ### 🚀 Fonctionnalités Principales * **Surveillance des Buzzers** : Pinge chaque buzzer à intervalles réguliers pour vérifier s'il est en ligne. * **Publication MQTT** : Envoie le statut (`online` ou `offline`) de chaque buzzer sur un topic MQTT spécifié, permettant aux autres composants du système de réagir en conséquence. * **Configuration Flexible** : Charge dynamiquement les adresses IP des buzzers et les paramètres MQTT depuis un fichier `config.json`. ### 🛠️ Installation et Configuration #### Prérequis * **Node.js** installé sur votre machine. * Modules NPM requis : `ping` et `mqtt`. #### Installation des Dépendances ```bash npm install ping mqtt ``` #### Configuration 1. **Fichier de Configuration** : Créez un fichier `config.json` dans le répertoire `\services\config\` avec le contenu suivant : ```json { "hosts": { "buzzers": { "IP": { "buzzer1": "192.168.1.10", "buzzer2": "192.168.1.11" }, "MQTTconfig": { "mqttHost": "mqtt://localhost", "mqttTopic": "brainblast/buzzers/status" } } } } ``` * **Adresses IP des Buzzers** : Remplacez par les adresses IP de vos buzzers. * **Configuration MQTT** : * `mqttHost` : L'adresse de votre broker MQTT. * `mqttTopic` : Le topic sur lequel publier le statut des buzzers. 2. **Chemin du Fichier de Configuration** : Assurez-vous que le chemin vers `config.json` dans le script est correct : ```javascript const config = JSON.parse(fs.readFileSync('\\services\\config\\config.json', 'utf8')); ``` ### ▶️ Utilisation * **Lancement du Script** : ```bash node BuzzerWatcher.js ``` Le script va : * Se connecter au broker MQTT spécifié. * Pinger chaque buzzer toutes les 3 secondes. * Publier le statut de chaque buzzer sur le topic MQTT configuré. ### 📡 Topic MQTT Utilisés * **Publication** : * **Topic** : `brainblast/buzzers` * **Payload Exemple** : ```json { "buzzer": "buzzer1", "ip": "192.168.1.10", "status": "online" } ``` ### 💡 Notes * **Personnalisation de l'Intervalle** : Vous pouvez modifier l'intervalle de ping en changeant la valeur dans `setInterval(pingAndPublish, 3000);` (valeur en millisecondes). * **Extensibilité** : Pour ajouter plus de buzzers, il suffit d'ajouter leurs adresses IP dans le fichier `config.json`. ---