Go Down

Topic: Arduino ecriture base Access ou SQL (Read 7215 times) previous topic - next topic

PITP2

Aug 25, 2012, 11:35 am Last Edit: Nov 05, 2012, 09:27 pm by PITP2 Reason: 1
Bonjour,
j'aimerai bien pouvoir envoyer les valeurs de certaines variales de mon code arduino dans une base de donnée hébergée sur un serveur.
Savez vous si cela est possible ? et si oui auriez quelques pistes à me suggérer autant du côté Arduino que du coté serveur ?

Actuellement les données s'enregistrent bien sur la carte SD du shield Ethernet.

Je pense utiliser un GET en direction du serveur mais j'avoue ne pas avoir la bonne méthode pour coder cela dans l'arduino.

barbudor

Je ne penses pas que tu puisses faire directement du SQL depuis l'Arduino.

Toutefois, tu peux faire des GET ou POST vers un script PHP hébergé à l'extérieur qui lui va se charger de se connecter à ta base SQL et y écrire les données.
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 ?

PITP2

Réponse super rapide !
ok pour la deuxième phase je vais passer par de l'ASP plutot car je maitrise mieux ... enfin maitriser ... :-)
Par contre as tu la syntaxe et la manière de faire un GET depuis l'arduino ?

barbudor

http://arduino.cc/en/Tutorial/WebClient
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 ?

skywodd

Bonjour,

J'ai posté un exemple trés simple en PHP + mySQL il y a déja quelques temps :
http://arduino.cc/forum/index.php/topic,94887.msg713238.html#msg713238

Côté arduino il suffit d'utiliser l'exemple WebClient.
Exemple avec le code cité ci dessus :
Code: [Select]
GET /index.php?led=13 HTTP/1.0
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

PITP2

J'ai essayé avec le webclient mais je n'ai rien d'affiché dans le moniteur série ou plutot je n'ai pas le résultat de la requete j'ai juste ceci

connecting...
connected

disconnecting.

???? Etrange, j'ai pourtant mis la bonne adresse de google (qui est fausse dans l'exemple ...)

Code: [Select]
/*
  Web client

This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009
modified 9 Apr 2012
by David A. Mellis

*/

#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 };
IPAddress server(74,125,79,94); // Google

// 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);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // 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(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=Arduino HTTP/1.0");
    client.println();
  }
  else {
    // kf 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(;;)
      ;
  }
}



Je devrais pourtant avoir autre chose non ?

skywodd


J'ai essayé avec le webclient mais je n'ai rien d'affiché dans le moniteur série ou plutot je n'ai pas le résultat de la requete j'ai juste ceci
(...)
???? Etrange, j'ai pourtant mis la bonne adresse de google (qui est fausse dans l'exemple ...)

Essaye avec autre chose que les serveurs de google, comme l'ip de ta box par exemple.
J'ai pas mal de probléme avec mes scripts Ethernet et google ... à croire qu'il détecte et ignore les requêtes ne provenant pas d'un "vrai" navigateur.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

PITP2

Même chose je n'ai  rien qui s'affiche ...

barbudor

Wireshark ?

Hum. Mais il faudrait un hub ou un switch avec port mirroir.
A moins de se mettre un petit serveur web sur le PC pour le test.
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 ?

cbrandt

Et comme ça ?

Code: [Select]

client.println("GET /search?q=Arduino HTTP/1.0");
client.println ("Host: google.com");
client.println ();




PITP2

toujours rien .... malédiction sur mon arduino     :~

cbrandt

et avec un mac (ou pc…), dans le terminal en tapant
Code: [Select]

telnet google.com 80


tu obtiens quelque chose ? sur le mac il devrait afficher quelque chose comme

Code: [Select]

Trying 173.194.34.100...
Connected to google.com.
Escape character is '^]'.


puis tu tapes

Code: [Select]

GET /search?q=arduino HTTP/1.0



donc la ligne GET etc en terminant par entrée puis une deuxième fois entrée…
là devrait apparaître la réponse du serveur:

Code: [Select]


HTTP/1.0 200 OK
Date: Sun, 26 Aug 2012 20:11:25 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1





skywodd

Question bête mais qui (je crois) n'as pas était posé :
Sous quelle version de l'ide travaille tu (>=0023 ou <=1.0) ?
C'est peut être un probléme de configuration (logicielle et/ou matérielle).

Essaye l'exemple TelnetClient : http://arduino.cc/en/Tutorial/TelnetClient
Avec l'ip de ton pc comme cible et une console netcat en écoute (nc -l -p 10002).
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

cbrandt

avec l'adresse 173.194.34.68 pour google, ça marche chez moi… (juste adapté le sketch pour l'ide 23 sur un mega2560)

PITP2

pour l'ide je crois que je suis en 1.0.1 c'est possible ?

j'ai essayé la méthode exposée en telnet mais cela ne donne rien chez moi ...
je suis sur PC alors la méthode change un peu je crois ?

Go Up