Tout d'abord je vous propose de travailler dans un répertoire précis de votre serveur web, ça évitera de se mélanger les pinceaux si vous avez déjà un ou plusieurs services web, ou si vous projetez d'en avoir plusieurs. Nous travaillerons donc dans un répertoire appelé "centrale". Ainsi si votre serveur web est accessible à l'adresse 192.168.1.9 alors nous accéderons aux scripts en passant par 192.168.1.9/centrale.

Passons maintenant à la programmation et commençons par un fichier incontournable, celui des paramètres généraux, que nous appellerons config.php. Nous trouverons dans ce fichier l'adresse IP locale de l'IPX à commander, le port utilisé et l'initialisation d'autres variables. <?php
$ipipx = "192.168.1.10";
$port = 9870;
$texte = "";
$reponse = "";
?>
Avec le fichier ci-dessus, on pourra facilement changer ou rajouter des variables sans agir sur l'autre script, que nous allons voir maintenant. Nommons-le index.php, c'est lui que nous appellerons pour piloter l'IPX, via un navigateur lambda, en tapant tout simplement l'adresse http://192.168.1.9/centrale/index.php. Commençons par écrire une page web toute simple, en affichant un peu de texte sans mise en forme. PHP permet de coder directement en HTML, alors profitons-en. :-) <html>
<body>
Commande simplifiée de l'IPX800<br>
Sortie 1 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set010>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set011>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set011p>impulsion</a>
<br>
Sortie 2 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set020>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set021>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set021p>impulsion</a>
<br>
Sortie 3 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set030>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set031>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set031p>impulsion</a>
<br>
Sortie 4 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set040>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set041>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set041p>impulsion</a>
<br>
Sortie 5 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set050>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set051>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set051p>impulsion</a>
<br>
Sortie 6 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set060>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set061>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set061p>impulsion</a>
<br>
Sortie 7 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set070>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set071>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set071p>impulsion</a>
<br>
Sortie 8 : <a href=http://192.168.1.9/centrale/index.php?ordre=Set080>off</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set081>on</a>
<a href=http://192.168.1.9/centrale/index.php?ordre=Set081p>impulsion</a>
<br>
</body>
</html>
On peut maintenant passer à la partie PHP proprement dite. On voit avec les lignes ci-dessus que le principe est simple : nous avons créé, pour chaque sortie, trois liens cliquables, un "off", un "on" et un "impulsion". En fonction de votre choix, un paramètre "ordre" sera envoyé par l'adresse http. Ainsi le script PHP pourra facilement récupérer ce paramètre pour l'exploiter. Mais je vous sens impatient, alors allons-y. <?php
require ( "config.php" );
$M2M = $_GET["ordre"];
La première ligne permet de déclarer le début du script PHP : sans elle, ça ne fonctionne pas, il faut bien différencier dans le script PHP ce qui était du HTML de ce qui devient du langage PHP. La deuxième permet d'intégrer l'autre script, celui qui contient les variables générales. Nous récupérons ensuite le paramètre que nous venons de voir dans les liens HTML de commande : c'est la commande $_GET. Nous appelons la variable M2M. Cette variable, lors du premier chargement du script dans votre navigateur, sera forcément vide : pour éviter de bloquer l'IPX en lui envoyant une commande vide, nous allons traiter ce cas par un test logique : si la commande M2M est vide, alors on affiche un texte d'attente et on ne communique pas avec l'IPX. Dès que la commande ne sera plus vide, alors on pourra dialoguer avec l'IPX par M2M. Le test sera donc le suivant : if ($M2M == "") { $texte .= "En attente d'une 1ere commande" ; } Si la commande n'est pas vide, on peut poursuivre et lancer la communication avec l'IPX. Voici la philosophie : nous glisserons d'abord une ligne permettant de connaître les blocages éventuels lors de la connexion à l'IPX. Nous créerons ensuite le "socket" permettant à PHP d'établir une connexion TCP avec l'IPX pour lui transmettre les ordres M2M définis par GCE Electronics. S'il y a un problème lors de la connexion, un message d'erreur s'affichera pour indiquer ce qui ne va pas. Si tout va bien, nous aurons la réponse de l'IPX telle que définie dans le manuel de GCE (Success si la commande est bien passée). On referme ensuite le socket pour éviter de planter l'IPX en le laissant ouvert indéfiniment. Et voilà, c'est terminé, vous venez de réaliser votre première interface de commande de l'IPX en M2M, et grâce au PHP. La suite du script est donc la suivante : else
{
error_reporting(E_ALL);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket == false) { $texte .= "Echec du socket : " . socket_strerror(socket_last_error()) ; }
$result = socket_connect($socket, $ipipx, $port);
if ($result == false) { $texte .= "Echec de la connexion : " . socket_strerror(socket_last_error($socket)) ; }
socket_write($socket, $M2M, strlen($M2M));
$reponse = socket_read($socket, 64);
echo $reponse;
socket_close($socket);
}
echo $texte;
?>