const client = mqtt.connect("ws://marcellus.cc:9001"); function wait(ms) { return new Promise((resolve, reject) => { let isObstacle = false; const timer = setTimeout(() => { if(!isObstacle){ resolve(0); } // Le délai s'est écoulé sans détecter d'obstacle }, ms); // Supposons que `client` est un objet qui écoute les messages client.on('message', (topic, message) => { if (topic === 'move' && parseInt(message.toString()) < 150) { isObstacle = true; clearTimeout(timer); resolve(1); // Un obstacle a été détecté } }); }); } function getTime(dist) { let res = (dist / 200)*1000 //console.log('time is '+res) return res } async function moveTo(dist,angle) { console.log('dist is '+ dist) ang = angle * 180 /Math.PI console.log('ang is :' + ang.toString()) var str = 'T'+(Math.floor(ang)).toString() client.publish('move',str) client.publish('move','D200') const time = getTime(dist) let tmp = await wait(time); if (tmp == 0){ client.publish('move', 'STOP'); } stop() } client.on('connect', () => { console.log('Connecté au courtier MQTT'); client.subscribe('move') }); // client.publish('move','ULT1') /* client.on('close', function () { console.log('Déconnecté du courtier MQTT'); });*/