Library für ESP01 Webserver STM32F103RB Nucleo
Dependents: Nucleo_dht11_Webserver WebServerGSOEWorkshopSlider WebServerGSOEWorkshopDynamisch WebServerGSOEWorkshopStatisch ... more
ESP8266Webserver.cpp@14:d17cfd8131b1, 2021-06-10 (annotated)
- Committer:
- jack1930
- Date:
- Thu Jun 10 07:32:53 2021 +0000
- Revision:
- 14:d17cfd8131b1
- Parent:
- 13:ed5c59ed4ae5
- Child:
- 15:e710f0431920
einstellungen.h
Who changed what in which revision?
User | Revision | Line number | New 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 | 13:ed5c59ed4ae5 | 30 | _parser->send("ATE0"); |
jack1930 | 13:ed5c59ed4ae5 | 31 | //HAL_Delay(300); |
jack1930 | 13:ed5c59ed4ae5 | 32 | //AT+CWMODE=1 |
jack1930 | 13:ed5c59ed4ae5 | 33 | if (pDebug) printf("\nATCmdParser: //AT+CWMODE=2 \r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 34 | _parser->send("AT+CWMODE=2"); |
jack1930 | 13:ed5c59ed4ae5 | 35 | |
jack1930 | 13:ed5c59ed4ae5 | 36 | if (_parser->recv("OK")) { |
jack1930 | 13:ed5c59ed4ae5 | 37 | if (pDebug) printf("\nAntw.: OK\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 38 | } else { |
jack1930 | 13:ed5c59ed4ae5 | 39 | if (pDebug) printf("\nATCmdParser: OK failed\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 40 | } |
jack1930 | 13:ed5c59ed4ae5 | 41 | |
jack1930 | 13:ed5c59ed4ae5 | 42 | //AT+CWMODE? |
jack1930 | 13:ed5c59ed4ae5 | 43 | if (pDebug) printf("\nATCmdParser: //AT+CWMODE? \r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 44 | _parser->send("AT+CWMODE?"); |
jack1930 | 13:ed5c59ed4ae5 | 45 | |
jack1930 | 13:ed5c59ed4ae5 | 46 | if (_parser->recv("OK")) { |
jack1930 | 13:ed5c59ed4ae5 | 47 | if (pDebug) printf("\nAntw.: OK\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 48 | } else { |
jack1930 | 13:ed5c59ed4ae5 | 49 | if (pDebug) printf("\nATCmdParser: OK failed\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 50 | } |
jack1930 | 13:ed5c59ed4ae5 | 51 | |
jack1930 | 13:ed5c59ed4ae5 | 52 | |
jack1930 | 13:ed5c59ed4ae5 | 53 | //AT+CIFSR |
jack1930 | 13:ed5c59ed4ae5 | 54 | if (pDebug) printf("\nATCmdParser: //AT+CIFSR \r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 55 | _parser->send("AT+CIFSR"); |
jack1930 | 13:ed5c59ed4ae5 | 56 | |
jack1930 | 13:ed5c59ed4ae5 | 57 | if (_parser->recv("OK")) { |
jack1930 | 13:ed5c59ed4ae5 | 58 | if (pDebug) printf("\nAntw.: OK\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 59 | } else { |
jack1930 | 13:ed5c59ed4ae5 | 60 | if (pDebug) printf("\nATCmdParser: OK failed\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 61 | } |
jack1930 | 13:ed5c59ed4ae5 | 62 | |
jack1930 | 13:ed5c59ed4ae5 | 63 | /* |
jack1930 | 13:ed5c59ed4ae5 | 64 | //AT+CWJAP= “Wi-FiNetwork”,“Password” |
jack1930 | 13:ed5c59ed4ae5 | 65 | printf("\nATCmdParser: //AT+CWJAP= \"Wi-FiNetwork\",\"Password\" \r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 66 | _parser->send("AT+CWJAP=\"x-Netz\",\"aCT3xuSbm9rt\""); |
jack1930 | 13:ed5c59ed4ae5 | 67 | |
jack1930 | 13:ed5c59ed4ae5 | 68 | if (_parser->recv("OK")) { |
jack1930 | 13:ed5c59ed4ae5 | 69 | printf("\nAntw.: OK\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 70 | } else { |
jack1930 | 13:ed5c59ed4ae5 | 71 | printf("\nATCmdParser: OK failed\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 72 | } |
jack1930 | 13:ed5c59ed4ae5 | 73 | */ |
jack1930 | 13:ed5c59ed4ae5 | 74 | //AT+CIPAP="192.168.5.1","192.168.5.1","255.255.255.0" |
jack1930 | 14:d17cfd8131b1 | 75 | if (pDebug) printf("\nATCmdParser: //AT+CIPAP=\"%s\",\"%s\",\"%s\" \r\n",ipad.c_str(),ipad.c_str(),netzmaske); |
jack1930 | 14:d17cfd8131b1 | 76 | // _parser->send("AT+CIPAP=\"192.168.5.1\",\"192.168.5.1\",\"255.255.255.0\""); |
jack1930 | 14:d17cfd8131b1 | 77 | _parser->send("AT+CIPAP=\"%s\",\"%s\",\"%s\"",ipad.c_str(),ipad.c_str(),netzmaske); |
jack1930 | 13:ed5c59ed4ae5 | 78 | |
jack1930 | 13:ed5c59ed4ae5 | 79 | if (_parser->recv("OK")) { |
jack1930 | 13:ed5c59ed4ae5 | 80 | if (pDebug) printf("\nAntw.: OK\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 81 | } else { |
jack1930 | 13:ed5c59ed4ae5 | 82 | if (pDebug) printf("\nATCmdParser: OK failed\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 83 | } |
jack1930 | 13:ed5c59ed4ae5 | 84 | |
jack1930 | 13:ed5c59ed4ae5 | 85 | |
jack1930 | 13:ed5c59ed4ae5 | 86 | //AT+CIPMUX=1 |
jack1930 | 13:ed5c59ed4ae5 | 87 | if (pDebug) printf("\nATCmdParser: //AT+CIPMUX=1"); |
jack1930 | 13:ed5c59ed4ae5 | 88 | _parser->send("AT+CIPMUX=1"); |
jack1930 | 13:ed5c59ed4ae5 | 89 | |
jack1930 | 13:ed5c59ed4ae5 | 90 | if (_parser->recv("OK")) { |
jack1930 | 13:ed5c59ed4ae5 | 91 | if (pDebug) printf("\nAntw.: OK\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 92 | } else { |
jack1930 | 13:ed5c59ed4ae5 | 93 | if (pDebug) printf("\nATCmdParser: OK failed\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 94 | } |
jack1930 | 13:ed5c59ed4ae5 | 95 | |
jack1930 | 13:ed5c59ed4ae5 | 96 | } |
jack1930 | 13:ed5c59ed4ae5 | 97 | |
jack1930 | 13:ed5c59ed4ae5 | 98 | |
jack1930 | 13:ed5c59ed4ae5 | 99 | |
jack1930 | 13:ed5c59ed4ae5 | 100 | int ESP8266Webserver::on(const char* handlestring,Callback< void()> func) |
jack1930 | 13:ed5c59ed4ae5 | 101 | { |
jack1930 | 13:ed5c59ed4ae5 | 102 | if (hs_count>9) return -1; |
jack1930 | 13:ed5c59ed4ae5 | 103 | else |
jack1930 | 13:ed5c59ed4ae5 | 104 | { |
jack1930 | 13:ed5c59ed4ae5 | 105 | strcpy(hs[hs_count],handlestring); |
jack1930 | 13:ed5c59ed4ae5 | 106 | if (dbg) printf("\r\n\r\n%s, %s\r\n",handlestring,hs[hs_count]); |
jack1930 | 13:ed5c59ed4ae5 | 107 | cbs[hs_count]=func; |
jack1930 | 13:ed5c59ed4ae5 | 108 | hs_count++; |
jack1930 | 13:ed5c59ed4ae5 | 109 | return 0; |
jack1930 | 13:ed5c59ed4ae5 | 110 | } |
jack1930 | 13:ed5c59ed4ae5 | 111 | |
jack1930 | 13:ed5c59ed4ae5 | 112 | } |
jack1930 | 13:ed5c59ed4ae5 | 113 | |
jack1930 | 13:ed5c59ed4ae5 | 114 | int ESP8266Webserver::begin(void) |
jack1930 | 13:ed5c59ed4ae5 | 115 | { |
jack1930 | 13:ed5c59ed4ae5 | 116 | //AT+CIPSERVER=1,80 |
jack1930 | 13:ed5c59ed4ae5 | 117 | if (dbg) printf("\nATCmdParser: //AT+CIPSERVER=1,80"); |
jack1930 | 13:ed5c59ed4ae5 | 118 | _parser->send("AT+CIPSERVER=1,80"); |
jack1930 | 13:ed5c59ed4ae5 | 119 | if (_parser->recv("OK")) { |
jack1930 | 13:ed5c59ed4ae5 | 120 | if (dbg) printf("\nAntw.: OK\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 121 | return 0; |
jack1930 | 13:ed5c59ed4ae5 | 122 | } else { |
jack1930 | 13:ed5c59ed4ae5 | 123 | if (dbg) printf("\nATCmdParser: OK failed\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 124 | return -1; |
jack1930 | 13:ed5c59ed4ae5 | 125 | } |
jack1930 | 13:ed5c59ed4ae5 | 126 | } |
jack1930 | 13:ed5c59ed4ae5 | 127 | |
jack1930 | 13:ed5c59ed4ae5 | 128 | //durchsucht recbuf nach suchstring |
jack1930 | 13:ed5c59ed4ae5 | 129 | bool ESP8266Webserver::beinhaltet(char* suchstring) |
jack1930 | 13:ed5c59ed4ae5 | 130 | { |
jack1930 | 13:ed5c59ed4ae5 | 131 | char* referer; |
jack1930 | 13:ed5c59ed4ae5 | 132 | char* fundort; |
jack1930 | 13:ed5c59ed4ae5 | 133 | char* favicon; |
jack1930 | 13:ed5c59ed4ae5 | 134 | favicon=strstr(recbuf,"favicon"); |
jack1930 | 13:ed5c59ed4ae5 | 135 | if (favicon!=NULL) return false; |
jack1930 | 13:ed5c59ed4ae5 | 136 | referer=strstr(recbuf,"Referer"); |
jack1930 | 13:ed5c59ed4ae5 | 137 | fundort=strstr(recbuf, suchstring); |
jack1930 | 13:ed5c59ed4ae5 | 138 | if (strstr(recbuf,"ERROR")==NULL) |
jack1930 | 13:ed5c59ed4ae5 | 139 | if( fundort != NULL&&(fundort<referer||referer==NULL)) return true; |
jack1930 | 13:ed5c59ed4ae5 | 140 | return false; |
jack1930 | 13:ed5c59ed4ae5 | 141 | } |
jack1930 | 13:ed5c59ed4ae5 | 142 | |
jack1930 | 13:ed5c59ed4ae5 | 143 | int ESP8266Webserver::handleClient(void) |
jack1930 | 13:ed5c59ed4ae5 | 144 | { |
jack1930 | 13:ed5c59ed4ae5 | 145 | int value,value2; |
jack1930 | 13:ed5c59ed4ae5 | 146 | if (_serial->readable()) |
jack1930 | 13:ed5c59ed4ae5 | 147 | { |
jack1930 | 13:ed5c59ed4ae5 | 148 | /* HAL_Delay(1000); |
jack1930 | 13:ed5c59ed4ae5 | 149 | _serial->read(buf,1000); |
jack1930 | 13:ed5c59ed4ae5 | 150 | printf("\r\n ich %s\r\n",buf); |
jack1930 | 13:ed5c59ed4ae5 | 151 | */ |
jack1930 | 13:ed5c59ed4ae5 | 152 | if (_parser->recv("+IPD,%d,%d:",&clientID[clientIdx],&value2)) //_parser->recv("+IPD,%d",value) |
jack1930 | 13:ed5c59ed4ae5 | 153 | { |
jack1930 | 13:ed5c59ed4ae5 | 154 | |
jack1930 | 13:ed5c59ed4ae5 | 155 | //HAL_Delay(1000); |
jack1930 | 13:ed5c59ed4ae5 | 156 | |
jack1930 | 13:ed5c59ed4ae5 | 157 | if (dbg) printf("\r\nich Client ID=%d, Anzahl=%d",clientID[clientIdx],value2); |
jack1930 | 13:ed5c59ed4ae5 | 158 | _parser->read(recbuf, value2); |
jack1930 | 13:ed5c59ed4ae5 | 159 | //HAL_Delay(1000); |
jack1930 | 13:ed5c59ed4ae5 | 160 | |
jack1930 | 13:ed5c59ed4ae5 | 161 | //recbuf[value2]=0; |
jack1930 | 13:ed5c59ed4ae5 | 162 | if (dbg) printf("\r\nBuf=\n%s",recbuf); |
jack1930 | 13:ed5c59ed4ae5 | 163 | |
jack1930 | 13:ed5c59ed4ae5 | 164 | //(cbs[1])(); |
jack1930 | 13:ed5c59ed4ae5 | 165 | gefunden=false; |
jack1930 | 13:ed5c59ed4ae5 | 166 | for (int i=0;i<hs_count&&!gefunden;i++) |
jack1930 | 13:ed5c59ed4ae5 | 167 | { |
jack1930 | 13:ed5c59ed4ae5 | 168 | |
jack1930 | 13:ed5c59ed4ae5 | 169 | if (beinhaltet(hs[i])) |
jack1930 | 13:ed5c59ed4ae5 | 170 | { |
jack1930 | 13:ed5c59ed4ae5 | 171 | |
jack1930 | 13:ed5c59ed4ae5 | 172 | (cbs[i])(); |
jack1930 | 13:ed5c59ed4ae5 | 173 | |
jack1930 | 13:ed5c59ed4ae5 | 174 | gefunden=true; |
jack1930 | 13:ed5c59ed4ae5 | 175 | } |
jack1930 | 13:ed5c59ed4ae5 | 176 | } |
jack1930 | 13:ed5c59ed4ae5 | 177 | |
jack1930 | 13:ed5c59ed4ae5 | 178 | if (dbg) for (int i=0;i<hs_count;i++) |
jack1930 | 13:ed5c59ed4ae5 | 179 | { |
jack1930 | 13:ed5c59ed4ae5 | 180 | printf("\r\n%s\r\n",hs[i]); |
jack1930 | 13:ed5c59ed4ae5 | 181 | } |
jack1930 | 13:ed5c59ed4ae5 | 182 | |
jack1930 | 13:ed5c59ed4ae5 | 183 | if (dbg) printf("\r\nich Got\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 184 | |
jack1930 | 13:ed5c59ed4ae5 | 185 | //_parser->flush(); |
jack1930 | 13:ed5c59ed4ae5 | 186 | |
jack1930 | 13:ed5c59ed4ae5 | 187 | } |
jack1930 | 13:ed5c59ed4ae5 | 188 | |
jack1930 | 13:ed5c59ed4ae5 | 189 | } |
jack1930 | 13:ed5c59ed4ae5 | 190 | |
jack1930 | 13:ed5c59ed4ae5 | 191 | return 0; |
jack1930 | 13:ed5c59ed4ae5 | 192 | } |
jack1930 | 13:ed5c59ed4ae5 | 193 | |
jack1930 | 13:ed5c59ed4ae5 | 194 | |
jack1930 | 13:ed5c59ed4ae5 | 195 | int ESP8266Webserver::send(int HTTPStatus,const char* Mimetype, string webseite) |
jack1930 | 13:ed5c59ed4ae5 | 196 | { |
jack1930 | 13:ed5c59ed4ae5 | 197 | return ESP8266Webserver::send(HTTPStatus,Mimetype, webseite.c_str()); |
jack1930 | 13:ed5c59ed4ae5 | 198 | } |
jack1930 | 13:ed5c59ed4ae5 | 199 | int ESP8266Webserver::send(int HTTPStatus,const char* Mimetype, const char* webseite) |
jack1930 | 13:ed5c59ed4ae5 | 200 | { |
jack1930 | 13:ed5c59ed4ae5 | 201 | char hilf[40]; |
jack1930 | 13:ed5c59ed4ae5 | 202 | |
jack1930 | 13:ed5c59ed4ae5 | 203 | printf("\r\nHallo\r\n"); |
jack1930 | 13:ed5c59ed4ae5 | 204 | Aufrufe++; |
jack1930 | 13:ed5c59ed4ae5 | 205 | sprintf(sendstring,"HTTP/1.1 %d OK\n",HTTPStatus); |
jack1930 | 13:ed5c59ed4ae5 | 206 | strcat(sendstring,"Date: Wed, 23 Apr 2021 04:36:25 GMT\n"); |
jack1930 | 13:ed5c59ed4ae5 | 207 | strcat(sendstring,"Connection: close\n"); |
jack1930 | 13:ed5c59ed4ae5 | 208 | strcat(sendstring,"Content-Type: "); |
jack1930 | 13:ed5c59ed4ae5 | 209 | strcat(sendstring,Mimetype); |
jack1930 | 13:ed5c59ed4ae5 | 210 | strcat(sendstring,"\n"); |
jack1930 | 13:ed5c59ed4ae5 | 211 | sprintf(hilf,"%d",strlen(webseite)); |
jack1930 | 13:ed5c59ed4ae5 | 212 | strcat(sendstring,"Content-Length: "); |
jack1930 | 13:ed5c59ed4ae5 | 213 | strcat(sendstring,hilf); |
jack1930 | 13:ed5c59ed4ae5 | 214 | strcat(sendstring,"\n\n"); |
jack1930 | 13:ed5c59ed4ae5 | 215 | strcat(sendstring,webseite); |
jack1930 | 13:ed5c59ed4ae5 | 216 | if (dbg) printf("len=%d, inhalt=\n%s",strlen(sendstring),sendstring); |
jack1930 | 13:ed5c59ed4ae5 | 217 | //sprintf(hilf,"AT+CIPSEND=%d,%d\r\n",clientID,strlen(sendstring)); |
jack1930 | 13:ed5c59ed4ae5 | 218 | //printf("\n %s, %d\n",hilf,strlen(hilf)); |
jack1930 | 13:ed5c59ed4ae5 | 219 | //_serial->write(hilf,strlen(hilf)); |
jack1930 | 13:ed5c59ed4ae5 | 220 | _parser->debug_on(true); |
jack1930 | 13:ed5c59ed4ae5 | 221 | _parser->send("AT+CIPSEND=%d,%d",clientID[clientIdx],strlen(sendstring)); |
jack1930 | 13:ed5c59ed4ae5 | 222 | _parser->debug_on(false); |
jack1930 | 13:ed5c59ed4ae5 | 223 | _parser->write(sendstring,strlen(sendstring)); |
jack1930 | 13:ed5c59ed4ae5 | 224 | HAL_Delay(200); |
jack1930 | 13:ed5c59ed4ae5 | 225 | _parser->send("AT+CIPCLOSE=%d",clientID[clientIdx]); |
jack1930 | 13:ed5c59ed4ae5 | 226 | return 0; |
jack1930 | 13:ed5c59ed4ae5 | 227 | } |
jack1930 | 13:ed5c59ed4ae5 | 228 | |
jack1930 | 13:ed5c59ed4ae5 | 229 | void ESP8266Webserver::debugOn(bool pD) |
jack1930 | 13:ed5c59ed4ae5 | 230 | { |
jack1930 | 13:ed5c59ed4ae5 | 231 | dbg=pD; |
jack1930 | 13:ed5c59ed4ae5 | 232 | _parser->debug_on(pD); |
jack1930 | 13:ed5c59ed4ae5 | 233 | |
jack1930 | 13:ed5c59ed4ae5 | 234 | } |
jack1930 | 13:ed5c59ed4ae5 | 235 | |
jack1930 | 13:ed5c59ed4ae5 | 236 | string ESP8266Webserver::gibWertString(string suchstring) |
jack1930 | 13:ed5c59ed4ae5 | 237 | { |
jack1930 | 13:ed5c59ed4ae5 | 238 | return ESP8266Webserver::gibWert(suchstring.c_str()); |
jack1930 | 13:ed5c59ed4ae5 | 239 | } |
jack1930 | 13:ed5c59ed4ae5 | 240 | |
jack1930 | 13:ed5c59ed4ae5 | 241 | const char* ESP8266Webserver::gibWert(const char* suchstring) |
jack1930 | 13:ed5c59ed4ae5 | 242 | { |
jack1930 | 13:ed5c59ed4ae5 | 243 | static char hilf[20]; |
jack1930 | 13:ed5c59ed4ae5 | 244 | |
jack1930 | 13:ed5c59ed4ae5 | 245 | char *fundort; |
jack1930 | 13:ed5c59ed4ae5 | 246 | int i=0; |
jack1930 | 13:ed5c59ed4ae5 | 247 | fundort=strstr(recbuf,suchstring); |
jack1930 | 13:ed5c59ed4ae5 | 248 | if (fundort!=NULL) |
jack1930 | 13:ed5c59ed4ae5 | 249 | { |
jack1930 | 13:ed5c59ed4ae5 | 250 | fundort=fundort+strlen(suchstring)+1; |
jack1930 | 13:ed5c59ed4ae5 | 251 | while(i<20 && fundort[i]!=38 && fundort[i]>32 ) //space, & |
jack1930 | 13:ed5c59ed4ae5 | 252 | { |
jack1930 | 13:ed5c59ed4ae5 | 253 | hilf[i]=fundort[i]; |
jack1930 | 13:ed5c59ed4ae5 | 254 | i++; |
jack1930 | 13:ed5c59ed4ae5 | 255 | } |
jack1930 | 13:ed5c59ed4ae5 | 256 | hilf[i]=0; |
jack1930 | 13:ed5c59ed4ae5 | 257 | if (dbg) printf("\r\nsuchergebnis=%s\r\n",hilf); |
jack1930 | 13:ed5c59ed4ae5 | 258 | return hilf; |
jack1930 | 13:ed5c59ed4ae5 | 259 | } |
jack1930 | 13:ed5c59ed4ae5 | 260 | else |
jack1930 | 13:ed5c59ed4ae5 | 261 | return NULL; |
jack1930 | 14:d17cfd8131b1 | 262 | } |
jack1930 | 14:d17cfd8131b1 | 263 | |
jack1930 | 14:d17cfd8131b1 | 264 | void ESP8266Webserver::connect_wifi(string cmd, int t) //This function is for connecting ESP8266 with wifi network by using AT commands |
jack1930 | 14:d17cfd8131b1 | 265 | { |
jack1930 | 14:d17cfd8131b1 | 266 | int i=0; |
jack1930 | 14:d17cfd8131b1 | 267 | while(1) |
jack1930 | 14:d17cfd8131b1 | 268 | { |
jack1930 | 14:d17cfd8131b1 | 269 | //Serial2println(cmd); //sends to ESP8266 via serial communication |
jack1930 | 14:d17cfd8131b1 | 270 | HAL_Delay(t); |
jack1930 | 14:d17cfd8131b1 | 271 | /* |
jack1930 | 14:d17cfd8131b1 | 272 | while(Serial2available()) |
jack1930 | 14:d17cfd8131b1 | 273 | { |
jack1930 | 14:d17cfd8131b1 | 274 | if(Serial2find("OK")) |
jack1930 | 14:d17cfd8131b1 | 275 | i=8; |
jack1930 | 14:d17cfd8131b1 | 276 | } |
jack1930 | 14:d17cfd8131b1 | 277 | */ |
jack1930 | 14:d17cfd8131b1 | 278 | if(i>5) |
jack1930 | 14:d17cfd8131b1 | 279 | break; |
jack1930 | 14:d17cfd8131b1 | 280 | i++; |
jack1930 | 14:d17cfd8131b1 | 281 | } |
jack1930 | 14:d17cfd8131b1 | 282 | |
jack1930 | 14:d17cfd8131b1 | 283 | void ESP8266Webserver::WIFIsetup(string pSSID, string pPW) |
jack1930 | 14:d17cfd8131b1 | 284 | { |
jack1930 | 14:d17cfd8131b1 | 285 | ssid=pSSID; |
jack1930 | 14:d17cfd8131b1 | 286 | password=pPW; |
jack1930 | 14:d17cfd8131b1 | 287 | wifi_init(); |
jack1930 | 14:d17cfd8131b1 | 288 | } |
jack1930 | 14:d17cfd8131b1 | 289 | |
jack1930 | 14:d17cfd8131b1 | 290 | void ESP8266Webserver::wifi_init() //This function contains AT commands that passes to connect_wifi() |
jack1930 | 14:d17cfd8131b1 | 291 | { |
jack1930 | 14:d17cfd8131b1 | 292 | //clearBuffer(); |
jack1930 | 14:d17cfd8131b1 | 293 | //connect_wifi("AT",100); //Sends AT command with time(Command for Achknowledgement) |
jack1930 | 14:d17cfd8131b1 | 294 | //connect_wifi("AT+CWMODE=1",100); //Sends AT command with time (For setting mode of Wifi) |
jack1930 | 14:d17cfd8131b1 | 295 | //connect_wifi("AT+CIFSR",100); |
jack1930 | 14:d17cfd8131b1 | 296 | //bool No_IP=check4IP(100); |
jack1930 | 14:d17cfd8131b1 | 297 | if (No_IP) |
jack1930 | 14:d17cfd8131b1 | 298 | { |
jack1930 | 14:d17cfd8131b1 | 299 | char anmeldedaten[50]; |
jack1930 | 14:d17cfd8131b1 | 300 | strcpy(anmeldedaten,"AT+CWJAP=\""); |
jack1930 | 14:d17cfd8131b1 | 301 | strcat(anmeldedaten,ssid); |
jack1930 | 14:d17cfd8131b1 | 302 | strcat(anmeldedaten,"\",\""); |
jack1930 | 14:d17cfd8131b1 | 303 | strcat(anmeldedaten,password); |
jack1930 | 14:d17cfd8131b1 | 304 | strcat(anmeldedaten,"\""); |
jack1930 | 14:d17cfd8131b1 | 305 | connect_wifi(anmeldedaten,7000); |
jack1930 | 14:d17cfd8131b1 | 306 | //connect_wifi("AT+CWJAP=\"x-Netz\",\"aCT3xuSbm9rt\"",7000); //provide your WiFi username and password here |
jack1930 | 14:d17cfd8131b1 | 307 | } |
jack1930 | 14:d17cfd8131b1 | 308 | IP[0]=0; |
jack1930 | 14:d17cfd8131b1 | 309 | get_ip(); |
jack1930 | 14:d17cfd8131b1 | 310 | LCD_i2c_textzeile1(IP); |
jack1930 | 14:d17cfd8131b1 | 311 | |
jack1930 | 14:d17cfd8131b1 | 312 | connect_wifi("AT+CIPMUX=1",100); //Sends AT command with time (For creating multiple connections) |
jack1930 | 14:d17cfd8131b1 | 313 | connect_wifi("AT+CIPSERVER=1,80",100); //Sends AT command with time (For setting up server with port 80) |
jack1930 | 14:d17cfd8131b1 | 314 | clearBuffer(); |
jack1930 | 14:d17cfd8131b1 | 315 | writeBit(PC7,1); |
jack1930 | 14:d17cfd8131b1 | 316 | } |
jack1930 | 14:d17cfd8131b1 | 317 | |
jack1930 | 14:d17cfd8131b1 | 318 | bool ESP8266Webserver::check4IP(int t1) //A function to check ip of ESP8266 |
jack1930 | 14:d17cfd8131b1 | 319 | { |
jack1930 | 14:d17cfd8131b1 | 320 | HAL_Delay((long)t1); |
jack1930 | 14:d17cfd8131b1 | 321 | bool No_IP=true; |
jack1930 | 14:d17cfd8131b1 | 322 | /* |
jack1930 | 14:d17cfd8131b1 | 323 | while(Serial2available()>0) |
jack1930 | 14:d17cfd8131b1 | 324 | { |
jack1930 | 14:d17cfd8131b1 | 325 | if(Serial2find("STAIP")) |
jack1930 | 14:d17cfd8131b1 | 326 | { |
jack1930 | 14:d17cfd8131b1 | 327 | No_IP=false; |
jack1930 | 14:d17cfd8131b1 | 328 | } |
jack1930 | 14:d17cfd8131b1 | 329 | } |
jack1930 | 14:d17cfd8131b1 | 330 | */ |
jack1930 | 14:d17cfd8131b1 | 331 | return No_IP; |
jack1930 | 14:d17cfd8131b1 | 332 | |
jack1930 | 13:ed5c59ed4ae5 | 333 | } |