test

Dependencies:   DS3231 RHT03 TextLCD mbed

Fork of HomeStatus by Jennares Yutthaseree

Committer:
fookies
Date:
Mon Jun 01 15:16:52 2015 +0000
Revision:
4:89c52484b4d4
Parent:
3:19accdf325fe
test

Who changed what in which revision?

UserRevisionLine numberNew 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 3:19accdf325fe 13 char IP[100];
poomyuttt 3:19accdf325fe 14 int SERVtimeout =5; // set server timeout in seconds incase link breaks.
poomyuttt 2:dad081eaee81 15 int bufflen, DataRX, count, getcount, replycount, servreq, timeout;
poomyuttt 2:dad081eaee81 16 int bufl, ipdLen, linkID, weberror, webcounter;
poomyuttt 2:dad081eaee81 17 float Temp,Hum;
poomyuttt 2:dad081eaee81 18 int dw,d,M,y,h,m,s;
poomyuttt 2:dad081eaee81 19 char webcount[8];
poomyuttt 2:dad081eaee81 20 char lasthit[30];
poomyuttt 2:dad081eaee81 21 char timebuf[30];
poomyuttt 2:dad081eaee81 22 char type[16];
poomyuttt 2:dad081eaee81 23 char type1[16];
poomyuttt 2:dad081eaee81 24 char channel[2];
poomyuttt 2:dad081eaee81 25 char cmdbuff[32];
poomyuttt 2:dad081eaee81 26 char replybuff[512];
poomyuttt 2:dad081eaee81 27 char webdata[1024]; // This may need to be bigger depending on WEB browser used
poomyuttt 2:dad081eaee81 28 char webbuff[4096]; // Currently using 1986 characters, Increase this if more web page data added
poomyuttt 2:dad081eaee81 29 Timer t1;
poomyuttt 2:dad081eaee81 30 Timer t2;
poomyuttt 3:19accdf325fe 31 Timer t3;
poomyuttt 3:19accdf325fe 32 int PageNo=1;
poomyuttt 2:dad081eaee81 33
poomyuttt 2:dad081eaee81 34 void sendpage();
poomyuttt 2:dad081eaee81 35 void ReadWebData();
fookies 4:89c52484b4d4 36 void SendCMD(),getreply(),startserver(),SendWEB(),sendcheck();
poomyuttt 2:dad081eaee81 37
poomyuttt 2:dad081eaee81 38 // Serial Interrupt read ESP data
poomyuttt 2:dad081eaee81 39 void callback() {
poomyuttt 2:dad081eaee81 40 while (esp.readable()) {webbuff[count] = esp.getc();count++;}
poomyuttt 2:dad081eaee81 41 if(strlen(webbuff)>bufflen){DataRX=1;}
poomyuttt 2:dad081eaee81 42 }
poomyuttt 2:dad081eaee81 43
poomyuttt 2:dad081eaee81 44
poomyuttt 2:dad081eaee81 45
poomyuttt 2:dad081eaee81 46
poomyuttt 0:894306d5cad7 47
poomyuttt 0:894306d5cad7 48 int main()
poomyuttt 0:894306d5cad7 49 {
poomyuttt 0:894306d5cad7 50 lcd.setMode(TextLCD::DispOn);
poomyuttt 0:894306d5cad7 51 lcd.setBacklight(TextLCD::LightOff);
poomyuttt 0:894306d5cad7 52 lcd.setCursor(TextLCD::CurOff_BlkOff);
fookies 4:89c52484b4d4 53 //rtc.setTime(21,57,50);
fookies 4:89c52484b4d4 54 //rtc.setDate(1,31,5,2015);
poomyuttt 3:19accdf325fe 55 pc.baud(9600);
poomyuttt 3:19accdf325fe 56 esp.baud(9600);
poomyuttt 3:19accdf325fe 57 startserver();
poomyuttt 3:19accdf325fe 58 t3.start();
poomyuttt 0:894306d5cad7 59 while(1)
poomyuttt 0:894306d5cad7 60 {
poomyuttt 3:19accdf325fe 61 if(PageNo==1){
poomyuttt 3:19accdf325fe 62 if(t3.read_ms () >3000){
poomyuttt 3:19accdf325fe 63 rtc.readDateTime(&dw,&d,&M,&y,&h,&m,&s);
poomyuttt 3:19accdf325fe 64 rht.readData();
poomyuttt 3:19accdf325fe 65 Temp=rht.getTemperatureC();
poomyuttt 3:19accdf325fe 66 Hum=rht.getHumidity();
poomyuttt 3:19accdf325fe 67 lcd.cls();
poomyuttt 3:19accdf325fe 68 lcd.setAddress(0,0);
poomyuttt 3:19accdf325fe 69 lcd.printf("%02d/%02d/%4d",d,M,y);
poomyuttt 3:19accdf325fe 70 lcd.setAddress(0,1);
poomyuttt 3:19accdf325fe 71 lcd.printf("%02d:%02d:%02d",h,m,s);
poomyuttt 3:19accdf325fe 72 t3.reset();
poomyuttt 3:19accdf325fe 73 PageNo=2;
poomyuttt 3:19accdf325fe 74 }
poomyuttt 3:19accdf325fe 75 }
poomyuttt 3:19accdf325fe 76 if(PageNo==2){
poomyuttt 3:19accdf325fe 77 if(t3.read_ms () >3000){
poomyuttt 3:19accdf325fe 78 lcd.cls();
poomyuttt 3:19accdf325fe 79 lcd.setAddress(0,0);
poomyuttt 3:19accdf325fe 80 lcd.printf("Temp:%.1f",Temp);
poomyuttt 3:19accdf325fe 81 lcd.setAddress(0,1);
poomyuttt 3:19accdf325fe 82 lcd.printf("Hum:%.1f",Hum);
poomyuttt 3:19accdf325fe 83 PageNo=3;
poomyuttt 3:19accdf325fe 84 t3.reset();
poomyuttt 3:19accdf325fe 85 }
poomyuttt 3:19accdf325fe 86 }
poomyuttt 3:19accdf325fe 87 if(PageNo==3){
poomyuttt 3:19accdf325fe 88 if(t3.read_ms () >3000){
poomyuttt 3:19accdf325fe 89 lcd.cls();
poomyuttt 3:19accdf325fe 90 lcd.setAddress(0,0);
poomyuttt 3:19accdf325fe 91 lcd.printf("P1:%3s P2:%3s",(p1==1)?"On":"Off",(p2==1)?"On":"Off");
poomyuttt 3:19accdf325fe 92 lcd.setAddress(0,1);
poomyuttt 3:19accdf325fe 93 lcd.printf("P3:%3s P4:%3s",(p3==1)?"On":"Off",(p4==1)?"On":"Off");
poomyuttt 3:19accdf325fe 94 PageNo=4;
poomyuttt 3:19accdf325fe 95 t3.reset();
poomyuttt 3:19accdf325fe 96 }
poomyuttt 3:19accdf325fe 97 }
poomyuttt 3:19accdf325fe 98 if(PageNo==4){
poomyuttt 3:19accdf325fe 99 if(t3.read_ms () >3000){
poomyuttt 3:19accdf325fe 100 lcd.cls();
poomyuttt 3:19accdf325fe 101 lcd.setAddress(0,0);
poomyuttt 3:19accdf325fe 102 lcd.printf("P5:%3s P6:%3s",(p5==1)?"On":"Off",(p6==1)?"On":"Off");
poomyuttt 3:19accdf325fe 103 lcd.setAddress(0,1);
poomyuttt 3:19accdf325fe 104 lcd.printf("P7:%3s P8:%3s",(p7==1)?"On":"Off",(p8==1)?"On":"Off");
poomyuttt 3:19accdf325fe 105 PageNo=5;
poomyuttt 3:19accdf325fe 106 t3.reset();
poomyuttt 3:19accdf325fe 107
poomyuttt 3:19accdf325fe 108 }
poomyuttt 3:19accdf325fe 109 }
poomyuttt 3:19accdf325fe 110 if(PageNo==5)
poomyuttt 3:19accdf325fe 111 {
poomyuttt 3:19accdf325fe 112 if(t3.read_ms () >3000){
poomyuttt 3:19accdf325fe 113 lcd.cls();
poomyuttt 3:19accdf325fe 114 lcd.setAddress(0,0);
poomyuttt 3:19accdf325fe 115 strcpy(cmdbuff, "AT+CIFSR\r\n");
poomyuttt 3:19accdf325fe 116 timeout=1000;getcount=50;
poomyuttt 3:19accdf325fe 117 while(weberror==0){
poomyuttt 3:19accdf325fe 118 SendCMD();getreply();
poomyuttt 3:19accdf325fe 119 if (strstr(replybuff, "0.0.0.0") == NULL) {weberror=1;} // wait for valid IP
poomyuttt 3:19accdf325fe 120 }
poomyuttt 3:19accdf325fe 121 replybuff[strlen(replybuff)] = '\0';
poomyuttt 3:19accdf325fe 122 strcpy(IP, replybuff + 5);
poomyuttt 3:19accdf325fe 123 lcd.printf("%s",IP);
poomyuttt 3:19accdf325fe 124 lcd.setAddress(0,1);
poomyuttt 3:19accdf325fe 125 lcd.printf("Fookies-One(m8)");
poomyuttt 3:19accdf325fe 126 PageNo=1;
poomyuttt 3:19accdf325fe 127 t3.reset();
poomyuttt 3:19accdf325fe 128 }
poomyuttt 3:19accdf325fe 129 }
poomyuttt 2:dad081eaee81 130
poomyuttt 2:dad081eaee81 131 if(DataRX==1){
poomyuttt 2:dad081eaee81 132 ReadWebData();
fookies 4:89c52484b4d4 133 lcd.printf("111111");
fookies 4:89c52484b4d4 134 sendpage();
fookies 4:89c52484b4d4 135 lcd.printf("22222");
poomyuttt 2:dad081eaee81 136 esp.attach(&callback);
poomyuttt 2:dad081eaee81 137 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 138 pc.printf("\n\n HTTP Packet: \n\n%s\n", webdata);
poomyuttt 2:dad081eaee81 139 pc.printf(" Web Characters sent : %d\n\n", bufl);
poomyuttt 2:dad081eaee81 140 pc.printf(" -------------------------------------\n\n");
poomyuttt 2:dad081eaee81 141 strcpy(lasthit, timebuf);
poomyuttt 2:dad081eaee81 142 servreq=0;
poomyuttt 2:dad081eaee81 143 }
poomyuttt 0:894306d5cad7 144 }
poomyuttt 0:894306d5cad7 145
poomyuttt 0:894306d5cad7 146
poomyuttt 0:894306d5cad7 147 return 0;
poomyuttt 0:894306d5cad7 148
poomyuttt 0:894306d5cad7 149 }
poomyuttt 3:19accdf325fe 150 void startserver()
poomyuttt 3:19accdf325fe 151 {
poomyuttt 3:19accdf325fe 152 pc.printf("++++++++++ Resetting ESP ++++++++++\r\n");
poomyuttt 3:19accdf325fe 153 strcpy(cmdbuff,"AT+RST\r\n");
poomyuttt 3:19accdf325fe 154 timeout=2000;getcount=600;
poomyuttt 3:19accdf325fe 155 SendCMD();
poomyuttt 3:19accdf325fe 156 getreply();
poomyuttt 3:19accdf325fe 157 pc.printf(replybuff);
poomyuttt 3:19accdf325fe 158 pc.printf("%d",count);
poomyuttt 3:19accdf325fe 159 if (strstr(replybuff, "OK") != NULL) {
poomyuttt 3:19accdf325fe 160 strcpy(cmdbuff, "AT+CWMODE=1\r\n"); // set wifi to station
poomyuttt 3:19accdf325fe 161 timeout=500;getcount=10;
poomyuttt 3:19accdf325fe 162 SendCMD();
poomyuttt 3:19accdf325fe 163 getreply();
fookies 4:89c52484b4d4 164 strcpy(cmdbuff, "AT+CWJAP=""Fookies-One(m8)"",""12312344""\r\n"); // set wifi to station
poomyuttt 3:19accdf325fe 165 timeout=500;getcount=50;
poomyuttt 3:19accdf325fe 166 SendCMD();
poomyuttt 3:19accdf325fe 167 getreply();
poomyuttt 3:19accdf325fe 168 lcd.printf("\n++++++++++ Starting Server ++++++++++\r\n");
poomyuttt 3:19accdf325fe 169 strcpy(cmdbuff, "AT+CIPMUX=1\r\n"); // set multiple connections.
poomyuttt 3:19accdf325fe 170 timeout=500;getcount=10;
poomyuttt 3:19accdf325fe 171 SendCMD();
poomyuttt 3:19accdf325fe 172 getreply();
poomyuttt 3:19accdf325fe 173 sprintf(cmdbuff,"AT+CIPSERVER=1,%d\r\n", 80);
poomyuttt 3:19accdf325fe 174 timeout=500;getcount=10;
poomyuttt 3:19accdf325fe 175 SendCMD();
poomyuttt 3:19accdf325fe 176 getreply();
poomyuttt 3:19accdf325fe 177 //sprintf(cmdbuff,"AT+CIPSTO=%d\r\n",SERVtimeout);
poomyuttt 3:19accdf325fe 178 //timeout=500;getcount=50;
poomyuttt 3:19accdf325fe 179 //SendCMD();
poomyuttt 3:19accdf325fe 180 //getreply();
poomyuttt 3:19accdf325fe 181 lcd.printf("\n Getting Server IP \r\n");
poomyuttt 3:19accdf325fe 182 strcpy(cmdbuff, "AT+CIFSR\r\n");
poomyuttt 3:19accdf325fe 183 timeout=1000;getcount=50;
poomyuttt 3:19accdf325fe 184 while(weberror==0){
poomyuttt 3:19accdf325fe 185 SendCMD();getreply();
poomyuttt 3:19accdf325fe 186 if (strstr(replybuff, "0.0.0.0") == NULL) {weberror=1;} // wait for valid IP
poomyuttt 3:19accdf325fe 187 }
poomyuttt 3:19accdf325fe 188 lcd.printf("\n Enter WEB address in your browser \r\n\n");
poomyuttt 3:19accdf325fe 189 replybuff[strlen(replybuff) - 8] = '\0';
poomyuttt 3:19accdf325fe 190 strcpy(IP, replybuff + 5);
poomyuttt 3:19accdf325fe 191 sprintf(webdata," http://%s:%d", IP, 80);
poomyuttt 3:19accdf325fe 192 lcd.printf(webdata);
poomyuttt 3:19accdf325fe 193 wait(2);
poomyuttt 3:19accdf325fe 194 bufflen=200;count=0;
poomyuttt 3:19accdf325fe 195 lcd.printf("\n\n++++++++++ Ready ++++++++++\r\n\n");
poomyuttt 3:19accdf325fe 196 esp.attach(&callback);
poomyuttt 3:19accdf325fe 197 }
poomyuttt 3:19accdf325fe 198 else{
poomyuttt 3:19accdf325fe 199 lcd.printf("\n++++++++++ ESP8266 error, check power/connections ++++++++++\r\n");
poomyuttt 3:19accdf325fe 200 while(1){}
poomyuttt 3:19accdf325fe 201 }
poomyuttt 3:19accdf325fe 202 t2.reset();t2.start();
poomyuttt 3:19accdf325fe 203 }
poomyuttt 2:dad081eaee81 204
poomyuttt 2:dad081eaee81 205 void sendpage()
poomyuttt 2:dad081eaee81 206 {
poomyuttt 2:dad081eaee81 207 char t1[1000];
poomyuttt 2:dad081eaee81 208
poomyuttt 2:dad081eaee81 209 // WEB page data
poomyuttt 2:dad081eaee81 210 strcpy(webbuff, "<!DOCTYPE html>");
poomyuttt 2:dad081eaee81 211 strcat(webbuff, "<html><head><title>Home Status</title></head>");
poomyuttt 2:dad081eaee81 212 strcat(webbuff, "<body>");
poomyuttt 2:dad081eaee81 213 strcat(webbuff, "<p>");
poomyuttt 2:dad081eaee81 214 sprintf(t1,"%02d/%02d/%4d %02d:%02d:%02d",d,M,y,h,m,s);
poomyuttt 2:dad081eaee81 215 strcat(webbuff,t1);
poomyuttt 2:dad081eaee81 216 strcat(webbuff, "<p>");
poomyuttt 2:dad081eaee81 217 strcat(webbuff,"<p>Temperature : ");
poomyuttt 2:dad081eaee81 218 sprintf(t1,"%.1f",Temp);
poomyuttt 2:dad081eaee81 219 strcat(webbuff,t1);
poomyuttt 2:dad081eaee81 220 strcat(webbuff, " C<p>");
poomyuttt 2:dad081eaee81 221 strcat(webbuff,"<p>Humidity : ");
poomyuttt 2:dad081eaee81 222 sprintf(t1,"%.1f",Hum);
poomyuttt 2:dad081eaee81 223 strcat(webbuff,t1);
poomyuttt 2:dad081eaee81 224 strcat(webbuff, " %<p>");
poomyuttt 2:dad081eaee81 225 strcat(webbuff, "<table>");
poomyuttt 2:dad081eaee81 226 strcat(webbuff, "<tr>");
poomyuttt 2:dad081eaee81 227 strcat(webbuff, "<td>Light 1 :</td><td>");
poomyuttt 2:dad081eaee81 228 if(p1==1)
poomyuttt 2:dad081eaee81 229 {
fookies 4:89c52484b4d4 230 strcat(webbuff, "<a href=/?Light1=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 231 }else{
fookies 4:89c52484b4d4 232 strcat(webbuff, "<a href=/?Light1=ON>OFF</a></td></tr>");
poomyuttt 2:dad081eaee81 233 }
poomyuttt 2:dad081eaee81 234 strcat(webbuff, "<tr>");
poomyuttt 2:dad081eaee81 235 strcat(webbuff, "<td>Light 2 :</td><td>");
poomyuttt 2:dad081eaee81 236 if(p2==1)
poomyuttt 2:dad081eaee81 237 {
fookies 4:89c52484b4d4 238 strcat(webbuff, "<a href=/?Light2=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 239 }else{
fookies 4:89c52484b4d4 240 strcat(webbuff, "<a href=/?Light2=ON>OFF</a></td></tr>");
poomyuttt 2:dad081eaee81 241 }
poomyuttt 2:dad081eaee81 242 strcat(webbuff, "<tr>");
fookies 4:89c52484b4d4 243 strcat(webbuff, "<td>Light 3 :</td><td>");
poomyuttt 2:dad081eaee81 244 if(p3==1)
poomyuttt 2:dad081eaee81 245 {
fookies 4:89c52484b4d4 246 strcat(webbuff, "<a href=/?Light3=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 247 }else{
fookies 4:89c52484b4d4 248 strcat(webbuff, "<a href=/?Light3=ON>OFF</a></td></tr>");
fookies 4:89c52484b4d4 249 }
fookies 4:89c52484b4d4 250 strcat(webbuff, "<tr>");
fookies 4:89c52484b4d4 251 strcat(webbuff, "<td>Light 4 :</td><td>");
poomyuttt 2:dad081eaee81 252 if(p4==1)
poomyuttt 2:dad081eaee81 253 {
fookies 4:89c52484b4d4 254 strcat(webbuff, "<a href=/?Light4=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 255 }else{
fookies 4:89c52484b4d4 256 strcat(webbuff, "<a href=/?Light4=ON>OFF</a></td></tr>");
fookies 4:89c52484b4d4 257 }
fookies 4:89c52484b4d4 258 strcat(webbuff, "<tr>");
fookies 4:89c52484b4d4 259 strcat(webbuff, "<td>Light 5 :</td><td>");
poomyuttt 2:dad081eaee81 260 if(p5==1)
poomyuttt 2:dad081eaee81 261 {
fookies 4:89c52484b4d4 262 strcat(webbuff, "<a href=/?Light5=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 263 }else{
fookies 4:89c52484b4d4 264 strcat(webbuff, "<a href=/?Light5=ON>OFF</a></td></tr>");
fookies 4:89c52484b4d4 265 }
fookies 4:89c52484b4d4 266 strcat(webbuff, "<tr>");
fookies 4:89c52484b4d4 267 strcat(webbuff, "<td>Light 6 :</td><td>");
poomyuttt 2:dad081eaee81 268 if(p6==1)
poomyuttt 2:dad081eaee81 269 {
fookies 4:89c52484b4d4 270 strcat(webbuff, "<a href=/?Light6=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 271 }else{
fookies 4:89c52484b4d4 272 strcat(webbuff, "<a href=/?Light6=ON>OFF</a></td></tr>");
fookies 4:89c52484b4d4 273 }
fookies 4:89c52484b4d4 274 strcat(webbuff, "<tr>");
fookies 4:89c52484b4d4 275 strcat(webbuff, "<td>Light 7 :</td><td>");
poomyuttt 2:dad081eaee81 276 if(p7==1)
poomyuttt 2:dad081eaee81 277 {
fookies 4:89c52484b4d4 278 strcat(webbuff, "<a href=/?Light7=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 279 }else{
fookies 4:89c52484b4d4 280 strcat(webbuff, "<a href=/?Light7=ON>OFF</a></td></tr>");
fookies 4:89c52484b4d4 281 }
fookies 4:89c52484b4d4 282 strcat(webbuff, "<tr>");
fookies 4:89c52484b4d4 283 strcat(webbuff, "<td>Light 8 :</td><td>");
poomyuttt 2:dad081eaee81 284 if(p8==1)
poomyuttt 2:dad081eaee81 285 {
fookies 4:89c52484b4d4 286 strcat(webbuff, "<a href=/?Light8=OFF>ON</a></td></tr>");
poomyuttt 2:dad081eaee81 287 }else{
fookies 4:89c52484b4d4 288 strcat(webbuff, "<a href=/?Light8=ON>OFF</a></td></tr>");
poomyuttt 2:dad081eaee81 289 }
poomyuttt 2:dad081eaee81 290
poomyuttt 2:dad081eaee81 291
poomyuttt 2:dad081eaee81 292
poomyuttt 2:dad081eaee81 293
poomyuttt 2:dad081eaee81 294 strcat(webbuff, "</table></p></body></html>");
poomyuttt 2:dad081eaee81 295 // end of WEB page data
poomyuttt 2:dad081eaee81 296 bufl = strlen(webbuff); // get total page buffer length
poomyuttt 2:dad081eaee81 297 sprintf(cmdbuff,"AT+CIPSEND=%d,%d\r\n", linkID, bufl); // send IPD link channel and buffer character length.
poomyuttt 2:dad081eaee81 298 timeout=200;getcount=7;
poomyuttt 2:dad081eaee81 299 SendCMD();
poomyuttt 2:dad081eaee81 300 getreply();
poomyuttt 2:dad081eaee81 301 SendWEB(); // send web page
poomyuttt 2:dad081eaee81 302 memset(webbuff, '\0', sizeof(webbuff));
poomyuttt 2:dad081eaee81 303 sendcheck();
poomyuttt 2:dad081eaee81 304 }
poomyuttt 2:dad081eaee81 305 void ReadWebData()
poomyuttt 2:dad081eaee81 306 {
poomyuttt 2:dad081eaee81 307 wait_ms(200);
poomyuttt 2:dad081eaee81 308 esp.attach(NULL);
poomyuttt 2:dad081eaee81 309 count=0;DataRX=0;weberror=0;
poomyuttt 2:dad081eaee81 310 memset(webdata, '\0', sizeof(webdata));
poomyuttt 2:dad081eaee81 311 int x = strcspn (webbuff,"+");
poomyuttt 2:dad081eaee81 312 if(x){
poomyuttt 2:dad081eaee81 313 strcpy(webdata, webbuff + x);weberror=0;
poomyuttt 2:dad081eaee81 314 int numMatched = sscanf(webdata,"+IPD,%d,%d:%s", &linkID, &ipdLen, type);
poomyuttt 2:dad081eaee81 315
fookies 4:89c52484b4d4 316 if( strstr(webdata, "Light1=OFF") != NULL ) {p1=0;}
fookies 4:89c52484b4d4 317 if( strstr(webdata, "Light1=ON") != NULL ) {p1=1;}
fookies 4:89c52484b4d4 318 if( strstr(webdata, "Light2=OFF") != NULL ) {p2=0;}
fookies 4:89c52484b4d4 319 if( strstr(webdata, "Light2=ON") != NULL ) {p2=1;}
fookies 4:89c52484b4d4 320 if( strstr(webdata, "Light3=OFF") != NULL ) {p3=0;}
fookies 4:89c52484b4d4 321 if( strstr(webdata, "Light3=ON") != NULL ) {p3=1;}
fookies 4:89c52484b4d4 322 if( strstr(webdata, "Light4=OFF") != NULL ) {p4=0;}
fookies 4:89c52484b4d4 323 if( strstr(webdata, "Light4=ON") != NULL ) {p4=1;}
fookies 4:89c52484b4d4 324 if( strstr(webdata, "Light5=OFF") != NULL ) {p5=0;}
fookies 4:89c52484b4d4 325 if( strstr(webdata, "Light5=ON") != NULL ) {p5=1;}
fookies 4:89c52484b4d4 326 if( strstr(webdata, "Light6=OFF") != NULL ) {p6=0;}
fookies 4:89c52484b4d4 327 if( strstr(webdata, "Light6=ON") != NULL ) {p6=1;}
fookies 4:89c52484b4d4 328 if( strstr(webdata, "Light7=OFF") != NULL ) {p7=0;}
fookies 4:89c52484b4d4 329 if( strstr(webdata, "Light7=ON") != NULL ) {p7=1;}
fookies 4:89c52484b4d4 330 if( strstr(webdata, "Light8=OFF") != NULL ) {p8=0;}
fookies 4:89c52484b4d4 331 if( strstr(webdata, "Light8=ON") != NULL ) {p8=1;}
poomyuttt 2:dad081eaee81 332
poomyuttt 2:dad081eaee81 333 sprintf(channel, "%d",linkID);
poomyuttt 2:dad081eaee81 334 if (strstr(webdata, "GET") != NULL) {servreq=1;}
poomyuttt 2:dad081eaee81 335 if (strstr(webdata, "POST") != NULL) {servreq=1;}
poomyuttt 2:dad081eaee81 336 webcounter++;
poomyuttt 2:dad081eaee81 337 sprintf(webcount, "%d",webcounter);
poomyuttt 2:dad081eaee81 338 }
poomyuttt 2:dad081eaee81 339 else {
poomyuttt 2:dad081eaee81 340 memset(webbuff, '\0', sizeof(webbuff));
poomyuttt 2:dad081eaee81 341 esp.attach(&callback);weberror=1;
fookies 4:89c52484b4d4 342 }
poomyuttt 2:dad081eaee81 343 }
poomyuttt 2:dad081eaee81 344 // ESP Command data send
poomyuttt 2:dad081eaee81 345 void SendCMD()
poomyuttt 2:dad081eaee81 346 {
poomyuttt 2:dad081eaee81 347 esp.printf("%s", cmdbuff);
poomyuttt 2:dad081eaee81 348 }
poomyuttt 2:dad081eaee81 349 // Get Cammand and ESP status replies
poomyuttt 2:dad081eaee81 350 void getreply()
poomyuttt 2:dad081eaee81 351 {
poomyuttt 2:dad081eaee81 352 memset(replybuff, '\0', sizeof(replybuff));
poomyuttt 2:dad081eaee81 353 t1.reset(); t1.start();replycount=0;
poomyuttt 2:dad081eaee81 354 while(t1.read_ms()< timeout && replycount < getcount) {
poomyuttt 2:dad081eaee81 355 if(esp.readable()) {
poomyuttt 2:dad081eaee81 356 replybuff[replycount] = esp.getc();replycount++;
poomyuttt 2:dad081eaee81 357 }
poomyuttt 2:dad081eaee81 358 }
poomyuttt 2:dad081eaee81 359 t1.stop();
poomyuttt 2:dad081eaee81 360 }
poomyuttt 2:dad081eaee81 361 // Large WEB buffer data send
poomyuttt 2:dad081eaee81 362 void SendWEB()
poomyuttt 2:dad081eaee81 363 {
poomyuttt 2:dad081eaee81 364 int i=0;
poomyuttt 2:dad081eaee81 365 if(esp.writeable()) {
poomyuttt 2:dad081eaee81 366 while(webbuff[i]!='\0') {esp.putc(webbuff[i]);i++;}
poomyuttt 2:dad081eaee81 367 }
poomyuttt 2:dad081eaee81 368 }
poomyuttt 2:dad081eaee81 369 // wait for ESP "SEND OK" reply, then close IP to load web page
poomyuttt 2:dad081eaee81 370 void sendcheck()
poomyuttt 2:dad081eaee81 371 {
poomyuttt 2:dad081eaee81 372 weberror=1;timeout=500;getcount=24;
poomyuttt 2:dad081eaee81 373 t2.reset();t2.start();
poomyuttt 2:dad081eaee81 374 while(weberror==1 && t2.read() <5){
poomyuttt 2:dad081eaee81 375 getreply();
poomyuttt 2:dad081eaee81 376 if (strstr(replybuff, "SEND OK") != NULL) {weberror=0;} // wait for valid SEND OK
poomyuttt 2:dad081eaee81 377 }
poomyuttt 2:dad081eaee81 378 if(weberror==1){ // restart connection
poomyuttt 2:dad081eaee81 379 strcpy(cmdbuff, "AT+CIPMUX=1\r\n");
poomyuttt 2:dad081eaee81 380 timeout=500;getcount=10;
poomyuttt 2:dad081eaee81 381 SendCMD();getreply();
poomyuttt 2:dad081eaee81 382 sprintf(cmdbuff,"AT+CIPSERVER=1,%d\r\n", 80);
poomyuttt 2:dad081eaee81 383 timeout=500;getcount=10;
poomyuttt 2:dad081eaee81 384 SendCMD();getreply();
poomyuttt 2:dad081eaee81 385 }
poomyuttt 2:dad081eaee81 386 else{
poomyuttt 2:dad081eaee81 387 sprintf(cmdbuff, "AT+CIPCLOSE=%s\r\n",channel); // close current connection
poomyuttt 2:dad081eaee81 388 SendCMD();}
poomyuttt 2:dad081eaee81 389 t2.reset();
poomyuttt 2:dad081eaee81 390 }