#include <SoftwareSerial.
h>
  #define DEBUG true
  SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 5, make TX Arduino line is pin 6.
  int LED=12; //LED PIN
  int itsONled[] = {0,0}; // LED STATUS ARRAY eg- ON or OFF at startup.
  void setup()
      pinMode(LED, OUTPUT);
      Serial.begin(9600);
      esp8266.begin(115200); // your esp's baud rate might be different
      sendData("AT+RST\r\n",2000,DEBUG); // reset module
      //sendData("AT+CWMODE=1\r\n",1000,DEBUG); // configure as Access point mode
      sendData("AT+CWMODE=1\r\n",1000,DEBUG); // configure as Wireless Station mode
   sendData("AT+CWJAP=\"yourssid\",\"pass\"\r\n", 6000, DEBUG); //Put Your SSID and password if activate as Station mode else
comment down the line
            sendData("AT+CIFSR\r\n",2000,DEBUG); // get ip address
            sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections
            sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
void loop()
    if(esp8266.available()) // check if the esp is sending a message
        if(esp8266.find("+IPD,"))
        // subtract 48 because the read() function returns
        // the ASCII decimal value and 0 (the first decimal number) starts at 48
        int connectionId = esp8266.read()-48;
        //To read the url sent by the client
        String msg;
        esp8266.find("?");
        delay(100);
        msg = esp8266.readStringUntil(' ');
        String command1 = msg.substring(0);
        // HTML START
        String webpage = "<html><head><title>ESP8266 WEB SWITCH</title>";
   webpage += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><style>.button {background-color:
orange;border: none;color: white;padding: 15px 32px;text-align: center;display: inline-block;font-size: 16px;} .centre {text-align:
center;}</style>";
        webpage += "</head><body class=\"centre\"><h1 class=\"centre\">ESP8266 WEB SWITCH</h1>";
        //COMMANDS TO TURN ON or OFF LED RECEIVE BY WEB
                  if (command1 == "T"){
                   if (itsONled[1] == 1)
                       digitalWrite(LED, LOW);
                      itsONled[1] = 0;
                      webpage += "<p>LED STATUS OFF</p>";
                  else
                      digitalWrite(LED, HIGH);
                      itsONled[1] = 1;
                      webpage += "<p>LED STATUS ON</p>";
        webpage += "<a class=\"button\" href=\"?T\">TAP</a></body></html>";
        String cipSend = "AT+CIPSEND=";
        cipSend += connectionId;
        cipSend += ",";
        cipSend +=webpage.length();
        cipSend +="\r\n";
        sendData(cipSend,500,DEBUG);
        sendData(webpage,500,DEBUG);
        //BELOW THIS LINE CLOSE THE CONNECTION
        String closeCommand = "AT+CIPCLOSE=";
        closeCommand+=connectionId; // append connection id
        closeCommand+="\r\n";
        sendData(closeCommand,500,DEBUG);
//PROGRAM TO SEND COMMAND TO ESP8266
void sendData(String command, const int timeout, boolean debug)
{
    esp8266.print(command); // send the read character to the esp8266
    long int time = millis();
    while( (time+timeout) > millis())
        while(esp8266.available())
            // The esp has data so display its output to the serial window
            Serial.write(esp8266.read());
}
//Make sure to subscribe Technomekanics:)
String ssid   = "Simulator Wifi"; // SSID to connect to
String password = ""; // Our virtual wifi has no password
String host   = "api.thingspeak.com"; // Open Weather Map API
const int httpPort = 80;
String uri    = "/update?api_key=AATWMZDY4ZQM0ZJU&field1=";
int setupESP8266(void) {
 // Start our ESP8266 Serial Communication
 Serial.begin(115200); // Serial connection over USB to computer
 Serial.println("AT"); // Serial connection on Tx / Rx port to ESP8266
 delay(10);     // Wait a little for the ESP to respond
 if (!Serial.find("OK")) return 1;
    // Connect to 123D Circuits Simulator Wifi
    Serial.println("AT+CWJAP=\"" + ssid + "\",\"" + password + "\"");
    delay(10);     // Wait a little for the ESP to respond
    if (!Serial.find("OK")) return 2;
    // Open TCP connection to the host:
    Serial.println("AT+CIPSTART=\"TCP\",\"" + host + "\"," + httpPort);
    delay(50);     // Wait a little for the ESP to respond
    if (!Serial.find("OK")) return 3;
    return 0;
void anydata(void) {
    int temp = map(analogRead(A0),20,358,-40,125);
    // Construct our HTTP call
    String httpPacket = "GET " + uri + String(temp) + " HTTP/1.1\r\nHost: " + host + "\r\n\r\n";
    int length = httpPacket.length();
    // Send our message length
    Serial.print("AT+CIPSEND=");
    Serial.println(length);
    delay(10); // Wait a little for the ESP to respond if (!Serial.find(">")) return -1;
    // Send our http request
    Serial.print(httpPacket);
    delay(10); // Wait a little for the ESP to respond
    if (!Serial.find("SEND OK\r\n")) return;
void setup() {
    setupESP8266();
void loop() {
    anydata();
    delay(10000);