present

Dependencies:   DS3231 RHT03 TextLCD mbed

Fork of HomeStatus by Jennares Yutthaseree

Revision:
3:19accdf325fe
Parent:
2:dad081eaee81
Child:
4:33cfa6f20f2f
--- a/main.cpp	Tue May 26 15:46:01 2015 +0000
+++ b/main.cpp	Tue May 26 18:00:45 2015 +0000
@@ -10,7 +10,8 @@
 Serial esp(D8, D2); // tx, rx
 Serial pc(USBTX, USBRX); // tx, rx
 
-
+char IP[100];
+int SERVtimeout =5;    // set server timeout in seconds incase link breaks.
 int bufflen, DataRX, count, getcount, replycount, servreq, timeout;
 int bufl, ipdLen, linkID, weberror, webcounter;
 float Temp,Hum;
@@ -27,6 +28,8 @@
 char webbuff[4096];     // Currently using 1986 characters, Increase this if more web page data added
 Timer t1;
 Timer t2;
+Timer t3;
+int PageNo=1;
 
 void sendpage();
 void ReadWebData();
@@ -47,41 +50,83 @@
     lcd.setMode(TextLCD::DispOn); 
     lcd.setBacklight(TextLCD::LightOff);
     lcd.setCursor(TextLCD::CurOff_BlkOff);
