void Con::handleWiFiConnect(){ this->printf("handleWiFiConnect %d\n",this->curType&CON_TCP); if (this->curType&CON_TCP){ ConSrv.begin(); ConSrv.setNoDelay(true); } }
void loop() { static boolean packetActive = false; static uint8_t index = 0; static boolean readingReturn = false; static uint8_t rindex = 0; if (!client.connected()) { // try to connect to a new client client = server.available(); } else { // read data from the connected client if (client.available() > 0) { char c = client.read(); if (packetActive) { commandBuffer[index] = c; commandBuffer[++index] = 0; if (c == EOP) { comHandler(); packetActive = false; } } else if (c == SOP) { index = 0; commandBuffer[index] = c; commandBuffer[++index] = 0; packetActive = true; } if (returnReady) { client.println(returnBuffer); server.println(returnBuffer); Serial.println(returnBuffer); returnReady = false; } } } if (Serial.available() && !returnReady) { char s = Serial.read(); if (s == SOP) { readingReturn = true; rindex = 0; } if (readingReturn) { returnBuffer[rindex] = s; returnBuffer[++rindex] = 0; if (s == EOP) { returnReady = true; } } } }
void Con::TCPhandler(){ if (this->curType&CON_TCP){ if (ConSrv.hasClient()){ if (ConTcp.connected()){ ConTcp.stop(); } ConTcp=ConSrv.available(); ConTcp.write("Hello\n",6); } } }
void connectClients() { if (server.hasClient()) { if (!serverClient || !serverClient.connected()) { if (serverClient) serverClient.stop(); serverClient = server.available(); } else { //no free/disconnected spot so reject WiFiClient rejectClient = server.available(); rejectClient.stop(); } } }
void cTcpTrace::task(void) { if (tcpTraceServer.hasClient()) { if (!tcpTraceClient || !tcpTraceClient.connected()) { if(tcpTraceClient) tcpTraceClient.stop(); tcpTraceClient = tcpTraceServer.available(); println("Welcom to trace."); } } }
void WiFiManager::startWebConfig() { DEBUG_PRINT(""); DEBUG_PRINT("WiFi connected"); DEBUG_PRINT(WiFi.localIP()); DEBUG_PRINT(WiFi.softAPIP()); if (!mdns.begin(_apName, WiFi.localIP())) { DEBUG_PRINT("Error setting up MDNS responder!"); while (1) { delay(1000); } } DEBUG_PRINT("mDNS responder started"); // Start the server server.begin(); DEBUG_PRINT("Server started"); while (serverLoop() == WM_WAIT) { //looping if(timeout > 0 && start + timeout < millis()) { //we passed timeout value, release DEBUG_PRINT("timeout reached"); return; } } DEBUG_PRINT("Setup done"); delay(5000); ESP.reset(); }
void setup() { pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(dirA, OUTPUT); pinMode(dirB, OUTPUT); setupWiFi(); server.begin(); #ifdef DEBUG delay(2000); #endif Serial.begin(115200); #ifdef DEBUG delay(250); Serial.println(); Serial.println("Hello"); Serial.flush(); delay(750); Serial.print("IP address"); Serial.println(WiFi.localIP()); delay(500); #endif }
void WiFiManager::startWebConfig() { DEBUG_PRINT(""); display.print("WiFi connected"); DEBUG_PRINT("WiFi connected"); DEBUG_PRINT(WiFi.localIP()); DEBUG_PRINT(WiFi.softAPIP()); if (!mdns.begin(_apName, WiFi.localIP())) { DEBUG_PRINT("Error setting up MDNS responder!"); display.print("mDNS error"); while(1) { delay(1000); } } DEBUG_PRINT("mDNS responder started"); // Start the server server_s.begin(); display.print("Server started"); DEBUG_PRINT("Server started"); while(serverLoop() == WM_WAIT) { //looping } display.print("All done. Bye."); DEBUG_PRINT("Setup done"); delay(10000); ESP.reset(); }
void setup() { Serial.begin(115200); // Initialize the output variables as outputs pinMode(output5, OUTPUT); pinMode(output4, OUTPUT); // Set outputs to LOW digitalWrite(output5, LOW); digitalWrite(output4, LOW); // Connect to Wi-Fi network with SSID and password Serial.print("Connecting to "); Serial.println(ssid); //WiFi.begin(ssid, password); setupWiFi(); server.begin(); // while (WiFi.status() != WL_CONNECTED) { // delay(500); // Serial.print("."); // } // WiFiClient client = server.available(); // if (!client) { // return; // } }
void transmitTele() { Serial.println("tele"); while(!alreadyConnectedTele) { //attempt to save a client connecting to the server teleClient = teleServer.available(); //if a client is connected, begin communication if (teleClient) { if (!alreadyConnectedTele) { // clead out the input buffer: teleClient.flush(); Serial.println("We have a new client"); alreadyConnectedTele = true; } } } for(int i = 0; i < 20; i++) { if (teleClient.available() > 0) { // read the bytes incoming from the client: char thisChar = teleClient.read(); // echo the bytes back to the client: if(thisChar == '1') teleServer.println(curSpeedKn * KNOTS_TO_MPS); if(thisChar == '2') teleServer.println(pollPing()); if(thisChar == '3') teleServer.println(distToTar()); if(thisChar == '4') teleServer.println(curLat); if(thisChar == '5') teleServer.println(curLon); if(thisChar == '6') teleServer.println(curHead); // echo the bytes to the server as well: Serial.println(thisChar); } } }
void start_server() { Serial.print("\nMAC: "); Serial.println(WiFi.macAddress()); Serial.print("\nSSID: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } server.begin(); delay(10000); Serial.print("\nIP: "); Serial.println(WiFi.localIP()); }
void APServer(){ WiFiClient client = server.available(); // Check if a client has connected if (!client) { return; } Serial.println(""); Serial.println("New client"); // Wait for data from client to become available while (client.connected() && !client.available()) { delay(1); } // Read the first line of HTTP request String req = client.readStringUntil('\r'); Serial.println(req); String s; String gsid; String gpwd; //if the form has been submitted if(req.indexOf("ssid")!=-1){ //TODO Make this a POST request //I'm basically hoping they're being nice int x = req.indexOf("ssid")+5; gsid = req.substring(x,req.indexOf("&",x)); x = req.indexOf("pwd")+4; gpwd = req.substring(x,req.indexOf(" ",x)); s = gsid; saveWifiConfig(gsid,gpwd); Serial.print("Restarting"); client.print("Thanks! Restarting to new configuration"); client.flush(); ESP.restart(); } else{ s = "<h1>Welcome to your ESP</h1><form action='/' method='get'><table><tr><td>SSID</td><td><input type='text' name='ssid'></td></tr><tr><td>Password</td><td><input type='text' name='pwd'></td><tr><td /><td><input type='submit' value='Submit'></td></tr></form>"; client.print(s); } client.flush(); delay(1); //Serial.println("Client disonnected"); }
void mainsetup() { // setup globals ulReqcount = 0; ulReconncount = 0; WiFiStart(); delay(1); server.begin(); // allocate ram for data storage uint32_t free = system_get_free_heap_size() - KEEP_MEM_FREE; ulNoMeasValues = free / (sizeof(float) * 5 + sizeof(unsigned long)); // humidity & temp --> 2 + time pulTime = new unsigned long[ulNoMeasValues]; pfTemp1 = new float[ulNoMeasValues]; pfTemp2 = new float[ulNoMeasValues]; pfTemp3 = new float[ulNoMeasValues]; pfTemp4 = new float[ulNoMeasValues]; if (pulTime == NULL || pfTemp1 == NULL || pfTemp2 == NULL || pfTemp3 == NULL || pfTemp4 == NULL) { ulNoMeasValues = 0; Serial.println("Error in memory allocation!"); } else { Serial.print("Allocated storage for "); Serial.print(ulNoMeasValues); Serial.println(" data points."); float fMeasDelta_sec = MEAS_SPAN_H * 3600. / ulNoMeasValues; ulMeasDelta_ms = ( (unsigned long)(fMeasDelta_sec + 0.5) ) * 1000; // round to full sec Serial.print("Measurements will happen each "); Serial.print(ulMeasDelta_ms); Serial.println(" ms."); ulNextMeas_ms = millis() + ulMeasDelta_ms; } }
void WiFiStart() { ulReconncount++; while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println("Server started"); // Print the IP address Serial.println(WiFi.localIP()); }
void setup() { Serial.begin(115200); pixels.begin(); pixels.setBrightness(BASE_BRIGHTNESS); reset_pixels(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); WiFi.hostname(HOSTNAME); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected"); Serial.println(WiFi.localIP()); if (!MDNS.begin(HOSTNAME)) { update_pixel(0, 200, 0, 0); Serial.println("Error setting up MDNS responder!"); while (1) { delay(1000); } } Serial.println("mDNS responder started"); update_pixel(0, 0, 200, 0); pixels.show(); server.begin(); MDNS.addService("http", "tcp", 80); }
void next_client() { // Listenning for new clients client = server.available(); if (client) { Serial.println("New client"); // bolean to locate when the http request ends boolean blank_line = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (c == '\n' && blank_line) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: application/json"); client.println("Access-Control-Allow-Origin: *"); client.println("Connection: close"); client.println(); print_json(); break; } if (c == '\n') { // when starts reading a new line Serial.println(); blank_line = true; } else if (c != '\r') { // when finds a character on the current line Serial.write(c); blank_line = false; } } } // closing the client connection delay(1); client.stop(); Serial.println("Client disconnected."); } }
void setup() { Serial.begin(115200); // Initialize the output variables as outputs pinMode(output5, OUTPUT); pinMode(output4, OUTPUT); // Set outputs to LOW digitalWrite(output5, LOW); digitalWrite(output4, LOW); // Connect to Wi-Fi network with SSID and password Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Print local IP address and start web server Serial.println(""); Serial.println("WiFi connected."); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); }
void cTcpTrace::begin() { tcpTraceServer.begin(); }
void waitForTarget() { //define a client object to connect to the server WiFiClient mainClient; //wait for a client to connect to the server while(!alreadyConnectedMain) { //attempt to save a client connecting to the server mainClient = mainServer.available(); //if a client is connected, begin communication if (mainClient) { if (!alreadyConnectedMain) { // clead out the input buffer: mainClient.flush(); Serial.println("We have a new client"); debugServer.println("We have a new client"); mainClient.println("Hello, client!"); alreadyConnectedMain = true; } } delay(100); delay(100); } Serial.println("writing"); debugClient.println("writing"); //mainServer.println("ready"); delay(1000); //Strings to read in latitude and longitude from the client char lat[50] = ""; char lon[50] = ""; int ind = 0; //Wait for input to be on the buffer while(!mainClient.available()); char destNum = '0'; while(!(destNum == '1' || destNum == '2' || destNum == '3')) { destNum = mainClient.read(); Serial.println(destNum); } if(destNum == '1') { tarLat = LAT1; tarLon = LON1; } if(destNum == '2') { tarLat = LAT2; tarLon = LON2; } if(destNum == '3') { tarLat = LAT3; tarLon = LON3; } /* //Read in characters from the input buffer until a new line character is reached //this will be the latitude while(mainClient.available()) { char c = mainClient.read(); lat[ind] = c; if(c == '\n') { lat[ind] = NULL; break; } ind++; } ind = 0; //Read in characters from the input buffer until a new line character is reached //this will be the longitude while(mainClient.available()) { char c = mainClient.read(); lon[ind] = c; if(c == '\n') { lon[ind] = NULL; break; } ind++; } mainClient.stop(); //convert from a string to a float tarLat = strtof(lat, NULL); tarLon = strtof(lon, NULL); //digitalWrite(LED1, LOW); //tarLat = atof(lat); //tarLon = atof(lon);*/ Serial.print("Lat: "); Serial.print(lat); Serial.print(" "); Serial.println(tarLat, 6); Serial.print("Lon: "); Serial.print(lon); Serial.print(" "); Serial.println(tarLon, 6); debugClient.print("Lat: "); debugClient.print(lat); debugClient.print(" "); debugClient.println(tarLat, 6); debugClient.print("Lon: "); debugClient.print(lon); debugClient.print(" "); debugClient.println(tarLon, 6); //Erick's //tarLat = 28.504906f; //tarLon = -81.457456f; //apt //tarLat = 28.582183f; //tarLon = -81.202770f; //apt 2 //tarLat = 28.582373f; //tarLon = -81.202996f; //curLat = 28.628811f; //curLon = -81.199479f; //mem mall //tarLat = 28.603710f; //tarLon = -81.199371f; //matt's //tarLat = 28.628391; //tarLon = -81.200013; }
int WiFiManager::serverLoop() { // Check for any mDNS queries and send responses mdns.update(); String s; WiFiClient client = server_s.available(); if (!client) { return(WM_WAIT); } DEBUG_PRINT("New client"); // Wait for data from client to become available while(client.connected() && !client.available()){ delay(1); } // Read the first line of HTTP request String req = client.readStringUntil('\r'); // First line of HTTP request looks like "GET /path HTTP/1.1" // Retrieve the "/path" part by finding the spaces int addr_start = req.indexOf(' '); int addr_end = req.indexOf(' ', addr_start + 1); if (addr_start == -1 || addr_end == -1) { DEBUG_PRINT("Invalid request: "); DEBUG_PRINT(req); return(WM_WAIT); } req = req.substring(addr_start + 1, addr_end); DEBUG_PRINT("Request: "); DEBUG_PRINT(req); client.flush(); if (req == "/") { s = HTTP_200; String head = HTTP_HEAD; head.replace("{v}", "Config ESP"); s += head; s += HTTP_SCRIPT; s += HTTP_STYLE; s += HTTP_HEAD_END; int n = WiFi.scanNetworks(); DEBUG_PRINT("scan done"); if (n == 0) { DEBUG_PRINT("no networks found"); s += "<div>No networks found. Refresh to scan again.</div>"; } else { for (int i = 0; i < n; ++i) { DEBUG_PRINT(WiFi.SSID(i)); DEBUG_PRINT(WiFi.RSSI(i)); String item = HTTP_ITEM; item.replace("{v}", WiFi.SSID(i)); s += item; delay(10); } } s += HTTP_FORM; s += HTTP_END; DEBUG_PRINT("Sending config page"); } else if ( req.startsWith("/s") ) { String qssid; qssid = urldecode(req.substring(8,req.indexOf('&')).c_str()); DEBUG_PRINT(qssid); DEBUG_PRINT(""); req = req.substring( req.indexOf('&') + 1); String qpass; qpass = urldecode(req.substring(req.lastIndexOf('=')+1).c_str()); setEEPROMString(0, 32, qssid); setEEPROMString(32, 64, qpass); EEPROM.commit(); s = HTTP_200; String head = HTTP_HEAD; head.replace("{v}", "Saved config"); s += HTTP_STYLE; s += HTTP_HEAD_END; s += "saved to eeprom...<br/>resetting in 10 seconds"; s += HTTP_END; client.print(s); client.flush(); DEBUG_PRINT("Saved WiFiConfig...restarting."); return WM_DONE; } else { s = HTTP_404; DEBUG_PRINT("Sending 404"); } client.print(s); DEBUG_PRINT("Done with client"); return(WM_WAIT); }
void setup() { #ifdef ESP8266_WiFi String mdns_id; mdns_id = eepromManager.fetchmDNSName(); if(mdns_id.length()<=0) mdns_id = "ESP" + String(ESP.getChipId()); // If we're going to set up WiFi, let's get to it WiFiManager wifiManager; wifiManager.setConfigPortalTimeout(5*60); // Time out after 5 minutes so that we can keep managing temps wifiManager.setDebugOutput(false); // In case we have a serial connection to BrewPi // The main purpose of this is to set a boolean value which will allow us to know we // just saved a new configuration (as opposed to rebooting normally) wifiManager.setSaveConfigCallback(saveConfigCallback); // The third parameter we're passing here (mdns_id.c_str()) is the default name that will appear on the form. // It's nice, but it means the user gets no actual prompt for what they're entering. WiFiManagerParameter custom_mdns_name("mdns", "Device (mDNS) Name", mdns_id.c_str(), 20); wifiManager.addParameter(&custom_mdns_name); wifiManager.autoConnect(); // Launch captive portal with auto generated name ESP + ChipID // Alright. We're theoretically connected here (or we timed out). // If we connected, then let's save the mDNS name if (shouldSaveConfig) { // If the mDNS name is valid, save it. if (isValidmDNSName(custom_mdns_name.getValue())) { eepromManager.savemDNSName(custom_mdns_name.getValue()); } else { // If the mDNS name is invalid, reset the WiFi configuration and restart the ESP8266 WiFi.disconnect(true); delay(2000); handleReset(); } } // Regardless of the above, we need to set the mDNS name and announce it if (!MDNS.begin(mdns_id.c_str())) { // TODO - Do something about it or log it or something } #endif #if BREWPI_BUZZER buzzer.init(); buzzer.beep(2, 500); #endif piLink.init(); #ifdef ESP8266_WiFi // If we're using WiFi, initialize the bridge server.begin(); server.setNoDelay(true); // mDNS will stop responding after awhile unless we query the specific service we want MDNS.addService("brewpi", "tcp", 23); MDNS.addServiceTxt("brewpi", "tcp", "board", "ESP8266"); MDNS.addServiceTxt("brewpi", "tcp", "branch", "legacy"); MDNS.addServiceTxt("brewpi", "tcp", "version", VERSION_STRING); MDNS.addServiceTxt("brewpi", "tcp", "revision", FIRMWARE_REVISION); #endif bool initialize = !eepromManager.hasSettings(); if(initialize) { eepromManager.zapEeprom(); // Writes all the empty files to SPIFFS logInfo(INFO_EEPROM_INITIALIZED); } logDebug("started"); tempControl.init(); settingsManager.loadSettings(); #if BREWPI_SIMULATE simulator.step(); // initialize the filters with the assigned initial temp value tempControl.beerSensor->init(); tempControl.fridgeSensor->init(); #endif display.init(); #ifdef ESP8266_WiFi display.printWiFi(); // Print the WiFi info (mDNS name & IP address) delay(8000); display.clear(); #endif display.printStationaryText(); display.printState(); // rotaryEncoder.init(); logDebug("init complete"); }
void loop(){ WiFiClient client = server.available(); // Listen for incoming clients if (client) { // Print local IP address and start web server Serial.println(""); Serial.println("WiFi connected."); Serial.println("IP address: "); Serial.println(WiFi.localIP()); //server.begin(); // If a new client connects, Serial.println("New Client."); // print a message out in the serial port String currentLine = ""; // make a String to hold incoming data from the client while (client.connected()) { // loop while the client's connected if (client.available()) { // if there's bytes to read from the client, char c = client.read(); // read a byte, then Serial.write(c); // print it out the serial monitor header += c; if (c == '\n') { // if the byte is a newline character // if the current line is blank, you got two newline characters in a row. // that's the end of the client HTTP request, so send a response: if (currentLine.length() == 0) { // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) // and a content-type so the client knows what's coming, then a blank line: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); // turns the GPIOs on and off if (header.indexOf("GET /5/on") >= 0) { Serial.println("GPIO 5 on"); output5State = "on"; digitalWrite(output5, HIGH); } else if (header.indexOf("GET /5/off") >= 0) { Serial.println("GPIO 5 off"); output5State = "off"; digitalWrite(output5, LOW); } else if (header.indexOf("GET /4/on") >= 0) { Serial.println("GPIO 4 on"); output4State = "on"; digitalWrite(output4, HIGH); } else if (header.indexOf("GET /4/off") >= 0) { Serial.println("GPIO 4 off"); output4State = "off"; digitalWrite(output4, LOW); } // Display the HTML web page client.println("<!DOCTYPE html><html>"); client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"); client.println("<link rel=\"icon\" href=\"data:,\">"); // CSS to style the on/off buttons // Feel free to change the background-color and font-size attributes to fit your preferences client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}"); client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;"); client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}"); client.println(".button2 {background-color: #77878A;}</style></head>"); // Web Page Heading client.println("<body><h1>ESP8266 Web Server</h1>"); // Display current state, and ON/OFF buttons for GPIO 5 client.println("<p>GPIO 5 - State " + output5State + "</p>"); // If the output5State is off, it displays the ON button if (output5State=="off") { client.println("<p><a href=\"/5/on\"><button class=\"button\">ON</button></a></p>"); } else { client.println("<p><a href=\"/5/off\"><button class=\"button button2\">OFF</button></a></p>"); } // Display current state, and ON/OFF buttons for GPIO 4 client.println("<p>GPIO 4 - State " + output4State + "</p>"); // If the output4State is off, it displays the ON button if (output4State=="off") { client.println("<p><a href=\"/4/on\"><button class=\"button\">ON</button></a></p>"); } else { client.println("<p><a href=\"/4/off\"><button class=\"button button2\">OFF</button></a></p>"); } client.println("</body></html>"); // The HTTP response ends with another blank line client.println(); // Break out of the while loop break; } else { // if you got a newline, then clear currentLine currentLine = ""; } } else if (c != '\r') { // if you got anything else but a carriage return character, currentLine += c; // add it to the end of the currentLine } } } // Clear the header variable header = ""; // Close the connection client.stop(); Serial.println("Client disconnected."); Serial.println(""); } }
void apmode(){ WiFi.disconnect(); WiFi.mode(WIFI_AP); WiFi.softAP("ESP Arduino","password"); server.begin();//so that was important }
void mainloop() { /////////////////// // do data logging /////////////////// if (millis() >= ulNextMeas_ms) { ds18b20(); sendTeperatureTS(temp1, temp2, temp3, temp4); ulNextMeas_ms = millis() + ulMeasDelta_ms; pfTemp1[ulMeasCount % ulNoMeasValues] = temp1; pfTemp2[ulMeasCount % ulNoMeasValues] = temp2; pfTemp3[ulMeasCount % ulNoMeasValues] = temp3; pfTemp4[ulMeasCount % ulNoMeasValues] = temp4; pulTime[ulMeasCount % ulNoMeasValues] = millis() / 1000 + ulSecs2000_timer; Serial.print("Logging Temperature1: "); Serial.print(pfTemp1[ulMeasCount % ulNoMeasValues]); Serial.print(" deg Celsius - Temperature2: "); Serial.print(pfTemp2[ulMeasCount % ulNoMeasValues]); Serial.print(" deg Celsius - Temperature3: "); Serial.print(pfTemp3[ulMeasCount % ulNoMeasValues]); Serial.print(" deg Celsius - Temperature4: "); Serial.print(pfTemp4[ulMeasCount % ulNoMeasValues]); Serial.print(" deg Celsius - Time: "); Serial.println(pulTime[ulMeasCount % ulNoMeasValues]); ulMeasCount++; } // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data Serial.println("new client"); unsigned long ultimeout = millis() + 250; while (!client.available() && (millis() < ultimeout) ) { delay(1); } if (millis() > ultimeout) { Serial.println("client connection time-out!"); return; } // Read the first line of the request String sRequest = client.readStringUntil('\r'); //Serial.println(sRequest); client.flush(); // stop client, if request is empty if (sRequest == "") { Serial.println("empty request! - stopping client"); client.stop(); return; } // get path; end of path is either space or ? // Syntax is e.g. GET /?pin=MOTOR1STOP HTTP/1.1 String sPath = "", sParam = "", sCmd = ""; String sGetstart = "GET "; int iStart, iEndSpace, iEndQuest; iStart = sRequest.indexOf(sGetstart); if (iStart >= 0) { iStart += +sGetstart.length(); iEndSpace = sRequest.indexOf(" ", iStart); iEndQuest = sRequest.indexOf("?", iStart); // are there parameters? if (iEndSpace > 0) { if (iEndQuest > 0) { // there are parameters sPath = sRequest.substring(iStart, iEndQuest); sParam = sRequest.substring(iEndQuest, iEndSpace); } else { // NO parameters sPath = sRequest.substring(iStart, iEndSpace); } } } /////////////////////////////////////////////////////////////////////////////// // output parameters to serial, you may connect e.g. an Arduino and react on it /////////////////////////////////////////////////////////////////////////////// if (sParam.length() > 0) { int iEqu = sParam.indexOf("="); if (iEqu >= 0) { sCmd = sParam.substring(iEqu + 1, sParam.length()); Serial.print("Die Eingabe ist: "); Serial.println(sCmd); } } /////////////////////////// // format the html response /////////////////////////// // Startseite //////////////////////////////// String sResponse, sResponse2, sHeader; if (sPath == "/") { ulReqcount++; int iIndex = (ulMeasCount - 1) % ulNoMeasValues; sResponse = F("<html>\n<head>\n<title>WLAN Logger für Pufferspeichertemperatur</title>\n"); sResponse += F("</head>\n<body>\n<font color=\"#000000\"><body bgcolor=\"#d0d0f0\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\"><h1>WLAN Logger für Pufferspeichertemperatur</h1>SMASE<BR><BR><FONT SIZE=+1>Letzte Messung um "); sResponse += F("Seite: Temperaturen -> Zeigt die gemessenen Temperaturen an <br>"); sResponse += F("<hr>Seite: Grafik -> Zeigt den Temperaturverlauf (Diagramm) der letzten 24 h an <br>"); sResponse += F("<hr>Seite: Grafik -> Zeigt den Temperaturverlauf (Tabelle) der letzten 24 h an <br>"); sResponse += F("<hr>Seite: Settings -> Einstellungen <br>"); sResponse += F(" <div style=\"clear:both;\"></div>"); sResponse2 = F("<p>Temperaturverlauf - Seiten laden länger:<BR> <a href=\"/anzeige\"><button>Temperaturen</button></a> <a href=\"/grafik\"><button>Grafik</button></a> <a href=\"/tabelle\"><button>Tabelle</button></a> <a href=\"/settings\"><button>Settings</button></a></p>"); sResponse2 += MakeHTTPFooter().c_str(); // Send the response to the client client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length()).c_str()); client.print(sResponse); client.print(sResponse2); } if (sPath == "/anzeige") { ulReqcount++; int iIndex = (ulMeasCount - 1) % ulNoMeasValues; sResponse = F("<html>\n<head>\n<title>WLAN Logger für Pufferspeichertemperatur</title>\n<script type=\"text/javascript\" src=\"https://www.gstatic.com/charts/loader.js\"></script>\n"); sResponse += F("<script type=\"text/javascript\">\ngoogle.charts.load('current', {'packages':['gauge']});\n"); sResponse += F(" google.charts.setOnLoadCallback(drawGauge); \n"); sResponse += F("\nvar gaugeOptions = {min: 0, max: 100, greenFrom: 50, greenTo:75, yellowFrom: 75, yellowTo: 90,redFrom: 90, redTo: 100, minorTicks: 10, majorTicks: ['0','10','20','30','40','50','60','70','80','90','100']};\n"); sResponse += F(" var gauge; \n"); sResponse += F(" function drawGauge() { \n"); sResponse += F(" gaugeData = new google.visualization.DataTable(); \n"); sResponse += F(" gaugeData.addColumn('number', 'oben'); \n"); sResponse += F(" gaugeData.addColumn('number', 'mitte'); \n"); sResponse += F(" gaugeData.addColumn('number', 'unten'); \n"); sResponse += F(" gaugeData.addColumn('number', 'vorlauf'); \n"); sResponse += F(" gaugeData.addRows(2); \n"); sResponse += F(" gaugeData.setCell(0, 0, "); sResponse += pfTemp1[iIndex]; sResponse += F(" ); \n"); sResponse += F(" gaugeData.setCell(0, 1, "); sResponse += pfTemp2[iIndex]; sResponse += F(" ); \n"); sResponse += F(" gaugeData.setCell(0, 2, "); sResponse += pfTemp3[iIndex]; sResponse += F(" ); \n"); sResponse += F(" gaugeData.setCell(0, 3, "); sResponse += pfTemp4[iIndex]; sResponse += F(" ); \n"); sResponse += F(" gauge = new google.visualization.Gauge(document.getElementById('gauge_div')); \n"); sResponse += F(" gauge.draw(gaugeData, gaugeOptions); \n"); sResponse += F(" } \n"); sResponse += F(" </script> \n </head> \n <body> \n<font color=\"#000000\"><body bgcolor=\"#d0d0f0\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\"><h1>WLAN Logger für Pufferspeichertemperatur</h1>SMASE<BR><BR><FONT SIZE=+1>Letzte Messung um "); sResponse += epoch_to_string(pulTime[iIndex]).c_str(); sResponse += F(" UTC<BR>\n"); sResponse += F("<fieldset><legend>Pufferspeicher</legend>"); sResponse += F(" <div id=\"gauge_div\" style=\"width:140px; height: 560px;\"></div> \n"); sResponse += F("</fieldset>"); sResponse += F(" <div style=\"clear:both;\"></div>"); sResponse2 = F("<p>Temperaturverlauf - Seiten laden länger:<BR> <a href=\"/lauf\"><button>Vorlauf</button></a> <a href=\"/grafik\"><button>Grafik</button></a> <a href=\"/tabelle\"><button>Tabelle</button></a> <a href=\"/settings\"><button>Settings</button></a></p>"); sResponse2 += MakeHTTPFooter().c_str(); // Send the response to the client client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length()).c_str()); client.print(sResponse); client.print(sResponse2); } // Tabelle //////////////////////////////// else if (sPath == "/tabelle") //////////////////////////////////// // format the html page for /tabelle //////////////////////////////////// { ulReqcount++; unsigned long ulSizeList = MakeTable(&client, false); // get size of table first sResponse = F("<html><head><title>WLAN Logger für Pufferspeichertemperatur</title></head><body>"); sResponse += F("<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">"); sResponse += F("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">"); sResponse += F("<h1>WLAN Logger für Pufferspeichertemperatur</h1>"); sResponse += F("<FONT SIZE=+1>"); sResponse += F("<a href=\"/\"><button>Startseite</button></a><BR><BR>Letzte Messungen im Abstand von "); sResponse += ulMeasDelta_ms; sResponse += F("ms<BR>"); // here the big table will follow later - but let us prepare the end first // part 2 of response - after the big table sResponse2 = MakeHTTPFooter().c_str(); // Send the response to the client - delete strings after use to keep mem low client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length() + ulSizeList).c_str()); client.print(sResponse); sResponse = ""; MakeTable(&client, true); client.print(sResponse2); } // Diagramm //////////////////////////////// else if (sPath == "/grafik") /////////////////////////////////// // format the html page for /grafik /////////////////////////////////// { ulReqcount++; unsigned long ulSizeList = MakeList(&client, false); // get size of list first sResponse = F("<html>\n<head>\n<title>WLAN Logger für Pufferspeichertemperatur</title>\n<script type=\"text/javascript\" src=\"https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['corechart']}]}\"></script>\n"); sResponse += F("<script type=\"text/javascript\"> google.setOnLoadCallback(drawChart);\nfunction drawChart() {var data = google.visualization.arrayToDataTable([\n['Zeit / UTC', 'Temperatur1', 'Temperatur2', 'Temperatur3', 'Temperatur4'],\n"); // here the big list will follow later - but let us prepare the end first // part 2 of response - after the big list sResponse2 = F("]);\nvar options = {title: 'Verlauf',\n"); sResponse2 += F("curveType:'function',legend:{ position: 'bottom'}};"); sResponse2 += F("var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));chart.draw(data, options);}\n</script>\n</head>\n"); sResponse2 += F("<body>\n<font color=\"#000000\"><body bgcolor=\"#d0d0f0\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\"><h1>WLAN Logger für Pufferspeichertemperatur</h1><a href=\"/\"><button>Startseite</button></a><BR>"); sResponse2 += F("<BR>\n<div id=\"curve_chart\" style=\"width: 600px; height: 400px\"></div>"); sResponse2 += MakeHTTPFooter().c_str(); // Send the response to the client - delete strings after use to keep mem low client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length() + ulSizeList).c_str()); client.print(sResponse); sResponse = ""; MakeList(&client, true); client.print(sResponse2); } // Einstellungen //////////////////////////////// else if (sPath == "/settings") { EEPROM.begin(512); delay(10); String apiKey = ""; for (int i = 81; i < 100; i++) { //DEBUG_PRINT(i); apiKey += char(EEPROM.read(i)); } EEPROM.end(); Serial.println("Thinkspeak: " + apiKey); EEPROM.begin(512); delay(10); String zeit = ""; for (int i = 100; i < 105; i++) { zeit += char(EEPROM.read(i)); } EEPROM.end(); Serial.print("Das ist die Zeitverschiebung: "); Serial.println(zeit); String zeittext = ""; if (zeit != "0000") { zeittext = "Sommerzeit"; } else { zeittext = "Winterzeit"; } ulReqcount++; unsigned long ulSizeList = MakeTable(&client, false); // get size of table first sResponse = F("<html><head><title>WLAN Logger für Pufferspeichertemperatur</title></head><body>"); sResponse += F("<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">"); sResponse += F("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">"); sResponse += F("<h1>WLAN Logger für Pufferspeichertemperatur</h1>"); sResponse += F("<FONT SIZE=+1>"); sResponse += F("<a href=\"/\"><button>Startseite</button></a><BR><BR>Thingspeak API ist momentan: "); sResponse += apiKey; sResponse += F("<BR><BR>Das ist die Zeitverschiebung: "); sResponse += zeittext; sResponse += F("<fieldset><legend>EEPROM Setting</legend>"); sResponse += F("<p><a href=\"/reset\"><button>RESET</button></a> <a href=\"?pin=FUNCTION2ON\"><button>AUSLESEN</button></a></p>"); sResponse += F("</fieldset>"); sResponse += F("<fieldset><legend>Allgemein Setting</legend>"); sResponse += F("<p>Zeitumstellung <a href=\"?pin=SOMMERZEIT\"><button>SOMMERZEIT</button></a> <a href=\"?pin=WINTERZEIT\"><button>WINTERZEIT</button></a></p>"); sResponse += F("<form name=\"input\" action=\"\" method=\"get\">THINGSPEAK-API: <input type=\"text\" name=\"$\"><input type=\"submit\" value=\"Submit\"></form>"); sResponse += F("</fieldset>"); sResponse += F("<fieldset><legend>Temperatur kalibrieren</legend>"); sResponse += F("<p><a href=\"/temp1\"><button>Speicher oben</button></a> <a href=\"/temp2\"><button>Speicher mitte</button></a> <a href=\"/temp3\"><button>Speicher unten</button></a> <a href=\"/temp4\"><button>Vorlauf</button></a></p>"); sResponse += F("</fieldset>"); sResponse2 = MakeHTTPFooter().c_str(); // Send the response to the client client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length()).c_str()); client.print(sResponse); client.print(sResponse2); delay(100); ////////////////////// // react on parameters ////////////////////// if (sCmd.length() > 0) { // write received command to html page sResponse += "Kommando:" + sCmd + "<BR>"; // EEPROM RESET //////////////////////////////// if (sCmd.indexOf("FUNCTION1ON") >= 0) { EEPROM.begin(512); // write a 0 to all 512 bytes of the EEPROM for (int i = 0; i < 512; i++) { EEPROM.write(i, 0); EEPROM.end(); } } // SHOW EEPROM //////////////////////////////// else if (sCmd.indexOf("FUNCTION2ON") >= 0) { EEPROM.begin(512); delay(10); String string3 = ""; for (int i = 0; i < 150; i++) { //DEBUG_PRINT(i); string3 += char(EEPROM.read(i)); } EEPROM.end(); Serial.println(string3); } // SOMMERZEIT EINSTELLEN //////////////////////////////// else if (sCmd.indexOf("SOMMERZEIT") >= 0) { String sommer = "3600"; Serial.print("Das wird gespeichert in der seite: "); Serial.println(sommer); EEPROM.begin(512); delay(10); int si = 0; for (int i = 100; i < 105; i++) { char c; if (si < sommer.length()) { c = sommer[si]; } else { c = 0; } EEPROM.write(i, c); si++; } EEPROM.end(); Serial.println("Wrote " + sommer); } // WINTERZEIT EINSTELLEN //////////////////////////////// else if (sCmd.indexOf("WINTERZEIT") >= 0) { String winter = "0000"; Serial.print("Das wird gespeichert in der seite: "); Serial.println(winter); EEPROM.begin(512); delay(10); int si = 0; for (int i = 100; i < 105; i++) { char c; if (si < winter.length()) { c = winter[si]; } else { c = 0; } EEPROM.write(i, c); si++; } EEPROM.end(); Serial.println("Wrote " + winter); } // SET THINGSPEAK API //////////////////////////////// else { Serial.print("Das wird gespeichert in der seite: "); Serial.println(sCmd); EEPROM.begin(512); delay(10); int si = 0; for (int i = 81; i < 100; i++) { char c; if (si < sCmd.length()) { c = sCmd[si]; //DEBUG_PRINT("Wrote: "); //DEBUG_PRINT(c); } else { c = 0; } EEPROM.write(i, c); si++; } EEPROM.end(); Serial.println("Wrote " + sCmd); } } } // Kalibrieren Temperatur 1 //////////////////////////////// else if (sPath == "/temp1") //////////////////////////////////// // format the html page for /tabelle //////////////////////////////////// { EEPROM.begin(512); delay(10); String temp1k = ""; for (int i = 110; i < 115; i++) { temp1k += char(EEPROM.read(i)); } EEPROM.end(); Serial.print("Das ist die Zeitverschiebung: "); Serial.println(temp1k); // settings(); ulReqcount++; unsigned long ulSizeList = MakeTable(&client, false); // get size of table first sResponse = F("<html><head><title>WLAN Logger für Pufferspeichertemperatur</title></head><body>"); sResponse += F("<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">"); sResponse += F("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">"); sResponse += F("<h1>WLAN Logger für Pufferspeichertemperatur</h1>"); sResponse += F("<FONT SIZE=+1>"); sResponse += F("<a href=\"/\"><button>Startseite</button></a><BR><BR>Speicher oben: "); sResponse += temp1k; sResponse += F("Grad C<BR>"); sResponse += F("<form name=\"input\" action=\"\" method=\"get\">Speicher oben: <input type=\"text\" name=\"$\"><input type=\"submit\" value=\"Submit\"></form>"); sResponse += F("<p>Temperatur kalibrieren: <a href=\"/temp1\"><button>Speicher oben</button></a> <a href=\"/temp2\"><button>Speicher mitte</button></a> <a href=\"/temp3\"><button>Speicher unten</button></a> <a href=\"/temp4\"><button>Vorlauf</button></a> </p>"); sResponse2 = MakeHTTPFooter().c_str(); // Send the response to the client client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length()).c_str()); client.print(sResponse); client.print(sResponse2); delay(100); ////////////////////// // react on parameters ////////////////////// if (sCmd.length() > 0) { // write received command to html page sResponse += "Kommando:" + sCmd + "<BR>"; // SET THINGSPEAK API //////////////////////////////// if (sCmd.toInt() != 0) { Serial.print("Das wird gespeichert in der seite: "); Serial.println(sCmd); EEPROM.begin(512); delay(10); int si = 0; for (int i = 110; i < 115; i++) { char c; if (si < sCmd.length()) { c = sCmd[si]; //DEBUG_PRINT("Wrote: "); //DEBUG_PRINT(c); } else { c = 0; } EEPROM.write(i, c); si++; } EEPROM.end(); Serial.println("Wrote " + sCmd); } else { Serial.println("Der Wert " + sCmd + " war keine Zahl!!!"); } } } // Kalibrieren Temperatur 2 //////////////////////////////// else if (sPath == "/temp2") //////////////////////////////////// // format the html page for /tabelle //////////////////////////////////// { EEPROM.begin(512); delay(10); String temp2k = ""; for (int i = 115; i < 120; i++) { temp2k += char(EEPROM.read(i)); } EEPROM.end(); Serial.print("Das ist die Zeitverschiebung: "); Serial.println(temp2k); // settings(); ulReqcount++; unsigned long ulSizeList = MakeTable(&client, false); // get size of table first sResponse = F("<html><head><title>WLAN Logger für Pufferspeichertemperatur</title></head><body>"); sResponse += F("<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">"); sResponse += F("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">"); sResponse += F("<h1>WLAN Logger für Pufferspeichertemperatur</h1>"); sResponse += F("<FONT SIZE=+1>"); sResponse += F("<a href=\"/\"><button>Startseite</button></a><BR><BR>Speicher mitte: "); sResponse += temp2k; sResponse += F("Grad C<BR>"); sResponse += F("<form name=\"input\" action=\"\" method=\"get\">Speicher mitte: <input type=\"text\" name=\"$\"><input type=\"submit\" value=\"Submit\"></form>"); sResponse += F("<p>Temperatur kalibrieren: <a href=\"/temp1\"><button>Speicher oben</button></a> <a href=\"/temp2\"><button>Speicher mitte</button></a> <a href=\"/temp3\"><button>Speicher unten</button></a> <a href=\"/temp4\"><button>Vorlauf</button></a> </p>"); sResponse2 = MakeHTTPFooter().c_str(); // Send the response to the client client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length()).c_str()); client.print(sResponse); client.print(sResponse2); delay(100); ////////////////////// // react on parameters ////////////////////// if (sCmd.length() > 0) { // write received command to html page sResponse += "Kommando:" + sCmd + "<BR>"; // SET THINGSPEAK API //////////////////////////////// if (sCmd.toInt() != 0) { Serial.print("Das wird gespeichert in der seite: "); Serial.println(sCmd); EEPROM.begin(512); delay(10); int si = 0; for (int i = 115; i < 120; i++) { char c; if (si < sCmd.length()) { c = sCmd[si]; //DEBUG_PRINT("Wrote: "); //DEBUG_PRINT(c); } else { c = 0; } EEPROM.write(i, c); si++; } EEPROM.end(); Serial.println("Wrote " + sCmd); } else { Serial.println("Der Wert " + sCmd + " war keine Zahl!!!"); } } } // Kalibrieren Temperatur 3 //////////////////////////////// else if (sPath == "/temp3") //////////////////////////////////// // format the html page for /tabelle //////////////////////////////////// { EEPROM.begin(512); delay(10); String temp3k = ""; for (int i = 120; i < 125; i++) { temp3k += char(EEPROM.read(i)); } EEPROM.end(); Serial.print("Das ist der aktuelle Korrekturwert: "); Serial.println(temp3k); // settings(); ulReqcount++; unsigned long ulSizeList = MakeTable(&client, false); // get size of table first sResponse = F("<html><head><title>WLAN Logger für Pufferspeichertemperatur</title></head><body>"); sResponse += F("<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">"); sResponse += F("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">"); sResponse += F("<h1>WLAN Logger für Pufferspeichertemperatur</h1>"); sResponse += F("<FONT SIZE=+1>"); sResponse += F("<a href=\"/\"><button>Startseite</button></a><BR><BR>Speicher unten "); sResponse += temp3k; sResponse += F("Grad C<BR>"); sResponse += F("<form name=\"input\" action=\"\" method=\"get\">Speicher unten: <input type=\"text\" name=\"$\"><input type=\"submit\" value=\"Submit\"></form>"); sResponse += F("<p>Temperatur kalibrieren: <a href=\"/temp1\"><button>Speicher oben</button></a> <a href=\"/temp2\"><button>Speicher mitte</button></a> <a href=\"/temp3\"><button>Speicher unten</button></a> <a href=\"/temp4\"><button>Vorlauf</button></a> </p>"); sResponse2 = MakeHTTPFooter().c_str(); // Send the response to the client client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length()).c_str()); client.print(sResponse); client.print(sResponse2); delay(100); ////////////////////// // react on parameters ////////////////////// if (sCmd.length() > 0) { // write received command to html page sResponse += "Kommando:" + sCmd + "<BR>"; // SET THINGSPEAK API //////////////////////////////// if (sCmd.toInt() != 0) { Serial.print("Das wird gespeichert in der seite: "); Serial.println(sCmd); EEPROM.begin(512); delay(10); int si = 0; for (int i = 120; i < 125; i++) { char c; if (si < sCmd.length()) { c = sCmd[si]; //DEBUG_PRINT("Wrote: "); //DEBUG_PRINT(c); } else { c = 0; } EEPROM.write(i, c); si++; } EEPROM.end(); Serial.println("Wrote " + sCmd); } else { Serial.println("Der Wert " + sCmd + " war keine Zahl!!!"); } } } // Kalibrieren Temperatur 4 //////////////////////////////// else if (sPath == "/temp4") //////////////////////////////////// // format the html page for /tabelle //////////////////////////////////// { EEPROM.begin(512); delay(10); String temp4k = ""; for (int i = 125; i < 130; i++) { temp4k += char(EEPROM.read(i)); } EEPROM.end(); Serial.print("Das ist die Zeitverschiebung: "); Serial.println(temp4k); // settings(); ulReqcount++; unsigned long ulSizeList = MakeTable(&client, false); // get size of table first sResponse = F("<html><head><title>WLAN Logger für Pufferspeichertemperatur</title></head><body>"); sResponse += F("<font color=\"#000000\"><body bgcolor=\"#d0d0f0\">"); sResponse += F("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\">"); sResponse += F("<h1>WLAN Logger für Pufferspeichertemperatur</h1>"); sResponse += F("<FONT SIZE=+1>"); sResponse += F("<a href=\"/\"><button>Startseite</button></a><BR><BR>Anpassung Vorlauf: "); sResponse += temp4k; sResponse += F("Grad C<BR>"); sResponse += F("<form name=\"input\" action=\"\" method=\"get\">Vorlauf: <input type=\"text\" name=\"$\"><input type=\"submit\" value=\"Submit\"></form>"); sResponse += F("<p>Temperatur kalibrieren: <a href=\"/temp1\"><button>Speicher oben</button></a> <a href=\"/temp2\"><button>Speicher mitte</button></a> <a href=\"/temp3\"><button>Speicher unten</button></a> <a href=\"/temp4\"><button>Vorlauf</button></a> </p>"); sResponse2 = MakeHTTPFooter().c_str(); // Send the response to the client client.print(MakeHTTPHeader(sResponse.length() + sResponse2.length()).c_str()); client.print(sResponse); client.print(sResponse2); delay(100); ////////////////////// // react on parameters ////////////////////// if (sCmd.length() > 0) { // write received command to html page sResponse += "Kommando:" + sCmd + "<BR>"; // SET THINGSPEAK API //////////////////////////////// if (sCmd.toInt() != 0) { Serial.print("Das wird gespeichert in der seite: "); Serial.println(sCmd); EEPROM.begin(512); delay(10); int si = 0; for (int i = 125; i < 130; i++) { char c; if (si < sCmd.length()) { c = sCmd[si]; //DEBUG_PRINT("Wrote: "); //DEBUG_PRINT(c); } else { c = 0; } EEPROM.write(i, c); si++; } EEPROM.end(); Serial.println("Wrote " + sCmd); } else { Serial.println("Der Wert " + sCmd + " war keine Zahl!!!"); } } } // Send the response to the client client.print(sHeader); client.print(sResponse); // and stop the client client.stop(); Serial.println("Client disconnected"); }