[résolu]Envoyer une requêt GET avec arduino vers une page php pour envois de mai

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

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

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

j'ai essayer mais toujours rien :~
voila le code :

 /////////////////////////////////////////////////////////////////////////
   char server [] = "christophe.boulic.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("Host: christophe.boulic.free.fr");//
client.println();
 Serial.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("echec de la conection");
  }
///////////////////////////////////////

Est-ce que tu peux essayer de sortir sur Serial ce qui revient de client ?

ca devrait faire quelque chose du genre :

while ( client.available() )
Serial.print( client.read() );

Qu'est-ce que ca retourne ?

Quand j'envoie la requête depuis un telnet avec le host ca marche.

j'ai bien reçu trois mail qui devai corespondre a tes essai

j'ai intégré ce que tu ma donné comme code comme suit:

/////////////////////////////////////////////////////////////////////////
   char server [] = "christophe.boulic.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("Host: christophe.boulic.free.fr");//
client.println();
while ( client.available() )
  Serial.print( client.read() );
 Serial.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("echec de la conection");
  }
///////////////////////////////////////

mais a par conexion etablie apres plus rien sur le serial

bon je vien de tester ce code qui n'est qu'une modification d'un exemple present ici :Ethernet - Arduino Reference

#include <Ethernet.h>
#include <SPI.h>

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

/* Changez cette ip par celle correspondant à votre réseau HOST. Plupart des réseaux domestiques on
 * La sous-plage 192.168.0.XXX ou 192.168.1.XXX. Choisissez une adresse
 * atention a ne pas prendre une ip en cours d'utilisation et ne va pas être attribué automatiquement par
 * DHCP de votre routeur. */
 

static uint8_t ip[] = { 192, 168, 0, 20 };
char server [] = "christophe.boulic.free.fr";

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  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("Host: christophe.boulic.free.fr");//
client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

et serial m'ecrit:

connecting...
conexion avec le server etabli

disconnecting.

et c'est tout rien de plus
en tout cas merci pour ton aide!!

Et ca marche maintenant ?
Si c'est le cas, je ne vois pas ce qui a changé

non non sa ne marche pas toujours pas de mail qui arrive
peut'etre que je ne fait pas ce qu'il faut?

tu devrais déjà tester comme celà, ça ne sert à rien de tester l’envoie de mail si le reste ne fonctionne déjà pas, il faut procéder étape par étape.

<?php
if ($_GET['alerte']=="1") 
{
    echo "alert 1";
}
else
{
    echo "alerte 0";
}
?>

si tu reçois dans le monitor "alert 1" en réponse à ta requête c'est que ta structure conditionnel fonctionne le problème est ailleurs mais à l’intérieure du bloc if (donc l'envoie des mails sera le problème), si tu reçois "alerte 0" c'est qu'il y a un problème avec la condition de ton if (requête mal structuré côté arduino ou autre) et si tu ne reçois rien en retour de ta requête c'est que le problème ce situe un niveau au dessus (connexion, etc, ...) .

j'ai tester ce code

#include <Ethernet.h>
#include <SPI.h>

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

/* Changez cette ip par celle correspondant à votre réseau HOST. Plupart des réseaux domestiques on
 * La sous-plage 192.168.0.XXX ou 192.168.1.XXX. Choisissez une adresse
 * atention a ne pas prendre une ip en cours d'utilisation et ne va pas être attribué automatiquement par
 * DHCP de votre routeur. */
 

static uint8_t ip[] = { 192, 168, 0, 20 };
char server [] = "christophe.boulic.free.fr";

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  if (client.connect(server, 80)) {
     Serial.println("conexion avec le server etabli");
    // Make a HTTP request:
    client.println("GET /arduino/alertetemp.php?alerte=1 HTTP/1.1");//
client.println("Host: christophe.boulic.free.fr");//
client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

avec ton code osaka mais le serial repond toujours:
connecting...
conexion avec le server etabli

disconnecting.

est ce que lorsque l'on fait une requete get le server de free exectute le code php?

comment faire pour la requette avez vous une idée ?

essaie ceci, ça a marché de chez moi (avec ma propre ip évidement).

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 20 };

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() 
{
 // Open serial communications and wait for port to open:
  Serial.begin(9600);

  // start the Ethernet connection:
  Ethernet.begin(mac, ip);

  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect("christophe.boulic.free.fr", 80)) 
  {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /arduino/alertetemp.php?alerte=1 HTTP/1.1");
    client.println("Host: christophe.boulic.free.fr");
    client.println();
  } 
  else 
  {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) 
  {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) 
  {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}

la réponse dans le monitor

