present
Dependencies: DS3231 RHT03 TextLCD mbed
Fork of HomeStatus by
Diff: main.cpp
- 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() {