Problème GET / vers serveur

Accueil/Questions/Problème GET / vers serveur
Problème GET / vers serveur 2016-01-09T16:34:55+00:00

Accueil Forums Questions Problème GET / vers serveur

2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Messages
  • Valentin MARTIN
    Participant
    Nombre d'articles : 3
    #9545 |

    Bonjour,

    J’ai un soucis avec mon code.

    J’ai branché par ethernet mon arduiono uno avec un ethernet shield officiel sur le port ethernet de mon ordinateur.
    Je n’ai rien configurer d’autres.

    Je cherche à envoyer par GET mes données de téléinfo sur la base de donnée Mysql de mon serveur personnel.
    La page « send_data.php » recevant les données et les insérant dans la base de donnée.

    CODE ARDUINO :

    include <SoftwareSerial.h>
    #include <SPI.h>
    #include <Ethernet.h>
    
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xF9, 0x81 };
    
    char server[] = "www.martin-valentin.fr";    // name address for Google (using DNS)
    IPAddress ip(192, 168, 0, 177);
    EthernetClient client;
    
    SoftwareSerial cptSerial(2, 3);
    #define startFrame 0x02
    #define endFrame 0x03
    #define startLine 0x0A
    #define endLine 0x0D
    
    void setup() {
      cptSerial.begin(1200);
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
      // start the Ethernet connection:
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
        // try to congifure using IP address instead of DHCP:
        Ethernet.begin(mac, ip);
      }
      // give the Ethernet shield a second to initialize:
      delay(1000);
      Serial.println("connecting...");
    }
    
    String GetTeleInfo()
    {
        String TeleInfo = "";
        char charIn = 0;
        while (charIn != startLine)
        {
            charIn = cptSerial.read() & 0x7F;
        }
        while (charIn != endLine)
        {
            if (cptSerial.available() > 0)
            {
                charIn = cptSerial.read() & 0x7F;
                TeleInfo += charIn;
            }
        }
        return TeleInfo;
    }
    
    String ShowTeleInfo(String keyword, String unit, int length)
    {
        int essai = 0;
        // Nombre d'étiquettes maximum, cf documentation ERDF
        int max_essais = 33;
        String data = "";
        String msg = "";
        while(data.substring(0,keyword.length()) != keyword && essai != max_essais)
        {
            data = GetTeleInfo();
            essai++;
        }
        msg = "\t<";
        msg += keyword;
        msg += " unit=\"";
        msg += unit;
        msg += "\">";
        if (essai != max_essais)
        {
            msg += data.substring((keyword.length() + 1),(length + (keyword.length() + 1)));
        }
        else
        {
            msg += "NA";
        }
        msg += "</";
        msg += keyword;
        msg += ">";
        return msg;
    }
    
    void loop()
    {
      if (client.connect(server, 80)) 
      {
        boolean currentLineIsBlank = true;
        while (client.connected()) 
        {
          if (client.available()) 
          {
            char c = client.read();
            Serial.print(c);
            if (c == '\n' && currentLineIsBlank) 
            {
              client.println("GET /teleinfo/add_data.php?");
              client.print("ADCO=");
              client.print(ShowTeleInfo("ADCO","",12));
              client.print("&&");
              client.print("OPTARIF=");
              client.print(ShowTeleInfo("OPTARIF","",4));
              client.print("&&");
              client.print("&&");
              client.print("BASE=");
              client.print(ShowTeleInfo("BASE","Wh",9));
              client.print("&&");
              client.print("HCHC=");
              client.print(ShowTeleInfo("HCHC","Wh",9));
              client.print("&&");
              client.print("HCHP=");
              client.print(ShowTeleInfo("HCHP","Wh",9));
              client.print(" HTTP/1.1");
              client.println("Host: www.martin-valentin.fr");
              client.println("Connection: close");
              client.println();
    
              client.println("connection OK");
              break;
            }
            if (c == '\n') 
            {
              currentLineIsBlank = true;
            } 
            else if (c != '\r') 
            {
              currentLineIsBlank = false;
            }
          } else {
            Serial.println("connection failed");
          }
          if (!client.connected()) 
          {
            Serial.println();
            Serial.println("disconnecting.");
            client.stop();
    
            // do nothing forevermore:
            //while (true);
          }
        }
        delay(5000);
        client.stop();
      }
    }

    CODE PHP :

    
    <?php
        // Connect to MySQL
        include('dbconnect.php');
        $_ADPS  = null;
    
        $_ADCO = $_GET['ADCO'];
        $_OPTARIF = $_GET['OPTARIF'];
        $_ISOUSC = $_GET['ISOUSC'];
        $_BASE = $_GET['BASE'];
        $_HCHC = $_GET['HCHC'];
        $_HCHP = $_GET['HCHP'];
    
    ?>
    
    <!doctype html>
    <html lang="fr">
    <head>
    ///
    </head>
    <body>
    <?php
    	echo $_HCHC;
    	echo $_BASE;
    	echo " ";
    	echo "test";
    ?>
    ...
    

    Mon soucis est que dans loop(), l’envoie ne se fait pas et m’affiche directement « –> connection failed ».
    Je pense donc avoir mal configuré mon ethernet ou il manque une info mais je ne vois pas où est le soucis.

    Je vous remercie d’avance pour votre aide

    Valentin

    • Ce sujet a été modifié le il y a 1 an et 6 mois par  Valentin MARTIN.
    arnaud9212
    Admin bbPress
    Nombre d'articles : 118

    Bonjour,

    L’envois de votre commande GET est mal placé, il doit se trouver avant le client.available sinon vous n’etes connecté à rien du tout, donc normal qu’il n’y ai aucune données de dispo

    Insirez vous de ce code simple pour mieux comprendre l’ordre des commandes en HTTP : https://www.arduino.cc/en/Tutorial/TwitterClient

    J’espere vous avoir aidé,
    Arnaud

2 sujets de 1 à 2 (sur un total de 2)

Vous devez être connecté pour répondre à ce sujet.