Go Down

Topic: Temperatur per Get an php übertragen (Read 737 times) previous topic - next topic

Samot

Hallo,
ich möchte gerne die Temperaturloggen und habe dafür einen php skript, der das ganze in eine xls. schreibt. Mein Problem ist nur die Temperatur vom Arduino auf den Server zu bekommen eigentlich muss man dafür nur folgende URL öffnen arduinotemp.funpic.de/c.php?t=24 wobei 24 jetzt die Temperatur ist, welche übertragen werden soll. Ich habe es mit einem "geklauten" SKetch aus dem Netz versucht, aber bekomme immer die Meldung verbindung nicht möglich hat einer eine Idee warum?

Hier der Sketch:
Code: [Select]
#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  // MAC-ADRESSE eingeben!
byte ip[]  = { 192, 168, 0, 100 };                    // IP-Adresse eingeben!
byte gateway[] = { 192, 168, 0, 1 };                // Gateway eingeben!
byte subnet[]  = { 255, 255, 255, 0 };
byte server[] = { 213, 202, 225, 33 };                      // IP des Servers eingeben
EthernetClient client;
char host[] = "arduinotemp.funpic.de"; // DOMAIN eingeben!
char url[]  = "/c.php"; // Pfad zur PHP-Datei eingeben

char c;

int Sensor = 0;            // LM35

float Temperatur = 0;      // Variable für Temperatur ;-)
int temp = 0;            // Analog-Wert

void setup()
{
 
  Serial.begin(9600); // für Debug-Ausgaben
  Serial.println("Programm gestartet...");

  Ethernet.begin(mac, ip, gateway, subnet); 
  delay(5000); // warten, bis LAN gestartet
}

void loop()
{
 
   
    Sensor_lesen();
    Daten_senden();
    delay(900);
   

  if (client.available())
  {
    char c = client.read();
    Serial.print(c);
  }
  delay(10000);
    client.stop();
    client.flush();
}

void Sensor_lesen()
{
  temp = analogRead(Sensor);                  // Analog-Wert auslesen
  Temperatur = (5.0 * temp * 100.0)/1024.0;   // Berechnung der Temperatur in °C
  Serial.print("Temperatur: ");
  Serial.println(Temperatur);
}

void Daten_senden()
{
  if (client.available())  // Verbindung zum Server aufbauen
  {
    Serial.print("Verbunden...sende Daten...");
    client.print("GET ");
    client.print(url);
    client.print("?t=");
    client.print(Temperatur);
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(host);
    client.println();
    Serial.println("fertig!");
  }
  else
  {
    Serial.println(" ***** VERBINDUNGSAUFBAU NICHT MÖGLICH *****");
  }   
}

jurs

#1
Sep 14, 2013, 11:44 am Last Edit: Sep 14, 2013, 11:47 am by jurs Reason: 1

int Sensor = 0;                  // LM35
...
temp = analogRead(Sensor);                  // Analog-Wert auslesen


Auf einem Ehternet-Shield kannst Du A0 und A1 für den Anschluss von Sensoren vergessen, da diese beiden Pins vom Ethernet-Shield verwendet werden. Frei für analoge Sensoren wären mit aufgestecktem Ethernet-Shield auf einem UNO-Board noch: A2, A3, A4, A5.

Außerdem frage ich mich folgendes: Zur Ethernet-Library wird ein Beispiel "WebClientRepeating" mitgeliefert, das in regelmäßigen Zeitabständen eine URL per GET abruft. Auf diesem Beispiel aufbauend kann man den Sketch leicht abändern, so dass auch auf Server ohne eigene IP-Adresse zugegriffen werdne kann oder Parameter beim Zugriff übermittelt werden. Warum machst Du das nicht?

Go Up