-    //rtc.setTime(20,58,00);
-    //rtc.setDate(5,22,5,2015);
+    //rtc.setTime(23,04,50);
+    //rtc.setDate(2,26,5,2015);
+    pc.baud(9600);
+    esp.baud(9600);   
+    startserver();
+    t3.start();
     while(1)
     {
-        rtc.readDateTime(&dw,&d,&M,&y,&h,&m,&s);
-        rht.readData();
-        Temp=rht.getTemperatureC();
-        Hum=rht.getHumidity();
-        lcd.cls();
-        lcd.setAddress(0,0);
-        lcd.printf("%02d/%02d/%4d",d,M,y);
-        lcd.setAddress(0,1);
-        lcd.printf("%02d:%02d:%02d",h,m,s);
-        
-        wait(3);
-        lcd.cls();
-        lcd.setAddress(0,0);
-        lcd.printf("Temp:%.1f",Temp);
-        lcd.setAddress(0,1);
-        lcd.printf("Hum:%.1f",Hum);
-        wait(3);
-        
-        lcd.cls();
-        lcd.setAddress(0,0);
-        lcd.printf("Port1:%3s Port2:%3s",(p1==1)?"On":"Off",(p2==1)?"On":"Off");
-        lcd.setAddress(0,1);
-        lcd.printf("Port3:%3s Port4:%3s",(p3==1)?"On":"Off",(p4==1)?"On":"Off");
-        wait(3);
-        
-        lcd.cls();
-        lcd.setAddress(0,0);
-        lcd.printf("Port5:%3s Port6:%3s",(p5==1)?"On":"Off",(p6==1)?"On":"Off");
-        lcd.setAddress(0,1);
-        lcd.printf("Port7:%3s Port8:%3s",(p7==1)?"On":"Off",(p8==1)?"On":"Off");
-        wait(3);
+        if(PageNo==1){
+            if(t3.read_ms () >3000){
+                rtc.readDateTime(&dw,&d,&M,&y,&h,&m,&s);
+                rht.readData();
+                Temp=rht.getTemperatureC();
+                Hum=rht.getHumidity();
+                lcd.cls();
+                lcd.setAddress(0,0);
+                lcd.printf("%02d/%02d/%4d",d,M,y);
+                lcd.setAddress(0,1);
+                lcd.printf("%02d:%02d:%02d",h,m,s);
+                t3.reset();
+                PageNo=2;
+            }
+        }
+        if(PageNo==2){
+            if(t3.read_ms () >3000){
+                lcd.cls();
+                lcd.setAddress(0,0);
+                lcd.printf("Temp:%.1f",Temp);
+                lcd.setAddress(0,1);
+                lcd.printf("Hum:%.1f",Hum);
+                PageNo=3;
+                t3.reset();
+            }
+        }
+        if(PageNo==3){
+            if(t3.read_ms () >3000){
+                lcd.cls();
+                lcd.setAddress(0,0);
+                lcd.printf("P1:%3s P2:%3s",(p1==1)?"On":"Off",(p2==1)?"On":"Off");
+                lcd.setAddress(0,1);
+                lcd.printf("P3:%3s P4:%3s",(p3==1)?"On":"Off",(p4==1)?"On":"Off");
+                PageNo=4;
+                t3.reset();
+            }
+        }
+        if(PageNo==4){
+            if(t3.read_ms () >3000){
+                lcd.cls();
+                lcd.setAddress(0,0);
+                lcd.printf("P5:%3s P6:%3s",(p5==1)?"On":"Off",(p6==1)?"On":"Off");
+                lcd.setAddress(0,1);
+                lcd.printf("P7:%3s P8:%3s",(p7==1)?"On":"Off",(p8==1)?"On":"Off");
+                PageNo=5;
+                t3.reset();
+            
+            }
+        }
+        if(PageNo==5)
+        {
+            if(t3.read_ms () >3000){
+                lcd.cls();
+                lcd.setAddress(0,0);
+                strcpy(cmdbuff, "AT+CIFSR\r\n");
+                timeout=1000;getcount=50;
+                while(weberror==0){
+                    SendCMD();getreply();
+                    if (strstr(replybuff, "0.0.0.0") == NULL) {weberror=1;}  // wait for valid IP
+                }
+                replybuff[strlen(replybuff)] = '\0';                
+                strcpy(IP, replybuff + 5);
+                lcd.printf("%s",IP);
+                lcd.setAddress(0,1);
+                lcd.printf("Fookies-One(m8)");
+                PageNo=1;
+                t3.reset();
+            }
+        }
         
         if(DataRX==1){
             ReadWebData();
@@ -100,6 +145,60 @@
     return 0;
 
 }
+void startserver()
+{
+    pc.printf("++++++++++ Resetting ESP ++++++++++\r\n");  
+    strcpy(cmdbuff,"AT+RST\r\n");
+    timeout=2000;getcount=600;
+    SendCMD();
+    getreply();
+    pc.printf(replybuff);
+    pc.printf("%d",count);
+    if (strstr(replybuff, "OK") != NULL) {
+        strcpy(cmdbuff, "AT+CWMODE=1\r\n");  // set wifi to station 
+        timeout=500;getcount=10;
+        SendCMD();
+        getreply();
+        strcpy(cmdbuff, "AT+CWJAP=""FSE-Wireless"",""1234567890""\r\n");  // set wifi to station 
+        timeout=500;getcount=50;
+        SendCMD();
+        getreply();
+        lcd.printf("\n++++++++++ Starting Server ++++++++++\r\n");
+        strcpy(cmdbuff, "AT+CIPMUX=1\r\n");  // set multiple connections. 
+        timeout=500;getcount=10;
+        SendCMD();
+        getreply();
+        sprintf(cmdbuff,"AT+CIPSERVER=1,%d\r\n", 80);
+        timeout=500;getcount=10;
+        SendCMD();
+        getreply();
+        //sprintf(cmdbuff,"AT+CIPSTO=%d\r\n",SERVtimeout);
+        //timeout=500;getcount=50;
+        //SendCMD();
+        //getreply();
+        lcd.printf("\n Getting Server IP \r\n"); 
+        strcpy(cmdbuff, "AT+CIFSR\r\n");
+        timeout=1000;getcount=50;
+        while(weberror==0){
+            SendCMD();getreply();
+            if (strstr(replybuff, "0.0.0.0") == NULL) {weberror=1;}  // wait for valid IP
+            }
+        lcd.printf("\n Enter WEB address in your browser \r\n\n");
+        replybuff[strlen(replybuff) - 8] = '\0';                
+        strcpy(IP, replybuff + 5);
+        sprintf(webdata,"   http://%s:%d", IP, 80);
+        lcd.printf(webdata);       
+        wait(2);
+        bufflen=200;count=0;
+        lcd.printf("\n\n++++++++++ Ready ++++++++++\r\n\n");
+        esp.attach(&callback);
+        }
+        else{
+            lcd.printf("\n++++++++++ ESP8266 error, check power/connections ++++++++++\r\n");
+            while(1){}
+            }
+        t2.reset();t2.start();    
+}    
 
 void sendpage()
 {