Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Ethernet2.h>
- byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
- IPAddress ip( 192, 168, 178, 10 );
- const int MAX_PAGENAME_LEN = 10;
- const int anzahl = 16;
- char buffer[MAX_PAGENAME_LEN + 1];
- unsigned long wait_turn_pc_off;
- unsigned long wait_run_pc;
- bool ispcon = false;
- bool iswlanon = true;
- bool ischargeon = false;
- bool turnpcoff = false;
- bool turnpcon = false;
- EthernetServer server(8080);
- EthernetClient client;
- void setup() {
- Ethernet.begin(mac, ip);
- server.begin();
- delay(1000);
- for (int i = 30; i <= ((anzahl - 1) + 30); i++) {
- pinMode(i, OUTPUT);
- digitalWrite(i, HIGH);
- }
- digitalWrite(38, LOW);
- }
- void loop() {
- client = server.available();
- if (client) {
- int type = 0;
- while (client.connected()) {
- if (client.available()) {
- memset(buffer, 0, sizeof(buffer));
- if (client.readBytesUntil('/', buffer, MAX_PAGENAME_LEN)) {
- if (strcmp(buffer, "GET ") == 0 )
- type = 1;
- else if (strcmp(buffer, "POST ") == 0)
- type = 2;
- memset(buffer, 0, sizeof(buffer));
- if (client.readBytesUntil( '/', buffer, MAX_PAGENAME_LEN )) {
- if (strcasecmp(buffer, "relais") == 0) {
- showRelais(type == 2);
- } else if (strcasecmp(buffer, "pc") == 0) {
- showPC(type == 2);
- } else if (strcasecmp(buffer, "runpc") == 0) {
- showRunPC(type == 2);
- } else if (strcasecmp(buffer, "vars") == 0) {
- showVars(type == 2);
- } else if (strcasecmp(buffer, "charge") == 0) {
- showCharge(type == 2);
- } else if (strcasecmp(buffer, "wlan") == 0) {
- showWLAN(type == 2);
- } else if (strcasecmp(buffer, "vars2") == 0) {
- showVars2(type == 2);
- } else if (strcasecmp(buffer, "pcOFF") == 0) {
- showPowerOffPC(type == 2);
- } else if (strcasecmp(buffer, "killALL") == 0) {
- killALL(type == 2);
- } else {
- unknownPage(buffer);
- }
- }
- client.println(F("</body></html>"));
- }
- break;
- }
- }
- delay(1);
- client.stop();
- }
- if (turnpcoff && millis() - wait_turn_pc_off > 125) {
- pinMode(42, OUTPUT);
- digitalWrite(42, HIGH);
- }
- if (turnpcoff && millis() - wait_turn_pc_off > 150000) {
- turnpcoff = false;
- pinMode(30, OUTPUT);
- pinMode(31, OUTPUT);
- pinMode(32, OUTPUT);
- digitalWrite(30, HIGH);
- //delay(750);
- digitalWrite(31, HIGH);
- //delay(750);
- digitalWrite(32, HIGH);
- }
- if (turnpcon && millis() - wait_run_pc > 125) {
- turnpcon = false;
- pinMode(42, OUTPUT);
- digitalWrite(42, HIGH);
- }
- }
- void showPC(boolean isPost) {
- if (isPost) {
- client.find("\n\r");
- while (client.findUntil("pinD", "\n\r")) {
- int pin = client.parseInt();
- int val = client.parseInt();
- if (pin == 28) {
- if (val == 1) {
- turnpcoff = false;
- ispcon = false;
- pinMode(30, OUTPUT);
- pinMode(31, OUTPUT);
- pinMode(32, OUTPUT);
- digitalWrite(30, HIGH);
- //delay(750);
- digitalWrite(31, HIGH);
- //delay(750);
- digitalWrite(32, HIGH);
- } else {
- ispcon = false;
- turnpcoff = false;
- pinMode(30, OUTPUT);
- pinMode(31, OUTPUT);
- pinMode(32, OUTPUT);
- digitalWrite(30, LOW);
- //delay(750);
- digitalWrite(31, LOW);
- //delay(250);
- digitalWrite(32, LOW);
- }
- } else if (pin == 27) {
- if (val == 1 && !ispcon) {
- ispcon = true;
- iswlanon = true;
- turnpcoff = false;
- pinMode(30, OUTPUT);
- pinMode(31, OUTPUT);
- pinMode(32, OUTPUT);
- pinMode(42, OUTPUT);
- pinMode(38, OUTPUT);
- digitalWrite(30, LOW);
- //delay(750);
- digitalWrite(31, LOW);
- //delay(750);
- digitalWrite(32, LOW);
- digitalWrite(38, LOW);
- //delay(2500);
- digitalWrite(42, LOW);
- turnpcon = true;
- wait_run_pc = millis();
- } else if (val == 0 && ispcon) {
- turnpcoff = true;
- ispcon = false;
- digitalWrite(42, LOW);
- wait_turn_pc_off = millis();
- }
- } else if (pin == 29) {
- for (int i = 30; i <= ((anzahl - 1) + 30); i++) {
- pinMode(i, OUTPUT);
- digitalWrite(i, HIGH);
- //delay(125);
- }
- turnpcoff = false;
- ispcon = false;
- ischargeon = false;
- iswlanon = false;
- } else if (pin == 38) {
- pinMode(pin, OUTPUT);
- iswlanon = !val;
- digitalWrite(pin, val);
- }
- }
- }
- sendHeader("PC Control");
- client.println(F("<table border='1'>"));
- client.print(F("<tr><td>Computer"));
- client.print(F(" </td><td>"));
- htmlButton("RUN", "pinD", 27, "1", "'/pc/'");
- client.print(F(" </td><td>"));
- htmlButton("SHUTDOWN", "pinD", 27, "0", "'/pc/'");
- client.print(F(" </td><td>"));
- htmlButton("POWER ON", "pinD", 28, "0", "'/pc/'");
- client.print(F(" </td><td>"));
- htmlButton("POWER OFF", "pinD", 28, "1", "'/pc/'");
- client.print(F(" </td></tr>"));
- client.println(F("</table>"));
- client.println(F("<table border='1'>"));
- client.print(F("<tr><td>WLAN"));
- client.print(F(" </td><td>"));
- htmlButton("POWER ON", "pinD", 38, "0", "'/pc/'");
- client.print(F(" </td><td>"));
- htmlButton("POWER OFF", "pinD", 38, "1", "'/pc/'");
- client.print(F(" </td></tr>"));
- client.println(F("</table>"));
- client.println(F("<table border='1'>"));
- client.print(F(" <tr><td>Kill All Power"));
- client.print(F(" </td><td>"));
- htmlButton("POWER OFF", "pinD", 29, "1", "'/pc/'");
- client.print(F(" </td>"));
- client.print(F("</tr>"));
- client.println(F("</table>"));
- }
- void showRunPC(boolean isPost) {
- sendHeader("PC Autostart");
- if (!ispcon) {
- ispcon = true;
- turnpcoff = false;
- iswlanon = true;
- pinMode(30, OUTPUT);
- pinMode(31, OUTPUT);
- pinMode(32, OUTPUT);
- pinMode(42, OUTPUT);
- pinMode(38, OUTPUT);
- digitalWrite(30, LOW);
- //delay(750);
- digitalWrite(31, LOW);
- //delay(750);
- digitalWrite(32, LOW);
- digitalWrite(38, LOW);
- //delay(2500);
- digitalWrite(42, LOW);
- turnpcon = true;
- wait_run_pc = millis();
- client.println(F(" DONE "));
- } else {
- client.println(F(" PC is already on ... "));
- }
- }
- void showCharge(boolean isPost) {
- sendHeader("Charging Port");
- if (!ischargeon) {
- ischargeon = true;
- pinMode(33, OUTPUT);
- digitalWrite(33, LOW);
- client.println(F(" Charging Port is ON "));
- } else {
- ischargeon = false;
- pinMode(33, OUTPUT);
- digitalWrite(33, HIGH);
- client.println(F(" Charging Port is OFF "));
- }
- }
- void showWLAN(boolean isPost) {
- sendHeader("WLAN Port");
- if (!iswlanon) {
- iswlanon = true;
- pinMode(38, OUTPUT);
- digitalWrite(38, LOW);
- client.println(F(" WLAN is ON "));
- } else {
- iswlanon = false;
- pinMode(38, OUTPUT);
- digitalWrite(38, HIGH);
- client.println(F(" WLAN is OFF "));
- }
- }
- void showVars(boolean isPost) {
- sendHeader("Variablen");
- if (isPost) {
- client.find("\n\r");
- while (client.findUntil("pinD", "\n\r")) {
- int pin = client.parseInt();
- int val = client.parseInt();
- if (pin == 26) {
- if (val == 0) {
- ispcon = !ispcon;
- } else {
- turnpcoff = !turnpcoff;
- if (turnpcoff == true) {
- ispcon = false;
- } else {
- ispcon = true;
- }
- }
- } if (pin == 27) {
- ischargeon = !ischargeon;
- } if (pin == 28) {
- iswlanon = !iswlanon;
- }
- }
- }
- client.println(F("<table border='1'>"));
- client.print(F("<tr><td>isPCon = "));
- client.print(ispcon);
- client.print(F("</td><td>"));
- htmlButton("CHANGE", "pinD", 26, "0", "'/vars/'");
- client.print(F("</td></tr><tr><td>"));
- client.print(F("turnPCoff = "));
- client.print(turnpcoff);
- client.print(F("</td><td>"));
- htmlButton("CHANGE", "pinD", 26, "1", "'/vars/'");
- client.print(F("</td></tr><tr><td>"));
- client.print(F("Chargin Port = "));
- client.print((ischargeon));
- client.print(F("</td><td>"));
- htmlButton("CHANGE", "pinD", 27, "0", "'/vars/'");
- client.print(F("</td></tr><tr><td>"));
- client.print(F("isWLANon = "));
- client.print(iswlanon);
- client.print(F("</td><td>"));
- htmlButton("CHANGE", "pinD", 28, "0", "'/vars/'");
- client.print(F("</td></tr>"));
- client.println(F("</table>"));
- }
- void showVars2(boolean isPost) {
- sendHeader("vars");
- client.print(F("//t"));
- client.print(ispcon);
- client.print(F("//t"));
- client.print(turnpcoff);
- client.print(F("//t"));
- client.print(ischargeon);
- client.print(F("//t"));
- client.print(iswlanon);
- client.print(F("//t"));
- }
- void showPowerOffPC(boolean isPost) {
- sendHeader("PC POWER OFF");
- ispcon = false;
- turnpcoff = false;
- pinMode(30, OUTPUT);
- pinMode(31, OUTPUT);
- pinMode(32, OUTPUT);
- digitalWrite(30, HIGH);
- //delay(750);
- digitalWrite(31, HIGH);
- //delay(750);
- digitalWrite(32, HIGH);
- }
- void killALL(boolean isPost) {
- sendHeader("Kill ALL POWER");
- ispcon = false;
- turnpcoff = false;
- iswlanon = false;
- ischargeon = false;
- for (int i = 30; i <= ((anzahl - 1) + 30); i++) {
- pinMode(i, OUTPUT);
- digitalWrite(i, HIGH);
- //delay(125);
- }
- }
- void showRelais(boolean isPost) {
- if (isPost) {
- client.find("\n\r");
- while (client.findUntil("pinD", "\n\r")) {
- int pin = 29 + client.parseInt();
- int val = client.parseInt();
- if (pin >= 30) {
- pinMode(pin, OUTPUT);
- digitalWrite(pin, val);
- } else if (pin == 29) {
- for (int i = 30; i <= ((anzahl - 1) + 30); i++) {
- pinMode(i, OUTPUT);
- digitalWrite(i, HIGH);
- //delay(125);
- }
- turnpcoff = false;
- ispcon = false;
- ischargeon = false;
- iswlanon = false;
- }
- if (pin == 33) {
- ischargeon = !val;
- }
- if (pin == 38) {
- iswlanon = !val;
- }
- }
- }
- sendHeader("Relais");
- client.println(F("<table border='1'>"));
- client.print(F(" <tr><td>Kill All Power"));
- client.print(F(" </td><td>"));
- htmlButton("POWER OFF", "pinD", 0, "1", "'/relais/'");
- client.print(F(" </td>"));
- client.print(F("</tr>"));
- client.println(F("</table>"));
- client.println(F("<table border='1'>"));
- for (int i = 1; i < 5; i++) {
- client.print(F("<tr><td>Relais "));
- client.print(i);
- client.print(F(" </td><td>"));
- htmlButton("EIN", "pinD", i, "0", "'/relais/'");
- client.print(F(" </td><td>"));
- htmlButton("AUS", "pinD", i, "1", "'/relais/'");
- client.print(F(" </td><td>Relais "));
- client.print(i + 4);
- client.print(F(" </td><td>"));
- htmlButton("EIN", "pinD", i + 4, "0", "'/relais/'");
- client.print(F(" </td><td>"));
- htmlButton("AUS", "pinD", i + 4, "1", "'/relais/'");
- client.print(F(" </td><td>Relais "));
- client.print(i + 8);
- client.print(F(" </td><td>"));
- htmlButton("EIN", "pinD", i + 8, "0", "'/relais/'");
- client.print(F(" </td><td>"));
- htmlButton("AUS", "pinD", i + 8, "1", "'/relais/'");
- client.print(F(" </td><td>Relais "));
- client.print(i + 12);
- client.print(F(" </td><td>"));
- htmlButton("EIN", "pinD", i + 12, "0", "'/relais/'");
- client.print(F(" </td><td>"));
- htmlButton("AUS", "pinD", i + 12, "1", "'/relais/'");
- client.print(F(" </td>"));
- }
- client.print(F("</tr>"));
- client.println(F("</table>"));
- }
- void htmlButton(char *label, char *name, int nameId, char *value, char *page) {
- client.print(F("<form action='"));
- client.print(page);
- client.print(F("' method='POST'><p><input type='hidden' name='"));
- client.print(name);
- client.print(nameId);
- client.print(F("' value='"));
- client.print(value);
- client.print(F("'><input type='submit' value='"));
- client.print(label);
- client.print(F("'/></form>"));
- }
- void unknownPage(char *page) {
- sendHeader("Unbekannte Seite");
- client.println(F("<h1>LOST</h1>"));
- client.println(F("<h2>Unbekannte Seite</h2>"));
- client.println(page);
- }
- void sendHeader(char *title) {
- // Standard HTTP-Response-Header senden
- client.println(F("HTTP/1.1 200 OK"));
- client.println(F("Content-Type: text/html"));
- client.println();
- client.print(F("<html><head><title>"));
- client.println(title);
- client.println(F("</title></head><body>"));
- }
- //http://pastebin.com/uurPzSZ6
Add Comment
Please, Sign In to add comment