Arduino Werte an Server übertragen

Hallo,

ich suche nach eine Möglichkeit, z.b. die Temperaturwerte die ich mit dem Arduino erfasse, an einen externe Server übergeben, um diese dann in einer MySQL Datenbank speichern. Hätte jemand von euch ein Beispiel für mich, wie ich dieses realisieren könnte? Die Daten würde ich gern per Post an den Server übertragen.

Vielen Dank.

Gruß
Vanles

Hallo Vanles,

das hier sollte aufjedenfall was für dich sein: Ethernet - Arduino Reference

Dazu benötigst du natürlich das Ethernetshield. Die dazugehörige Lib find ich sehr gelungen und einfach zu benutzen :wink:

Vanles:
Die Daten würde ich gern per Post an den Server übertragen.

Hmm, dann musst Du dem Arduino nur beibringen wie man Briefmarken anleckt :slight_smile:

Spass beiseite, wenn es nicht zuviele Werte sind, würde ich lieber GET empfehlen, das es den Aufruf auf dem Arduino deutlich einfacher gestaltet.
Am Ende brauchst Du ja nur eine URI zusammensetzen die z.B. wiefolgt aussieht:

"GET /datalogger.php?temp1=23.1&temp2=11.3&temp3=21.45"

Schau Dir mal die Beispiele der Ethernet-Lib an, die sind bei der IDE dabei.

"Datei -> Besispiele -> Ethernet -> WebClient".

Dort siehst Du wie man einen GET-Request absetzt. In diesem Beispiel ist es google.com mit der Query "/search/?q=arduino".
Das Beispiel kannst Du sehr einfach an Deine Belange anpassen.

Soo einfach ist das aber auch nicht, wären da nicht die Sicherheitsabfrage von User und Passwort, oder glaubst du, dass es Sinn macht, wenn man einen Webserver nicht schützt ?

Gruß Gerd

COOL:
Soo einfach ist das aber auch nicht, wären da nicht die Sicherheitsabfrage von User und Passwort, oder glaubst du, dass es Sinn macht, wenn man einen Webserver nicht schützt ?

Von einem HTTP-Auth war aber nicht die Rede, sondern wie man Daten an einen externen Server übergibt. Es wurde ja nicht mal gesagt, ob der überhaupt im Internet steht. Steht der Server im gleichen lokalen Netz, ist ein HTTP-Auth übertrieben. Nur weil Dein AVR Net-IO das hat, muss das ja nicht gleich für alle Webserver gelten.
Es gibt sogar genügend APIs (twitter, etc.) bei denen "NUR" ein zusätzlicher Key in der URL übergeben werden muss.
Sollte es aber notwendig sein, kann man, wie man an Deinem Beispiel gesehen hat, auch mit implementieren.

Sicherlich hast du Recht. Es ist sehr unwahrscheinlich, dass es sich um einen Webserver im eigenen Netz handelt, da gäbe es andere Möglichkeiten.
Was ich für einen Webserver und in welcher Art und Weise ich ihn betreibe, steht aussen vor. Es ist eben NUR eine Vermutung.

Aber fragen wir doch mal den Vanles : Wo steht der Webserver und ist er Passwort geschützt ?

Gruß Gerd

Ich habe so etwas ähnliches schon mal gemacht, und bin unter anderem auf die Website http://www.hurl.it gestoßen, welche gleich die requests und die Antworten ausgibt, die man so schon fast in den Code einfügen kann.

Im Falle eines benötigten Logins (so habe ich es zumindest gemacht):
Zuerst ein GET an den Server senden, die Antwort nach der erstellten SessionID parsen, und mit diese in einem weiteren GET zusammen mit Benutzernamen und Passwort an den Server senden. Danach ein POST-Command mit

mkl0815:
/datalogger.php?temp1=23.1&temp2=11.3&temp3=21.45

Hat ganz gut funktioniert.

Ich möchte Werte an meine Homematic CCU senden, der folgende Aufruf funktioniert:
{
if (client.connect(serverccu, 80))
{
// Aufruf CCU2-Server
Serial.println("Daten an CCU2 senden - Verbindung zum Server...");
client.println("GET /config/xmlapi/statechange.cgi?ise_id=13731&new_value=17.9 HTTP/1.0");
client.println();
Serial.println("mit CCU2 verbunden...");
}
else
{
Serial.println("nicht mit CCU2 Server verbunden");
}

client.stop();
Jetzt möchte ich den Wert 17.9 hinter new_value durch den echten Wert der Variable "pptempjetzt" ersetzen. Wie kann ich den String im Arduino zusammensetzen? 10000 Dank