Envoi données à un serveur

Afin d’envoyer des données à un serveur il faut créer la requête http.

Afin de « décrypter » la requête à envoyer utilisez l’outil en ligne http://web-sniffer.net/ qui affichera l’HTTP Request Header ou l’extension Chrome « Live HTTP Headers »

Une fois récupéré les informations nécessaires (exemple pour la requête http://mon_site.com/update?contact=porte&statut=ON) :

GET /updatetable.php?contact=porte&statut=ON HTTP/1.1
Host: mon_site.com
Accept: text/html,application/xhtml+xml,application/xml
Accept-Encoding: gzip, deflate, sdch
Accept-Language: fr-FR

Utilisez l’outil http://requestmaker.com/ pour tester la requête ou la version cliente de web-sniffer.

Reportez la requête dans le code Arduino comme ci-dessous 

 /*  
 Send data to MySql Database via PHP Page  
 */  
 #include <SPI.h>  
 #include <SD.h> //-- For SD Card  
 #include <Ethernet.h>  
 //-- Contact data  
 # define inPinPoCour 24 //-- Contact Porte Cour  
 int val;        //-- Valeur du contact  
 boolean contactPoCour = false;   
 //-- Local Network Settings  
 byte mac[] = { 0x00, 0xAD, 0xBE, 0xEF, 0xFE, 0x50 }; //-- Addresse MAC   
 //-- Settings PHP Page  
 char PHPSiteAddress[] = "xxxx.com";  
 //-- Variable Setup  
 long lastConnectionTime = 0;   
 boolean lastConnected = false;  
 int failedCounter = 0;  
 //-- Initialize Arduino Ethernet Client  
 EthernetClient client;  
 void setup()  
 {//-- Start Serial for debugging on the Serial Monitor  
  Serial.begin(9600);  
  //-- Start Ethernet on Arduino  
  startEthernet();   
  delay(1000);   
 }  
 //-- Sketch test contacts  
 void loop(){  
   val = digitalRead(inPinPoCour); // read input value   
   if (val == LOW) // Contact open  
     {if (!contactPoCour) //-- If contact was closed  
       {sendserver("portail","OFF");  
       contactPoCour=true;}}  
   else // Contact open  
     {if (contactPoCour) //-- If contact was open  
       {sendserver("portail","ON");   
       contactPoCour=false;}}  
 }  
 //-- Send data to server  
 void sendserver(String contact, String statut){       
    if (client.connect(PHPSiteAddress, 80))  
  {   
   //-- Create HTTP POST Data  
   String sData = "contact="+contact+"&statut="+statut;  
   Serial.println(sData);  
   client.println("GET /updatetable.php?"+sData+" HTTP/1.1");  
   client.println("Host: xxxx.com");  
   client.print("Content-Type: application/x-www-form-urlencoded\n");  
   client.print("Content-Length: ");  
   client.print(sData.length());  
   client.print("\n\n");  
   lastConnectionTime = millis();  
   if (client.connected())  
   {  
    Serial.println("Connecting to PhpSite...");  
    Serial.println();  
    failedCounter = 0;  
   }  
   else  
   {  
    failedCounter++;  
    Serial.println("Connection to PhpSite failed ("+String(failedCounter, DEC)+")");    
    Serial.println();  
   }  
  }  
  else  
  {  
   failedCounter++;  
   Serial.println("Connection to PhpSite Failed ("+String(failedCounter, DEC)+")");    
   Serial.println();  
   lastConnectionTime = millis(); }  
   //-- Read return  
   char rc=0;  
   skipHeader();  
   while (client.connected()){  
    if (client.available()>0){  
     rc= client.read();  
     break;  
    }}  
   if (rc=='1')  
     Serial.println("Ok");  
   else  
     Serial.println("Erreur");  
   if (client.connected()) {   
     client.stop();  // DISCONNECT FROM THE SERVER  
   }  
 else  
 Serial.println("ERREUR Envoi au serveur ");   
 }  
 //-- Ignore le Header résultat  
 void skipHeader(){  
  char lc;  
  while (client.connected()){  
   if (client.available()){  
    char nc=client.read();  
    if ((lc==10) && (nc==13)){  
     while (client.available()==0);  
      client.read();  
      break;  
    }  
    else  
     lc=nc;  
   }}}  
 //-- Connexion Ethernet  
 void startEthernet()  
 {  
  client.stop();  
  Serial.println("Connecting Arduino to network...");  
  Serial.println();   
  delay(1000);  
  // Connect to network amd obtain an IP address using DHCP  
  if (Ethernet.begin(mac) == 0)  
  {  
   Serial.println("DHCP Failed, reset Arduino to try again");  
   Serial.println();  
  }  
  else  
  {  
   Serial.println("Arduino connected to network using DHCP");  
   Serial.println();  
  }   
  delay(1000);  
 }   

La page PHP est :

 <?php  
 //-- Appel pour MAJ du statut d'un contact  
 //  http://xxxx/updatetable.php?contact=porte_entree&statut=ON  
 //-- récupération du nom du contact et de son statut (par défaut ON) :  
 $contact = $_GET["contact"];   
 $statut = $_GET["statut"];  
 if (empty($contact))  
   $contact="portail"; //-- Contact par défaut "porte_entree"  
 if (empty($statut))  
   $statut="ON"; //-- Statut par défaut ON    
 //-- connection à MySql  
 $dbhost = 'sql206.byethost32.com'; //  
 $dbuser = 'b32_15751138';    //  
 $dbpass = 'chicco@6';  
 $dbbase = 'b32_15751138_arduino';   //  
 $conn = mysql_connect($dbhost, $dbuser, $dbpass);  
 if(! $conn )  
 {  
  //die('Could not connect: ' . mysql_error());  
  die('0');  
 }  
 $sql ='UPDATE contacts '.  
 'SET statut="'.$statut.'", datecontact=NOW(), timecontact=TIMESTAMPADD(MINUTE,45,UTC_TIME()) '.  
 'WHERE nom="'.$contact.'"';   
 //////////////////  
 mysql_select_db($dbbase);  
 $retval = mysql_query( $sql, $conn );  
 if(! $retval )  
 {  
  //die('Could not enter data: ' . mysql_error());  
  die('0');  
 }  
 echo "1\n";  
 //echo $contact.":".$statut;  
 mysql_close($conn);  
 ?>  

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Articles récents
Commentaires récents
fatima sur Bienvenue !
AdminDroid sur Bienvenue !
fatima sur Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :