Une des caractéristiques remarquables des modules Yoctopuce, c'est qu'ils peuvent être pilotés depuis un serveur grâce à l' API HTTP callback qui permet de contourner les filtres NAT. Évidement, ce n'est vraiment intéressant que si on dispose d'un serveur PHP, Java ou ecmascript. Et bien figurez-vous que cette semaine, on a testé quelques hébergements gratuits PHP, et on vous montre en détails comment les configurer...
On a testé une petite trentaine de sites prétendant offrir un hébergement PHP gratuit. On n'en a finalement retenu que deux. L'expérience a montré que la grande majorité de ces sites gratuits ne marche pas toujours correctement, certains ne fonctionnent même pas du tout.
Le test a consisté, entre autres, à faire tourner le script ci-dessous sur chacun des serveurs qu'on a essayé. Le principe est simple: le script détecte s'il a affaire à un callback HTTP et dans ce cas fait un inventaire des modules connectés puis le sauve dans le répertoire data. Dans le cas d'une connexion normale, le script restitue la liste en question.
include("yocto_api.php");
define ("DATAFILE",'data/inventory.html');
if (YtestHub("callback",100,$errmsg)==YAPI_SUCCESS)
{ if (YRegisterHub("callback",$errmsg)!=YAPI_SUCCESS)
{die('YRegisterHub failed :'.$errsmg);}
$data = sprintf("<table><tr><td>Last call: %s</td></tr>",date('Y-m-d H:i:s'));
$data .= "<tr><td>Serial</td><td>Model</td><td>Logical name</td></tr>";
$m = YfirstModule();
while ($m!=null)
{ $data.= sprintf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>",
$m->get_serialNumber(),
$m->get_productName(),
$m->get_logicalName());
$m=$m->nextModule();
}
$data.='</table>';
if (file_put_contents(DATAFILE,$data)===false)
die("can't write ".DATAFILE);
die('done.');
}
?>
<HTML><HEAD></HEAD><BODY>
<?php
if (file_exists(DATAFILE))
{ Print("Device inventory:<br>");
printf(file_get_contents(DATAFILE));
} else Print("no callback done so far");
?>
</BODY></HTML>
</php>
L'installation est des plus simple, il suffit de sauver ce script ainsi que le fichier yocto_api.php à la racine du site web et de créer à la main un répertoire data. Vous trouverez ces deux fichiers ici. Il faut aussi s'assurer que le script aura les droits d'écriture dans le répertoire data, mais c'est le cas par défaut sur tous les serveurs qu'on a essayé.
Voyons maintenant en détails comment créer un serveur PHP sur les deux sites d'hébergement gratuits qu'on a trouvé. Notez qu'il s'agit de sites actifs en octobre 2016, si vous lisez cet article des années après sa parution, rien de garanti qu'ils marchent toujours.
AWARDSPACE
Création du site web
Pour créer un site web sur AWARDSPACE, rendons-nous sur www.awardspace.com qui, au moment de la rédaction de cet article, ressemble à ça:
La page d'accueil de AWARDSPACE, cliquez en bas à droite
- Cliquons simplement en bas de la colonne Free web hosting tout à droite.
- On va ensuite nous proposer plein d'options, ne touchons à rien et cliquons sur continue
La liste des options: ne touchez rien! - On va alors nous demander de remplir un formulaire avec nom, adresse, email de contact, etc... On va aussi nous demander de choisir un mot de passe. Attention, l'adresse email et le mot de passe seront utiles plus tard.
Le formulaire d'inscription proprement dit
Une fois tous les champs remplis, y compris le captcha, cliquons allègrement sur continue. - Si tout se passe bien, on obtient une page nous informant que notre compte a été créé, et on a reçu deux emails sur l'adresse qu'on a donné dans le formulaire d'inscription. Un premier contenant un lien à utiliser pour confimer/activer notre compte AWARDSPACE et un second contenant toutes les informations dont on pourrait avoir besoin pour gérer notre site web.
La page de confirmation - En activant notre compte, on atterrit sur la console de notre serveur. Cette console est aussi accessible directement via l'adresse www.awardspace.com/login. Notez que nous aurons besoin de l'adresse email et du mot de passe qu'on a défini lors de notre inscription pour nous connecter à cette console.
La partie principale de la console - Une fois sur la console, la première chose à faire consiste à se créer un nom de domaine, cliquons sur domain manager dans la section Websitemanager, choisissons create a free subdomain et choisissons un nom et un sous domaine. En l'occurrence on a choisi yoctopucetest et atwebpages.com, l'adresse de notre site sera donc yoctopucetest.atwebpages.com. finalement cliquons sur create.
Création du sous domaine
Si le nom qu'on a choisi n'existe pas déjà, le système devrait nous confirmer la création du sous-domaine. On y est presque. - Il reste maintenant à placer le script PHP sur le serveur. Dans la console, cliquons sur file manager dans la section Web site manager. Assez logiquement, on obtient un gestionnaire de fichiers.
Le gestionnaire de fichierLe but est de télécharger les fichiers php de notre test dans le répertoire correspondant à notre sous domaine, c'est-à-dire yoctopucetest.atwebpage.com. On entre donc dans ce répertoire en double-cliquant dessus. Ensuite, on clique sur le bouton upload au dessus de la liste de fichiers, ce qui ouvre une fenêtre dans laquelle il suffit de glisser-déposer les deux fichiers index.php et yocto_api.php et de cliquer sur upload.
Le téléchargement de fichiers - Enfin il faut créer le répertoire data: on clique simplement sur create juste à côté de upload, ce qui ouvre la fenêtre de création. On entre simplement data sur la première ligne et on clique sur create.
Création du répertoire dataVérifions une dernière fois que les fichiers PHP et le répertoire data ont bien été créés dans le répertoire correspondant au nom de domaine en non pas à la racine avant de décider que notre site est bien prêt. Ce qui peut se tester en essayant l'URL de notre site: http://yoctopucetest.atwebpages.com/index.php:
Notre site est UP
Le serveur répond par une page qui indique qu'aucun callback n'a eu lieu, ce qui n'est pas vraiment étonnant puisqu'on n'a pas encore configuré notre hub pour faire des callbacks.
Configuration du Hub Yoctopuce
Pour configurer les callbacks HTTP d'un VirtualHub ou d'un YoctoHub, on se connecte avec un browser web sur le hub en question et on ouvre la fenêtre de configuration qui correspond au hub. Puis, dans la section outgoing callbacks, on clique sur edit.
Configuration d'un hub Yoctopuce
Puis on défini un callback de type "Yocto-API callback" qui pointe sur le site web qu'on vient de créer, à savoir yoctopucetest.atwebpages.com/index.php.
Configuration d'un callback HTTP
Enfin on clique sur le bouton test. Si tout se passe bien, on obtient un fenêtre qui affiche "done", dans le cas contraire on devrait obtenir un message d'erreur décrivant le problème.
Résultat du test
Notons que le serveur peut éventuellement se plaindre à propos de l'initialisation de $HTTP_RAW_POST_DATA, mais ce n'est pas grave, ça n'empêche pas le système de marcher. Une fois le test passé avec succès, il suffit de sauver la configuration du hub et si on retourne sur l'URL de notre site Web on obtient cette fois la liste des modules connectés lors du callback de test, ça marche! on a réussi à monter un serveur PHP capable de gérer l'API Yoctopuce.
Ça marche!
Biz.nf
Pour créér une site web sur le site Biz.nf, rendons-nous à l'adresse www.biz.nf
La page d'accueil de biz.nf
Et cliquons sur le gros bouton rouge Sign up. Même si le template est différent, l'interface est exactement la même celle de AWARDSPACE, on nous demande exactement les mêmes renseignements dans le même ordre.
L'interface est la même que AWARDSPACE
Il suffit donc de suivre le même chemin que pour AWARDSPACE,
- Remplir du formulaire d'inscription
- Utiliser le lien d'activation qu'on trouve dans l'email de confirmation
- Créer un sous domaine dans la console
- Uploader les fichiers index.php et yocto_api.php dans le répertoire correspondant au sous-domaine choisi
- Créer le sous-répertoire data
- Configurer le callback HTTP du hub Yoctopuce
Et voilà. :-)
Le problème de la gratuité
A l'origine, on avait retenu trois sites d'hébergement gratuits. Le troisième qu'on comptait vous présenter marchait plutôt pas mal au moment où on a commencé les tests. Mais quand, deux semaines plus tard, on a voulu refaire la manip de création pour faire des captures d'écran, la plupart des fonctionnalités liées à la gestion des fichiers ne marchaient plus. A regret, on a donc décidé de ne pas présenter ce site. Ce petit problème illustre bien les aléas d'un hébergement gratuit, rien ne vous garantit que votre serveur sera raisonnablement stable.
Le cas cPANEL
Une proportion importante des sites qu'on a testé sont basés sur cPanel. Et on a constaté un comportement pour le moins curieux avec certains des hébergements utilisant cette technologie. La création du site se passe sans problème, mais lors du premier contact avec le site créé, au lieu de servir directement la page web demandée, le serveur envoie un script JavaScript qui crée un cookie et provoque un rechargement de la page avec le paramètre i=1 sur l'URL. Ce qui permet d'obtenir la vraie page. On ne sait pas exactement à quoi sert ce cookie. Ce qui est sûr, c'est que les pages web servies par ce genre de serveur ne peuvent être exploitées que depuis un browser web capable de gérer les cookies et de faire tourner du JavaScript. En d'autres termes, ça ne peut pas marcher avec des hubs Yoctopuce, et ça ne marchera probablement pas avec n'importe quel objet connecté.
Conclusion
Il est donc tout à fait possible de se monter un serveur PHP public sans débourser un centime. C'est très pratique pour faire à moindre frais quelques tests sans engagement. Cependant, si vous décidez de commencer à faire des choses un peu sérieuses/productives avec un serveur PHP, on ne saurait que trop vous recommander de vous trouver un hébergeur pas trop loin de chez vous et de mettre la main au porte-monnaie. Ainsi, en cas de problème, vous pouvez ainsi espérer avoir un support digne de ce nom. Un hébergement de base n'est pas si cher: de l'ordre de 100 euros par an. Après tout, il y a des gens qui travaillent pour maintenir ces serveurs, et tout travail mérite salaire.