Go Down

Topic: [résolu]Envoyer une requêt GET avec arduino vers une page php pour envois de mai (Read 7684 times) previous topic - next topic

Heloderma-kris

j'ai essayer mais toujours rien :~
voila le code :
Code: [Select]
/////////////////////////////////////////////////////////////////////////
   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");
  }
///////////////////////////////////////

barbudor

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.
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 ?

Heloderma-kris

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:
Code: [Select]
/////////////////////////////////////////////////////////////////////////
   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


Heloderma-kris

bon je vien de tester ce code qui n'est qu'une modification d'un exemple present ici :http://arduino.cc/en/Reference/ClientAvailable

Code: [Select]
#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!!


barbudor

Et ca marche maintenant ?
Si c'est le cas, je ne vois pas ce qui a changé
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 ?

Heloderma-kris

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

osaka

#21
Jun 30, 2012, 12:18 pm Last Edit: Jun 30, 2012, 12:22 pm by osaka Reason: 1
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.

Code: [Select]
<?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, ...) .

Heloderma-kris

j'ai tester ce code
Code: [Select]
#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 ?

osaka

#23
Jun 30, 2012, 01:03 pm Last Edit: Jun 30, 2012, 01:27 pm by osaka Reason: 1
essaie ceci, ça a marché de chez moi (avec ma propre ip évidement).

Code: [Select]

#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
Code: [Select]

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 .  :*

Heloderma-kris

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?


barbudor

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 ?

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 ?

Heloderma-kris

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! :(

Heloderma-kris

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

osaka

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 ?

Heloderma-kris

Bon finalement j'ai reusi a faire fonctioner ce programe depuis mon taf qui possede une conexion "orange"
voila le code :
Code: [Select]
#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!
:)

Go Up