La plupart de nos exemples avec les modules de communication Yoctopuce utilisent leur système de jobs intégré, qui permet d'interroger de manière autonome un capteur externe et d'affecter les valeurs lues aux 10 genericSensors disponibles sur le module. Cela permet en particulier de remonter facilement les mesures sur un serveur VirtualHub for Web. Aujourd'hui, nous allons vous montrer comment procéder dans un cas plus complexe où il n'est pas possible d'utiliser les genericSensors, par exemple parce qu'il y a plus de 10 mesures à capturer, ou parce que les données ne sont pas numériques.
Un scénario typique de cette configuration pourrait être la surveillance à distance d'un automate MODBUS, pour laquelle on désirerait vérifier périodiquement la valeur de nombreux registres. Si l'on disposait d'un accès réseau direct, il suffirait de raccorder un Yocto-RS485-V2 à un YoctoHub-Ethernet et d'utiliser les fonctions d'interrogation MODBUS de la librairie Yoctopuce:
Interrogation MODBUS par un accès réseau direct
Mais si le réseau sur lequel se trouve le système MODBUS n'est pas joignable depuis l'extérieur, il faut définir un job d'interrogation autonome sur le Yocto-RS485-V2 et utiliser par VirtualHub for Web pour remonter les données sur un serveur accessible depuis l'extérieur:
Interrogation MODBUS autonome, et accès distant
La nouveauté de cette semaine est qu'il est désormais possible d'utiliser cette technique non seulement pour obtenir les valeurs affectées aux capteurs virtuels genericSensor1...10, avec la méthode get_currentValue(), mais aussi d'accéder à la totalité du tampon de communication série (16 KB), par exemple avec les méthodes readArray(), readLine() ou même registerSnoopingCallback(). Pour tester cette fonctionnalité, assurez d'avoir mis à jour votre VirtualHub for Web à la version 58549 ou supérieure.
Comme cette fonctionnalité peut entraîner la transmission d'une quantité significative de données à chaque callback HTTP qui pourrait entraîner des coûts supplémentaires sur une transmission cellulaire, elle doit être activée explicitement dans l'interface Web du module, à travers VirtualHub for Web:
Activation de la remontée des données série
Après l'activation de cette fonction, vous pouvez refermer la fenêtre de module, attendre que deux callbacks HTTP se soient produits et ouvrir à nouveau la fenêtre. Premier bénéfice immédiat, vous pouvez vérifier visuellement que la communication se passe bien:
Tampon de communication sur VirtualHub for Web
A partir de là, vous pouvez faire un programme qui surveille la communication série à distance, en se connectant à VirtualHub for Web. Les données n'arriveront naturellement pas de manière instantanée, mais à chaque fois que le YoctoHub fera un callback HTTP. Par contre, comme l'horodatage des messages est stocké dans le tampon de communication, vous pourrez même y avoir accès si vous utilisez la méthode snoopMessages().
A titre d'exemple, voici ce que produit la sortie de notre utilitaire ModbusTool si on le lance en ligne de commande en indiquant l'URL d'un serveur VirtualHub for Web comme interface à surveiller, et qu'on active l'onglet Snooping:
Utilisation distante du ModbusTool
Vous pouvez utiliser le même principe avec un module Yocto-I2C pour récupérer des données de multiples capteurs I2C, ou avec un Yocto-RS232 pour récupérer par exemple des données NMEA venant d'équipements de navigation, ou même de la console série d'un équipement réseau distant par exemple.