Showing posts with label cool. Show all posts
Showing posts with label cool. Show all posts

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';  
 }