Pour ceux que ça intéresse, j’ai écrit un petit script en PHP permettant de créer un client TCP, et donc de communiquer avec la carte IPX800 en M2M.
Je l’ai créé car mon PDA (HP Ipaq avec Internet Explorer + Windows Mobile) et mon téléphone portable (Nokia sous Symbian) sont incompatibles AJAX : donc impossible d’utiliser le site embarqué de l’IPX ou encore le « serveur web » de Thomas disponible sur ce forum. Bref, impossible de commander une sortie, lire un compteur ou l’état d’une entrée. De plus, j’ai constaté que, même avec des navigateurs récents et tout à fait compatibles, les commandes ne sont pas très rapides, y’a toujours un petit temps de réaction (du genre 1/2 seconde, des fois plus).
Bref, en protocole M2M, c’est instantané, quand on envoie un ordre, ça réagit direct ! De plus, la programmation PHP permet tous les scénarios qu’on veut, par exemple moi qui suis en Tempo chez EDF, j’ai déjà un script qui me récupère la couleur du jour, je peux donc programmer certaines sorties en fonction de cette couleur grâce au client TCP.
Heeeuuuu, avec le script c’est mieux. )
[code]<?php
/****************************************************************************
- Ouverture d’un socket TCP en PHP pour communiquer avec une carte IPX800 *
- Ces quelques lignes vous permettront d’avoir un client TCP capable *
- d’envoyer des ordres du protocole M2M à un carte GCE IPX800, grâce *
- au PHP. Moins lourd, plus rapide et plus compatible que l’AJAX. *
-
*
- Script libre de droit. Merci de ne pas modifier cet en-tête et de ne *
- pas retirer les commentaires. *
- Créé par Lionel FÉVRIER - LionelF sur le forum de GCE Electronics *
****************************************************************************/
// Pour avoir un retour si qqch ne va pas dans le script
error_reporting(E_ALL);
// Identifiants du client : c’est ici que vous rentrez l’adresse de votre carte IPX800 sur votre réseau
// Vous pouvez également modifier le port TCP prévu par défaut, si vous l’avez changé
$address = « 10.43.207.8 »;
$port = 9870;
// Ouverture du socket TCP
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket == false) echo "La création du socket a échoué : " . socket_strerror(socket_last_error());
// Lancement de la connexion au serveur TCP de la carte IPX800
$text = « Tentative de connexion à $address par le port $port…
»;
$result = socket_connect($socket, $address, $port);
if ($result == false)
{ $text .= "La connexion a échoué : " . socket_strerror(socket_last_error($socket)) . «
»; }
else
{ $text .= « Connexion ok pour $address.
»; }
// C’est ici que l’on indique la commande M2M pour envoyer au serveur, lire compteur 1 dans cet exemple
$M2M = « GetCount1 »;
// On envoie la commande au serveur
$text .= « Envoi $M2M à la carte IPX800
»;
socket_write($socket, $M2M, strlen($M2M));
// On lit alors la réponse du serveur
$input = socket_read($socket, 64);
$text .= « Réponse : $input
»;
// On clôture le socket pour éviter une connexion permanente
socket_close($socket);
$text .= « Connexion terminée. »;
// On affiche le récapitulatif du script, si tout va bien…
echo $text;
?>[/code]
Bonjour Lionel, et merci d’avoir partager ton code. J’ai tester pour la première fois le client tcp et je suis surpris de la rapidité d’exécution des commandes. Cependant, vu mon niveau NUL en php…j’aimerais savoir comment faire pour avoir un bouton…qui envoie la commande désirée uniquement sur Click… En fait, j’arrive pas a comprendre comment appeler le script sur Click d’un bouton. J’ai penser de créer plusieurs variables…et juste changer la variable lors qu’on Click sur un bouton…mais évidement je fait erreur…
J’espère ne pas vous soûler avec mes questions a la con…je sait…il faudrait que j’apprend déjà un peut plus de php…etc.
Merci.
En HTML ça suffira, il faut passer par un formulaire de ce type.
[code]";
Dans le script m2m.php il faudra juste un $M2M= $_POST["M2M"];
pour récupérer la commande Set11 et ainsi l’envoyer par TCP à l’IPX800.
Merci Lionel. Grace a toi, j’ai réussi a avancer, merci pour ton partage.
J’ai recoder ton truc un peu plus proprement.
[code]<?php
/*
-
IPX800M2M.php
-
Copyright 2012 freko28
-
This program is free software; you can redistribute it and/or modify
-
it under the terms of the GNU General Public License as published by
-
the Free Software Foundation; either version 2 of the License, or
-
(at your option) any later version.
*/
error_reporting(E_ALL);
function sendToIPX800($ip,$port,$cmd)
{
$fp = fsockopen($ip,$port);
if (!$fp) return False;
if (!fwrite($fp,$msg)) return False;
$out = « »;
while (!feof($fp)) $out.=fread($fp,64);
fclose($fp);
return $out;
}
$ip = « 10.43.207.8 »;
$port = 9870;
$cmd = $_POST[« M2M »];
if (is_string($cmd)) {
echo « Envoi $cmd à la carte IPX800 (ip = $ip, port = $port)
»;
$result = sendToIPX800($ip,$port,$cmd);
echo ($result) ? « Réponse : $result
» : « La connexion a échoué
»;
} else {
echo « Cmd non transmise!
»;
}
?>[/code]
Apres dans une deuxième page HTML tu met un formulaire du style :
[code]
[/code]proprement ça aurait été ça non?
echo "Envoi $cmd à la carte IPX800 (ip = $ip, port = $port)<br>";
en
echo 'Envoi' . $cmd . 'à la carte IPX800 (ip = ' . $ip . ', port = ' . $port . ')<br>';
Quand tu utilises notepad++ par exple, les variables ressortent d’une autre couleur dans la concaténation avec ’ alors qu’avec les guillements non
Bonjour.
En utilisant le script php de Lionel, je suis arrivée a faire un site web pour piloter la IPX800 V2 en M2M.
Le site il est hébergé sur un domaine chez OVH, car chez FREE il était impossible d’utiliser le Socket.
Si quelqu’un est interesé, voici deux impression écran, pour plus de détails.
A nouveau, merci Lionel pour ton aide.
Merci pour ce partage et ce serait encore mieux de partager le code de ton exemple de page web. Il servirait pour les moins avertis à comprendre le fonctionnement.
Tu peux même faire un petit Zip et l’uploader sur le forum
Pascal
…BONJOUR…
Voici l’ensemble de fichiers pour l’exemple que j’ai partager.
Je suis conscient que il y a plein d’erreurs, mais je compte sur vous pour corriger ça. Niveau fonctionnalité, le menu de gauche c’est que du décor pour l’instant…car j’ai pas de camera ip pour travailler dessous.
Je suis autodidacte, et pour un novice en php, html…etc…je me débrouille comme je peut…merci a vous de m’en apprendre plus et de corriger mes erreurs.
ciprian.rar (49.2 KB)
Merci pour ce partage de code qui je l’espère donnera des idées à certains qui à leur tour nous feront part de leur création.
Peu importe si cela comporte des erreurs, chacun fait avec ses compétences
Pascal
J’aimerais quand même corriger mes erreurs, donc si quelqu’un veut bien jeter un coup d’oeil…merci d’avance.
Re… Je voudrais savoir comment intégrer la vue d’une camera ip axis dans mon site. Si un de vous l’as déjà fait…merci d’avance d’éclairer ma lanterne.
Concernant les erreurs dans mon exemple…avez vous trouver des astuces pour simplifier mon code?
J’avoue que je n’ai pas regardé ton code… Si j’ai le temps je m’y penche.
Par les cams, il faut regarder la doc, il me semble qu’il faut passer par un iframe, permettant d’afficher la vue dans n’importe quelle page web HTML classique.
Bonjour.
Aucun retour des personnes ayant essayer le code que j’ai partager?
Je comptais dessous pour corriger mes conneries…
En tout cas…je me penche sur une application android …en espérant que j’aurais la capacité d’en apprendre au plus vite…car seul , en autodidacte…c’est pas évident. Si quelqu’un a déjà travailler sur un projet similaire , merci de me conseiller.
Salut, pour répondre a ta question, voici le code pour intégrer la vue d’une camera AXIS :
Ce serait pas mal si tu pouvez l’intégrer dans ton app.
@+.
Voici un parti de ma page HTML, j’aimerais bien avoir la même chose mais avec ton application par exemple car avec le M2M c’est bien mieux !
Si je slide vers la bas j’ai d’autre contrôle pour mes volet etc…
Ça c’est ton site web que tu utilise depuis ton smartphone?
Oui exactement, et en fait j’aimerais avoir le même résultat visuel mais avec une application pour avoir le M2M et surtout pour pas ne pas avoir les contraintes du navigateur WEB
En 3G les commandes ne passent pas a tout les coups, il y a des chargement multiple de la page car quand tu ferme le navigateur beh il ferme pas la page donc quand tu relance le
raccourci ça ouvre une autre page mais l’ancienne est toujours active en arriéré plan du coup la bande passante est doublé, il faut donc fermer la page précédente, etc…).