diff --git a/garage/Garage_Nano.ino b/garage/Garage_Nano.ino index 4d1a96b..c5d3c38 100644 --- a/garage/Garage_Nano.ino +++ b/garage/Garage_Nano.ino @@ -3,7 +3,7 @@ // Enter a MAC address and IP address for your controller below. byte mac[] = {0xA4, 0xDA, 0x49, 0xB8, 0x19, 0xA4}; -IPAddress ip(192,168,178,190); +IPAddress ip(192, 168, 178, 52); EthernetServer server(80); const int remotePin = 2; @@ -48,24 +48,44 @@ void loop() { Serial.println("Remote button pressed"); triggerRemote(); } - + if (digitalRead(motorButton) == HIGH) { Serial.println("Motor button pressed"); triggerMotor(); } - + // listen for incoming clients EthernetClient client = server.available(); if (client) { Serial.println("new client"); // an http request ends with a blank line bool currentLineIsBlank = true; + + byte trigger = 0; + char uri[64]; + byte idx = 0; + boolean uriLine = false; + while (client.connected()) { if (client.available()) { char c = client.read(); - // TODO extract GET URI - + if (currentLineIsBlank && c == 'G') { + uriLine = true; + uri[idx] = c; + idx++; + } + else if (uriLine) { + if (c == '\n') { + uriLine = false; + uri[idx] = '\0'; + } + else { + uri[idx] = c; + idx++; + } + } + Serial.write(c); // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, @@ -76,7 +96,22 @@ void loop() { client.println("Content-Type: text/plain"); client.println("Connection: close"); // the connection will be closed after completion of the response client.println(); - client.println("Mufflon!"); + if (uri[4] == '/' && uri[5] == 'r' && uri[6] == ' ') { + client.println("trigger remote"); + trigger = 1; + } + else if (uri[4] == '/' && uri[5] == 'm' && uri[6] == ' ') { + client.println("trigger motor"); + trigger = 2; + } + else if (uri[4] == '/' && uri[5] == 'a' && uri[6] == ' ') { + client.println("trigger all"); + trigger = 3; + } + else { + client.println("not found"); + trigger = 0; + } break; } if (c == '\n') { @@ -93,31 +128,41 @@ void loop() { // close the connection: client.stop(); Serial.println("client disconnected"); + + if (trigger == 1) { + triggerRemote(); + } + else if (trigger == 2) { + triggerMotor(); + } + else if (trigger == 3) { + triggerAll(); + } } } void triggerRemote() { - digitalWrite(remotePin, HIGH); - digitalWrite(ledPin, LOW); - delay(500); - digitalWrite(remotePin, LOW); - digitalWrite(ledPin, HIGH); + digitalWrite(remotePin, HIGH); + digitalWrite(ledPin, HIGH); + delay(500); + digitalWrite(remotePin, LOW); + digitalWrite(ledPin, LOW); } void triggerMotor() { - digitalWrite(motorPin, HIGH); - digitalWrite(ledPin, LOW); - delay(500); - digitalWrite(motorPin, LOW); - digitalWrite(ledPin, HIGH); + digitalWrite(motorPin, HIGH); + digitalWrite(ledPin, HIGH); + delay(500); + digitalWrite(motorPin, LOW); + digitalWrite(ledPin, LOW); } void triggerAll() { - digitalWrite(remotePin, HIGH); - digitalWrite(motorPin, HIGH); - digitalWrite(ledPin, LOW); - delay(500); - digitalWrite(remotePin, LOW); - digitalWrite(motorPin, LOW); - digitalWrite(ledPin, HIGH); + digitalWrite(remotePin, HIGH); + digitalWrite(motorPin, HIGH); + digitalWrite(ledPin, HIGH); + delay(500); + digitalWrite(remotePin, LOW); + digitalWrite(motorPin, LOW); + digitalWrite(ledPin, LOW); }