Nouvelle API en ligne de commande

Nouvelle API en ligne de commande

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:

C:\>YModule inventory
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:

C:\>YRelay inventory
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:

C:\>YRelay RELAYHI1-00055.relay1 set_state B
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:

C:\>YRelay pompe1 set_state B
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:

C:\>YTemperature TMPSENS1-05DE0.temperature get_currentvalue
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.

C:\>YTemperature any get_currentvalue
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:

C:\>YModule all set_beacon ON
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.

C:\>YModule -r 192.168.1.3 inventory
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.

Commenter 2 commentaires Retour au blog



1 - francknos Jeudi 10 janvier 2019 20H22

Bonjour, Est il possible d'utiliser les cmd avec un mbp associé au VirtualHub ou dans mon cas un YWireless
user: admin
password: toto

Quelque chose du style

YRelay -r 192.168.0.0 [admin:toto] 220V.relay1 set_state 1

Car j'ai ajouté un mdp et la commande :
YRelay -r 192.168.0.0 220V.relay1 set_state 1

Et cela ne fonctionne pas.
Si cela est possible quel est la syntaxe ?

Merci

2 - francknos Jeudi 10 janvier 2019 20H35

Autant pour moi, en essayant plusieurs syntaxe, j'ai trouvé mais au début cela ne fonctionnait pas car j'avais mis un @ dans le password.
La syntaxe a suivre est la suivante:
YRelay -r admin:toto@192.168.0.0 220V.relay1 set_state 1

Yoctopuce, get your stuff connected.