const path = require('path'); const ping = require('ping'); const mqtt = require('mqtt'); const fs = require('fs'); // Lecture du fichier de configuration const config = JSON.parse(fs.readFileSync(path.join(__dirname, '../config/configuration.json'), 'utf8')); // Extraction des informations de config const { mqttHost, hosts: { buzzers: { IP: buzzerIPs, MQTTconfig: { mqttTopic } } } } = config; // Connexion au broker MQTT const client = mqtt.connect(mqttHost); client.on('connect', () => { console.log(`[INFO] Connecté au broker MQTT à ${mqttHost}`); // Fonction pour pinger les buzzers et publier l'état const pingAndPublish = async () => { for (const [buzzerName, ip] of Object.entries(buzzerIPs)) { try { const res = await ping.promise.probe(ip); const status = res.alive ? 'online' : 'offline'; // Publication du statut dans le topic MQTT client.publish(`${mqttTopic}`, JSON.stringify({ buzzer: buzzerName, ip, status })); } catch (error) { console.error(`[ERREUR] Erreur avec le buzzer ${buzzerName} (${ip}):`, error.message); } } }; // Pinger toutes les 5 secondes setInterval(pingAndPublish, 3000); }); client.on('error', (error) => { console.error('[ERREUR] Erreur de connexion au broker MQTT:', error.message); });