Library für ESP01 Webserver STM32F103RB Nucleo
Dependents: Nucleo_dht11_Webserver WebServerGSOEWorkshopSlider WebServerGSOEWorkshopDynamisch WebServerGSOEWorkshopStatisch ... more
ESP8266Webserver.h@29:a907422c0eae, 2021-08-04 (annotated)
- Committer:
- jack1930
- Date:
- Wed Aug 04 16:08:02 2021 +0000
- Revision:
- 29:a907422c0eae
- Parent:
- 27:31c8b9939601
- Child:
- 30:17dd2e085453
Doku
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jack1930 | 26:b045cb598879 | 1 | /** My ESP8266Webserver class. |
jack1930 | 26:b045cb598879 | 2 | * Used for Webserver on Microcontroller. |
jack1930 | 29:a907422c0eae | 3 | * Grundeinstellungen und Definitionen: Siehe Einstellungen.h |
jack1930 | 26:b045cb598879 | 4 | * |
jack1930 | 26:b045cb598879 | 5 | * Example: |
jack1930 | 26:b045cb598879 | 6 | * @code |
jack1930 | 26:b045cb598879 | 7 | * #include "mbed.h" |
jack1930 | 27:31c8b9939601 | 8 | * #include "ESP8266Webserver.h" |
jack1930 | 27:31c8b9939601 | 9 | * #include "LCD.h" |
jack1930 | 27:31c8b9939601 | 10 | |
jack1930 | 27:31c8b9939601 | 11 | * lcd myLCD; |
jack1930 | 27:31c8b9939601 | 12 | * ESP8266Webserver myWebserver; |
jack1930 | 27:31c8b9939601 | 13 | * AnalogIn poti(PA_0); |
jack1930 | 27:31c8b9939601 | 14 | * DigitalOut myled(PC_0); |
jack1930 | 27:31c8b9939601 | 15 | * string getRootPage() |
jack1930 | 27:31c8b9939601 | 16 | * { |
jack1930 | 27:31c8b9939601 | 17 | * string webpage; |
jack1930 | 27:31c8b9939601 | 18 | * webpage="<!DOCTYPE html>"; |
jack1930 | 27:31c8b9939601 | 19 | * //HTML |
jack1930 | 27:31c8b9939601 | 20 | * webpage+="<html>"; |
jack1930 | 27:31c8b9939601 | 21 | * webpage+="<head>"; |
jack1930 | 27:31c8b9939601 | 22 | * webpage+="<title>STM32 HTTP</title>"; |
jack1930 | 27:31c8b9939601 | 23 | * webpage+="</head>"; |
jack1930 | 27:31c8b9939601 | 24 | * webpage+="<body>"; |
jack1930 | 27:31c8b9939601 | 25 | * webpage+="<h1>WIFI mit STM32 ESP01</h1>\n"; |
jack1930 | 27:31c8b9939601 | 26 | * webpage+="<p>Poti:"+to_string(poti)+"</p>\n"; |
jack1930 | 27:31c8b9939601 | 27 | * webpage+="<a href=\"ledAn\"><button>ON</button></a>\n"; |
jack1930 | 27:31c8b9939601 | 28 | * webpage+="<a href=\"ledAus\"><button>OFF</button></a>\n"; |
jack1930 | 27:31c8b9939601 | 29 | * webpage+="</body>"; |
jack1930 | 27:31c8b9939601 | 30 | * webpage+="</html>"; |
jack1930 | 27:31c8b9939601 | 31 | * return webpage; |
jack1930 | 27:31c8b9939601 | 32 | * } |
jack1930 | 27:31c8b9939601 | 33 | * void testfunc() |
jack1930 | 27:31c8b9939601 | 34 | * { |
jack1930 | 27:31c8b9939601 | 35 | * myWebserver.send(200,"text/html",getRootPage()); |
jack1930 | 27:31c8b9939601 | 36 | * } |
jack1930 | 27:31c8b9939601 | 37 | * void testfunc2() |
jack1930 | 27:31c8b9939601 | 38 | * { |
jack1930 | 27:31c8b9939601 | 39 | * myled=0; |
jack1930 | 27:31c8b9939601 | 40 | * myWebserver.send(200,"text/html",getRootPage()); |
jack1930 | 27:31c8b9939601 | 41 | * } |
jack1930 | 27:31c8b9939601 | 42 | * void testfunc3() |
jack1930 | 27:31c8b9939601 | 43 | * { |
jack1930 | 27:31c8b9939601 | 44 | * myled=1; |
jack1930 | 27:31c8b9939601 | 45 | * myWebserver.send(200,"text/html",getRootPage()); |
jack1930 | 27:31c8b9939601 | 46 | * } |
jack1930 | 27:31c8b9939601 | 47 | * int main() { |
jack1930 | 27:31c8b9939601 | 48 | * myWebserver.on("ledAus",&testfunc2); |
jack1930 | 27:31c8b9939601 | 49 | * myWebserver.on("ledAn",&testfunc3); |
jack1930 | 27:31c8b9939601 | 50 | * myWebserver.on("/",&testfunc); |
jack1930 | 27:31c8b9939601 | 51 | * myWebserver.begin(); |
jack1930 | 27:31c8b9939601 | 52 | * myLCD.clear(); |
jack1930 | 27:31c8b9939601 | 53 | * myLCD.cursorpos(0); |
jack1930 | 27:31c8b9939601 | 54 | * myLCD.printf("%s",myWebserver.gibIP()); |
jack1930 | 27:31c8b9939601 | 55 | * while(1) { |
jack1930 | 27:31c8b9939601 | 56 | * myWebserver.handleClient(); |
jack1930 | 27:31c8b9939601 | 57 | * } |
jack1930 | 26:b045cb598879 | 58 | * } |
jack1930 | 26:b045cb598879 | 59 | * @endcode |
jack1930 | 26:b045cb598879 | 60 | */ |
jack1930 | 13:ed5c59ed4ae5 | 61 | #include "mbed.h" |
jack1930 | 16:b09391fb73b4 | 62 | //#include "string" |
jack1930 | 14:d17cfd8131b1 | 63 | #include "Einstellungen.h" |
jack1930 | 0:92e4253d430a | 64 | |
jack1930 | 14:d17cfd8131b1 | 65 | |
jack1930 | 13:ed5c59ed4ae5 | 66 | class ESP8266Webserver |
jack1930 | 0:92e4253d430a | 67 | { |
jack1930 | 19:e0bcbb2a3480 | 68 | private: |
jack1930 | 19:e0bcbb2a3480 | 69 | |
jack1930 | 13:ed5c59ed4ae5 | 70 | int hs_count=0; |
jack1930 | 13:ed5c59ed4ae5 | 71 | Callback< void()> cbs[10]; |
jack1930 | 13:ed5c59ed4ae5 | 72 | char hs[10][20]; |
jack1930 | 13:ed5c59ed4ae5 | 73 | char recbuf[1000]; |
jack1930 | 13:ed5c59ed4ae5 | 74 | bool beinhaltet(char* suchstring); |
jack1930 | 13:ed5c59ed4ae5 | 75 | int port=80; |
jack1930 | 13:ed5c59ed4ae5 | 76 | bool dbg; |
jack1930 | 13:ed5c59ed4ae5 | 77 | int clientID[10]={0,0,0,0,0,0,0,0,0,0}; |
jack1930 | 13:ed5c59ed4ae5 | 78 | int clientIdx=0; |
jack1930 | 13:ed5c59ed4ae5 | 79 | char sendstring[1000]; |
jack1930 | 13:ed5c59ed4ae5 | 80 | BufferedSerial *_serial; |
jack1930 | 15:e710f0431920 | 81 | char ipadr[100]; |
jack1930 | 13:ed5c59ed4ae5 | 82 | ATCmdParser *_parser; |
jack1930 | 16:b09391fb73b4 | 83 | |
jack1930 | 13:ed5c59ed4ae5 | 84 | bool gefunden; |
jack1930 | 14:d17cfd8131b1 | 85 | string ipad=ip; |
jack1930 | 13:ed5c59ed4ae5 | 86 | |
jack1930 | 15:e710f0431920 | 87 | |
jack1930 | 13:ed5c59ed4ae5 | 88 | |
jack1930 | 0:92e4253d430a | 89 | public: |
jack1930 | 13:ed5c59ed4ae5 | 90 | char suchergebnis[20]; |
jack1930 | 27:31c8b9939601 | 91 | /** Aufrufzähler (öffentliches Attribut) |
jack1930 | 27:31c8b9939601 | 92 | */ |
jack1930 | 16:b09391fb73b4 | 93 | int Aufrufe=0; |
jack1930 | 27:31c8b9939601 | 94 | |
jack1930 | 27:31c8b9939601 | 95 | /** Create HelloWorld instance |
jack1930 | 27:31c8b9939601 | 96 | */ |
jack1930 | 14:d17cfd8131b1 | 97 | ESP8266Webserver(); |
jack1930 | 27:31c8b9939601 | 98 | |
jack1930 | 27:31c8b9939601 | 99 | /** Legt die Callback-Operationen fest |
jack1930 | 27:31c8b9939601 | 100 | * |
jack1930 | 27:31c8b9939601 | 101 | * @param handlestring Suchtext im Request des Clients |
jack1930 | 27:31c8b9939601 | 102 | * @param func Callback-Operation falls der handlestring im Request gefunden wurde |
jack1930 | 27:31c8b9939601 | 103 | * @returns |
jack1930 | 27:31c8b9939601 | 104 | * 0 on success, |
jack1930 | 27:31c8b9939601 | 105 | * -1 on error |
jack1930 | 27:31c8b9939601 | 106 | */ |
jack1930 | 13:ed5c59ed4ae5 | 107 | int on(const char* handlestring,Callback< void()> func); |
jack1930 | 27:31c8b9939601 | 108 | |
jack1930 | 27:31c8b9939601 | 109 | /** Startet den Webserver |
jack1930 | 27:31c8b9939601 | 110 | * @returns |
jack1930 | 27:31c8b9939601 | 111 | * 0 on success, |
jack1930 | 27:31c8b9939601 | 112 | * -1 on error |
jack1930 | 27:31c8b9939601 | 113 | */ |
jack1930 | 13:ed5c59ed4ae5 | 114 | int begin(void); |
jack1930 | 27:31c8b9939601 | 115 | |
jack1930 | 27:31c8b9939601 | 116 | /** Prüft in der Endlosschleife zyklisch, ob neue Anfragen (Requests) vorliegen |
jack1930 | 27:31c8b9939601 | 117 | * |
jack1930 | 27:31c8b9939601 | 118 | * @returns |
jack1930 | 27:31c8b9939601 | 119 | * 0 on success, |
jack1930 | 27:31c8b9939601 | 120 | * -1 on error |
jack1930 | 27:31c8b9939601 | 121 | */ |
jack1930 | 13:ed5c59ed4ae5 | 122 | int handleClient(void); |
jack1930 | 27:31c8b9939601 | 123 | |
jack1930 | 27:31c8b9939601 | 124 | /** Schickt eine Antwort (response) zum Client |
jack1930 | 27:31c8b9939601 | 125 | * |
jack1930 | 27:31c8b9939601 | 126 | * @param HTTPStatus Statuscode (200 = alles in Ordnung) |
jack1930 | 27:31c8b9939601 | 127 | * @param Mimetype z.B. "text/html" |
jack1930 | 27:31c8b9939601 | 128 | * @param webseite String (const char*) der die Webseite enthält |
jack1930 | 27:31c8b9939601 | 129 | * @returns |
jack1930 | 27:31c8b9939601 | 130 | * 0 on success, |
jack1930 | 27:31c8b9939601 | 131 | * -1 on error |
jack1930 | 27:31c8b9939601 | 132 | */ |
jack1930 | 13:ed5c59ed4ae5 | 133 | int send(int HTTPStatus,const char* Mimetype, const char* webseite); |
jack1930 | 27:31c8b9939601 | 134 | |
jack1930 | 27:31c8b9939601 | 135 | /** Schickt eine Antwort (response) zum Client |
jack1930 | 27:31c8b9939601 | 136 | * |
jack1930 | 27:31c8b9939601 | 137 | * @param HTTPStatus Statuscode (200 = alles in Ordnung) |
jack1930 | 27:31c8b9939601 | 138 | * @param Mimetype z.B. "text/html" |
jack1930 | 27:31c8b9939601 | 139 | * @param webseite String der die Webseite enthält |
jack1930 | 27:31c8b9939601 | 140 | * @returns |
jack1930 | 27:31c8b9939601 | 141 | * 0 on success, |
jack1930 | 27:31c8b9939601 | 142 | * -1 on error |
jack1930 | 27:31c8b9939601 | 143 | */ |
jack1930 | 16:b09391fb73b4 | 144 | int send(int HTTPStatus,const char* Mimetype, std::string webseite); |
jack1930 | 27:31c8b9939601 | 145 | |
jack1930 | 27:31c8b9939601 | 146 | /** Findet einen Wert-String zu dem Suchstring in dem Request |
jack1930 | 27:31c8b9939601 | 147 | * Damit können Inputs in Formularen (Textfelder, Slider, Textboxen usw.) |
jack1930 | 27:31c8b9939601 | 148 | * ausgewertet werden |
jack1930 | 27:31c8b9939601 | 149 | * @param suchstring nach diesem String wird gesucht |
jack1930 | 27:31c8b9939601 | 150 | * @returns |
jack1930 | 27:31c8b9939601 | 151 | * Wertstring |
jack1930 | 27:31c8b9939601 | 152 | */ |
jack1930 | 13:ed5c59ed4ae5 | 153 | const char* gibWert(const char* suchstring); |
jack1930 | 27:31c8b9939601 | 154 | |
jack1930 | 27:31c8b9939601 | 155 | /** Findet einen Wert-String zu dem Suchstring in dem Request |
jack1930 | 27:31c8b9939601 | 156 | * Damit können Inputs in Formularen (Textfelder, Slider, Textboxen usw.) |
jack1930 | 27:31c8b9939601 | 157 | * ausgewertet werden |
jack1930 | 27:31c8b9939601 | 158 | * @param suchstring nach diesem String wird gesucht |
jack1930 | 27:31c8b9939601 | 159 | * @returns |
jack1930 | 27:31c8b9939601 | 160 | * Wertstring |
jack1930 | 27:31c8b9939601 | 161 | */ |
jack1930 | 16:b09391fb73b4 | 162 | const char* gibWert(std::string suchstring); |
jack1930 | 13:ed5c59ed4ae5 | 163 | void debugOn(bool pD); |
jack1930 | 15:e710f0431920 | 164 | void listAPs(); |
jack1930 | 27:31c8b9939601 | 165 | |
jack1930 | 27:31c8b9939601 | 166 | /** Gibt die IP-Adresse des Servers als String zurück |
jack1930 | 27:31c8b9939601 | 167 | * |
jack1930 | 27:31c8b9939601 | 168 | * @returns |
jack1930 | 27:31c8b9939601 | 169 | * Wertstring |
jack1930 | 27:31c8b9939601 | 170 | */ |
jack1930 | 15:e710f0431920 | 171 | char* gibIP(); |
jack1930 | 20:7924d3383786 | 172 | |
jack1930 | 14:d17cfd8131b1 | 173 | |
jack1930 | 0:92e4253d430a | 174 | }; |