Migrer d'une connexion USB vers une connexion Internet

Migrer d'une connexion USB vers une connexion Internet

Yoctopuce vend des modules USB destinés à fonctionner directement branchés à un port USB de votre ordinateur. Mais il est possible d'exploiter vos modules Yoctopuce à distance à travers une connexion réseau en utilisant par exemple un YoctoHub. L'API Yoctopuce a été conçue pour passer d'un mode à l'autre de manière triviale, à tel point qu'on n'a jamais pensé à expliquer clairement le principe. Un oubli qu'on répare aujourd'hui.


YAPI.RegisterHub()

Tout se passe au niveau de l'appel à YAPI.registerHub qu'on retrouve dans tous les bouts de codes qui gèrent des modules Yoctopuce. Pour utiliser des modules directement connectés en USB, l'appel prend simplement en paramètre la chaîne de caractères "usb". Par exemple, en C# l'appel ressemble au code ci-dessous, mais cet appel est similaire dans tous les autres langages de programmation.

if (YAPI.RegisterHub("usb", ref errmsg) != YAPI.SUCCESS)
   Console.WriteLine("RegisterHub error: " + errmsg);



Notez qu'il est important de s'assurer que l'appel a bien fonctionné en vérifiant la valeur de retour. Si RegisterHub n'a pas fonctionné, le reste de votre code ne marchera pas non plus.

Si vous voulez utiliser des modules branchés un YoctoHub, tout ce que vous avez à faire, c'est remplacer le paramètre "usb" par l'adresse IP du hub. Vous pouvez facilement connaître l'adresse IP d'un hub Yoctopuce en le branchant par USB et en utilisant un VirtualHub. Imaginons que l'adresse en question soit 192.168.1.2, l'appel à faire sera:

if (YAPI.RegisterHub("192.168.1.2", ref errmsg) != YAPI.SUCCESS)
   Console.WriteLine("RegisterHub error: " + errmsg);



Et c'est tout, il n'y a pas besoin que modifier quoi que ce soit d'autre dans le code.

Le cas du VirtualHub

L'adresse IP donnée en paramètre n'a pas forcément besoin d'être celle d'un YoctoHub physique, on peut parfaitement utiliser l'adresse d'une machine faisant tourner un VirtualHub, et ainsi accéder à distance aux modules connectés par USB à cette machine.

On peut même utiliser l'adresse 127.0.0.1 pour accéder aux modules branchés à la machine locale. C'est la méthode recommandée pour contourner la limitation de l'API Yoctopuce qui empêche, sur une même machine, d'avoir plus d'un processus ayant accès aux modules à travers une connexion USB.

Votre code peut parfaitement se connecter à plusieurs hubs en faisant un appel à RegisterHub par hub concerné.

Authentification

Si le Hub est protégé par un mot de passe, il doit être indiqué lors de l'appel à RegisterHub sous la forme d'un couple nom d'utilisateur + mot de passe, par exemple:

if (YAPI.RegisterHub("username:password@192.168.1.2", ref errmsg) != YAPI.SUCCESS)
   Console.WriteLine("RegisterHub error: " + errmsg);



Notez que le nom d'utilisateur est soit "user" pour un accès en lecture seule ou "admin" pour un accès en lecture et écriture.


Le cas des YoctoHub GSM

Les YoctoHub GSM sont un cas particulier parce qu'il n'est généralement pas possible de s'y connecter directement, leur adresse IP n'est pas publique, elle est cachée derrière un NAT. Donc, même si vous connaissez l'adresse IP de votre hub GSM, il y a peu de chances que vous arriviez à vous y connecter directement.

Mais il y a une astuce, vous pouvez installer sur un serveur web public un VirtualHub (for web) qui sera capable de piloter le hub GSM et auquel votre code pourra se connecter à l'aide d'un appel à RegisterHub. Evidement, ce sera loin d'être aussi réactif qu'une connexion directe, mais ça marchera.

Conclusion

Un module USB Yoctopuce peut être aussi bien piloté par une connexion USB directe que par une connexion réseau, passer d'un mode à l'autre ne nécessite que la modification d'un paramètre d'appel.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.