Suite de l'article de la semaine dernière, voici un petit exemple d'application réel des callbacks HTTP pour piloter des modules Yoctopuce à travers le NAT. Nous utiliserons un Raspberry Pi, parce qu'il ne coûte pas cher et qu'on ne lui demande pas grand chose: juste de faire tourner un VirtualHub, afin de générer les callbacks périodiques.
L'application: commutation à distance
L'application choisie est un contrôle de l'éclairage à distance. Cela peut permettre par exemple de simuler une présence dans votre maison pour écarter les rodeurs, mais vous pouvez bien sûr transposer cet exemple à la commutation à distance de presque n'importe quel appareil chez vous (allumer votre PC à distance, faire préchauffer la machine à café, etc.)
Pour commuter une lampe ou un autre appareil, la méthode classique est bien sûr le Yocto-PowerRelay. Simple et efficace, on peut même le dissimuler directement dans une multiprise:

La version triviale: un relais caché dans la multiprise
Si vous voulez éviter de devoir toucher du 220V, ou si vous aimeriez commander un appareil qui n'est pas directement à portée de câble, il est parfois plus aisé de piloter une télécommande. Pour cet exemple, nous avons acheté en grande surface un jeu de trois prises radio-commandées (pour un peu moins de 50 EUR):

Un jeu de prises radio-commandées acheté en grande surface
Les boutons des télécommandes sont en général faits selon le modèle des claviers Chiclets: une pellicule chargée en carbone, déposée sur les touches en caoutchouc, met en contact deux pistes sur le circuit imprimé de la télécommande lorsque la touche est enfoncée (pour plus de détails, consultez la page de Wikipedia en anglais sur ce sujet). On peut donc simuler une pression sur la touche en fermant les mêmes contacts avec un simple relais. Il n'est pas aisé de souder un fil directement sur les pistes du circuit imprimé sans endommager la télécommande, mais en suivant les pistes et en utilisant un testeur électrique, on peut facilement repérer sur quelle patte du circuit imprimé chaque touche est ramenée, et trouver un point plus facile pour souder un fil.
Intérieur d'une télécommande à boutons "Chiclets"

Télécommande ouverte, avec notre connecteur de contrôle à distance, qui passera inaperçu
Notre station de commande est très simple: elle ne contient que deux Yocto-Relay (chacun comportant une paire de relais), eux-mêmes connectés à un Micro-Hub pour n'utiliser qu'un seul port USB. Il faut juste prendre soin de câbler les relais sur les contacts de sorte à pouvoir reproduire les fermetures de contacts des touches de commande.

Schéma de raccord de la télécommande avec les relais
Le tout est fixé au propre dans une YoctoBox-MaxiRelay-Black, avec une façade légèrement modifiée pour permettre à la télécommande de tenir droite. La station de commande sera connectée au Raspberry Pi par un simple câble USB, de même que notre multiprise USB.

Notre 'Yocto-docking station' pour télécommande de prise
Pour simuler les touches de la télécommande avec l'API Yoctopuce, nous ne devons fermer les contacts que temporairement (impulsion). En fonction du schéma ci-dessus, le code à utiliser pour relier le contact commandant la prise 2 au contact On est le suivant:


Page de configuration d'un interrupteur logique
La seule page qui utilise l'API est la page callback.php qui en plus d'initialiser l'API en mode callback HTTP va avoir deux tâches à effectuer:
Premièrement, on sauve dans un fichier la liste des relais connectés. L'objectif est d'avoir une liste des relais connectés pour que lors de la configuration on n'ait pas besoin de se rappeler du numéro de série du relais qui est connecté.
Deuxièmement, on applique les actions nécessaires sur les relais. Pour cela, on charge le fichier qui contient les actions à executer et on appelle les méthodes pulse ou set_output des relais.