Library für ESP01 Webserver STM32F103RB Nucleo

Dependents:   Nucleo_dht11_Webserver WebServerGSOEWorkshopSlider WebServerGSOEWorkshopDynamisch WebServerGSOEWorkshopStatisch ... more

Committer:
jack1930
Date:
Fri Aug 06 14:06:53 2021 +0000
Revision:
36:e943a93d07f6
Parent:
35:79b85c333b02
Child:
37:4680b876f77b
favicon

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jack1930 13:ed5c59ed4ae5 1 #include "ESP8266Webserver.h"
jack1930 16:b09391fb73b4 2 //#include "string"
jack1930 13:ed5c59ed4ae5 3
jack1930 14:d17cfd8131b1 4 ESP8266Webserver::ESP8266Webserver()
jack1930 13:ed5c59ed4ae5 5 {
jack1930 17:87c762acb8d0 6 bool erg;
jack1930 13:ed5c59ed4ae5 7 //HAL_Delay(1000);
jack1930 19:e0bcbb2a3480 8 DigitalOut ch_pd(CH_PD);
jack1930 19:e0bcbb2a3480 9 DigitalOut rst(RST);
jack1930 19:e0bcbb2a3480 10 ch_pd=1;
jack1930 19:e0bcbb2a3480 11 rst=0;
jack1930 19:e0bcbb2a3480 12 HAL_Delay(100);
jack1930 19:e0bcbb2a3480 13 rst=1;
jack1930 13:ed5c59ed4ae5 14 hs_count=0;
jack1930 13:ed5c59ed4ae5 15 clientIdx=0;
jack1930 13:ed5c59ed4ae5 16 if (pDebug) printf("\nATCmdParser with ESP8266 example");
jack1930 13:ed5c59ed4ae5 17 port=Port;
jack1930 13:ed5c59ed4ae5 18
jack1930 13:ed5c59ed4ae5 19 dbg=pDebug;
jack1930 13:ed5c59ed4ae5 20 _serial = new BufferedSerial(tx,rx, ESP8266_DEFAULT_BAUD_RATE);
jack1930 13:ed5c59ed4ae5 21 _parser = new ATCmdParser(_serial, "\r\n");
jack1930 17:87c762acb8d0 22 _parser->debug_on(true);
jack1930 13:ed5c59ed4ae5 23
jack1930 17:87c762acb8d0 24 _parser->set_timeout(2000);
jack1930 13:ed5c59ed4ae5 25
jack1930 13:ed5c59ed4ae5 26 //AT
jack1930 13:ed5c59ed4ae5 27 if (pDebug) printf("\nATCmdParser: AT\r\n");
jack1930 13:ed5c59ed4ae5 28 _parser->send("AT");
jack1930 13:ed5c59ed4ae5 29
jack1930 13:ed5c59ed4ae5 30 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 31 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 32 } else {
jack1930 17:87c762acb8d0 33 printf("\nATCmdParser: AT OK failed\r\n");
jack1930 13:ed5c59ed4ae5 34 }
jack1930 15:e710f0431920 35
jack1930 15:e710f0431920 36 if (station==true)
jack1930 15:e710f0431920 37 {
jack1930 15:e710f0431920 38 listAPs();
jack1930 15:e710f0431920 39 printf("%s",ipadr);
jack1930 15:e710f0431920 40 }
jack1930 15:e710f0431920 41 else {
jack1930 15:e710f0431920 42 _parser->send("ATE0");
jack1930 15:e710f0431920 43 strcpy(ipadr,ip);
jack1930 13:ed5c59ed4ae5 44
jack1930 15:e710f0431920 45 if (pDebug) printf("\nATCmdParser: //AT+CWMODE=2 \r\n");
jack1930 17:87c762acb8d0 46
jack1930 15:e710f0431920 47 _parser->send("AT+CWMODE=2");
jack1930 17:87c762acb8d0 48 HAL_Delay(1000);
jack1930 15:e710f0431920 49
jack1930 15:e710f0431920 50 if (_parser->recv("OK")) {
jack1930 15:e710f0431920 51 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 15:e710f0431920 52 } else {
jack1930 17:87c762acb8d0 53 printf("\nATCmdParser: AT+CWMODE=2 OK failed\r\n");
jack1930 15:e710f0431920 54 }
jack1930 15:e710f0431920 55
jack1930 13:ed5c59ed4ae5 56 //AT+CWMODE?
jack1930 13:ed5c59ed4ae5 57 if (pDebug) printf("\nATCmdParser: //AT+CWMODE? \r\n");
jack1930 17:87c762acb8d0 58
jack1930 13:ed5c59ed4ae5 59 _parser->send("AT+CWMODE?");
jack1930 13:ed5c59ed4ae5 60
jack1930 13:ed5c59ed4ae5 61 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 62 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 63 } else {
jack1930 17:87c762acb8d0 64 printf("\nATCmdParser: AT+CWMODE? OK failed\r\n");
jack1930 13:ed5c59ed4ae5 65 }
jack1930 13:ed5c59ed4ae5 66
jack1930 17:87c762acb8d0 67
jack1930 17:87c762acb8d0 68 //AT+CIPAP="192.168.5.1","192.168.5.1","255.255.255.0"
jack1930 15:e710f0431920 69 if (pDebug) printf("\nATCmdParser: //AT+CIPAP=\"%s\",\"%s\",\"%s\" \r\n",ipad.c_str(),ipad.c_str(),netzmaske);
jack1930 17:87c762acb8d0 70 do
jack1930 17:87c762acb8d0 71 {
jack1930 17:87c762acb8d0 72 _parser->send("AT+CIPAP=\"%s\",\"%s\",\"%s\"",ipad.c_str(),ipad.c_str(),netzmaske);
jack1930 17:87c762acb8d0 73 erg=_parser->recv("OK");
jack1930 17:87c762acb8d0 74 if (erg==true) {
jack1930 17:87c762acb8d0 75 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 17:87c762acb8d0 76 } else {
jack1930 17:87c762acb8d0 77 printf("\nATCmdParser: AT+CIPAP OK failed\r\n");
jack1930 17:87c762acb8d0 78 HAL_Delay(1000);
jack1930 17:87c762acb8d0 79 }
jack1930 17:87c762acb8d0 80 }
jack1930 17:87c762acb8d0 81 while (erg==false);
jack1930 15:e710f0431920 82
jack1930 15:e710f0431920 83
jack1930 13:ed5c59ed4ae5 84
jack1930 13:ed5c59ed4ae5 85 //AT+CIPMUX=1
jack1930 13:ed5c59ed4ae5 86 if (pDebug) printf("\nATCmdParser: //AT+CIPMUX=1");
jack1930 13:ed5c59ed4ae5 87 _parser->send("AT+CIPMUX=1");
jack1930 13:ed5c59ed4ae5 88
jack1930 13:ed5c59ed4ae5 89 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 90 if (pDebug) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 91 } else {
jack1930 17:87c762acb8d0 92 printf("\nATCmdParser: AT+CIPMUX=1 OK failed\r\n");
jack1930 13:ed5c59ed4ae5 93 }
jack1930 15:e710f0431920 94 }
jack1930 13:ed5c59ed4ae5 95 }
jack1930 13:ed5c59ed4ae5 96
jack1930 13:ed5c59ed4ae5 97 int ESP8266Webserver::on(const char* handlestring,Callback< void()> func)
jack1930 13:ed5c59ed4ae5 98 {
jack1930 13:ed5c59ed4ae5 99 if (hs_count>9) return -1;
jack1930 13:ed5c59ed4ae5 100 else
jack1930 13:ed5c59ed4ae5 101 {
jack1930 13:ed5c59ed4ae5 102 strcpy(hs[hs_count],handlestring);
jack1930 13:ed5c59ed4ae5 103 if (dbg) printf("\r\n\r\n%s, %s\r\n",handlestring,hs[hs_count]);
jack1930 13:ed5c59ed4ae5 104 cbs[hs_count]=func;
jack1930 13:ed5c59ed4ae5 105 hs_count++;
jack1930 13:ed5c59ed4ae5 106 return 0;
jack1930 13:ed5c59ed4ae5 107 }
jack1930 13:ed5c59ed4ae5 108
jack1930 13:ed5c59ed4ae5 109 }
jack1930 13:ed5c59ed4ae5 110
jack1930 13:ed5c59ed4ae5 111 int ESP8266Webserver::begin(void)
jack1930 13:ed5c59ed4ae5 112 {
jack1930 13:ed5c59ed4ae5 113 //AT+CIPSERVER=1,80
jack1930 15:e710f0431920 114 if (dbg) printf("\nATCmdParser: //AT+CIPSERVER=1,%d",Port);
jack1930 15:e710f0431920 115 _parser->send("AT+CIPSERVER=1,%d",Port);
jack1930 13:ed5c59ed4ae5 116 if (_parser->recv("OK")) {
jack1930 13:ed5c59ed4ae5 117 if (dbg) printf("\nAntw.: OK\r\n");
jack1930 13:ed5c59ed4ae5 118 return 0;
jack1930 13:ed5c59ed4ae5 119 } else {
jack1930 17:87c762acb8d0 120 printf("\nATCmdParser: AT+CIPSERVER=1 OK failed\r\n");
jack1930 13:ed5c59ed4ae5 121 return -1;
jack1930 13:ed5c59ed4ae5 122 }
jack1930 13:ed5c59ed4ae5 123 }
jack1930 13:ed5c59ed4ae5 124
jack1930 13:ed5c59ed4ae5 125 //durchsucht recbuf nach suchstring
jack1930 13:ed5c59ed4ae5 126 bool ESP8266Webserver::beinhaltet(char* suchstring)
jack1930 13:ed5c59ed4ae5 127 {
jack1930 13:ed5c59ed4ae5 128 char* referer;
jack1930 13:ed5c59ed4ae5 129 char* fundort;
jack1930 13:ed5c59ed4ae5 130 char* favicon;
jack1930 36:e943a93d07f6 131 favicon=strstr(recbuf,"favicon");
jack1930 36:e943a93d07f6 132 if (favicon!=NULL) return true;
jack1930 13:ed5c59ed4ae5 133 referer=strstr(recbuf,"Referer");
jack1930 13:ed5c59ed4ae5 134 fundort=strstr(recbuf, suchstring);
jack1930 13:ed5c59ed4ae5 135 if (strstr(recbuf,"ERROR")==NULL)
jack1930 13:ed5c59ed4ae5 136 if( fundort != NULL&&(fundort<referer||referer==NULL)) return true;
jack1930 13:ed5c59ed4ae5 137 return false;
jack1930 13:ed5c59ed4ae5 138 }
jack1930 13:ed5c59ed4ae5 139
jack1930 13:ed5c59ed4ae5 140 int ESP8266Webserver::handleClient(void)
jack1930 13:ed5c59ed4ae5 141 {
jack1930 36:e943a93d07f6 142 char favicon[]="favicon.ico";
jack1930 36:e943a93d07f6 143 const char ico[1150]={
jack1930 35:79b85c333b02 144 0x00,0x00,0x01,0x00,0x01,0x00,0x10,0x10,0x00,0x00,0x01,0x00,0x20,0x00,0x68,0x04,0x00,0x00,
jack1930 35:79b85c333b02 145 0x16,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,
jack1930 35:79b85c333b02 146 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
jack1930 35:79b85c333b02 147 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 148 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 149 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 150 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 151 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
jack1930 36:e943a93d07f6 152 0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 153 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 154 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 155 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 156 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 157 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 158 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 159 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 160 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 161 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
jack1930 36:e943a93d07f6 162 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,
jack1930 36:e943a93d07f6 163 0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 164 0xFF,0xFF,0x00,0x00,0x00,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 165 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,
jack1930 36:e943a93d07f6 166 0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 167 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,
jack1930 35:79b85c333b02 168 0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 169 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 170 0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 171 0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,
jack1930 36:e943a93d07f6 172 0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 173 0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,
jack1930 36:e943a93d07f6 174 0x00,0xFF,0x00,0x00,0x00,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,
jack1930 36:e943a93d07f6 175 0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,
jack1930 36:e943a93d07f6 176 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 177 0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,
jack1930 36:e943a93d07f6 178 0x91,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,
jack1930 36:e943a93d07f6 179 0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 180 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 181 0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 182 0xFF,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 183 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 184 0xFF,0xFF,0x00,0x00,0x00,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,
jack1930 36:e943a93d07f6 185 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 186 0xFF,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 187 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,
jack1930 36:e943a93d07f6 188 0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 189 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,
jack1930 36:e943a93d07f6 190 0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,
jack1930 35:79b85c333b02 191 0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,
jack1930 36:e943a93d07f6 192 0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x03,0x91,0xFF,
jack1930 36:e943a93d07f6 193 0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,
jack1930 36:e943a93d07f6 194 0xFF,0xFF,0x00,0x00,0x00,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,
jack1930 35:79b85c333b02 195 0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,
jack1930 35:79b85c333b02 196 0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,
jack1930 36:e943a93d07f6 197 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,
jack1930 36:e943a93d07f6 198 0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,
jack1930 36:e943a93d07f6 199 0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,
jack1930 36:e943a93d07f6 200 0x91,0xFF,0x07,0x03,0x91,0xFF,0x07,0x03,0x91,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,
jack1930 35:79b85c333b02 201 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,
jack1930 35:79b85c333b02 202 0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,
jack1930 36:e943a93d07f6 203 0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,
jack1930 36:e943a93d07f6 204 0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
jack1930 35:79b85c333b02 205 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
jack1930 35:79b85c333b02 206 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
jack1930 36:e943a93d07f6 207 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
jack1930 35:79b85c333b02 208
jack1930 35:79b85c333b02 209 };
jack1930 13:ed5c59ed4ae5 210 int value,value2;
jack1930 36:e943a93d07f6 211 static int diag=0;
jack1930 13:ed5c59ed4ae5 212 if (_serial->readable())
jack1930 13:ed5c59ed4ae5 213 {
jack1930 16:b09391fb73b4 214 if (_parser->recv("+IPD,%d,%d:",&clientID[clientIdx],&value2))
jack1930 13:ed5c59ed4ae5 215 {
jack1930 13:ed5c59ed4ae5 216 if (dbg) printf("\r\nich Client ID=%d, Anzahl=%d",clientID[clientIdx],value2);
jack1930 13:ed5c59ed4ae5 217 _parser->read(recbuf, value2);
jack1930 13:ed5c59ed4ae5 218
jack1930 13:ed5c59ed4ae5 219 if (dbg) printf("\r\nBuf=\n%s",recbuf);
jack1930 13:ed5c59ed4ae5 220
jack1930 36:e943a93d07f6 221 if (beinhaltet(favicon))
jack1930 35:79b85c333b02 222 {
jack1930 36:e943a93d07f6 223 printf("\n\nfavicon request %d\n\n",diag);
jack1930 36:e943a93d07f6 224 diag++;
jack1930 36:e943a93d07f6 225 send(404,"image/x-icon","");
jack1930 35:79b85c333b02 226 }
jack1930 35:79b85c333b02 227 else
jack1930 35:79b85c333b02 228 {
jack1930 35:79b85c333b02 229 gefunden=false;
jack1930 35:79b85c333b02 230 for (int i=0;i<hs_count&&!gefunden;i++)
jack1930 35:79b85c333b02 231 {
jack1930 35:79b85c333b02 232 if (beinhaltet(hs[i]))
jack1930 35:79b85c333b02 233 {
jack1930 35:79b85c333b02 234 (cbs[i])();
jack1930 35:79b85c333b02 235 gefunden=true;
jack1930 35:79b85c333b02 236 }
jack1930 35:79b85c333b02 237 }
jack1930 35:79b85c333b02 238 }
jack1930 13:ed5c59ed4ae5 239 if (dbg) for (int i=0;i<hs_count;i++)
jack1930 13:ed5c59ed4ae5 240 {
jack1930 13:ed5c59ed4ae5 241 printf("\r\n%s\r\n",hs[i]);
jack1930 16:b09391fb73b4 242 }
jack1930 13:ed5c59ed4ae5 243 if (dbg) printf("\r\nich Got\r\n");
jack1930 16:b09391fb73b4 244 }
jack1930 13:ed5c59ed4ae5 245 }
jack1930 13:ed5c59ed4ae5 246
jack1930 13:ed5c59ed4ae5 247 return 0;
jack1930 13:ed5c59ed4ae5 248 }
jack1930 13:ed5c59ed4ae5 249
jack1930 13:ed5c59ed4ae5 250
jack1930 13:ed5c59ed4ae5 251 int ESP8266Webserver::send(int HTTPStatus,const char* Mimetype, string webseite)
jack1930 13:ed5c59ed4ae5 252 {
jack1930 13:ed5c59ed4ae5 253 return ESP8266Webserver::send(HTTPStatus,Mimetype, webseite.c_str());
jack1930 13:ed5c59ed4ae5 254 }
jack1930 16:b09391fb73b4 255
jack1930 13:ed5c59ed4ae5 256 int ESP8266Webserver::send(int HTTPStatus,const char* Mimetype, const char* webseite)
jack1930 13:ed5c59ed4ae5 257 {
jack1930 13:ed5c59ed4ae5 258 char hilf[40];
jack1930 35:79b85c333b02 259 char statustext[40];
jack1930 35:79b85c333b02 260
jack1930 35:79b85c333b02 261 sprintf(statustext,"OK");
jack1930 35:79b85c333b02 262
jack1930 35:79b85c333b02 263 switch (HTTPStatus)
jack1930 35:79b85c333b02 264 {
jack1930 35:79b85c333b02 265 case 404: sprintf(statustext,"Not Found"); break;
jack1930 35:79b85c333b02 266 case 206: sprintf(statustext,"Partial Content"); break;
jack1930 35:79b85c333b02 267 case 401: sprintf(statustext,"Unauthorized"); break;
jack1930 35:79b85c333b02 268 case 403: sprintf(statustext,"Forbidden"); break;
jack1930 35:79b85c333b02 269 case 307:
jack1930 35:79b85c333b02 270 case 302: sprintf(statustext,"Moved Temporarily"); break;
jack1930 35:79b85c333b02 271 case 301: sprintf(statustext,"Moved Permanently"); break;
jack1930 35:79b85c333b02 272 case 304: sprintf(statustext,"Not Modified"); break;
jack1930 35:79b85c333b02 273
jack1930 35:79b85c333b02 274 }
jack1930 35:79b85c333b02 275
jack1930 13:ed5c59ed4ae5 276
jack1930 16:b09391fb73b4 277 //printf("\r\nHallo\r\n");
jack1930 13:ed5c59ed4ae5 278 Aufrufe++;
jack1930 35:79b85c333b02 279 switch (HTTPStatus)
jack1930 35:79b85c333b02 280 {
jack1930 35:79b85c333b02 281 case 206:
jack1930 35:79b85c333b02 282 case 200: sprintf(sendstring,"HTTP/1.1 %d %s\n",HTTPStatus,statustext);
jack1930 35:79b85c333b02 283 strcat(sendstring,"Date: Wed, 23 Apr 2021 04:36:25 GMT\n");
jack1930 35:79b85c333b02 284 strcat(sendstring,"Connection: close\n");
jack1930 35:79b85c333b02 285 strcat(sendstring,"Content-Type: ");
jack1930 35:79b85c333b02 286 strcat(sendstring,Mimetype);
jack1930 35:79b85c333b02 287 strcat(sendstring,"\n");
jack1930 35:79b85c333b02 288 sprintf(hilf,"%d",strlen(webseite));
jack1930 35:79b85c333b02 289 strcat(sendstring,"Content-Length: ");
jack1930 35:79b85c333b02 290 strcat(sendstring,hilf);
jack1930 35:79b85c333b02 291 strcat(sendstring,"\n\n");
jack1930 35:79b85c333b02 292 strcat(sendstring,webseite);
jack1930 35:79b85c333b02 293 break;
jack1930 35:79b85c333b02 294
jack1930 35:79b85c333b02 295 default: sprintf(sendstring,"HTTP/1.1 %d %s\n",HTTPStatus,statustext);
jack1930 35:79b85c333b02 296 strcat(sendstring,"Date: Wed, 23 Apr 2021 04:36:25 GMT\n");
jack1930 35:79b85c333b02 297 strcat(sendstring,"Connection: close\n");
jack1930 35:79b85c333b02 298 // strcat(sendstring,"Content-Type: ");
jack1930 35:79b85c333b02 299 // strcat(sendstring,Mimetype);
jack1930 35:79b85c333b02 300 // strcat(sendstring,"\n");
jack1930 35:79b85c333b02 301 strcat(sendstring,"Content-Length: 0");
jack1930 35:79b85c333b02 302 strcat(sendstring,"\n\n");
jack1930 35:79b85c333b02 303 break;
jack1930 35:79b85c333b02 304 }
jack1930 35:79b85c333b02 305
jack1930 13:ed5c59ed4ae5 306 if (dbg) printf("len=%d, inhalt=\n%s",strlen(sendstring),sendstring);
jack1930 16:b09391fb73b4 307
jack1930 13:ed5c59ed4ae5 308 _parser->debug_on(true);
jack1930 13:ed5c59ed4ae5 309 _parser->send("AT+CIPSEND=%d,%d",clientID[clientIdx],strlen(sendstring));
jack1930 13:ed5c59ed4ae5 310 _parser->debug_on(false);
jack1930 13:ed5c59ed4ae5 311 _parser->write(sendstring,strlen(sendstring));
jack1930 13:ed5c59ed4ae5 312 HAL_Delay(200);
jack1930 13:ed5c59ed4ae5 313 _parser->send("AT+CIPCLOSE=%d",clientID[clientIdx]);
jack1930 13:ed5c59ed4ae5 314 return 0;
jack1930 13:ed5c59ed4ae5 315 }
jack1930 13:ed5c59ed4ae5 316
jack1930 36:e943a93d07f6 317 int ESP8266Webserver::send(int HTTPStatus,const char* Mimetype, const char* webseite, int length)
jack1930 36:e943a93d07f6 318 {
jack1930 36:e943a93d07f6 319 char hilf[40];
jack1930 36:e943a93d07f6 320 char statustext[40];
jack1930 36:e943a93d07f6 321
jack1930 36:e943a93d07f6 322 sprintf(statustext,"OK");
jack1930 36:e943a93d07f6 323
jack1930 36:e943a93d07f6 324 switch (HTTPStatus)
jack1930 36:e943a93d07f6 325 {
jack1930 36:e943a93d07f6 326 case 404: sprintf(statustext,"Not Found"); break;
jack1930 36:e943a93d07f6 327 case 206: sprintf(statustext,"Partial Content"); break;
jack1930 36:e943a93d07f6 328 case 401: sprintf(statustext,"Unauthorized"); break;
jack1930 36:e943a93d07f6 329 case 403: sprintf(statustext,"Forbidden"); break;
jack1930 36:e943a93d07f6 330 case 307:
jack1930 36:e943a93d07f6 331 case 302: sprintf(statustext,"Moved Temporarily"); break;
jack1930 36:e943a93d07f6 332 case 301: sprintf(statustext,"Moved Permanently"); break;
jack1930 36:e943a93d07f6 333 case 304: sprintf(statustext,"Not Modified"); break;
jack1930 36:e943a93d07f6 334
jack1930 36:e943a93d07f6 335 }
jack1930 36:e943a93d07f6 336
jack1930 36:e943a93d07f6 337
jack1930 36:e943a93d07f6 338 //printf("\r\nHallo\r\n");
jack1930 36:e943a93d07f6 339 Aufrufe++;
jack1930 36:e943a93d07f6 340 switch (HTTPStatus)
jack1930 36:e943a93d07f6 341 {
jack1930 36:e943a93d07f6 342 case 206:
jack1930 36:e943a93d07f6 343 case 200: sprintf(sendstring,"HTTP/1.1 %d %s\n",HTTPStatus,statustext);
jack1930 36:e943a93d07f6 344 strcat(sendstring,"Date: Wed, 23 Apr 2021 04:36:25 GMT\n");
jack1930 36:e943a93d07f6 345 strcat(sendstring,"Connection: close\n");
jack1930 36:e943a93d07f6 346 strcat(sendstring,"Content-Type: ");
jack1930 36:e943a93d07f6 347 strcat(sendstring,Mimetype);
jack1930 36:e943a93d07f6 348 strcat(sendstring,"\n");
jack1930 36:e943a93d07f6 349 sprintf(hilf,"%d",length);
jack1930 36:e943a93d07f6 350 strcat(sendstring,"Content-Length: ");
jack1930 36:e943a93d07f6 351 strcat(sendstring,hilf);
jack1930 36:e943a93d07f6 352 strcat(sendstring,"\n\n");
jack1930 36:e943a93d07f6 353 strcat(sendstring,webseite);
jack1930 36:e943a93d07f6 354 break;
jack1930 36:e943a93d07f6 355
jack1930 36:e943a93d07f6 356 default: sprintf(sendstring,"HTTP/1.1 %d %s\n",HTTPStatus,statustext);
jack1930 36:e943a93d07f6 357 strcat(sendstring,"Date: Wed, 23 Apr 2021 04:36:25 GMT\n");
jack1930 36:e943a93d07f6 358 strcat(sendstring,"Connection: close\n");
jack1930 36:e943a93d07f6 359 // strcat(sendstring,"Content-Type: ");
jack1930 36:e943a93d07f6 360 // strcat(sendstring,Mimetype);
jack1930 36:e943a93d07f6 361 // strcat(sendstring,"\n");
jack1930 36:e943a93d07f6 362 strcat(sendstring,"Content-Length: 0");
jack1930 36:e943a93d07f6 363 strcat(sendstring,"\n\n");
jack1930 36:e943a93d07f6 364 break;
jack1930 36:e943a93d07f6 365 }
jack1930 36:e943a93d07f6 366
jack1930 36:e943a93d07f6 367 if (dbg) printf("len=%d, inhalt=\n%s",strlen(sendstring),sendstring);
jack1930 36:e943a93d07f6 368
jack1930 36:e943a93d07f6 369 _parser->debug_on(true);
jack1930 36:e943a93d07f6 370 _parser->send("AT+CIPSEND=%d,%d",clientID[clientIdx],strlen(sendstring)+length);
jack1930 36:e943a93d07f6 371 _parser->debug_on(false);
jack1930 36:e943a93d07f6 372 _parser->write(sendstring,strlen(sendstring));
jack1930 36:e943a93d07f6 373 HAL_Delay(200);
jack1930 36:e943a93d07f6 374 _parser->send("AT+CIPCLOSE=%d",clientID[clientIdx]);
jack1930 36:e943a93d07f6 375 return 0;
jack1930 36:e943a93d07f6 376 }
jack1930 36:e943a93d07f6 377
jack1930 36:e943a93d07f6 378
jack1930 13:ed5c59ed4ae5 379 void ESP8266Webserver::debugOn(bool pD)
jack1930 13:ed5c59ed4ae5 380 {
jack1930 13:ed5c59ed4ae5 381 dbg=pD;
jack1930 16:b09391fb73b4 382 _parser->debug_on(pD);
jack1930 13:ed5c59ed4ae5 383 }
jack1930 13:ed5c59ed4ae5 384
jack1930 16:b09391fb73b4 385 const char* ESP8266Webserver::gibWert(string suchstring)
jack1930 13:ed5c59ed4ae5 386 {
jack1930 13:ed5c59ed4ae5 387 return ESP8266Webserver::gibWert(suchstring.c_str());
jack1930 13:ed5c59ed4ae5 388 }
jack1930 13:ed5c59ed4ae5 389
jack1930 13:ed5c59ed4ae5 390 const char* ESP8266Webserver::gibWert(const char* suchstring)
jack1930 13:ed5c59ed4ae5 391 {
jack1930 13:ed5c59ed4ae5 392 static char hilf[20];
jack1930 13:ed5c59ed4ae5 393
jack1930 13:ed5c59ed4ae5 394 char *fundort;
jack1930 20:7924d3383786 395 char *error;
jack1930 20:7924d3383786 396 char* referer;
jack1930 20:7924d3383786 397 char* favicon;
jack1930 20:7924d3383786 398 favicon=strstr(recbuf,"favicon");
jack1930 20:7924d3383786 399 //if (favicon!=NULL) return NULL;
jack1930 20:7924d3383786 400 error=strstr(recbuf,"ERROR");
jack1930 20:7924d3383786 401 //if (error==NULL) return NULL;
jack1930 20:7924d3383786 402
jack1930 20:7924d3383786 403 referer=strstr(recbuf,"Referer");
jack1930 20:7924d3383786 404
jack1930 13:ed5c59ed4ae5 405 int i=0;
jack1930 20:7924d3383786 406
jack1930 20:7924d3383786 407 fundort=strstr(recbuf,suchstring);
jack1930 20:7924d3383786 408 if (fundort!=NULL&&(fundort<referer||referer==NULL))
jack1930 20:7924d3383786 409 {
jack1930 20:7924d3383786 410 fundort=fundort+strlen(suchstring)+1;
jack1930 20:7924d3383786 411 while(i<20 && fundort[i]!=38 && fundort[i]>32 ) //space, &
jack1930 20:7924d3383786 412 {
jack1930 20:7924d3383786 413 hilf[i]=fundort[i];
jack1930 20:7924d3383786 414 i++;
jack1930 20:7924d3383786 415 }
jack1930 20:7924d3383786 416 hilf[i]=0;
jack1930 20:7924d3383786 417 if (dbg) printf("\r\nsuchergebnis=%s\r\n",hilf);
jack1930 20:7924d3383786 418 return hilf;
jack1930 20:7924d3383786 419 }
jack1930 20:7924d3383786 420 else
jack1930 20:7924d3383786 421 return NULL;
jack1930 20:7924d3383786 422
jack1930 14:d17cfd8131b1 423 }
jack1930 14:d17cfd8131b1 424
jack1930 15:e710f0431920 425 void ESP8266Webserver::listAPs()
jack1930 14:d17cfd8131b1 426 {
jack1930 16:b09391fb73b4 427 int ips[4];
jack1930 15:e710f0431920 428 //_parser->debug_on(true);
jack1930 15:e710f0431920 429 _parser->send("AT+CWMODE=1");
jack1930 17:87c762acb8d0 430 HAL_Delay(300);
jack1930 15:e710f0431920 431 while (_parser->recv("OK")==false);
jack1930 15:e710f0431920 432 HAL_Delay(1000);
jack1930 15:e710f0431920 433 if (scanAPs==true)
jack1930 14:d17cfd8131b1 434 {
jack1930 15:e710f0431920 435 _parser->send("AT+CWLAP");
jack1930 15:e710f0431920 436 while (!_serial->readable());
jack1930 15:e710f0431920 437 HAL_Delay(10000);
jack1930 15:e710f0431920 438 printf("\r\nBuf=");
jack1930 15:e710f0431920 439 while (_serial->readable())
jack1930 15:e710f0431920 440 {
jack1930 15:e710f0431920 441 _parser->read(recbuf, 1);
jack1930 15:e710f0431920 442 printf("%s",recbuf);
jack1930 15:e710f0431920 443 }
jack1930 15:e710f0431920 444 printf("\r\n");
jack1930 14:d17cfd8131b1 445 }
jack1930 15:e710f0431920 446 for (int i=0;i<5;i++)
jack1930 15:e710f0431920 447 {
jack1930 15:e710f0431920 448 _parser->send("AT+CWJAP=\"%s\",\"%s\"",ssid,passwort);
jack1930 15:e710f0431920 449 HAL_Delay(1000);
jack1930 15:e710f0431920 450 if (_parser->recv("WIFI GOT IP")) i=6;
jack1930 15:e710f0431920 451 }
jack1930 15:e710f0431920 452 _parser->send("AT+CIFSR");
jack1930 15:e710f0431920 453 while (_parser->recv("+CIFSR:STAIP,")==false)
jack1930 15:e710f0431920 454 {
jack1930 15:e710f0431920 455 _parser->send("AT+CIFSR");
jack1930 15:e710f0431920 456 HAL_Delay(100);
jack1930 15:e710f0431920 457 }
jack1930 16:b09391fb73b4 458
jack1930 16:b09391fb73b4 459 // _parser->read(ipadr,15);
jack1930 16:b09391fb73b4 460 _parser->scanf("\"%d.%d.%d.%d\"",&ips[0],&ips[1],&ips[2],&ips[3]);
jack1930 16:b09391fb73b4 461 sprintf(ipadr,"%d.%d.%d.%d",ips[0],ips[1],ips[2],ips[3]);
jack1930 15:e710f0431920 462 printf("%s",ipadr);
jack1930 15:e710f0431920 463
jack1930 15:e710f0431920 464 _parser->send("AT+CIPMUX=1");
jack1930 15:e710f0431920 465 while (_parser->recv("OK")==false);
jack1930 15:e710f0431920 466
jack1930 15:e710f0431920 467 //_parser->debug_on(false);
jack1930 14:d17cfd8131b1 468 }
jack1930 14:d17cfd8131b1 469
jack1930 15:e710f0431920 470 char* ESP8266Webserver::gibIP()
jack1930 14:d17cfd8131b1 471 {
jack1930 16:b09391fb73b4 472 static char ipa[16];
jack1930 16:b09391fb73b4 473 int j=0;
jack1930 16:b09391fb73b4 474 for (int i=0;i<strlen(ipadr);i++)
jack1930 16:b09391fb73b4 475 {
jack1930 16:b09391fb73b4 476 if (i==0 && ipadr[0]=='"'){}
jack1930 16:b09391fb73b4 477 else
jack1930 16:b09391fb73b4 478 {
jack1930 16:b09391fb73b4 479 switch (ipadr[i])
jack1930 16:b09391fb73b4 480 {
jack1930 16:b09391fb73b4 481 case '0':
jack1930 16:b09391fb73b4 482 case '1':
jack1930 16:b09391fb73b4 483 case '2':
jack1930 16:b09391fb73b4 484 case '3':
jack1930 16:b09391fb73b4 485 case '4':
jack1930 16:b09391fb73b4 486 case '5':
jack1930 16:b09391fb73b4 487 case '6':
jack1930 16:b09391fb73b4 488 case '7':
jack1930 16:b09391fb73b4 489 case '8':
jack1930 16:b09391fb73b4 490 case '9':
jack1930 16:b09391fb73b4 491 case '.': ipa[j]=ipadr[i];
jack1930 16:b09391fb73b4 492 j++;
jack1930 16:b09391fb73b4 493 break;
jack1930 16:b09391fb73b4 494 default: i=10000; break;
jack1930 16:b09391fb73b4 495 }
jack1930 16:b09391fb73b4 496 if (i==10000) break;
jack1930 16:b09391fb73b4 497 }
jack1930 16:b09391fb73b4 498 }
jack1930 16:b09391fb73b4 499 ipa[j+1]='\0';
jack1930 16:b09391fb73b4 500
jack1930 16:b09391fb73b4 501 return ipa;
jack1930 14:d17cfd8131b1 502 }
jack1930 14:d17cfd8131b1 503