Go Down

Topic: fragen zum ethernet board - webserver und client zugleich? (Read 620 times) previous topic - next topic

maniwahn

Jun 28, 2012, 12:58 am Last Edit: Jun 29, 2012, 01:21 am by maniwahn Reason: 1
Hallo,

ich habe ein Programm (ab)geschrieben,bzw auf meine Bedürfnisse angepasst,
mit welchen ich eine URL aufrufe. (get Parameter an meinen Server sende)
meine php datei macht den Rest.

Gerne würde ich hier auch noch mit dem Browser auf den Arduino zugreifen können,
um hier noch die eine oder andere Funktion einzufügen.
Stichwort ist hier wohl : WebServer.

Wie mache ich das?
Wie mache ich aus dem unteren Code zusätzlich noch einen Webserver?


mein Programm bisher: (funktioniert bisher alles)
Code: [Select]

#include <SPI.h>
#include <Ethernet.h>

const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  8;      // the number of the LED pin
int buttonState = 0;         // variable for reading the pushbutton status

byte mac[] = {0x90, 0xA2, 0xDA, 0x04, 0x00, 0x09};
IPAddress ip(192, 168, 178, 111);
byte gateway[] = { 192, 168, 178, 1 }; // Gateway eingeben!
byte subnet[] = { 255, 255, 255, 0 };
byte server[] = {192, 168, 178, 150}; // IP des Servers eingeben
EthernetClient client;

char host[] = "localhost"; // DOMAIN
char url[] = "/index.php"; // Pfad zur PHP-Datei
char key[] = "123456"; // Kennwort aus PHP-Datei

void setup()
{

// initialize the LED pin as an output:
 pinMode(ledPin, OUTPUT);      
 // initialize the pushbutton pin as an input:
 pinMode(buttonPin, INPUT);
Serial.begin(9600); // für Debug-Ausgaben
Serial.println("Programm gestartet…");
Ethernet.begin(mac, ip, gateway, subnet);  

}

void loop(){
 // read the state of the pushbutton value:
 buttonState = digitalRead(buttonPin);
 // check if the pushbutton is pressed.
 // if it is, the buttonState is HIGH:
 if (buttonState == HIGH) {    
   // turn LED on:    
    digitalWrite(ledPin, HIGH);  
    Daten_senden();
}
 else {
   // turn LED off:
   digitalWrite(ledPin, LOW);
   client.stop();
 }
}


void Daten_senden()
{
if (client.connect(server, 80)) // Verbindung zum Server aufbauen
{
Serial.print("Verbunden…sende Daten…");
client.print("GET ");
client.print(url);
client.print("?TEMP=");
client.print("111");
client.print("&KEY=");
client.print(key);
client.println(" HTTP/1.1""");
client.print("Host: ");
client.println(host);
client.println();
Serial.println("fertig!");

}
else
{
Serial.println(" ***** VERBINDUNGSAUFBAU NICHT MÖGLICH *****");
}
}



Danke für evtl. Antworten

Gruß




kduin

Hi,

die Frage hab ich mir vor kurzem auch gestellt.

Die Antwort ist ganz easy:

Such dir einen Beispielsketch, das als Ethernetserver fungiert und kopiere den entsprechenden Code (am besten als Funktion verpackt) in die Loop-Schleife.

Trib

Hallo,

hast du das Ethernet Shield mit SD Kartenleser?
Dann kann ich dir folgenden Link empfehlen:
Ethernetfiles

Dort findest du aber auch ohne die SD Karte zu nutzen, wie man einen Zugriff verarbeitet und dann einfach HTML zurückschreiben kann.

maniwahn

Quote
Die Antwort ist ganz easy:

Such dir einen Beispielsketch, das als Ethernetserver fungiert und kopiere den entsprechenden Code (am besten als Funktion verpackt) in die Loop-Schleife.


Danke, ich versuche es einfach heute Abend/ nacht mal!

@Trib:
Ja, könnte sein das ich das habe ;)
Einzeln als "Webserver"  und EINZELN als "EthernetClient client;" 
komme ich ja mit dem was ich brauche klar.
Nur beides zusammen noch nicht....

Wenn ich es es mit dem Tip von "kduin" hinbekommen haben,
Poste ich die Lösung.

Gruß


Go Up