seconde est plus sûre que la première car elle permet de ne pas transférer le mot de passe sur le
réseau.
Utilisation
Du point de vue du programmeur, la seule différence se trouve au niveau de l'appel à la fonction
yRegisterHub; au lieu d'utiliser une adresse IP, il faut utiliser la chaîne callback (ou http://callback,
qui est équivalent).
include("yocto_api.php");
yRegisterHub("callback");
La suite du code reste strictement identique. Sur l'interface du VirtualHub, il y a en bas de la fenêtre
de configuration de l'API par callback HTTP un bouton qui permet de tester l'appel au script PHP.
Il est à noter que le script PHP qui contrôle les modules à distance via l'API par callback HTTP ne
peut être appelé que par le VirtualHub. En effet, il a besoin des informations postées par le
VirtualHub pour fonctionner. Pour coder un site Web qui contrôle des modules Yoctopuce de
manière interactive, il faudra créer une interface utilisateur qui stockera dans un fichier ou une base
de données les actions à effectuer sur les modules Yoctopuce. Ces actions seront ensuite lues puis
exécutés par le script de contrôle.
Problèmes courants
Pour que l'API par callback HTTP fonctionne, l'option de PHP allow_url_fopen doit être activée.
Certains hébergeurs de site web ne l'activent pas par défaut. Le problème se manifeste alors avec
l'erreur suivante:
error: URL file-access is disabled in the server configuration
Pour activer cette option, il suffit de créer dans le même répertoire que le script PHP de contrôle un
fichier .htaccess contenant la ligne suivante:
php_flag "allow_url_fopen" "On"
Selon la politique de sécurité de l'hébergeur, il n'est parfois pas possible d'autoriser cette option à la
racine du site web, où même d'installer des scripts PHP recevant des données par un POST HTTP.
Dans ce cas il suffit de placer le script PHP dans un sous-répertoire.
Limitations
Cette méthode de fonctionnement qui permet de passer les filtres NAT à moindre frais a malgré tout
un prix. Les communications étant initiées par le Virtual Hub à intervalle plus ou moins régulier, le
temps de réaction à un événement est nettement plus grand que si les modules Yoctopuce étaient
pilotés en direct. Vous pouvez configurer le temps de réaction dans la fenêtre ad-hoc du Virtual Hub,
mais il sera nécessairement de quelques secondes dans le meilleur des cas.
Le mode Yocto-API par callback HTTP n'est pour l'instant disponible qu'en PHP, EcmaScript
(Node.JS) et Java.
10.5. Gestion des erreurs
Lorsque vous implémentez un programme qui doit interagir avec des modules USB, vous ne pouvez
pas faire abstraction de la gestion des erreurs. Il y aura forcément une occasion où un utilisateur
aura débranché le périphérique, soit avant de lancer le programme, soit même en pleine opération.
La librairie Yoctopuce est prévue pour vous aider à supporter ce genre de comportements, mais
votre code doit néanmoins être fait pour se comporter au mieux pour interpréter les erreurs signalées
par la librairie.
La manière la plus simple de contourner le problème est celle que nous avons employé pour les
petits exemples précédents de ce chapitre: avant d'accéder à un module, on vérifie qu'il est en ligne
www.yoctopuce.com
10. Utilisation du Yocto-Serial en PHP
73