connecting...
connected
HTTP/1.1 200 OK
Date: Sat, 30 Jun 2012 10:59:56 GMT
Server: Apache/ProXad [Aug  5 2010 16:17:11]
X-Powered-By: PHP/4.4.3-dev
Connection: close
Content-Type: text/html

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

<body>
alert 1</body>
</html>

disconnecting.

Edit : Tu devrais séparer la partie html et php dans 2 documents propre à chacun (d'un autre côté la partie html ne sert à rien dans ce cas si) pour éviter de retourner toute la page en réponse . :*

bon j'ai tester mais voila la reponse :

connecting...
connected

disconnecting.

est ce qu'il faut ouvrire des port specifique ou pas coté free box?

il me semblé que non que le port 80 ete un port par defaut non?

Non rien a ouvrir pour accéder à un site web externe.

Ton PHP est bon, on a pu le tester séparément
La commande GET + Host est bonne puisque tant moi-même que Osaka l'avons fait fonctionner.

Est-ce que la partie Ethernet marche pour autre chose ?
Ou bien entre ton Arduino et ton PC ?

oui car jusqu'a present dans mon programe je comuniquer bien avec mon interface web en POST et l'arduino reponder corectement en gros commander arduino depuis l'interface web ne me poser pas de probleme !

par contre j'ai ouver mon port 8081 pour que sa comunique depuis l'exterieur ver l'ip de l'arduino

ce soir je vais allez chez une persone qui a egalement une freebox pour faire les teste voir si sa vien de chez moi ou de mon module ethernet shield!

donc pour vous tout est bon et sa fonction chez vous , c'est a n'y rien comprendre cette histoire! :frowning:

bon de chez une autres personne c'est pire pas de conection le serial me retourne un conection failed! =(

Je vois vraiment pas là :~, la connexion ce fait chez toi mais pas la requête ...,difficile à dire sans le voire de sois même.
Un problème avec le shield ?
Tu n'as rien d'autre sur les pin utilisé par celui-ci, etc ?
Les simples exemples genre WebServer, WebClient, etc, donnés par l'ide fonctionnent ?

Bon finalement j'ai reusi a faire fonctioner ce programe depuis mon taf qui possede une conexion "orange"
voila le code :

#include <Ethernet.h>
#include <SPI.h>

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

/* Changez cette ip par celle correspondant à votre réseau HOST. Plupart des réseaux domestiques on
 * La sous-plage 192.168.0.XXX ou 192.168.1.XXX. Choisissez une adresse
 * atention a ne pas prendre une ip en cours d'utilisation et ne va pas être attribué automatiquement par
 * DHCP de votre routeur. */
 

//static uint8_t ip[] = { 192, 168, 0, 20 };
char server [] = "christophe.boulic.free.fr";

EthernetClient client;

void setup()
{
  Ethernet.begin(mac);
  Serial.begin(9600);
Serial.println(Ethernet.localIP());
  delay(1000);
  delay(1000);

  Serial.println("connecting...");

  if (client.connect(server, 80)) {
     Serial.println("conexion avec le server etabli");
    // Make a HTTP request:
    client.println("GET /arduino/alertetemp2.php?alerte=1 HTTP/1.1");//
client.println("Host: christophe.boulic.free.fr");//
client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

j'ai opter pour une atribution automatique d'adresse ip et tester avec une carte uno
la tout a fonctioner !

reste a savoir du coup si sa vien de ma carte Mega ou de la freebox (ce qui risque d'etre chiant a debloqué pour le coup).

certaint d'entre vous ont 'il une freebox et pourait 'il tester mon code ?

en tout cas mercii pour votre aide a tous!
:slight_smile:

Bon finalement sa marche aussi avec la Mega du boulot ce qui ne me laisse que la freebox comme source de problème (la je suis pas sortie des ronces)!

est ce que certain d'entre vous on une freebox revolution ? et on déjà rencontrer des problèmes?

Heloderma-kris:
Bon finalement sa marche aussi avec la Mega du boulot ce qui ne me laisse que la freebox comme source de problème (la je suis pas sortie des ronces)!

est ce que certain d'entre vous on une freebox revolution ? et on déjà rencontrer des problèmes?

Bonjour heloderma
J'ai fais ce matin 2 test avec ton code (retour serial OK) sur reseau orange

j'ai bien reçu deux mail qui n'etait pas de mon initiative c'est donc les tien donc une pierre de plus dans la ballance freebox ce soir je vais retester de chez moi , pour voir et reinisialiser les réglage de basse de la free des fois que j'aurrai touché a quelque chose qu'il ne fallais pas! :frowning: