Hallo,
da ich über die Suche nichts Konkretes zu diesem Thema finden konnte wirf ich die Frage mal in den Raum.
Ist es möglich, wenn ich mein Arduino als Webserver betreibe und über diesen diverse Relais steuere die schalter in eine fremde Webseite implementieren kann?
Oder direkt von einer anderen Seite den Server steuere?
der aufgespielte code sieht folgendermaßen aus:
#include <EtherCard.h>
#define LED1PIN 6
#define LED2PIN 7
#define LED3PIN 8
#define LED4PIN 9#define STATIC 0 // set to 1 to disable DHCP (adjust myip/gwip values below)
#if STATIC
// ethernet interface ip address
static byte myip[] = { 192,168,1,200 };
// gateway ip address
static byte gwip[] = { 192,168,1,1 };
#endif// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };byte Ethernet::buffer[500]; // tcp/ip send and receive buffer
boolean led1Status;
boolean led2Status;
boolean led3Status;
boolean led4Status;void setup () {
Serial.begin(57600);
Serial.println("WebLeds Demo");if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
Serial.println( "Failed to access Ethernet controller");
#if STATIC
ether.staticSetup(myip, gwip);
#else
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
#endifether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);pinMode(LED1PIN, OUTPUT);
pinMode(LED2PIN, OUTPUT);
pinMode(LED3PIN, OUTPUT);
pinMode(LED4PIN, OUTPUT);digitalWrite(LED1PIN, LOW);
digitalWrite(LED2PIN, LOW);
digitalWrite(LED3PIN, LOW);
digitalWrite(LED4PIN, LOW);led1Status = false;
led2Status = false;
led3Status = false;
led4Status = false;
}void loop() {
word len = ether.packetReceive();
word pos = ether.packetLoop(len);if(pos) {
if(strstr((char *)Ethernet::buffer + pos, "GET /led_off.png") != 0)
send_png_image(led_off, sizeof(led_off));
else if(strstr((char *)Ethernet::buffer + pos, "GET /led_on.png") != 0)
send_png_image(led_on, sizeof(led_on));else {
if(strstr((char *)Ethernet::buffer + pos, "GET /?LED1") != 0) {
led1Status = !led1Status;
digitalWrite(LED1PIN, led1Status);
}if(strstr((char *)Ethernet::buffer + pos, "GET /?LED2") != 0) {
led2Status = !led2Status;
digitalWrite(LED2PIN, led2Status);
}
if(strstr((char *)Ethernet::buffer + pos, "GET /?LED3") != 0) {
led3Status = !led3Status;
digitalWrite(LED3PIN, led3Status);
}
if(strstr((char *)Ethernet::buffer + pos, "GET /?LED4") != 0) {
led4Status = !led4Status;
digitalWrite(LED4PIN, led4Status);
}BufferFiller bfill = ether.tcpOffset();
bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
"Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
"WebLeds"
"Toggle leds: "));if(led1Status) bfill.emit_p(PSTR("<a href="/?LED1"><img src="led_on.png">"));
else bfill.emit_p(PSTR("<a href="/?LED1"><img src="led_off.png">"));if(led2Status) bfill.emit_p(PSTR("<a href="/?LED2"><img src="led_on.png">"));
else bfill.emit_p(PSTR("<a href="/?LED2"><img src="led_off.png">"));if(led3Status) bfill.emit_p(PSTR("<a href="/?LED3"><img src="led_on.png">"));
else bfill.emit_p(PSTR("<a href="/?LED3"><img src="led_off.png">"));if(led4Status) bfill.emit_p(PSTR("<a href="/?LED4"><img src="led_on.png">"));
else bfill.emit_p(PSTR("<a href="/?LED4"><img src="led_off.png">"));bfill.emit_p(PSTR(""));
ether.httpServerReply(bfill.position());
}
}
}void send_png_image(PGM_P png_image, unsigned int image_size) {
BufferFiller bfill = ether.tcpOffset();
bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
"Content-Type: image/png\r\n\r\n"));
bfill.emit_raw_p(png_image, image_size);
ether.httpServerReply(bfill.position());
}
Grüße