diff --git a/VNode/services/light/light-manager.js b/VNode/services/light/light-manager.js index d5ebb082..8c1ed903 100644 --- a/VNode/services/light/light-manager.js +++ b/VNode/services/light/light-manager.js @@ -2,7 +2,7 @@ const mqtt = require('mqtt'); // Configuration du broker MQTT et de WLED -const brokerUrl = 'mqtt://nanomq'; // Change ce lien si nécessaire +const brokerUrl = 'mqtt://192.168.1.201'; // Change ce lien si nécessaire const clientId = 'light_manager_wled'; const wledTopicBase = 'wled/all'; // Le topic de base pour ton ruban WLED const options = { @@ -11,7 +11,7 @@ const options = { }; // État des lumières -let currentColor = '#FFFFFF'; // Couleur par défaut (blanc) +let currentColor = '#FF00FF'; // Couleur par défaut let currentEffect = 'none'; // Pas d'effet par défaut // Connexion au broker MQTT @@ -25,6 +25,12 @@ client.on('connect', () => { if (err) console.error('[ERROR] Subscription to light topics failed'); else console.log('[INFO] Successfully subscribed to light topics'); }); + + // Souscription aux topics des buzzers pour synchronisation directe + client.subscribe('vulture/buzzer/pressed/#', (err) => { + if (err) console.error('[ERROR] Subscription to buzzer topics failed'); + else console.log('[INFO] Successfully subscribed to buzzer topics'); + }); }); // Fonction pour envoyer un message au ruban WLED @@ -65,9 +71,9 @@ function applyLightChange(color, effect, intensity) { function getWLEDEffectId(effect) { const effectsMap = { 'none': 0, - 'blink': 1, // Effet de fondu - 'fade': 12, // Clignotement - 'rainbow': 9 // Effet arc-en-ciel + 'blink': 0, // Effet de fondu + 'fade': 0, // Clignotement + 'rainbow': 0 // Effet arc-en-ciel }; return effectsMap[effect] || 0; // Par défaut, aucun effet } @@ -116,7 +122,7 @@ client.on('message', (topic, message) => { } else if (topic === 'vulture/light/reset') { // Réinitialisation des lumières à la couleur et l'effet par défaut console.log('[INFO] Resetting lights to default state'); - applyLightChange('#FFFFFF', 'reset', 255); + applyLightChange('#FF00FF', 'reset', 255); } else if (topic === 'vulture/light/status/request') { // Répondre à la requête de statut @@ -125,6 +131,23 @@ client.on('message', (topic, message) => { } else if (topic === 'vulture/light/status/response') { // Répondre à la requête de statut console.log('[INFO] Light status response received'); + + } else if (topic.startsWith('vulture/buzzer/pressed/')) { + // Synchronisation directe Buzzer -> WLED + const { color } = payload; + + if (color && /^#[0-9A-F]{6}$/i.test(color)) { + console.log(`[INFO] Buzzer pressed, syncing WLED color to ${color}`); + // Envoi direct de la couleur (format hex avec #) + sendToWLED('col', color); + + // Mise à jour de l'état interne + currentColor = color; + currentEffect = 'none'; // Reset effect on direct color set + } else { + console.warn(`[WARN] Invalid color in buzzer payload: ${color}`); + } + } else { console.error(`[ERROR] Unrecognized topic: ${topic}`); }