En cette période d’épidémie de coronavirus, beaucoup de gens se retrouvent à travailler à la maison. C'est le cas d'une partie de Yoctopuce. Pour garder un lien, nous avons réalisé une petite application qui détecte si une personne est devant son poste de travail à la maison et met à jour la couleur d'une LED dans les bureaux de Yoctopuce.
Pour ce faire, nous avons utilisé deux modules: un Yocto-RangeFinder et un Yocto-Color-V2. Le Yocto-RangeFinder nous permet de détecter la présence de la personne. On l'a simplement collé au double face sur le bord inférieur de l'écran avec le capteur de distance orienté vers la chaise de bureau. Le module est branché directement sur un port USB de la machine.
Le Yocto-RangeFinder est simplement collé au double-face en bas de l'écran
De cette manière, on peut mesurer la distance du premier objet (ou personne) qui se situe en face de l'écran. Ce système est très primitif mais contre toute attente fonctionne très bien. Les mesures ne sont pas perturbées par les rayons du soleil car on est en intérieur et, en configurant une fenêtre d'analyse statistique d'une seconde, les mesures ne sont pas bruitées. Pour plus de détails sur le fonctionnement de la fenêtre d'analyse statistique, vous pouvez consulter notre précédent article que nous avions écrit l'année passé.
La présence virtuelle du collègue
Sans vraiment s'en rendre compte, on s'installe toujours à la même distance de l'écran, et il est très facile de détecter si la personne est présente ou pas. D'après notre expérience, une fenêtre de 15 à 20 cm suffit à détecter si la personne est devant son clavier.
Le bureau vide
Pour être honnête, ce système n'est utilisé que par le rédacteur de cet article, il est donc possible que ce système marche moins bien avec d'autres personnes. Dans notre cas, la chaise de bureau ne peut pas s'approcher trop près de l'écran à cause des accoudoirs mais, en fonction de la configuration de votre bureau, il es possible que cela fonctionne moins bien.
L'application
Pour le code de l'application, nous avons modifié l'application Electron que nous avions écrite dans un précédent article. Au lieu d'afficher la température à l'aide d'un Yocto-Meteo, l'application surveille les mesures du Yocto-RangeFinder et met à jour les LED du Yocto-Color-V2 dans les locaux de Yoctopuce.
Le code est simple, on enregistre un callback periodique pour le Yocto-RangeFinder et si la "cible" est dans la fourchette configurée, on illumine Yocto-Color-V2 en vert.
let was_present = false;
let min_distance = 400;
let max_distance = 600;
async function updatePresence(bool_ispresent) {
let color;
if (bool_ispresent) {
color = 0x00ff00;
} else {
color = 0xff0000;
}
let ledCluster = YColorLedCluster.FirstColorLedCluster();
while (ledCluster != null) {
let activeLedCount = await ledCluster.get_activeLedCount();
await ledCluster.rgb_move(0, activeLedCount, color, 500);
ledCluster = await ledCluster.nextColorLedCluster();
}
}
async function rfChangeCallBack(obj_fct, measure) {
let dist = measure.get_averageValue();
let elementById = document.getElementById('live_val');
elementById.innerText = dist + "mm";
let presence;
if (dist > max_distance || dist < min_distance) {
presence = false;
} else {
presence = true;
}
if (presence !== was_present) {
updatePresence(presence);
was_present = presence;
}
}
async function deviceArrival(module) {
let serial = await module.get_serialNumber();
let product = await module.get_productName();
if (product.startsWith("Yocto-RangeFinder")) {
let rf = YRangeFinder.FindRangeFinder(serial + ".rangeFinder1");
await rf.set_rangeFinderMode(YRangeFinder.RANGEFINDERMODE_DEFAULT)
await rf.set_timeFrame(1000);
await rf.set_reportFrequency("4/s");
await rf.registerTimedReportCallback(rfChangeCallBack);
}
}
...
Comme d'habitude, le code complet de l'application est disponible sur GitHub:
https://github.com/yoctopuce-examples/Telepresence
Conclusion
Comme on peut le voir, bien que très basique, ce système fonctionne.
Notez qu'on a fait ça pour le fun et non pas pour surveiller nos employés. On espère que vous vous portez bien et que l'on pourra tous retourner bientôt au travail dans des vrais bureaux :-)