Jusqu'à présent, lorsque l'on désirait ponctuellement tester un module Yoctopuce, modifier un paramètre, ou encore lire la valeur d'un capteur, il fallait soit lancer un VirtualHub, soit écrire soi-même un petit programme. Dorénavant, il existe une solution plus rapide, plus simple et plus efficace: l'API en ligne de commande...
L'API en ligne de commande se présente sous la forme d'un ensemble d'exécutables pré-compilés: un par type de fonctionnalités disponibles sur les modules USB Yoctopuce, plus un pour la gestion des modules à un niveau plus global. Comme d'habitude, nul besoin de driver ni même de programme d'installation, il vous suffit de télécharger la librairie, de copier les exécutables correspondant à votre OS/architecture où bon vous semble, et vous pouvez commencer à jouer travailler.
Plutôt que de se lancer dans une description fastidieuse de toutes les possibilités qu'offre cette API, abordons quelques exemples concrets. Ces exemples sont donnés depuis un prompt Windows, mais ils marchent exactement de la même façon sous Mac OS X et Linux, tant Intel que ARM.
Inventaire
La première chose que vous allez vouloir faire, c'est probablement de procéder à l'inventaire de vos modules. Rien de plus facile:
YCO2MK01-05BB9 (My_co2_sensor)
RELAYHI1-00055 (Pompes_A)
RELAYLO1-02557 (Pompes_B)
TMPSENS1-05DE0
YBUTTON1-05ADD
C:\>
Cette commande a eu pour effet d'afficher la liste des numéros de série et les noms logiques des modules connectés. On remarque qu'on a cinq modules branchés: un Yocto-CO2, un Yocto-PowerRelay, un Yocto-Relay, un Yocto-Temperature et enfin un Yocto-Knob.
Et maintenant, si on désire la liste des fonctions "relay" disponibles sur l'ensemble des modules connectés, facile aussi:
RELAYHI1-00055.relay1 (Pompes_A.pompe1)
RELAYLO1-02557.relay2 (Pompes_B.relay2)
RELAYLO1-02557.relay1 (Pompes_B.relay1)
C:\>
On obtient une liste qui comprend le relais du Yocto PowerRelay et les deux relais du Yocto-Relay.
Contrôle des fonctions
Bien, maintenant comment faire commuter un de ces relais? trivial:
OK: Pompes_A.pompe1.set_state = 1
C:\>
Notez qu'ici on a utilisé le nom physique du relais, mais son nom logique aurait tout aussi bien fait l'affaire:
OK: Pompes_A.pompe1.set_state = 1
C:\>
De manière similaire on peut connaître la valeur d'un capteur en un clin d'oeil:
OK: TMPSENS1-05DE0.temperature.get_currentValue = 24.1
C:\>
Utilisation des alias "any" et "all"
L'API permet aussi de travailler sur des modules sans avoir à forcément connaître leur nom. Par exemple, si on utilise any en lieu et place du nom de fonction, la commande va être exécutée sur la première occurrence trouvée.
OK: TMPSENS1-05DE0.temperature.get_currentValue = 24.1
C:\>
Inversement, vous pouvez vous adresser à tout le monde à la fois: voici comment faire un sapin de Noël en une ligne:
OK: My_co2_sensor.set_beacon = 1
OK: Pompes_A.set_beacon = 1
OK: Pompes_B.set_beacon = 1
OK: TMPSENS1-05DE0.set_beacon = 1
OK: YBUTTON1-05ADD.set_beacon = 1
C:\>
Contrôle à distance
Comme les API normales, l'API en ligne de commande peut contrôler des modules à distance. Il suffit de lui donner l'adresse d'une machine où tourne un VirtualHub.
VIRTHUB0-7d1a86fb09
YCO2MK01-05BB9 (My_co2_sensor)
RELAYHI1-00055 (Pompes_A)
RELAYLO1-02557 (Pompes_B)
TMPSENS1-05DE0
YBUTTON1-05ADD
C:\>
Aide intégrée
Si vous vous ne vous rappelez plus comment s'utilise l'API, inutile d'imprimer une doc sur des arbres morts: l'API dispose de sa propre aide intégrée: utilisez simplement le paramètre /help, par exemple YModule /help ou encore YModule set_beacon /help.
Conclusion
Les habitués des API Yoctopuce auront remarqué que l'API en ligne de commande mappe de manière assez fidèle les appels qu'ils ont l'habitude de faire dans leur langage de programmation favori. En fait, à l'exception de la gestion des callbacks, la quasi totalité des fonctions disponibles dans les API classiques sont disponibles dans l'API en ligne de commande. La liste exhaustive des appels supportés est disponible ici.
Évidement, comme pour toutes nos API, les sources de l'API en ligne de commande sont disponibles gratuitement.
Si, à l'usage, vous vous rendez compte qu'il vous manque quelque chose dans cette API, n'hésitez pas à contacter le support Yoctopuce, il est possible qu'il puisse faire quelque chose pour vous.