Library für ESP01 Webserver STM32F103RB Nucleo

Dependents:   Nucleo_dht11_Webserver WebServerGSOEWorkshopSlider WebServerGSOEWorkshopDynamisch WebServerGSOEWorkshopStatisch ... more

Committer:
jack1930
Date:
Wed Aug 04 15:56:15 2021 +0000
Revision:
27:31c8b9939601
Parent:
26:b045cb598879
Child:
29:a907422c0eae
Dokumentation

Who changed what in which revision?

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