IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Enregistrer donnée sur Mysql Server


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Aucune
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Aucune

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut Enregistrer donnée sur Mysql Server
    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 C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    #include <SPI.h>
    #include <Ethernet.h>
    #include <SoftwareSerial.h>
    
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xF9, 0x81 };
    IPAddress ip(192, 168, 0, 16);
    
    char server[] = "www.martin_valentin.fr";
    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);
      Ethernet.begin(mac, ip);
    }
    
    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()
    {
      boolean current_line_is_blank = true;
      if(client.connect(server, 80)) {
        Serial.println("-> Connected");
        char c = client.read();
        if (c == '\n' && current_line_is_blank)
        {
          client.print("GET /teleinfo/send_data.php?");
          client.print("ADCO=");
          client.print(ShowTeleInfo("ADCO","",12));
          client.print("&&");
          client.print("OPTARIF=");
          client.print(ShowTeleInfo("OPTARIF","",4));
          client.print("&&");
          client.print("ISOUSC=");
          client.print(ShowTeleInfo("ISOUSC","A",2));
          ...
          client.println(" HTTP/1.1");
          client.println("Host: www.martin_valentin.fr");
          client.println("Connection: close");
          client.println();
          client.println();
          client.stop();
          }
        if (c == '\n')
        {
            current_line_is_blank = true;
        }
        else if (c != '\r')
        {
            current_line_is_blank = false;
        }
      } else {
        Serial.println("--> connection failed\n");
      }
      delay(200);
      client.stop();
    }

    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

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonjour;

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    char server[] = "www.martin_valentin.fr";
    ça ne serait pas plutôt :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    char server[] = "http://www.martin_valentin.fr";

    Le port 80 de ton serveur est ouvert ?
    Egalement : pourquoi déconnecter ton client si c'est pour se reconnecter aussitôt le tour suivant ?

  3. #3
    Membre averti
    Homme Profil pro
    Aucune
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Aucune

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Hey !

    Je me suis inspiré de ce tuto étape 4 : http://www.icreateproject.info/uncat...a-to-database/

    Je testerai avec char server[] = "http://www.martin_valentin.fr"; et oui ce n'est pas bête pour la fin de connexion

    Pour le port 80, je ne sais pas comment savoir si ce port est ouvert sachant que c'est un serveur hébergé chez 1&1.

  4. #4
    Membre averti
    Homme Profil pro
    Aucune
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Aucune

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Même avec la modification cela ne fonctionne pas.

    Pour le port 80 je ne sais pas comment savoir.

    La carte ethernet est connecté sur un mini ordi sous windows XP.

    J'ai configuré le DHCP pour la carte arduino avec son adresse mac.

    Malgré ca, rien !

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Le port 80 est le port http. Après réflexion, il n'y pas de raison pour qu'il soit fermé. J'ai comparé ton code et celui du tutoriel. Déjà il y a un client.close() en trop (ligne 111 dans ton code). Le délai est de 10 secondes dans le tuto, dans ton cas 200ms... C'est court.

    Tu es sûr qu'une connexion n'est pas réalisée au moins 1 fois, lors du démarrage de l'Arduino ?

    Par contre, ta configuration me laisse perplexe : l'Arduino est connecté au mini PC via le port réseau. Et le PC est connecté au net ? Le mini PC a 2 cartes réseau ?

  6. #6
    Membre averti
    Homme Profil pro
    Aucune
    Inscrit en
    Mai 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Aucune

    Informations forums :
    Inscription : Mai 2014
    Messages : 28
    Par défaut
    Des que le programme se lance, il m affiche connections failed en boucle.
    L'arduino est connecté sur le port Ethernet de l'ordinateur et l'ordi est connecté en wifi à ma box.

Discussions similaires

  1. pb de connexion sur mysql-server
    Par nora2311 dans le forum Administration
    Réponses: 10
    Dernier message: 06/01/2009, 17h16
  2. Chargement des données sur mysql
    Par ecom_adil dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 25/02/2008, 17h08
  3. limitation de données sur SQL server / Access / MySQL
    Par alexfrei04 dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/02/2007, 15h43
  4. modéliser une base de données sur SQL Server ..
    Par Alexy3171 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/11/2006, 15h57
  5. Réponses: 3
    Dernier message: 27/04/2006, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo