Library für ESP01 Webserver STM32F103RB Nucleo

Dependents:   Nucleo_dht11_Webserver WebServerGSOEWorkshopSlider WebServerGSOEWorkshopDynamisch WebServerGSOEWorkshopStatisch ... more

Committer:
jack1930
Date:
Fri Jun 18 15:33:21 2021 +0000
Revision:
15:e710f0431920
Parent:
14:d17cfd8131b1
Child:
16:b09391fb73b4
Station implementiert

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jack1930 13:ed5c59ed4ae5 1 #include "ESP8266Webserver.h"
jack1930 13:ed5c59ed4ae5 2
jack1930 14:d17cfd8131b1 3 ESP8266Webserver::ESP8266Webserver()
jack1930 13:ed5c59ed4ae5 4 {
jack1930 13:ed5c59ed4ae5 5 //HAL_Delay(1000);
jack1930 13:ed5c59ed4ae5 6 hs_count=0;
jack1930 13:ed5c59ed4ae5 7 clientIdx=0;
jack1930 13:ed5c59ed4ae5 8 if (pDebug) printf("\nATCmdParser with ESP8266 example");
jack1930 13:ed5c59ed4ae5 9 port=Port;
jack1930 13:ed5c59ed4ae5 10
jack1930 13:ed5c59ed4ae5 11 dbg=pDebug;
jack1930 13:ed5c59ed4ae5 12 _serial = new BufferedSerial(tx,rx, ESP8266_DEFAULT_BAUD_RATE);
jack1930 13:ed5c59ed4ae5 13 _parser = new ATCmdParser(_serial, "\r\n");
jack1930 13:ed5c59ed4ae5 14 _parser->debug_on(false);//pDebug);
jack1930 13:ed5c59ed4ae5 15
jack1930 13:ed5c59ed4ae5 16 _parser->set_timeout(1000);
jack1930 13:ed5c59ed4ae5 17
jack1930 13:ed5c59ed4ae5 18 //AT
jack1930 13:ed5c59ed4ae5 19 if (pDebug) printf("\nATCmdParser: AT\r\n");
jack1930 13:ed5c59ed4ae5 20 _parser->send("AT");
jack1930 13:ed5c59ed4ae5 21
jack1930 13:ed5c59ed4ae5 22 //HAL_Delay(1000);
jack1930 13:ed5c59ed4ae5 23
jack1930 13:ed5c59ed4ae5 24 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 25 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 26 } else {
jack1930 13:ed5c59ed4ae5 27 if (pDebug) printf("\nATCmdParser: OK failed\r\n");
jack1930 13:ed5c59ed4ae5 28 }
jack1930 13:ed5c59ed4ae5 29
jack1930 15:e710f0431920 30
jack1930 15:e710f0431920 31
jack1930 15:e710f0431920 32 if (station==true)
jack1930 15:e710f0431920 33 {
jack1930 15:e710f0431920 34 listAPs();
jack1930 15:e710f0431920 35 printf("%s",ipadr);
jack1930 15:e710f0431920 36 }
jack1930 15:e710f0431920 37 else {
jack1930 15:e710f0431920 38 _parser->send("ATE0");
jack1930 15:e710f0431920 39 strcpy(ipadr,ip);
jack1930 13:ed5c59ed4ae5 40
jack1930 15:e710f0431920 41 //HAL_Delay(300);
jack1930 15:e710f0431920 42 //AT+CWMODE=1
jack1930 15:e710f0431920 43 if (pDebug) printf("\nATCmdParser: //AT+CWMODE=2 \r\n");
jack1930 15:e710f0431920 44 _parser->send("AT+CWMODE=2");
jack1930 15:e710f0431920 45
jack1930 15:e710f0431920 46 if (_parser->recv("OK")) {
jack1930 15:e710f0431920 47 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 15:e710f0431920 48 } else {
jack1930 15:e710f0431920 49 if (pDebug) printf("\nATCmdParser: OK failed\r\n");
jack1930 15:e710f0431920 50 }
jack1930 15:e710f0431920 51
jack1930 13:ed5c59ed4ae5 52 //AT+CWMODE?
jack1930 13:ed5c59ed4ae5 53 if (pDebug) printf("\nATCmdParser: //AT+CWMODE? \r\n");
jack1930 13:ed5c59ed4ae5 54 _parser->send("AT+CWMODE?");
jack1930 13:ed5c59ed4ae5 55
jack1930 13:ed5c59ed4ae5 56 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 57 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 58 } else {
jack1930 13:ed5c59ed4ae5 59 if (pDebug) printf("\nATCmdParser: OK failed\r\n");
jack1930 13:ed5c59ed4ae5 60 }
jack1930 13:ed5c59ed4ae5 61
jack1930 13:ed5c59ed4ae5 62
jack1930 13:ed5c59ed4ae5 63 //AT+CIFSR
jack1930 13:ed5c59ed4ae5 64 if (pDebug) printf("\nATCmdParser: //AT+CIFSR \r\n");
jack1930 13:ed5c59ed4ae5 65 _parser->send("AT+CIFSR");
jack1930 13:ed5c59ed4ae5 66
jack1930 13:ed5c59ed4ae5 67 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 68 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 69 } else {
jack1930 13:ed5c59ed4ae5 70 if (pDebug) printf("\nATCmdParser: OK failed\r\n");
jack1930 13:ed5c59ed4ae5 71 }
jack1930 13:ed5c59ed4ae5 72
jack1930 13:ed5c59ed4ae5 73 /*
jack1930 13:ed5c59ed4ae5 74 //AT+CWJAP= “Wi-FiNetwork”,“Password”
jack1930 13:ed5c59ed4ae5 75 printf("\nATCmdParser: //AT+CWJAP= \"Wi-FiNetwork\",\"Password\" \r\n");
jack1930 13:ed5c59ed4ae5 76 _parser->send("AT+CWJAP=\"x-Netz\",\"aCT3xuSbm9rt\"");
jack1930 13:ed5c59ed4ae5 77
jack1930 13:ed5c59ed4ae5 78 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 79 printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 80 } else {
jack1930 13:ed5c59ed4ae5 81 printf("\nATCmdParser: OK failed\r\n");
jack1930 13:ed5c59ed4ae5 82 }
jack1930 13:ed5c59ed4ae5 83 */
jack1930 15:e710f0431920 84
jack1930 13:ed5c59ed4ae5 85 //AT+CIPAP="192.168.5.1","192.168.5.1","255.255.255.0"
jack1930 15:e710f0431920 86 if (pDebug) printf("\nATCmdParser: //AT+CIPAP=\"%s\",\"%s\",\"%s\" \r\n",ipad.c_str(),ipad.c_str(),netzmaske);
jack1930 15:e710f0431920 87 // _parser->send("AT+CIPAP=\"192.168.5.1\",\"192.168.5.1\",\"255.255.255.0\"");
jack1930 15:e710f0431920 88 _parser->send("AT+CIPAP=\"%s\",\"%s\",\"%s\"",ipad.c_str(),ipad.c_str(),netzmaske);
jack1930 15:e710f0431920 89
jack1930 15:e710f0431920 90 if (_parser->recv("OK")) {
jack1930 15:e710f0431920 91 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 15:e710f0431920 92 } else {
jack1930 15:e710f0431920 93 if (pDebug) printf("\nATCmdParser: OK failed\r\n");
jack1930 15:e710f0431920 94 }
jack1930 15:e710f0431920 95
jack1930 13:ed5c59ed4ae5 96
jack1930 13:ed5c59ed4ae5 97 //AT+CIPMUX=1
jack1930 13:ed5c59ed4ae5 98 if (pDebug) printf("\nATCmdParser: //AT+CIPMUX=1");
jack1930 13:ed5c59ed4ae5 99 _parser->send("AT+CIPMUX=1");
jack1930 13:ed5c59ed4ae5 100
jack1930 13:ed5c59ed4ae5 101 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 102 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 103 } else {
jack1930 13:ed5c59ed4ae5 104 if (pDebug) printf("\nATCmdParser: OK failed\r\n");
jack1930 13:ed5c59ed4ae5 105 }
jack1930 15:e710f0431920 106 }
jack1930 13:ed5c59ed4ae5 107 }
jack1930 13:ed5c59ed4ae5 108
jack1930 13:ed5c59ed4ae5 109
jack1930 13:ed5c59ed4ae5 110
jack1930 13:ed5c59ed4ae5 111 int ESP8266Webserver::on(const char* handlestring,Callback< void()> func)
jack1930 13:ed5c59ed4ae5 112 {
jack1930 13:ed5c59ed4ae5 113 if (hs_count>9) return -1;
jack1930 13:ed5c59ed4ae5 114 else
jack1930 13:ed5c59ed4ae5 115 {
jack1930 13:ed5c59ed4ae5 116 strcpy(hs[hs_count],handlestring);
jack1930 13:ed5c59ed4ae5 117 if (dbg) printf("\r\n\r\n%s, %s\r\n",handlestring,hs[hs_count]);
jack1930 13:ed5c59ed4ae5 118 cbs[hs_count]=func;
jack1930 13:ed5c59ed4ae5 119 hs_count++;
jack1930 13:ed5c59ed4ae5 120 return 0;
jack1930 13:ed5c59ed4ae5 121 }
jack1930 13:ed5c59ed4ae5 122
jack1930 13:ed5c59ed4ae5 123 }
jack1930 13:ed5c59ed4ae5 124
jack1930 13:ed5c59ed4ae5 125 int ESP8266Webserver::begin(void)
jack1930 13:ed5c59ed4ae5 126 {
jack1930 13:ed5c59ed4ae5 127 //AT+CIPSERVER=1,80
jack1930 15:e710f0431920 128 if (dbg) printf("\nATCmdParser: //AT+CIPSERVER=1,%d",Port);
jack1930 15:e710f0431920 129 _parser->send("AT+CIPSERVER=1,%d",Port);
jack1930 13:ed5c59ed4ae5 130 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 131 if (dbg) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 132 return 0;
jack1930 13:ed5c59ed4ae5 133 } else {
jack1930 13:ed5c59ed4ae5 134 if (dbg) printf("\nATCmdParser: OK failed\r\n");
jack1930 13:ed5c59ed4ae5 135 return -1;
jack1930 13:ed5c59ed4ae5 136 }
jack1930 13:ed5c59ed4ae5 137 }
jack1930 13:ed5c59ed4ae5 138
jack1930 13:ed5c59ed4ae5 139 //durchsucht recbuf nach suchstring
jack1930 13:ed5c59ed4ae5 140 bool ESP8266Webserver::beinhaltet(char* suchstring)
jack1930 13:ed5c59ed4ae5 141 {
jack1930 13:ed5c59ed4ae5 142 char* referer;
jack1930 13:ed5c59ed4ae5 143 char* fundort;
jack1930 13:ed5c59ed4ae5 144 char* favicon;
jack1930 13:ed5c59ed4ae5 145 favicon=strstr(recbuf,"favicon");
jack1930 13:ed5c59ed4ae5 146 if (favicon!=NULL) return false;
jack1930 13:ed5c59ed4ae5 147 referer=strstr(recbuf,"Referer");
jack1930 13:ed5c59ed4ae5 148 fundort=strstr(recbuf, suchstring);
jack1930 13:ed5c59ed4ae5 149 if (strstr(recbuf,"ERROR")==NULL)
jack1930 13:ed5c59ed4ae5 150 if( fundort != NULL&&(fundort<referer||referer==NULL)) return true;
jack1930 13:ed5c59ed4ae5 151 return false;
jack1930 13:ed5c59ed4ae5 152 }
jack1930 13:ed5c59ed4ae5 153
jack1930 13:ed5c59ed4ae5 154 int ESP8266Webserver::handleClient(void)
jack1930 13:ed5c59ed4ae5 155 {
jack1930 13:ed5c59ed4ae5 156 int value,value2;
jack1930 13:ed5c59ed4ae5 157 if (_serial->readable())
jack1930 13:ed5c59ed4ae5 158 {
jack1930 13:ed5c59ed4ae5 159 /* HAL_Delay(1000);
jack1930 13:ed5c59ed4ae5 160 _serial->read(buf,1000);
jack1930 13:ed5c59ed4ae5 161 printf("\r\n ich %s\r\n",buf);
jack1930 13:ed5c59ed4ae5 162 */
jack1930 13:ed5c59ed4ae5 163 if (_parser->recv("+IPD,%d,%d:",&clientID[clientIdx],&value2)) //_parser->recv("+IPD,%d",value)
jack1930 13:ed5c59ed4ae5 164 {
jack1930 13:ed5c59ed4ae5 165
jack1930 13:ed5c59ed4ae5 166 //HAL_Delay(1000);
jack1930 13:ed5c59ed4ae5 167
jack1930 13:ed5c59ed4ae5 168 if (dbg) printf("\r\nich Client ID=%d, Anzahl=%d",clientID[clientIdx],value2);
jack1930 13:ed5c59ed4ae5 169 _parser->read(recbuf, value2);
jack1930 13:ed5c59ed4ae5 170 //HAL_Delay(1000);
jack1930 13:ed5c59ed4ae5 171
jack1930 13:ed5c59ed4ae5 172 //recbuf[value2]=0;
jack1930 13:ed5c59ed4ae5 173 if (dbg) printf("\r\nBuf=\n%s",recbuf);
jack1930 13:ed5c59ed4ae5 174
jack1930 13:ed5c59ed4ae5 175 //(cbs[1])();
jack1930 13:ed5c59ed4ae5 176 gefunden=false;
jack1930 13:ed5c59ed4ae5 177 for (int i=0;i<hs_count&&!gefunden;i++)
jack1930 13:ed5c59ed4ae5 178 {
jack1930 13:ed5c59ed4ae5 179
jack1930 13:ed5c59ed4ae5 180 if (beinhaltet(hs[i]))
jack1930 13:ed5c59ed4ae5 181 {
jack1930 13:ed5c59ed4ae5 182
jack1930 13:ed5c59ed4ae5 183 (cbs[i])();
jack1930 13:ed5c59ed4ae5 184
jack1930 13:ed5c59ed4ae5 185 gefunden=true;
jack1930 13:ed5c59ed4ae5 186 }
jack1930 13:ed5c59ed4ae5 187 }
jack1930 13:ed5c59ed4ae5 188
jack1930 13:ed5c59ed4ae5 189 if (dbg) for (int i=0;i<hs_count;i++)
jack1930 13:ed5c59ed4ae5 190 {
jack1930 13:ed5c59ed4ae5 191 printf("\r\n%s\r\n",hs[i]);
jack1930 13:ed5c59ed4ae5 192 }
jack1930 13:ed5c59ed4ae5 193
jack1930 13:ed5c59ed4ae5 194 if (dbg) printf("\r\nich Got\r\n");
jack1930 13:ed5c59ed4ae5 195
jack1930 13:ed5c59ed4ae5 196 //_parser->flush();
jack1930 13:ed5c59ed4ae5 197
jack1930 13:ed5c59ed4ae5 198 }
jack1930 13:ed5c59ed4ae5 199
jack1930 13:ed5c59ed4ae5 200 }
jack1930 13:ed5c59ed4ae5 201
jack1930 13:ed5c59ed4ae5 202 return 0;
jack1930 13:ed5c59ed4ae5 203 }
jack1930 13:ed5c59ed4ae5 204
jack1930 13:ed5c59ed4ae5 205
jack1930 13:ed5c59ed4ae5 206 int ESP8266Webserver::send(int HTTPStatus,const char* Mimetype, string webseite)
jack1930 13:ed5c59ed4ae5 207 {
jack1930 13:ed5c59ed4ae5 208 return ESP8266Webserver::send(HTTPStatus,Mimetype, webseite.c_str());
jack1930 13:ed5c59ed4ae5 209 }
jack1930 13:ed5c59ed4ae5 210 int ESP8266Webserver::send(int HTTPStatus,const char* Mimetype, const char* webseite)
jack1930 13:ed5c59ed4ae5 211 {
jack1930 13:ed5c59ed4ae5 212 char hilf[40];
jack1930 13:ed5c59ed4ae5 213
jack1930 13:ed5c59ed4ae5 214 printf("\r\nHallo\r\n");
jack1930 13:ed5c59ed4ae5 215 Aufrufe++;
jack1930 13:ed5c59ed4ae5 216 sprintf(sendstring,"HTTP/1.1 %d OK\n",HTTPStatus);
jack1930 13:ed5c59ed4ae5 217 strcat(sendstring,"Date: Wed, 23 Apr 2021 04:36:25 GMT\n");
jack1930 13:ed5c59ed4ae5 218 strcat(sendstring,"Connection: close\n");
jack1930 13:ed5c59ed4ae5 219 strcat(sendstring,"Content-Type: ");
jack1930 13:ed5c59ed4ae5 220 strcat(sendstring,Mimetype);
jack1930 13:ed5c59ed4ae5 221 strcat(sendstring,"\n");
jack1930 13:ed5c59ed4ae5 222 sprintf(hilf,"%d",strlen(webseite));
jack1930 13:ed5c59ed4ae5 223 strcat(sendstring,"Content-Length: ");
jack1930 13:ed5c59ed4ae5 224 strcat(sendstring,hilf);
jack1930 13:ed5c59ed4ae5 225 strcat(sendstring,"\n\n");
jack1930 13:ed5c59ed4ae5 226 strcat(sendstring,webseite);
jack1930 13:ed5c59ed4ae5 227 if (dbg) printf("len=%d, inhalt=\n%s",strlen(sendstring),sendstring);
jack1930 13:ed5c59ed4ae5 228 //sprintf(hilf,"AT+CIPSEND=%d,%d\r\n",clientID,strlen(sendstring));
jack1930 13:ed5c59ed4ae5 229 //printf("\n %s, %d\n",hilf,strlen(hilf));
jack1930 13:ed5c59ed4ae5 230 //_serial->write(hilf,strlen(hilf));
jack1930 13:ed5c59ed4ae5 231 _parser->debug_on(true);
jack1930 13:ed5c59ed4ae5 232 _parser->send("AT+CIPSEND=%d,%d",clientID[clientIdx],strlen(sendstring));
jack1930 13:ed5c59ed4ae5 233 _parser->debug_on(false);
jack1930 13:ed5c59ed4ae5 234 _parser->write(sendstring,strlen(sendstring));
jack1930 13:ed5c59ed4ae5 235 HAL_Delay(200);
jack1930 13:ed5c59ed4ae5 236 _parser->send("AT+CIPCLOSE=%d",clientID[clientIdx]);
jack1930 13:ed5c59ed4ae5 237 return 0;
jack1930 13:ed5c59ed4ae5 238 }
jack1930 13:ed5c59ed4ae5 239
jack1930 13:ed5c59ed4ae5 240 void ESP8266Webserver::debugOn(bool pD)
jack1930 13:ed5c59ed4ae5 241 {
jack1930 13:ed5c59ed4ae5 242 dbg=pD;
jack1930 13:ed5c59ed4ae5 243 _parser->debug_on(pD);
jack1930 13:ed5c59ed4ae5 244
jack1930 13:ed5c59ed4ae5 245 }
jack1930 13:ed5c59ed4ae5 246
jack1930 13:ed5c59ed4ae5 247 string ESP8266Webserver::gibWertString(string suchstring)
jack1930 13:ed5c59ed4ae5 248 {
jack1930 13:ed5c59ed4ae5 249 return ESP8266Webserver::gibWert(suchstring.c_str());
jack1930 13:ed5c59ed4ae5 250 }
jack1930 13:ed5c59ed4ae5 251
jack1930 13:ed5c59ed4ae5 252 const char* ESP8266Webserver::gibWert(const char* suchstring)
jack1930 13:ed5c59ed4ae5 253 {
jack1930 13:ed5c59ed4ae5 254 static char hilf[20];
jack1930 13:ed5c59ed4ae5 255
jack1930 13:ed5c59ed4ae5 256 char *fundort;
jack1930 13:ed5c59ed4ae5 257 int i=0;
jack1930 13:ed5c59ed4ae5 258 fundort=strstr(recbuf,suchstring);
jack1930 13:ed5c59ed4ae5 259 if (fundort!=NULL)
jack1930 13:ed5c59ed4ae5 260 {
jack1930 13:ed5c59ed4ae5 261 fundort=fundort+strlen(suchstring)+1;
jack1930 13:ed5c59ed4ae5 262 while(i<20 && fundort[i]!=38 && fundort[i]>32 ) //space, &
jack1930 13:ed5c59ed4ae5 263 {
jack1930 13:ed5c59ed4ae5 264 hilf[i]=fundort[i];
jack1930 13:ed5c59ed4ae5 265 i++;
jack1930 13:ed5c59ed4ae5 266 }
jack1930 13:ed5c59ed4ae5 267 hilf[i]=0;
jack1930 13:ed5c59ed4ae5 268 if (dbg) printf("\r\nsuchergebnis=%s\r\n",hilf);
jack1930 13:ed5c59ed4ae5 269 return hilf;
jack1930 13:ed5c59ed4ae5 270 }
jack1930 13:ed5c59ed4ae5 271 else
jack1930 13:ed5c59ed4ae5 272 return NULL;
jack1930 14:d17cfd8131b1 273 }
jack1930 14:d17cfd8131b1 274
jack1930 15:e710f0431920 275 void ESP8266Webserver::listAPs()
jack1930 14:d17cfd8131b1 276 {
jack1930 15:e710f0431920 277
jack1930 15:e710f0431920 278 //_parser->debug_on(true);
jack1930 15:e710f0431920 279 _parser->send("AT+CWMODE=1");
jack1930 15:e710f0431920 280 while (_parser->recv("OK")==false);
jack1930 15:e710f0431920 281 HAL_Delay(1000);
jack1930 15:e710f0431920 282 if (scanAPs==true)
jack1930 14:d17cfd8131b1 283 {
jack1930 15:e710f0431920 284 _parser->send("AT+CWLAP");
jack1930 15:e710f0431920 285 while (!_serial->readable());
jack1930 15:e710f0431920 286 HAL_Delay(10000);
jack1930 15:e710f0431920 287 printf("\r\nBuf=");
jack1930 15:e710f0431920 288 while (_serial->readable())
jack1930 15:e710f0431920 289 {
jack1930 15:e710f0431920 290 _parser->read(recbuf, 1);
jack1930 15:e710f0431920 291 printf("%s",recbuf);
jack1930 15:e710f0431920 292 }
jack1930 15:e710f0431920 293 printf("\r\n");
jack1930 14:d17cfd8131b1 294 }
jack1930 15:e710f0431920 295 for (int i=0;i<5;i++)
jack1930 15:e710f0431920 296 {
jack1930 15:e710f0431920 297 _parser->send("AT+CWJAP=\"%s\",\"%s\"",ssid,passwort);
jack1930 15:e710f0431920 298 HAL_Delay(1000);
jack1930 15:e710f0431920 299 if (_parser->recv("WIFI GOT IP")) i=6;
jack1930 15:e710f0431920 300 }
jack1930 15:e710f0431920 301 _parser->send("AT+CIFSR");
jack1930 15:e710f0431920 302 while (_parser->recv("+CIFSR:STAIP,")==false)
jack1930 15:e710f0431920 303 {
jack1930 15:e710f0431920 304 _parser->send("AT+CIFSR");
jack1930 15:e710f0431920 305 HAL_Delay(100);
jack1930 15:e710f0431920 306 }
jack1930 15:e710f0431920 307 _parser->read(ipadr,15);
jack1930 15:e710f0431920 308 printf("%s",ipadr);
jack1930 15:e710f0431920 309
jack1930 15:e710f0431920 310 _parser->send("AT+CIPMUX=1");
jack1930 15:e710f0431920 311 while (_parser->recv("OK")==false);
jack1930 15:e710f0431920 312
jack1930 15:e710f0431920 313 //_parser->debug_on(false);
jack1930 14:d17cfd8131b1 314 }
jack1930 14:d17cfd8131b1 315
jack1930 15:e710f0431920 316 char* ESP8266Webserver::gibIP()
jack1930 14:d17cfd8131b1 317 {
jack1930 15:e710f0431920 318 return ipadr;
jack1930 14:d17cfd8131b1 319 }
jack1930 14:d17cfd8131b1 320