Pages: [1] 2 3 ... 5   Go Down
Author Topic: [résolu]Envoyer une requêt GET avec arduino vers une page php pour envois de mai  (Read 6083 times)
0 Members and 1 Guest are viewing this topic.
Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
 Apres avoir chercher sur le web je n'arrive toujours pas a trouver ma réponse!

voici mon problème (je tien que mon niveau de programmation reste très faible et que du coup je pige pas toujours les explication que l'on peut trouver sur le web):

je voudrai depuis mon module arduino équiper de son shield ethernet envoyer une requête POST ou GET vers une page appeler alerte.php
situer sur mon site héberger chez free

la dite page .php ce chargera par la suite d'analyser la requête envoyer et de m'envoyer un mail contenant le message qui est fonction de la requête!

coté PHP pas de souci j'ai tester mon code est sa marche si je me connecte a cette page !

Mais alors je ne vois pas du tout comment faire pour que mon arduino se connecte a cette page!

la réponse a une grande importance car elle me permettra(moyennant modification du code bien sur)  d'envoyer des donnée par la suite sur une base de donnée
voila la question est peut être bette mais je bloque dessus!
merci


« Last Edit: July 06, 2012, 03:52:39 am by Heloderma-kris » Logged


France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Pour faire des requêtes POST ou GET en HTTP tu doit envoyer une série de commande textuelle puis tes données (encodé au format URI).

Le protocole HTTP en détails :
http://www.commentcamarche.net/contents/internet/http.php3
http://www.siteduzero.com/tutoriel-3-35613-les-requetes-http.html

Exemple simple de GET :
http://arduino.cc/en/Tutorial/WebClient

Exemple simple de PUT (même méthodologie que pour un POST) :
http://arduino.cc/en/Tutorial/CosmClient
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci skywodd,
mais cela je l'avais deja vue alors a moins que je ne comprene pas tout dans ce que tu ma envoyer comme lien c'est toujours pour ce conecter a l'arduino depuit le web et repondre non?

je cherche plutot un truc pour faire un envoi automatique d'une requete sans etre conecter a l'arduino, bref que l'arduino "dans sa grande sages" puise tout seul lors d'une condition type
Code:
if(a-B>0){
digitalwrite(led,HIGH);
arduino.envoi( 'vers adresse http://monsite.free.fr/alerte.php' method='POST' name='alerte' value='1');
};

bref un truc du genre sacant que j'utilise webserver.h !
je me dit que sa doit etre posible non?

car pour le moment j'arive a comunique depuis une page web sans souci et l'arduino me repon bien voir mon interface si dessous:

merci
Logged


Ouest
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dans l'exemple http://arduino.cc/en/Tutorial/WebClient que skywodd a posté, l'arduino fait justement cela (en GET).
Au démarrage il appelle l'url http://173.194.33.10/search?q=arduino  (dans setup()), puis il attend la réponse du serveur (dans loop()) et l'affiche. Ensuite il ne fait plus rien.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bref un truc du genre sacant que j'utilise webserver.h !
je me dit que sa doit etre posible non?
Webserver (enfin webduino) ne te sera d'aucune utilité ici.
C'est à toi de mettre en forme et envoyer la requéte HTTP vers le serveur.

-> Voir l'exemple Webclient comme l'as indiqué olebrun
C'est l'exemple le plus simple de requête HTTP : connexion et envoi dans setup(), lecture du résultat dans loop().
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

je croi mieu comprendre enfin j'esper smiley-roll-blue

dans l'idée lorsque ma condition est réalisé je doit initialiser une communication avec le server de free atendre qu'il reponde et ensuite envoyer la requette ?

ou alors une simple requete comme sa fonctionerai? (sans rien faire d'autre)
Code:
if (A-B<0) {
    lient.println("GET /http://monsite.free.fr/alerte.php HTTP/1.0");
    client.println();
  }

ou un simple
Code:
P(alerte)="GET /http://monsite.free.fr/alerte.php HTTP/1.0";
if (A-B<0) {server.printP(alerte); }

je presise que la page PHP sert a envoyer un mail des que l'on cherche a ouvrire la page!

si j'ai toujours pas compris voici l'explication complète de se que je cherche a faire:

mon module arduino mesure la température et vérifie qu'il ne fait pas trop chaud, si effectivement il fait trop chaud, il ouvre(je cherche a avoir le même effet que lorsque l'on tape l'adresse de la page et que l'on lance la recherche  dans un navigateur) la page alerte .PHP situer sur le server free, là, la page ne renvoi rien vers arduino mais le code PHP quel contient m'envois un mail  alors que je suis en vacance sur la plage a faire des pâté de sable! moi tout de suite je me connecte a ma page web qui me sert d'interface et je coupe le chauffage!

désoler si j'insiste mais j'ai l’impression de pas m'expliqué correctement et du coût de ne pas avoir la réponse que j'attend smiley-cry

enfin merci de chercher à m'aider!!

« Last Edit: June 28, 2012, 07:59:50 am by Heloderma-kris » Logged


Ouest
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je n'utilise pas le shield officiel et sa librairie mais j'imagine que ça ressemblera à cela :

Code:
if (A-B<0) {
    if (client.connect(server, 80)) {    // avec serveur  : char server[] = "monsite.free.fr";
        Serial.println("connected");
       // Make a HTTP request:
       client.println("GET /alerte.php HTTP/1.0");
       client.println();
  }
  else {
       // if you didn't get a connection to the server:
       Serial.println("connection failed");
    }
  }
Logged

Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci olebrun
 ce code que tu ma donné semble fonctioner
Code:
/////////////////////////////////////////////////////////////////////////
 char server[] = "monsite.free.fr";
  if (client.connect(server, 80)==0) {
    Serial.println("conexion avec le server etabli");
    // faire une requete http:
    client.println("GET/arduino/alertetemp2.php HTTP/1.0");
    client.println();
  }
  else {
    // s'il n'y a pas de conection server:
    Serial.println("echec de la conection");
  }
///////////////////////////////////////

en serial j'ai bien conexion avec le server etabli, mais je ne reçois pas mon mail je vous joint le code php de la page

je pense qu'il doit me manquer une commande ou une étape (bref je patoge)

Code:
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
     
// Le message
     
$message "alerte temperature/http://xx.xxx.xxx.xxx:xxx/control";

     
// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
     
$message wordwrap($message70);

     
// Envoi du mail
     
mail('xxxxxx.xxxxx@gmail.com''alerte'$message);
?>

</body>
</html>

voila donc pour rappelle dans chrome si j'apelle la page PHP je reçoi bien le mail
donc je me dit que sa doit etre la forme de ma requette qui n'est pas bonne
ou est ce qu'il faut une autre etape?

ps: en journée je peut pas tester mon code du boulo ce qui ralentit le developement de mon programe en tout cas merci a vous deux pour votre aide !!
Logged


Ouest
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il manque un espace apres le "GET", vérifie si c'est pareil dans ton sketch.
Logged

Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

oui effectivement dans mon sketch c'est pareille , a ba zut alors si sa vient de ça je suis dégouté de ne pas pouvoir tester de suite  smiley-mad
bon ce soir quand je rentre je teste !
merci pour tout!
je vous tien au jus!
Logged


Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bon même après modification du code (ajout d'un espace entre GET /arduino) mais sa ne marche toujours pas .

quel est la requête qu'envois chrome lorsque l'on cherche a ouvrir une page PHP est ce que c'est un simple GET /XXXXX/XXXX
ou est ce que c'est autre chose !
Logged


Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai rééssayer avec ce code
Code:
/////////////////////////////////////////////////////////////////////////
   char server [] = "x.x.free.fr"; //Google
  if (client.connect(server, 80)) {
    Serial.println("conexion avec le server etabli");
    // Make a HTTP request:
    client.println("GET /alertetemp2.php?alerte=1 HTTP/1.1");//
 client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("echec de la conection");
  }
///////////////////////////////////////

mais meme la sa ne marche pas !
voici le code de la page PHP :
Code:
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
if ($_GET['alerte']=="1") {
     
// Le message
     
$message "alerte temperature/http://x";

     
// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
     
$message wordwrap($message70);

     
// Envoi du mail
     
 $envoi=mail("x@gmail.com",'alerte'$message,"From: $exp\r\n"."Reply-To: $exp\r\n"); 
if(
$envoi) echo"Le mail a bien été envoyé !"
else echo
"L'envoi a échoué, merci de renouveller l'opération !"; };
?>

</body>
</html>

sa me donne l’impression que le serveur free n’exécute pas le code php ! et du coût je reçois pas mon mail
Logged


Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Avant de dire que le serveur n'exécute pas le script PHP, essaye d'appeller l'URL dans un navigateur.
Est-ce que ca marche ?
Est-ce que tu es sur que Free a autorisé l'usage de mail() ?
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Region ile de france.
Offline Offline
Sr. Member
****
Karma: 3
Posts: 373
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

lorsque j'envoi dans la bar d'adresse de chome : christophe.boulic.free.fr/alertetemp2.php?alerte=1
le navigateur chrome m'afiche:
Le mail a bien été envoyé !
et je reçois le mail sans souci a chaque foi!
donc je pige vraiment pas pourquoi sa ne fonctione pas
Logged


Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok j'ai trouvé.
C'est lié à l'hébergement mutualisé des pages perso, il faut aussi envoyer un header Host:

Code:
client.println("GET /alertetemp2.php?alerte=1 HTTP/1.1");//
client.println("Host: christophe.boulic.free.fr");//
client.println();
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Pages: [1] 2 3 ... 5   Go Up
Jump to: