#include #include // Einfacher Webserver // Im Browser http:/// eingeben // z.B. http://192.168.0.42/ // Einrichtung: siehe Echo-Programm // MAC-Adresse byte mac[] = { 0xAF, 0xFE, 0xAB, 0xBA, 0xDE, 0xAF }; // IP-Adresse IPAddress ip(192, 168, 0, 42); // Ob DHCP benutzt werden soll const bool USE_DHCP = true; // Server EthernetServer server(80); // HTTP-Protokoll void setup() { // Serielle Schnittstelle zur Ausgabe der IP nutzen Serial.begin(9600); // Ethernet-Verbindung und Server starten Serial.println("IP-Adresse ueber DHCP anfordern..."); if (!USE_DHCP || Ethernet.begin(mac) == 0) { Serial.println("DHCP-Anfrage fehlgeschlagen - manuelle Konfiguration"); Ethernet.begin(mac, ip); } server.begin(); Serial.print("Arduino hat die IP-Adresse "); Serial.println(Ethernet.localIP()); pinMode(pin_motion, INPUT); pinMode(pin_temperature, INPUT); } // Puffer fuer das empfangene Kommando vom Browser const int COMMAND_SIZE = 2048; char command[COMMAND_SIZE]; EthernetClient client; void do_measurements() { // TODO: Hier messen } void display_page() { client.println("

Mein Arduino

"); // TODO: Hier HTML-Seite ausgeben } void loop() { do_measurements(); // Anfrage bearbeiten client = server.available(); if (client) { int currentLineIsBlank = 1; int cmd = 0; while (client.connected()) { // Client verbunden if (client.available()) { // Zeichen verfuegbar char c = client.read(); Serial.write(c); if (cmd < COMMAND_SIZE - 1) command[cmd++] = c; if (c == '\n' && currentLineIsBlank) { command[cmd] = '\0'; // Antwort schicken client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println("Refresh: 5"); client.println(); client.println(""); client.println("Mein Arduino"); display_page(); client.println(""); break; } if (c == '\n') { currentLineIsBlank = 1; } else if (c != '\r') { currentLineIsBlank = 0; } } } delay(1); client.stop(); } }