// ################# WebServer ################# #ifndef __MODWEBSERVER_H #define __MODWEBSERVER_H #define MODWEBSERVER #include #include "Debug.h" #include "Settings.h" ESP8266WebServer server (WEBSERVER_PORT); void returnOK () { //-------------- server.send(200, F("text/plain"), ""); } void returnFail(String msg) { //------------------------- server.send(500, F("text/plain"), msg + "\r\n"); } void handleHelp () { //----------------- String out = ""; out += "

Hilfe

"; out += "

"; out += ""; out += ""; out += ""; out += ""; out += "
/zeigt alle Messwerte in einer Tabelle; refresh alle 10 Sekunden
/datazum Abruf der Messwerte in der Form Name=wert
:{port+1}/updateOTA
/rebootstartet neu
"; server.send (200, "text/html", out); } void handleReboot () { //------------------- returnOK (); ESP.reset(); } void handleRoot() { //---------------- String out = ""; out += ""; out += "

Hoymiles Micro-Inverters

"; char floatString[20]; char line[100]; for (uint8_t wr = 0; wr < anzInv; wr++) { out += "

" + String(inverters[wr].name) + "

"; out += "

S/N " + String (getSerialNoTxt(wr)) + "

"; out += "

"; out += ""; for (uint8_t i = 0; i < inverters[wr].anzTotalMeasures; i++) { dtostrf (getMeasureValue(wr, i),1, getDigits(wr,i), floatString); sprintf(line, "", getMeasureName(wr, i), floatString, getUnit(wr, i)); //DEBUG_OUT.println(line); out += String(line); /* out += ""; out += ""; out += ""; */ } out += "
KanalWertEinheit
%s%s%s
" + getMeasureName(i) + "" + String(getMeasureValue(i)) + "
" + String(getUnit(i)) + "
"; } int pos = out.indexOf("°"); do { if (pos>1) { out = out.substring (0, pos) + "°" + out.substring(pos+2); } pos = out.indexOf("°"); } while (pos>1); out += ""; server.send (200, "text/html", out); //DEBUG_OUT.println (out); } void handleData () { //----------------- String out = ""; for (uint8_t wr = 0; wr < anzInv; wr++) { for (int i = 0; i < inverters[wr].anzTotalMeasures; i++) { out += (anzInv <= 1 ? "" : String (wr) + ".") + String(getMeasureName(wr,i)) + '=' + String (getMeasureValue(wr,i)) /*+ ' ' + String(getUnit(wr,i))*/ + '\n'; } } server.send(200, "text/plain", out); } void handleNotFound() { //-------------------- String message = "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " NAME:" + server.argName(i) + "\n VALUE:" + server.arg(i) + "\n"; } server.send(404, "text/plain", message); } void setupWebServer (void) { //------------------------- server.begin(); server.on("/", handleRoot); server.on("/reboot", handleReboot); server.on("/data", handleData); server.on("/help", handleHelp); //server.onNotFound(handleNotFound); wegen Spiffs-Dateimanager DEBUG_OUT.println ("[HTTP] installed"); } void webserverHandle() { //==================== server.handleClient(); } // ################# OTA ################# #ifdef WITH_OTA #include ESP8266WebServer httpUpdateServer (UPDATESERVER_PORT); ESP8266HTTPUpdateServer httpUpdater; void setupUpdateByOTA () { //------------------------ httpUpdater.setup (&httpUpdateServer, UPDATESERVER_DIR, UPDATESERVER_USER, UPDATESERVER_PW); httpUpdateServer.begin(); DEBUG_OUT.println ("[OTA] installed"); } void checkUpdateByOTA() { //--------------------- httpUpdateServer.handleClient(); } #endif #endif