Arduino ecriture base Access ou SQL

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.

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.

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

Bonjour,

J'ai posté un exemple trés simple en PHP + mySQL il y a déja quelques temps :

Côté arduino il suffit d'utiliser l'exemple WebClient.
Exemple avec le code cité ci dessus :

GET /index.php?led=13 HTTP/1.0

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

/*
  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 ?

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

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

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.

Et comme ça ?

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

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

et avec un mac (ou pc…), dans le terminal en tapant

telnet google.com 80

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

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

puis tu tapes

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:

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

…

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

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

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 ?

En fait l'idée est de faire les requêtes à la main avec le telnet du Pc, et quand ça marche alors implémenter les mêmes requêtes et paramètres dans l'Arduino.

Je vais décrire ce que je fais alors.

J'ouvre l'invite de commande

je tape telnet

j'obtiens

Microsoft Telnet>

Ensuite

Microsoft Telnet> open google.com 80
Connexion à google.com...

ensuite

GET /search?q=arduino HTTP/1.0

et après j'obtiens

wG#!details">Offers</a></li><li class=gbmtc><a onclick=gbar.logger.il(1,{t:212})
; class=gbmt id=gb_212 href="https://wallet.google.com/manage/?tab=wa">Wallet</a
></li><li class=gbmtc><a onclick=gbar.qs(this);gbar.logger.il(1,{t:6}); class=gb
mt id=gb_6 href="http://www.google.com/search?q=arduino&um=1&ie=UTF-8&hl=en&tbo=
u&tbm=shop&source=og&sa=N&tab=wf"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#">Shopping</a></a></a></a></a></a></a></li><li class=gbmtc><a onclick=gb
ar.logger.il(1,{t:30}); class=gbmt id=gb_30 href="http://www.blogger.com/?tab=wj
">Blogger</a></li><li class=gbmtc><a onclick=gbar.logger.il(1,{t:32}); class=gbm
t id=gb_32 href="http://www.google.com/reader/view/?hl=en&tab=wy">Reader</a></li
><li class=gbmtc><a onclick=gbar.qs(this);gbar.logger.il(1,{t:27}); class=gbmt i
d=gb_27 href="http://www.google.com/<a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#"><a class="ktg6us78hf8vdu7" href="#">finance</a></a></a></a></a>?q=arduino&um=1&ie=UTF-8&sa=N&tab=we"
>Finance</a></li><li class=gbmtc><a onclick=gbar.qs(this);gbar.logger.il(1,{t:31
}); class=gbmt id=gb_31 href="http://picasaweb.google.com/lh/view?q=arduino&um=1
&ie=UTF-8&hl=en&sa=N&tab=wq"><a class="ktg6us78hf8vdu7" href="#">Photos</a></a></li><li class=gbmtc><a onclick=gbar.qs(t
his);gbar.logger.il(1,{t:12}); class=gbmt id=gb_12 href="http://www.google.com/s
earch?q=arduino&um=1&ie=UTF-8&hl=en&tbo=u&tbm=vid&source=og&sa=N&tab=wv">Videos<
/a></li><li class=gbmtc><div class="gbmt gbmh"></div></li><li class=gbmtc><a onc
lick=gbar.logger.il(1,{t:66}); href="http://www.google.com/intl/en/options/" cla
ss=gbmt>Even more &raquo;</a></li></ol><div class=gbsbt></div><div class=gbsbb><
/div></div></div></li></ol></div><div id=gbg><h2 class=gbxx>Account Options</h2>
<span class=gbtcb></span><ol class=gbtc><li class=gbt><a target=_top href="https
://accounts.google.com/ServiceLogin?hl=en&continue=http://www.google.com/search%
3Fq%3Darduino" onclick="gbar.logger.il(9,{l:'i'})" id=gb_70 class=gbgt><span cla
ss=gbtb2></span><span id=gbgs4 class=gbts><span id=gbi4s1>Sign in</span></span><
/a></li><li class="gbt gbtb"><span class=gbts></span></li><li class=gbt><a class
=gbgt id=gbg5 href="http://www.google.com/preferences?hl=en" title="Options" onc
lick="gbar.tg(event,this)" aria-haspopup=true aria-owns=gbd5><span class=gbtb2><
/span><span id=gbgs5 class=gbts><span id=gbi5></span></span></a><div class=gbm i
d=gbd5 aria-owner=gbg5><div class=gbmc><ol id=gbom class=gbmcc><li class="gbkc g
bmtc"><a  class=gbmt href="/preferences?hl=en">Search settings</a></li><li class
=gbmtc><div class="gbmt gbmh"></div></li><li class="gbkp gbmtc"><a class=gbmt hr
ef="http://www.google.com/history/optout?hl=en">Web History</a></li></ol></div><
/div></li></ol></div></div><div id=gbx3></div><div id=gbx4></div><script>window.
gbar&&gbar.elp&&gbar.elp()</script></div><table border="0" cellpadding="0" cells
pacing="0" id="mn" style="position:relative"><div><tr><th width="132"></th><th w
idth="573"></th><th width="278"></th><th></th></tr><tr><td class="sfbgg" valign=
"top"><div id="logocont"><h1><a href="/webhp?hl=en" id="logo" title="Go to Googl
e Home" style="background:url(/images/nav_logo113.png) no-repeat 0 -41px;height:
37px;width:95px;display:block"></a></h1></div></td><td class="sfbgg" valign="top
" colspan="2" style="padding-left:8px"><form action="/search" name="gs" id="tsf"
 method="GET" style="display:block;margin:0;background:none"><table border="0" c
ellpadding="0" cellspacing="0" style="margin-top:20px;position:relative"><tr><td
><div class="lst-a"><table cellpadding="0" cellspacing="0"><tr><td class="lst-td
" width="555" valign="bottom"><div style="position:relative;zoom:1"><input class
="lst" value="arduino" title="Search" id="sbhost" autocomplete="off" type="text"
 name="q" maxlength="2048"></div></td></tr></table></div></td><td><div class="ds
"><div class="lsbb"><button class="lsb" value="Search" type="submit" name="btnG"
><span class="sbico" style="background:url(/images/nav_logo113.png) no-repeat -3
6px -111px;height:14px;width:13px;display:block"></span></button></div></div></t
d><td style="font-size:11px;padding-left:13px"></td></tr></table></form></td><td
 class="sfbgg">&nbsp;</td></tr></div><tr><td class="ab_bg"><div id="ab_name"><sp
an>Search</span></div></td><td class="ab_bg" colspan="2"><div id="subform_ctrl">
<div id="resultStats">About 21,800,000 results</div></div></td><td class="ab_bg"
>&nbsp;</td></tr><tr><td valign="top" id="leftnav" style="padding:4px;padding-le
ft:0;padding-top:22px"><div id="modeselector" style="padding-bottom:4px"><ul><li
 class="mitem msel">Web</li><li class="mitem"><a class="q" href="/search?q=ardui
no&amp;hl=en&amp;ie=UTF-8&amp;prmd=ivns&amp;source=lnms&amp;tbm=isch&amp;sa=X&am
p;ei=zbU_UN6-LIqFhQfgpYGgDA&amp;ved=0CAcQ_AUoAQ">Images</a></li><li class="mitem
"><a class="q" href="/search?q=arduino&amp;hl=en&amp;ie=UTF-8&amp;prmd=ivns&amp;
source=lnms&amp;tbm=vid&amp;sa=X&amp;ei=zbU_UN6-LIqFhQfgpYGgDA&amp;ved=0CAgQ_AUo
Ag">Videos</a></li><li class="mitem"><a class="q" href="/search?q=arduino&amp;hl
=en&amp;ie=UTF-8&amp;prmd=ivns&amp;source=lnms&amp;tbm=nws&amp;sa=X&amp;ei=zbU_U
N6-LIqFhQfgpYGgD

Perte de la connexion à l'hôte.

Appuyez sur une touche pour continuer...

j'appuis et je reviens à Telnet

cela devrait marcher sur l'arduino ?
cela vient peut etre de l'IP du serveur Google ? Quelle IP fonctionne chez vous ?

l'ip qui a fonctionné chez moi est par exemple 173.194.34.100 (google en a plusieurs)…
ça devrait marcher…

cela ne fonctionne pas
peux tu me faire une copie d'ecran de ce que tu obtiens dans ton terminal serie stp ?

le serial monitor de l'arduino me donne ceci:

connecting...
connected
HTTP/1.0 200 OK
Date: Fri, 31 Aug 2012 06:57:29 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=9d01d78c5d4d4ecd:FF=0:TM=1346396249:LM=1346396249:S=hBpUP915vl9gGPiR; expires=Sun, 31-Aug-2014 06:57:29 GMT; path=/; domain=.google.com
Set-Cookie: NID=63=CM-JvJlh30f5llBHZJJdhWPxFDEcXc98zGr2aqjjOvTYSelSvKfvn5frDm6HsOYhTjl7IvJ89e2PSMilI63BQN2jVHqCe7oOttwROLDovTo652qVMsOJOyS40kX2SfAF; expires=Sat, 02-Mar-2013 06:57:29 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

(bla bla bla)

disconnecting.

tu es sur du dhcp chez toi ?
tu peux aussi essayer en mettant une adresse ip statique pour l'arduino:

par exemple

IPAddress ip(10,0,0,2);
IPAddress dnss(10,0,0,1);
IPAddress gw(10,0,0,1);

…

Ethernet.begin(mac, ip, dnss, gw);