#include <ESP8266WiFi.h>
WiFiClient client;
WiFiServer server(80);
const char* ssid = "iPhone";
const char* password = "74585388";
String command =""; // Command received from Android device
// Set Relay Pins
int relay1 = 14;
int relay2 = 12;
int relay3 = 13;
int relay4 = 15;
void setup()
{
Serial.begin(115200);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
digitalWrite(relay3,HIGH);
digitalWrite(relay4,HIGH);
connectWiFi();
server.begin();
}
void loop()
{
if(WiFi.status() != WL_CONNECTED) connectWiFi();
client = server.available();
if (!client) return;
command = checkClient();
//Serial.print(command.length());
//Serial.println(command);
if (command == "r1on" || command == "open%20number%20one" || command == "%E6%89%93%E9%96%8B%E6%B5%B4%E5%AE%A4%E7%87%88") digitalWrite(relay1,LOW);
else if (command == "r1off" || command == "close%20number%20one" || command == "%E9%97%9C%E6%8E%89%E6%B5%B4%E5%AE%A4%E7%87%88") digitalWrite(relay1,HIGH);
else if (command == "r2on" || command == "open%20number%20two" || command == "%E6%89%93%E9%96%8B%E5%AE%A2%E5%BB%B3%E7%87%88") digitalWrite(relay2,LOW);
else if (command == "r2off" || command == "close%20number%20two" || command == "%E9%97%9C%E6%8E%89%E5%AE%A2%E5%BB%B3%E7%87%88") digitalWrite(relay2,HIGH);
else if (command == "r3on" || command == "open%20number%20three" || command == "%E6%89%93%E9%96%8B%E8%87%A5%E5%AE%A4%E7%87%88" ) digitalWrite(relay3,LOW);
else if (command == "r3off" || command == "close%20number%20three" || command == "%E9%97%9C%E6%8E%89%E8%87%A5%E5%AE%A4%E7%87%88") digitalWrite(relay3,HIGH);
else if (command == "r4on" || command == "open%20number%20four" || command == "%E6%89%93%E9%96%8B%E9%99%BD%E6%AA%AF%E7%87%88") digitalWrite(relay4,LOW);
else if (command == "r4off" || command == "close%20number%20four" || command == "%E9%97%9C%E6%8E%89%E9%99%BD%E6%AA%AF%E7%87%88") digitalWrite(relay4,HIGH);
else if (command == "allon" || command == "open%20all" || command == "%E6%89%93%E9%96%8B%E5%85%A8%E9%83%A8")
{
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);
digitalWrite(relay3,LOW);
digitalWrite(relay4,LOW);
}
else if (command == "alloff" || command == "close%20all"|| command == "%E9%97%9C%E6%8E%89%E5%85%A8%E9%83%A8" )
{
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
digitalWrite(relay3,HIGH);
digitalWrite(relay4,HIGH);
}
sendBackEcho(command); // send command echo back to android device
command = "";
}
/* connecting WiFi */
void connectWiFi()
{
Serial.println("Connecting to WIFI");
WiFi.begin(ssid, password);
while ((!(WiFi.status() == WL_CONNECTED)))
{
delay(300);
Serial.print("..");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("NodeMCU Local IP is : ");
Serial.print((WiFi.localIP()));
}
/* check command received from Android Device */
String checkClient (void)
{
while(!client.available()) delay(1);
String request = client.readStringUntil('\r');
request.remove(0, 5);
request.remove(request.length()-9,9);
return request;
}
/* send command echo back to android device */
void sendBackEcho(String echo)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println(echo);
client.println("</html>");
client.stop();
delay(1);
}