8. Utilisation du Yocto-Demo en PHP
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 et Node.JS.
8.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
avec la méthode
et on suppose ensuite qu'il va y rester pendant la fraction de
isOnline()
seconde nécessaire à exécuter les lignes de code suivantes. Ce n'est pas parfait, mais ça peut
suffire dans certains cas. Il faut toutefois être conscient qu'on ne peut pas totalement exclure une
erreur se produisant après le
, qui pourrait faire planter le programme. La seule
isOnline()
manière de l'éviter est d'implémenter une des deux techniques de gestion des erreurs décrites ci-
dessous.
www.yoctopuce.com
41