Dans le cadre de notre série "Yoctopuce pour les débutants", on a décrit il y a peu de temps l'utilisation du VirtualHub pour configurer les modules Yoctopuce. Mais en fait, le VirtualHub ne se contente pas de fournir une interface graphique pour tester et configurer des modules Yoctopuce, il peut faire bien plus encore. Cette semaine, on vous propose de découvrir les autres facettes de cet outil un peu magique.
Pour rappel, le VirtualHub est un petit utilitaire disponible gratuitement pour la plupart des plateformes courantes: Windows, Linux, Mac OSX, 32bits, 64bit, Intel, ARM, MIPS... Il est capable de rendre de nombreux services. Il se présente sous la forme d'un exécutable qu'il suffit de lancer. On accède ensuite à son interface utilisateur grâce à un browser web en pointant sur l'URL http://127.0.0.1:4444
Mise à jour des firmwares
Vous pouvez utiliser le VirtualHub pour mettre à jour le firmware de vos modules. Pour cela il suffit de d'ouvrir, dans l'interface du VirtualHub, la fenêtre de configuration du module à mettre à jour, puis cliquer sur le bouton "upgrade". Le hub vous proposera alors de choisir un fichier .byn que vous aurez préalablement téléchargé depuis le site web de Yoctopuce.
Vous pouvez aussi choisir de laisser le VirtualHub faire l'opération automatiquement, il se chargera alors de télécharger la dernière version et de l'installer automatiquement.
La fenêtre de mise à jour des firmwares
Mise à jour d'un module briqué
Évidement, il faut absolument éviter de débrancher un module pendant que son firmware est en train de se mettre à jour, sous peine de "briquer" le module. Heureusement, il y a moyen de récupérer un module dont le firmware a été corrompu de la sorte. Il suffit de le brancher en maintenant le Yocto-Button appuyé. Il démarrera alors en mode "mise à jour de firmware" et apparaîtra alors dans l'interface du VirtualHub.
Le Yocto-button, présent sur tous les modules, permet récupérer un module briqué
Les module en mode "mise à jour de firmware" apparaissent dans le VirtualHub
La mise à jour normale préserve la configuration des modules, en revanche la méthode de récupération avec le Yocto-Button remet le module dans sa configuration d'usine. Ce qui fait que vous pouvez aussi utiliser cette méthode pour réinitialiser complètement un module.
Interface Réseau
Le VirtualHub offre une interface réseau qui permet d'accéder à distance aux modules branchés sur la machine où il tourne. Ainsi il est possible de piloter très facilement des modules à travers un réseau Ethernet. Toute la complexité est cachée dans l'API Yoctopuce. Pour vous, la seule différence se situe au niveau de l'initialisation de l'API. Lorsque vous voulez utiliser vos modules directement en USB, vous allez initialiser l'API avec la ligne suivante:
Alors que si vous voulez utiliser les modules connectés à une machine sur laquelle tourne un VirtualHub et dont l'adresse IP est, par exemple, 192.168.0.2, vous allez utiliser la ligne
Limitation USB natif
L'API Yoctopuce souffre d'une petite limitation. Il ne peut pas y avoir sur une même machine deux applications qui tournent en même temps tout en utilisant les modules Yoctopuce en mode natif, c'est-à dire-en utilisant RegisterHub("usb"). Le VirtualHub compte pour une application native, si vous essayez de le lancer alors qu'une autre application utilise déjà le mode USB natif, il vous fera part de son mécontentement avec un message bien senti par exemple: Another process named demo.exe (pid 6472) is already using yAPI.
Vous ne pouvez pas faire tourner en même temps deux applications qui utilisent le mode USB natif
En revanche, rien ne vous empêche de faire tourner un VirtualHub et d'utiliser l'adresse 127.0.0.1 qui, en terme de réseau, désigne toujours la machine locale. Ainsi, vous pouvez utiliser RegisterHub("127.0.0.1") à la place de RegisterHub("usb"), et comme il n'y a pas de limitations en mode réseau, vous pourrez alors faire tourner plusieurs applications Yoctopuce en même temps et sur la même machine.
Vous trouverez plus d'information sur les subtilités du "RegisterHub" dans un article qu'on a publié il y a quelque temps déjà.
127.0.0.1
Le coup de l'adresse 127.0.0.1 ne se limite pas à permettre de faire tourner plusieurs applications Yoctopuce sur la même machine. Il est indispensable dans certain langages de programmation qui n'autorisent pas l'accès direct au hardware, par exemple JavaScript. Dans ces langages, RegisterHub("usb") n'existent tout simplement pas, l'utilisation de RegisterHub("127.0.0.1") avec un VirtualHub est la règle.
Cloud
Le VirtualHub est aussi capable de communiquer automatiquement avec certains services de cloud. Vous pouvez configurer des callbacks qui auront lieu à intervalle régulier. Ainsi vous pouvez publier automatiquement les valeurs des capteurs Yoctopuce branchés à une machine. Pour ce faire, ouvrez la page de configuration du VirtualHub et éditez la version "outgoing callback".
Configuration du VirtualHub
A l'heure actuelle, les services supportés sont:
- Emoncms, un service de visualisation gratuit.
- Valarm, un service de visualisation commercial.
- Azure, le service de cloud de Microsoft.
- Xively, un service de visualisation commercial.
- influxDB, un service de base de données.
- MQTT, un protocole de communication dédié à "l'internet des objets".
- Yocto-API callback, un protocole qui permet de prendre le contrôle en de modules Yoctopuce à travers un filtre NAT, en PHP, Java et Node.js.
- le mode Custom, qui vous permet de forger un GET ou un POST HTTP sur le serveur de votre choix.
Mode service/démon
Pour finir, il est possible de configurer le VirtualHub pour qu'il démarre automatiquement au démarrage de la machine, ce qui vous évitera d'avoir à le lancer manuellement.
Service Windows
Sous Windows, il vous suffit de le lancer une fois avec l'option:
virtualhub.exe -i
et le VirtualHub s'installera à demeure sous la forme d'un service Windows. Vous pouvez inverser l'opération avec
virtualhub.exe -u
Démon Linux
Les scripts pour lancer le VirtualHub en démon se trouvent dans le répertoire startup_script de l'archive Linux du VirtualHub.
Conclusion
Le VirtualHub n'est pas strictement indispensable pour travailler avec des modules Yoctopuce. Si vous écrivez une application qui pilote des modules Yoctopuce en mode USB natif vous n'en aurez pas besoin. Cependant, avoir en permanence un VirtualHub à portée de main peut s'avérer fort pratique :-)