Esp8266 Wemos D1 Mini Serial to Wifi Html WebServer Monitor for Arduino Smart Grow Box Controller [OUT-DATED]

 /* #########################################################################  
   #################### Esp8266 Serial to WiFi Monitor #####################  
   ########################## WEMOS D1 MINI ################################  
   ############################### for #####################################  
   ################### ARDUINO NANO SMART GROW CONTROLLER ##################  
   #################                              ##########################  
   ############################ |WWWW| #####################################  
   ############################ \O_O/ ######################################  
   #  CAN BE USED AS A GENERAL PURPOSE MONITOR FOR ANYTHING WITH A TX PIN ##  
   #############        AFTER SOME MODIFICATIONS        ####################  
 */  
     
   
   
 /* #########################################################################  
 I'll improve it as i learn more  
  #########################################################################  
 // PLEASE LIKE AND SUBSCRIBE   
 // MY YOUTUBE CHANNEL   
 // YOUTUBE.COM/CRAZYGUYOFFICIAL  
 // Visit Blog for Sketch Updates and more Sketches and "things"  
   
   
 // Set Port forward from your router to this Webserver at port 80  
 // to monitor it from anywhere**  
   
 // This server is not secure   
 // controlling things should NEVER be done using   
 // an UN-encrypted webserver like this  
 // It's only good for Monitoring   
 // Subscribe to my channel for updates for this sketch   
 // and other sketches related to this project   
 // because i'll add more things to it gradually   
   
  #########################################################################  
  #########################################################################  
   
   
 */  
   
 #include <ESP8266WiFi.h>  // Version 1.0.0  
 #include <SoftwareSerial.h>  // Version 1.0.0
   
   
   
 const char* ssid = "SQUANCHY01";  
 const char* password ="c137gsasotf";  
   
   
   
   
   
   
   
 char Time[9];           // Character Arrays or C-strings   
 char Day;             // size should be the total number of Chars to be stored +1 for null char  
 char Date[3];  
 char Mon[3];  
 char Year[5];  
 char Status[13];  
 char Temp1[6];  
 char Temp2[6];  
 char Hum[6];  
   
 unsigned long Secs = 0;   
   
 bool newData = 0;  
 bool err =1;  
   
 bool Lsts =0;  
 bool Csts =0;  
 bool Hsts =0;  
 bool Fsts =0;  
 bool Ssts =0;  
 bool DHTerr=0;  
 bool RTCerr=0;  
   
 WiFiServer server(80);  
   
 SoftwareSerial swSer(D1, D2, false, 256);   // "swSer can be changed it will be the name for the Software Serial   
                        // Software Serial Library Enables Esp8266's GPIO D1 and D2   
                        // to be used as Rx and Tx pins RESPECTIVELY   
                        // ONLY Rx is used and is connected to the Tx of a 5V Arduino Nano   
 void setup() {                // using a Voltage Divider circuit 1K and 2K Resistors   
                        // And Ground of esp to Ground of Arduino   
   
   
 Serial.begin(115200);             // This is the baud rate for ESP's Serial at USB which can be viewed in Arduino IDE Serial monitor  
    
 swSer.begin(9600);              // This is the baud rate for esps Software serial at pins D1 and D2 so it can communicate with arduino   
                        // it's slow because of Arduino Nano's slow speed as compared to Esp  
                        // can change the name swSer from above  
 delay(10);  
   
    
    
 Serial.println();  
    
 Serial.print("Connecting to ");  
    
 Serial.println(ssid);  
    
     
     
 WiFi.mode(WIFI_STA);           
                       
 WiFi.begin(ssid, password);  
    
    
    
    
 while (WiFi.status() != WL_CONNECTED)   
    
  {  
      
  delay(500);  
     
  Serial.print(".");  
    
  }  
    
    
  Serial.println("");  
    
  Serial.println("WiFi connected");  
    
    
  server.begin();  
    
  Serial.println("Waiting for the IP Add...");  
    
  delay(5000);  
    
    
  Serial.println(WiFi.localIP());  
   
  }  
   
   
 /*##############################################################################################  
  ###############################################################################################  
  ################ SETUP END ####################################################################  
  ###############################################################################################  
  */  
   
   
   
   
   
   
   
 /*##############################################################################################  
  ###############################################################################################  
  ################ LOOP BEGINS ##################################################################  
  ###############################################################################################  
  */  
   
   
 void loop()   
 {    
  char data[53];  
  byte i = 0 ;  
  byte x = 0 ;  
    
  if (swSer.available() > 0 )   
   
  {    
  char Z = swSer.read();  
     
   if(Z=='Z')   // match first Character to check "validity"   
   {        // and this letter 'Z' is not stored in the array below   
   
   newData=1;  
   Secs=millis()/1000;  
    
    for(i= 0; i< 52; )   
      
    {  
     data[i] = swSer.read();  
       
     i++;  
       
     data[i] = '\0';  
    }  
   
    
    for(i=0; i<52;)  
    {                // serial print to arduino ide monitor via usb,all the chars stored in data array  
     Serial.print("char number: "); // and print char number the INDEX number starting from zero   
                    // the actual first char is the Letter "Z' which is not stored  
     Serial.println(i);  
   
     Serial.println(data[i]);                
    
     i++;         
    }  
    
   }  
  else  
  {  
   err=1;  
  }  
  }  
   
   
 //############# GET TIME #######################################################################  
   
  if(newData)  
  {  
                       // get time from the data array   
   for( i = 0; i < 8; )   
   {   
    Time[i] = data[i];  
    
    i++;   
     
   }  
   
   Serial.print("Time :");   
   
   Serial.println(Time);           // serial print all the chars stored in the time array   
    
    
 //############# GET DAY OF THE WEEK #############################################################  
    
   if( data[8]=='W' )   
    
   {  
    err=0;  
    Day = data[9];  
     
   
   Serial.print("Day :");   
   
   Serial.println(Day);           // serial print all the chars stored in the day array   
   }  
   else  
   {  
   err=1;   
   }  
   
 //############# GET DATE #######################################################################  
   
   if(data[10]=='D')  
   {  
    err=0;   
    x=0;  
    for( i = 11; i < 13; )   
    {  
     Date[x] = data[i];  
     i++;   
     x++;  
    }  
   
    Serial.print("Date :");   
   
    Serial.println(Date);         // serial print all the chars stored in the Date array   
   }  
   else  
   {  
    err=1;   
   }  
   
   
   
 //############# GET MONTH #######################################################################  
   
   
   if(data[13]=='M')  
   {  
    err=0;   
    x=0;  
    for( i =14 ; i < 16; )   
    {  
     Mon[x] = data[i];  
     i++;   
     x++;  
    }  
     
    Serial.print("Month :");   
   
    Serial.println(Mon);          // serial print all the chars stored in the month / mon array   
   }  
   else  
   {  
    err=1;   
   }  
   
 //############# GET YEAR #######################################################################  
   
   if(data[16]=='Y')  
   {  
    err=0;   
    x=0;  
    for( i = 17; i < 21; )   
    {  
     Year[x] = data[i];  
     i++;   
     x++;  
    }  
   
    Serial.print("Year :");   
   
    Serial.println(Year);         // serial print all the chars stored in the Year array   
    
   }  
   else  
   {  
    err=1;   
   }  
    
    
 //############# GET STATUS #######################################################################  
   
   if(data[21]=='L')  
   {  
    err=0;   
    x=0;  
    for( i = 22; i < 34; )   
    {  
     Status[x] = data[i];  
     i++;   
     x++;  
    }  
    
    Serial.print("Status :");   
   
    Serial.println(Status);       // serial print all the chars stored in the Status array   
   }  
   else  
   {  
    err=1;  
   }  
   
    
 //############# GET T1 ###########################################################################  
   
   if(data[34]=='t')  
   {  
    err=0;   
    x=0;  
    for( i = 35; i < 40; )   
    {  
     Temp1[x] = data[i];  
     i++;   
     x++;  
    }  
   
    Serial.print("Temp 1 :");   
   
    Serial.println(Temp1);    // serial print all the chars stored in the temperature / temp1 array   
   }  
   else  
   {  
    err=1;   
   }  
   
   
 //############# GET Hum #######################################################################  
   
   
   if(data[40]=='h')  
   {   
    err=0;  
    x=0;  
    for( i = 41; i < 46; )   
    {  
     Hum[x] = data[i];  
     i++;   
     x++;  
    }  
   
    Serial.print("Humidity :");   
   
    Serial.println(Hum);    // serial print all the chars stored in the Humidity / Hum array   
   }  
   else  
   {  
    err=1;   
   }  
   
 //############# GET T2 #######################################################################  
   
   
   if(data[46]=='r')  
   {   
    err=0;  
    x=0;  
    for( i = 47; i < 52; )   
    {  
     Temp2[x] = data[i];  
     i++;   
     x++;  
    }  
    
    Serial.print("Temp2 :");   
   
    Serial.println(Temp2); // serial print all the chars stored in time array   
   }  
   else  
   {  
    err=1;   
   }  
    
  newData=0;  
   
 }  
   
   
  setStatus();  
    
  sendHtml();  
    
    
   if(millis()/1000 -Secs > 30 )  
   {  
   Serial.println("Resetting Arrays");  
   Serial.println(Secs);  
   ResetArrays();  
   Secs=millis()/1000;  
   }   
    
    
    
    
   
 }   
   
  //####################################################################################  
  //##################### END OF LOOP #######################################  
  //####################################################################################  
   
   
   
 void setStatus()  
 {  
  if(!err)  
  {  
  Lsts=Status[0]-'0';    
  Csts=Status[2]-'0';   
  Hsts=Status[4]-'0';  
  Fsts=Status[6]-'0';  
  Ssts=Status[8]-'0';  
  DHTerr=Status[10]-'0';  
  RTCerr=Status[11]-'0';  
   
  }  
   
   
 }  
   
   
   
 void sendHtml()  
 {  
   
  WiFiClient client = server.available();  
    
  if (client)   
  {  
   Serial.println("New client");  
   boolean blank_line = true;  
     
   while (client.connected())   
   {  
    if (client.available())   
    {  
     char c = client.read();  
       
     if (c == '\n' && blank_line)   
     {  
      client.println("HTTP/1.1 200 OK");  
      client.println("Content-Type: text/html");  
      client.println("Connection: close");  
      client.println();  
      
         
       
     
      client.println("<!DOCTYPE HTML>");  
      client.println("<html>");  
      client.println("<head><meta http-equiv='refresh' content='5'/></head><body><h1>Esp8266 Serial to Wifi Monitor Ver: 1.0</h1>");  
        
      client.println("<h2>>>>> ---- Time :");  
      client.println(Time);  
      client.println("--<<< >>> ---- Day : ");  
      client.println(Day);   
      client.println("--<<< >>> ---- Date : ");  
      client.println(Date);  
      client.println("-");  
      client.println(Mon);  
      client.println("-");  
      client.println(Year);  
      client.println("---- <<<<<");  
      client.println("</h2>");  
      client.println("<br />");  
   
      client.println("<h2>Temp 1 :");  
      client.println(Temp1);  
      client.println("\260C</h2>");  
       
      client.println("<h2>Temp 2 :");  
      client.println(Temp2);  
      client.println("\260C</h2>");  
       
      client.println("<h2>Humidity :");  
      client.println(Hum);  
      client.println("%</h2>");  
       
      client.println("<br />");  
   
      client.println("<h1>Current States of Switches</h1>");  
    
      client.println("<br />");  
        
      client.println("<h3>LIGHT:>>> ");  
       if(!err)  
       {  
        if(Lsts)  
        {  
        client.println("ON </h3>");  
        }  
        else  
        {  
        client.println("OFF </h3>");  
        }  
       }  
       else  
       {  
        client.println("UNKNOWN </h3>");  
       }  
        
        
        
      client.println("<h3>COOLER:>>>");  
         
         
       if(!err)  
       {   
        if(Csts)  
        {  
        client.println("ON </h3>");  
        }  
        else  
        {  
        client.println("OFF </h3>");   
        }  
       }  
       else  
       {  
       client.println("UNKNOWN </h3>");  
       }  
        
        
        
      client.println("<h3>HEATER:>>>");  
        
       if(!err)  
       {  
        if(Hsts)  
        {  
        client.println("ON </h3>");  
        }  
        else  
        {   
        client.println("OFF </h3>");  
        }  
       }  
       else  
       {  
       client.println("UNKNOWN </h3>");  
       }  
        
        
        
      client.println("<h3>FAN:>>>");  
        
         
       if(!err)  
       {  
        if(Fsts)  
        {  
        client.println("ON </h3>");  
        }  
        else  
        {  
        client.println("OFF </h3>");    
        }  
       }  
       else  
       {  
       client.println("UNKNOWN </h3>");  
       }  
        
        
      client.println("<h3>HUMIDIFIER:>>>");  
         
       if(!err)  
       {  
        if(Ssts)  
        {  
        client.println("ON </h3>");  
        }  
        else  
        {  
        client.println("OFF </h3>");  
        }  
       }  
       else  
       {  
       client.println("UNKNOWN </h3>");  
       }  
        
        
      client.println("<br />");  
   
        
   
         
         
         
      client.println("<h4>DHT Err:>>>");  
       if(!err)  
       {  
        if(DHTerr)  
        {  
        client.println("TRUE </h4>");  
        }  
        else  
        {  
        client.println("FALSE </h4>");   
        }  
       }  
       else  
       {  
       client.println("UNKNOWN </h4>");  
       }  
        
        
        
        
      client.println("<h4>RTC Err:>>>");  
         
       if(!err)  
       {  
        if(RTCerr)  
         {  
         client.println("TRUE </h4>");  
         }  
        else  
        {  
        client.println("FALSE </h4>");   
        }  
       }  
       else  
       {  
       client.println("UNKNOWN </h4>");  
       }  
        
      client.println("<br />");  
   
      client.println("<h4>Serial Read Error:>>>");  
       if(err)  
       {  
       client.println("TRUE ----OH JEEZ </h4>");  
       }  
       else  
       {  
       client.println("FALSE </h4>");  
       }       
        
        
      char LinkOne[]= "https://youtube.com/crazyguyofficial";  
      client.println("<h3><a href=");  
      client.print(LinkOne);  
      client.print(">CHANNEL</a></h3>");  
        
      char LinkTwo[]= "https://amkdiyprojects.blogspot.com";  
      client.println("<h3><a href=");  
      client.print(LinkTwo);  
      client.print(">BLOG</a></h3>");  
        
      client.println("</body></html>");     
      break;  
      
       
     }  
       
        
     if (c == '\n')   
     {  
     blank_line = true;  
     }  
     else if (c != '\r')   
     {  
     blank_line = false;  
     }  
      
      
    }  
   }   
     
     
     
  delay(1);  
  client.stop();  // closing the client connection  
   
  Serial.println("Client disconnected.");  
     
  }  
 }  
   
   
 void ResetArrays()  
 {  
  //Serial.flush();   
  err=1;  
 // data[0]  ='\0';  
  Time[0]  ='\0';             // Character Arrays or C-strings   
  Day    ='\0';             // size should be the total number of Chars to be stored +1 for null char  
  Date[0]  ='\0';  
  Mon[0]  ='\0';  
  Year[0]  ='\0';  
  Status[0] ='\0';  
  Temp1[0] ='\0';  
  Temp2[0] ='\0';  
  Hum[0]  ='\0';  
 }  
   

No comments:

Post a Comment