present
Dependencies: DS3231 RHT03 TextLCD mbed
Fork of HomeStatus by
main.cpp@2:dad081eaee81, 2015-05-26 (annotated)
- Committer:
- poomyuttt
- Date:
- Tue May 26 15:46:01 2015 +0000
- Revision:
- 2:dad081eaee81
- Parent:
- 1:ae97d85a47dd
- Child:
- 3:19accdf325fe
kj
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
poomyuttt | 0:894306d5cad7 | 1 | #include "mbed.h" |
poomyuttt | 0:894306d5cad7 | 2 | #include "TextLCD.h" |
poomyuttt | 0:894306d5cad7 | 3 | #include "DS3231.h" |
poomyuttt | 0:894306d5cad7 | 4 | #include "RHT03.h" |
poomyuttt | 0:894306d5cad7 | 5 | I2C i2c(D14,D15); |
poomyuttt | 0:894306d5cad7 | 6 | TextLCD_I2C lcd(&i2c,0x4E,TextLCD::LCD16x2); |
poomyuttt | 0:894306d5cad7 | 7 | DS3231 rtc(D14,D15); |
poomyuttt | 0:894306d5cad7 | 8 | RHT03 rht(D13); |
fookies | 1:ae97d85a47dd | 9 | DigitalOut p1(D3),p2(D4),p3(D5),p4(D6),p5(D7),p6(D9),p7(D10),p8(D11); |
poomyuttt | 2:dad081eaee81 | 10 | Serial esp(D8, D2); // tx, rx |
poomyuttt | 2:dad081eaee81 | 11 | Serial pc(USBTX, USBRX); // tx, rx |
poomyuttt | 2:dad081eaee81 | 12 | |
poomyuttt | 2:dad081eaee81 | 13 | |
poomyuttt | 2:dad081eaee81 | 14 | int bufflen, DataRX, count, getcount, replycount, servreq, timeout; |
poomyuttt | 2:dad081eaee81 | 15 | int bufl, ipdLen, linkID, weberror, webcounter; |
poomyuttt | 2:dad081eaee81 | 16 | float Temp,Hum; |
poomyuttt | 2:dad081eaee81 | 17 | int dw,d,M,y,h,m,s; |
poomyuttt | 2:dad081eaee81 | 18 | char webcount[8]; |
poomyuttt | 2:dad081eaee81 | 19 | char lasthit[30]; |
poomyuttt | 2:dad081eaee81 | 20 | char timebuf[30]; |
poomyuttt | 2:dad081eaee81 | 21 | char type[16]; |
poomyuttt | 2:dad081eaee81 | 22 | char type1[16]; |
poomyuttt | 2:dad081eaee81 | 23 | char channel[2]; |
poomyuttt | 2:dad081eaee81 | 24 | char cmdbuff[32]; |
poomyuttt | 2:dad081eaee81 | 25 | char replybuff[512]; |
poomyuttt | 2:dad081eaee81 | 26 | char webdata[1024]; // This may need to be bigger depending on WEB browser used |
poomyuttt | 2:dad081eaee81 | 27 | char webbuff[4096]; // Currently using 1986 characters, Increase this if more web page data added |
poomyuttt | 2:dad081eaee81 | 28 | Timer t1; |
poomyuttt | 2:dad081eaee81 | 29 | Timer t2; |
poomyuttt | 2:dad081eaee81 | 30 | |
poomyuttt | 2:dad081eaee81 | 31 | void sendpage(); |
poomyuttt | 2:dad081eaee81 | 32 | void ReadWebData(); |
poomyuttt | 2:dad081eaee81 | 33 | void SendCMD(),getreply(),ReadWebData(),startserver(),sendpage(),SendWEB(),sendcheck(); |
poomyuttt | 2:dad081eaee81 | 34 | |
poomyuttt | 2:dad081eaee81 | 35 | // Serial Interrupt read ESP data |
poomyuttt | 2:dad081eaee81 | 36 | void callback() { |
poomyuttt | 2:dad081eaee81 | 37 | while (esp.readable()) {webbuff[count] = esp.getc();count++;} |
poomyuttt | 2:dad081eaee81 | 38 | if(strlen(webbuff)>bufflen){DataRX=1;} |
poomyuttt | 2:dad081eaee81 | 39 | } |
poomyuttt | 2:dad081eaee81 | 40 | |
poomyuttt | 2:dad081eaee81 | 41 | |
poomyuttt | 2:dad081eaee81 | 42 | |
poomyuttt | 2:dad081eaee81 | 43 | |
poomyuttt | 0:894306d5cad7 | 44 | |
poomyuttt | 0:894306d5cad7 | 45 | int main() |
poomyuttt | 0:894306d5cad7 | 46 | { |
poomyuttt | 0:894306d5cad7 | 47 | lcd.setMode(TextLCD::DispOn); |
poomyuttt | 0:894306d5cad7 | 48 | lcd.setBacklight(TextLCD::LightOff); |
poomyuttt | 0:894306d5cad7 | 49 | lcd.setCursor(TextLCD::CurOff_BlkOff); |
poomyuttt | 0:894306d5cad7 | 50 | //rtc.setTime(20,58,00); |
poomyuttt | 0:894306d5cad7 | 51 | //rtc.setDate(5,22,5,2015); |
poomyuttt | 0:894306d5cad7 | 52 | while(1) |
poomyuttt | 0:894306d5cad7 | 53 | { |
poomyuttt | 0:894306d5cad7 | 54 | rtc.readDateTime(&dw,&d,&M,&y,&h,&m,&s); |
poomyuttt | 0:894306d5cad7 | 55 | rht.readData(); |
poomyuttt | 0:894306d5cad7 | 56 | Temp=rht.getTemperatureC(); |
poomyuttt | 0:894306d5cad7 | 57 | Hum=rht.getHumidity(); |
poomyuttt | 0:894306d5cad7 | 58 | lcd.cls(); |
poomyuttt | 0:894306d5cad7 | 59 | lcd.setAddress(0,0); |
poomyuttt | 0:894306d5cad7 | 60 | lcd.printf("%02d/%02d/%4d",d,M,y); |
poomyuttt | 0:894306d5cad7 | 61 | lcd.setAddress(0,1); |
poomyuttt | 0:894306d5cad7 | 62 | lcd.printf("%02d:%02d:%02d",h,m,s); |
poomyuttt | 0:894306d5cad7 | 63 | |
poomyuttt | 0:894306d5cad7 | 64 | wait(3); |
poomyuttt | 0:894306d5cad7 | 65 | lcd.cls(); |
poomyuttt | 0:894306d5cad7 | 66 | lcd.setAddress(0,0); |
poomyuttt | 0:894306d5cad7 | 67 | lcd.printf("Temp:%.1f",Temp); |
poomyuttt | 0:894306d5cad7 | 68 | lcd.setAddress(0,1); |
poomyuttt | 0:894306d5cad7 | 69 | lcd.printf("Hum:%.1f",Hum); |
poomyuttt | 0:894306d5cad7 | 70 | wait(3); |
poomyuttt | 0:894306d5cad7 | 71 | |
fookies | 1:ae97d85a47dd | 72 | lcd.cls(); |
fookies | 1:ae97d85a47dd | 73 | lcd.setAddress(0,0); |
fookies | 1:ae97d85a47dd | 74 | lcd.printf("Port1:%3s Port2:%3s",(p1==1)?"On":"Off",(p2==1)?"On":"Off"); |
fookies | 1:ae97d85a47dd | 75 | lcd.setAddress(0,1); |
fookies | 1:ae97d85a47dd | 76 | lcd.printf("Port3:%3s Port4:%3s",(p3==1)?"On":"Off",(p4==1)?"On":"Off"); |
fookies | 1:ae97d85a47dd | 77 | wait(3); |
fookies | 1:ae97d85a47dd | 78 | |
fookies | 1:ae97d85a47dd | 79 | lcd.cls(); |
fookies | 1:ae97d85a47dd | 80 | lcd.setAddress(0,0); |
fookies | 1:ae97d85a47dd | 81 | lcd.printf("Port5:%3s Port6:%3s",(p5==1)?"On":"Off",(p6==1)?"On":"Off"); |
fookies | 1:ae97d85a47dd | 82 | lcd.setAddress(0,1); |
fookies | 1:ae97d85a47dd | 83 | lcd.printf("Port7:%3s Port8:%3s",(p7==1)?"On":"Off",(p8==1)?"On":"Off"); |
fookies | 1:ae97d85a47dd | 84 | wait(3); |
poomyuttt | 2:dad081eaee81 | 85 | |
poomyuttt | 2:dad081eaee81 | 86 | if(DataRX==1){ |
poomyuttt | 2:dad081eaee81 | 87 | ReadWebData(); |
poomyuttt | 2:dad081eaee81 | 88 | if (servreq == 1 && weberror == 0){sendpage();} |
poomyuttt | 2:dad081eaee81 | 89 | esp.attach(&callback); |
poomyuttt | 2:dad081eaee81 | 90 | pc.printf(" IPD Data:\r\n\n Link ID = %d,\r\n IPD Header Length = %d \r\n IPD Type = %s\r\n", linkID, ipdLen, type); |
poomyuttt | 2:dad081eaee81 | 91 | pc.printf("\n\n HTTP Packet: \n\n%s\n", webdata); |
poomyuttt | 2:dad081eaee81 | 92 | pc.printf(" Web Characters sent : %d\n\n", bufl); |
poomyuttt | 2:dad081eaee81 | 93 | pc.printf(" -------------------------------------\n\n"); |
poomyuttt | 2:dad081eaee81 | 94 | strcpy(lasthit, timebuf); |
poomyuttt | 2:dad081eaee81 | 95 | servreq=0; |
poomyuttt | 2:dad081eaee81 | 96 | } |
poomyuttt | 0:894306d5cad7 | 97 | } |
poomyuttt | 0:894306d5cad7 | 98 | |
poomyuttt | 0:894306d5cad7 | 99 | |
poomyuttt | 0:894306d5cad7 | 100 | return 0; |
poomyuttt | 0:894306d5cad7 | 101 | |
poomyuttt | 0:894306d5cad7 | 102 | } |
poomyuttt | 2:dad081eaee81 | 103 | |
poomyuttt | 2:dad081eaee81 | 104 | void sendpage() |
poomyuttt | 2:dad081eaee81 | 105 | { |
poomyuttt | 2:dad081eaee81 | 106 | char t1[1000]; |
poomyuttt | 2:dad081eaee81 | 107 | |
poomyuttt | 2:dad081eaee81 | 108 | // WEB page data |
poomyuttt | 2:dad081eaee81 | 109 | strcpy(webbuff, "<!DOCTYPE html>"); |
poomyuttt | 2:dad081eaee81 | 110 | strcat(webbuff, "<html><head><title>Home Status</title></head>"); |
poomyuttt | 2:dad081eaee81 | 111 | strcat(webbuff, "<body>"); |
poomyuttt | 2:dad081eaee81 | 112 | strcat(webbuff, "<p>"); |
poomyuttt | 2:dad081eaee81 | 113 | sprintf(t1,"%02d/%02d/%4d %02d:%02d:%02d",d,M,y,h,m,s); |
poomyuttt | 2:dad081eaee81 | 114 | strcat(webbuff,t1); |
poomyuttt | 2:dad081eaee81 | 115 | strcat(webbuff, "<p>"); |
poomyuttt | 2:dad081eaee81 | 116 | strcat(webbuff,"<p>Temperature : "); |
poomyuttt | 2:dad081eaee81 | 117 | sprintf(t1,"%.1f",Temp); |
poomyuttt | 2:dad081eaee81 | 118 | strcat(webbuff,t1); |
poomyuttt | 2:dad081eaee81 | 119 | strcat(webbuff, " C<p>"); |
poomyuttt | 2:dad081eaee81 | 120 | strcat(webbuff,"<p>Humidity : "); |
poomyuttt | 2:dad081eaee81 | 121 | sprintf(t1,"%.1f",Hum); |
poomyuttt | 2:dad081eaee81 | 122 | strcat(webbuff,t1); |
poomyuttt | 2:dad081eaee81 | 123 | strcat(webbuff, " %<p>"); |
poomyuttt | 2:dad081eaee81 | 124 | strcat(webbuff, "<table>"); |
poomyuttt | 2:dad081eaee81 | 125 | strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 126 | strcat(webbuff, "<td>Light 1 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 127 | if(p1==1) |
poomyuttt | 2:dad081eaee81 | 128 | { |
poomyuttt | 2:dad081eaee81 | 129 | strcat(webbuff, "<form action=\"Light1:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 130 | }else{ |
poomyuttt | 2:dad081eaee81 | 131 | strcat(webbuff, "<form action=\"Light1:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 132 | } |
poomyuttt | 2:dad081eaee81 | 133 | strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 134 | strcat(webbuff, "<td>Light 2 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 135 | if(p2==1) |
poomyuttt | 2:dad081eaee81 | 136 | { |
poomyuttt | 2:dad081eaee81 | 137 | strcat(webbuff, "<form action=\"Light2:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 138 | }else{ |
poomyuttt | 2:dad081eaee81 | 139 | strcat(webbuff, "<form action=\"Light2:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 140 | } |
poomyuttt | 2:dad081eaee81 | 141 | strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 142 | strcat(webbuff, "<td>Light 2 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 143 | if(p3==1) |
poomyuttt | 2:dad081eaee81 | 144 | { |
poomyuttt | 2:dad081eaee81 | 145 | strcat(webbuff, "<form action=\"Light3:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 146 | }else{ |
poomyuttt | 2:dad081eaee81 | 147 | strcat(webbuff, "<form action=\"Light3:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 148 | }strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 149 | strcat(webbuff, "<td>Light 2 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 150 | if(p4==1) |
poomyuttt | 2:dad081eaee81 | 151 | { |
poomyuttt | 2:dad081eaee81 | 152 | strcat(webbuff, "<form action=\"Light4:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 153 | }else{ |
poomyuttt | 2:dad081eaee81 | 154 | strcat(webbuff, "<form action=\"Light4:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 155 | }strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 156 | strcat(webbuff, "<td>Light 2 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 157 | if(p5==1) |
poomyuttt | 2:dad081eaee81 | 158 | { |
poomyuttt | 2:dad081eaee81 | 159 | strcat(webbuff, "<form action=\"Light5:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 160 | }else{ |
poomyuttt | 2:dad081eaee81 | 161 | strcat(webbuff, "<form action=\"Light5:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 162 | }strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 163 | strcat(webbuff, "<td>Light 2 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 164 | if(p6==1) |
poomyuttt | 2:dad081eaee81 | 165 | { |
poomyuttt | 2:dad081eaee81 | 166 | strcat(webbuff, "<form action=\"Light6:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 167 | }else{ |
poomyuttt | 2:dad081eaee81 | 168 | strcat(webbuff, "<form action=\"Light6:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 169 | }strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 170 | strcat(webbuff, "<td>Light 2 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 171 | if(p7==1) |
poomyuttt | 2:dad081eaee81 | 172 | { |
poomyuttt | 2:dad081eaee81 | 173 | strcat(webbuff, "<form action=\"Light7:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 174 | }else{ |
poomyuttt | 2:dad081eaee81 | 175 | strcat(webbuff, "<form action=\"Light7:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 176 | }strcat(webbuff, "<tr>"); |
poomyuttt | 2:dad081eaee81 | 177 | strcat(webbuff, "<td>Light 2 :</td><td>"); |
poomyuttt | 2:dad081eaee81 | 178 | if(p8==1) |
poomyuttt | 2:dad081eaee81 | 179 | { |
poomyuttt | 2:dad081eaee81 | 180 | strcat(webbuff, "<form action=\"Light8:OFF\"><input type=\"submit\" value=\"ON\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 181 | }else{ |
poomyuttt | 2:dad081eaee81 | 182 | strcat(webbuff, "<form action=\"Light8:ON\"><input type=\"submit\" value=\"OFF\" /></form></td></tr>"); |
poomyuttt | 2:dad081eaee81 | 183 | } |
poomyuttt | 2:dad081eaee81 | 184 | |
poomyuttt | 2:dad081eaee81 | 185 | |
poomyuttt | 2:dad081eaee81 | 186 | |
poomyuttt | 2:dad081eaee81 | 187 | |
poomyuttt | 2:dad081eaee81 | 188 | strcat(webbuff, "</table></p></body></html>"); |
poomyuttt | 2:dad081eaee81 | 189 | // end of WEB page data |
poomyuttt | 2:dad081eaee81 | 190 | bufl = strlen(webbuff); // get total page buffer length |
poomyuttt | 2:dad081eaee81 | 191 | sprintf(cmdbuff,"AT+CIPSEND=%d,%d\r\n", linkID, bufl); // send IPD link channel and buffer character length. |
poomyuttt | 2:dad081eaee81 | 192 | timeout=200;getcount=7; |
poomyuttt | 2:dad081eaee81 | 193 | SendCMD(); |
poomyuttt | 2:dad081eaee81 | 194 | getreply(); |
poomyuttt | 2:dad081eaee81 | 195 | SendWEB(); // send web page |
poomyuttt | 2:dad081eaee81 | 196 | memset(webbuff, '\0', sizeof(webbuff)); |
poomyuttt | 2:dad081eaee81 | 197 | sendcheck(); |
poomyuttt | 2:dad081eaee81 | 198 | } |
poomyuttt | 2:dad081eaee81 | 199 | void ReadWebData() |
poomyuttt | 2:dad081eaee81 | 200 | { |
poomyuttt | 2:dad081eaee81 | 201 | wait_ms(200); |
poomyuttt | 2:dad081eaee81 | 202 | esp.attach(NULL); |
poomyuttt | 2:dad081eaee81 | 203 | count=0;DataRX=0;weberror=0; |
poomyuttt | 2:dad081eaee81 | 204 | memset(webdata, '\0', sizeof(webdata)); |
poomyuttt | 2:dad081eaee81 | 205 | int x = strcspn (webbuff,"+"); |
poomyuttt | 2:dad081eaee81 | 206 | if(x){ |
poomyuttt | 2:dad081eaee81 | 207 | strcpy(webdata, webbuff + x);weberror=0; |
poomyuttt | 2:dad081eaee81 | 208 | int numMatched = sscanf(webdata,"+IPD,%d,%d:%s", &linkID, &ipdLen, type); |
poomyuttt | 2:dad081eaee81 | 209 | |
poomyuttt | 2:dad081eaee81 | 210 | if( strstr(webdata, "Light1:OFF") != NULL ) {p1=0;} |
poomyuttt | 2:dad081eaee81 | 211 | if( strstr(webdata, "Light1:ON") != NULL ) {p1=1;} |
poomyuttt | 2:dad081eaee81 | 212 | if( strstr(webdata, "Light2:OFF") != NULL ) {p2=0;} |
poomyuttt | 2:dad081eaee81 | 213 | if( strstr(webdata, "Light2:ON") != NULL ) {p2=1;} |
poomyuttt | 2:dad081eaee81 | 214 | if( strstr(webdata, "Light3:OFF") != NULL ) {p3=0;} |
poomyuttt | 2:dad081eaee81 | 215 | if( strstr(webdata, "Light3:ON") != NULL ) {p3=1;} |
poomyuttt | 2:dad081eaee81 | 216 | if( strstr(webdata, "Light4:OFF") != NULL ) {p4=0;} |
poomyuttt | 2:dad081eaee81 | 217 | if( strstr(webdata, "Light4:ON") != NULL ) {p4=1;} |
poomyuttt | 2:dad081eaee81 | 218 | if( strstr(webdata, "Light5:OFF") != NULL ) {p5=0;} |
poomyuttt | 2:dad081eaee81 | 219 | if( strstr(webdata, "Light5:ON") != NULL ) {p5=1;} |
poomyuttt | 2:dad081eaee81 | 220 | if( strstr(webdata, "Light6:OFF") != NULL ) {p6=0;} |
poomyuttt | 2:dad081eaee81 | 221 | if( strstr(webdata, "Light6:ON") != NULL ) {p6=1;} |
poomyuttt | 2:dad081eaee81 | 222 | if( strstr(webdata, "Light7:OFF") != NULL ) {p7=0;} |
poomyuttt | 2:dad081eaee81 | 223 | if( strstr(webdata, "Light7:ON") != NULL ) {p7=1;} |
poomyuttt | 2:dad081eaee81 | 224 | if( strstr(webdata, "Light8:OFF") != NULL ) {p8=0;} |
poomyuttt | 2:dad081eaee81 | 225 | if( strstr(webdata, "Light8:ON") != NULL ) {p8=1;} |
poomyuttt | 2:dad081eaee81 | 226 | |
poomyuttt | 2:dad081eaee81 | 227 | sprintf(channel, "%d",linkID); |
poomyuttt | 2:dad081eaee81 | 228 | if (strstr(webdata, "GET") != NULL) {servreq=1;} |
poomyuttt | 2:dad081eaee81 | 229 | if (strstr(webdata, "POST") != NULL) {servreq=1;} |
poomyuttt | 2:dad081eaee81 | 230 | webcounter++; |
poomyuttt | 2:dad081eaee81 | 231 | sprintf(webcount, "%d",webcounter); |
poomyuttt | 2:dad081eaee81 | 232 | } |
poomyuttt | 2:dad081eaee81 | 233 | else { |
poomyuttt | 2:dad081eaee81 | 234 | memset(webbuff, '\0', sizeof(webbuff)); |
poomyuttt | 2:dad081eaee81 | 235 | esp.attach(&callback);weberror=1; |
poomyuttt | 2:dad081eaee81 | 236 | } |
poomyuttt | 2:dad081eaee81 | 237 | } |
poomyuttt | 2:dad081eaee81 | 238 | // ESP Command data send |
poomyuttt | 2:dad081eaee81 | 239 | void SendCMD() |
poomyuttt | 2:dad081eaee81 | 240 | { |
poomyuttt | 2:dad081eaee81 | 241 | esp.printf("%s", cmdbuff); |
poomyuttt | 2:dad081eaee81 | 242 | } |
poomyuttt | 2:dad081eaee81 | 243 | // Get Cammand and ESP status replies |
poomyuttt | 2:dad081eaee81 | 244 | void getreply() |
poomyuttt | 2:dad081eaee81 | 245 | { |
poomyuttt | 2:dad081eaee81 | 246 | memset(replybuff, '\0', sizeof(replybuff)); |
poomyuttt | 2:dad081eaee81 | 247 | t1.reset(); t1.start();replycount=0; |
poomyuttt | 2:dad081eaee81 | 248 | while(t1.read_ms()< timeout && replycount < getcount) { |
poomyuttt | 2:dad081eaee81 | 249 | if(esp.readable()) { |
poomyuttt | 2:dad081eaee81 | 250 | replybuff[replycount] = esp.getc();replycount++; |
poomyuttt | 2:dad081eaee81 | 251 | } |
poomyuttt | 2:dad081eaee81 | 252 | } |
poomyuttt | 2:dad081eaee81 | 253 | t1.stop(); |
poomyuttt | 2:dad081eaee81 | 254 | } |
poomyuttt | 2:dad081eaee81 | 255 | // Large WEB buffer data send |
poomyuttt | 2:dad081eaee81 | 256 | void SendWEB() |
poomyuttt | 2:dad081eaee81 | 257 | { |
poomyuttt | 2:dad081eaee81 | 258 | int i=0; |
poomyuttt | 2:dad081eaee81 | 259 | if(esp.writeable()) { |
poomyuttt | 2:dad081eaee81 | 260 | while(webbuff[i]!='\0') {esp.putc(webbuff[i]);i++;} |
poomyuttt | 2:dad081eaee81 | 261 | } |
poomyuttt | 2:dad081eaee81 | 262 | } |
poomyuttt | 2:dad081eaee81 | 263 | // wait for ESP "SEND OK" reply, then close IP to load web page |
poomyuttt | 2:dad081eaee81 | 264 | void sendcheck() |
poomyuttt | 2:dad081eaee81 | 265 | { |
poomyuttt | 2:dad081eaee81 | 266 | weberror=1;timeout=500;getcount=24; |
poomyuttt | 2:dad081eaee81 | 267 | t2.reset();t2.start(); |
poomyuttt | 2:dad081eaee81 | 268 | while(weberror==1 && t2.read() <5){ |
poomyuttt | 2:dad081eaee81 | 269 | getreply(); |
poomyuttt | 2:dad081eaee81 | 270 | if (strstr(replybuff, "SEND OK") != NULL) {weberror=0;} // wait for valid SEND OK |
poomyuttt | 2:dad081eaee81 | 271 | } |
poomyuttt | 2:dad081eaee81 | 272 | if(weberror==1){ // restart connection |
poomyuttt | 2:dad081eaee81 | 273 | strcpy(cmdbuff, "AT+CIPMUX=1\r\n"); |
poomyuttt | 2:dad081eaee81 | 274 | timeout=500;getcount=10; |
poomyuttt | 2:dad081eaee81 | 275 | SendCMD();getreply(); |
poomyuttt | 2:dad081eaee81 | 276 | sprintf(cmdbuff,"AT+CIPSERVER=1,%d\r\n", 80); |
poomyuttt | 2:dad081eaee81 | 277 | timeout=500;getcount=10; |
poomyuttt | 2:dad081eaee81 | 278 | SendCMD();getreply(); |
poomyuttt | 2:dad081eaee81 | 279 | } |
poomyuttt | 2:dad081eaee81 | 280 | else{ |
poomyuttt | 2:dad081eaee81 | 281 | sprintf(cmdbuff, "AT+CIPCLOSE=%s\r\n",channel); // close current connection |
poomyuttt | 2:dad081eaee81 | 282 | SendCMD();} |
poomyuttt | 2:dad081eaee81 | 283 | t2.reset(); |
poomyuttt | 2:dad081eaee81 | 284 | } |