Création du ReadMe pour pouvoir documenter nos services

This commit is contained in:
Jérémy CHOMAZ 2024-11-11 15:19:35 +01:00
parent 18f91bf7f8
commit 355d58ede7

132
services/readme.md Normal file
View File

@ -0,0 +1,132 @@
# 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/status`
* **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`.
---