BrainBlast/services/readme.md
2024-11-18 22:51:33 +01:00

4.5 KiB

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 :
npm install mqtt
  • Configuration :

    • Modifier l'URL du broker MQTT et le client ID si nécessaire dans le script :
// Configuration du broker MQTT
const brokerUrl = 'mqtt://votre-broker';
const clientId = 'buzzer_manager';
  • Lancement du Script :
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

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 :
{
  "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.
  1. Chemin du Fichier de Configuration : Assurez-vous que le chemin vers config.json dans le script est correct :
const config = JSON.parse(fs.readFileSync('\\services\\config\\config.json', 'utf8'));

▶️ Utilisation

  • Lancement du Script :
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 :
{
  "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.