HaWe
05.06.2018, 11:11
hi,
mein esp8266 Wifi Server funktioniert zwar meist gut, aber manchmal (gerade über Nacht) verliert er wohl die Verbindung zu meinem Speedport Router, und wenn ich dann morgens aufs Display gucke, sehe ich, dass er in der setup-Routine festhängt, sich versucht einzuloggen/anzumelden, aber es wohl nicht klappt (Anzeige Progress zwischen 80 und 98%):
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
WiFiServer wifiserver(http_port);
ESP8266WebServer lanserver(8081);
void setup() {
// **SNIP**
WiFi.begin(ssid, password);
WiFi.config(this_ip, gateway, subnet); // feste IP
while (WiFi.status() != WL_CONNECTED) { // <<<<<<<<<<<<<<<<<<<<<<<<
if(digitalRead(PIN_BTND5)) display.setRotation(0);
else display.setRotation(2);
delay(500);
Serial.print(".");
display.clearDisplay();
display.setCursor( 0, 20); display.print("WiFi connecting...");
drawHorizontalBargraph( 0, 30, (int16_t) display.width(), 9, 1, progress); // <<<<<<<<<<<<<<<<<<<<<<<<
display.setCursor( 0, 40); display.print((String)progress + "%");
if (progress >= 98) {
progress = 80;
Serial.println();
}
display.display();
if (progress < 10) progress += 5;
else if (progress < 50) progress += 2;
else if (progress < 90) progress += 1;
}
display.clearDisplay();
progress = 100;
display.setCursor( 0, 20); display.print("WiFi connecting...");
drawHorizontalBargraph( 0, 30, (int16_t) display.width(), 9, 1, progress);
display.setCursor( 0, 40); display.print((String)progress + "%");
display.display();
delay(300);
Serial.println("");
Serial.print("WiFi connected: ");
Serial.println(WiFi.gatewayIP());
//----------------------------------------
// Start the WiFi server (-> www)
wifiserver.begin();
Serial.println("WiFi Server started");
//----------------------------------------
// Start the ESP LAN server (-> ESP client)
lanserver.on("/",handleRoot) ;
lanserver.on("/client/client0/", handleClientIOs);
delay(100);
lanserver.on("/client/client1/", handleClientIOs);
delay(100);
lanserver.on("/client/client2/", handleClientIOs);
delay(100);
lanserver.begin();
Serial.println("ESP Server started");
// **SNIP**
}
Auch durch resetten am esp klappt es nicht (er startet dann zwar neu, blockiert aber sofort erneut wieder), offenbar ist die statische IP (x.x.x.200) am Router (noch) blockiert, erst wenn ich kurzzeitig das Netzteil komplett ausstöpsele und dann neu einstecke, funktioniert es wieder (sofort, ohne Probleme) .
Das gleiche Problem tritt auf, wenn der ESP via USB-Kabel mit meiner Arduino-IDE auf dem PC verbunden ist und ich eine neue Programmversion aufspiele, auch dann versucht er sich am Router anzumelden, wird aber blockiert. Auch hier hilft nur kurzzeitige Entfernung des USB/Stromkabels (Stromversorgung via USB-Kabel), danach läuft alles wieder.
Ich müsste jetzt also irgend welche Befehle einfügen, die dieses Verbindungsproblem bei blockierter IP nach Neustart kurzfristig händeln, nur wie könnte man das machen?
mein esp8266 Wifi Server funktioniert zwar meist gut, aber manchmal (gerade über Nacht) verliert er wohl die Verbindung zu meinem Speedport Router, und wenn ich dann morgens aufs Display gucke, sehe ich, dass er in der setup-Routine festhängt, sich versucht einzuloggen/anzumelden, aber es wohl nicht klappt (Anzeige Progress zwischen 80 und 98%):
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
WiFiServer wifiserver(http_port);
ESP8266WebServer lanserver(8081);
void setup() {
// **SNIP**
WiFi.begin(ssid, password);
WiFi.config(this_ip, gateway, subnet); // feste IP
while (WiFi.status() != WL_CONNECTED) { // <<<<<<<<<<<<<<<<<<<<<<<<
if(digitalRead(PIN_BTND5)) display.setRotation(0);
else display.setRotation(2);
delay(500);
Serial.print(".");
display.clearDisplay();
display.setCursor( 0, 20); display.print("WiFi connecting...");
drawHorizontalBargraph( 0, 30, (int16_t) display.width(), 9, 1, progress); // <<<<<<<<<<<<<<<<<<<<<<<<
display.setCursor( 0, 40); display.print((String)progress + "%");
if (progress >= 98) {
progress = 80;
Serial.println();
}
display.display();
if (progress < 10) progress += 5;
else if (progress < 50) progress += 2;
else if (progress < 90) progress += 1;
}
display.clearDisplay();
progress = 100;
display.setCursor( 0, 20); display.print("WiFi connecting...");
drawHorizontalBargraph( 0, 30, (int16_t) display.width(), 9, 1, progress);
display.setCursor( 0, 40); display.print((String)progress + "%");
display.display();
delay(300);
Serial.println("");
Serial.print("WiFi connected: ");
Serial.println(WiFi.gatewayIP());
//----------------------------------------
// Start the WiFi server (-> www)
wifiserver.begin();
Serial.println("WiFi Server started");
//----------------------------------------
// Start the ESP LAN server (-> ESP client)
lanserver.on("/",handleRoot) ;
lanserver.on("/client/client0/", handleClientIOs);
delay(100);
lanserver.on("/client/client1/", handleClientIOs);
delay(100);
lanserver.on("/client/client2/", handleClientIOs);
delay(100);
lanserver.begin();
Serial.println("ESP Server started");
// **SNIP**
}
Auch durch resetten am esp klappt es nicht (er startet dann zwar neu, blockiert aber sofort erneut wieder), offenbar ist die statische IP (x.x.x.200) am Router (noch) blockiert, erst wenn ich kurzzeitig das Netzteil komplett ausstöpsele und dann neu einstecke, funktioniert es wieder (sofort, ohne Probleme) .
Das gleiche Problem tritt auf, wenn der ESP via USB-Kabel mit meiner Arduino-IDE auf dem PC verbunden ist und ich eine neue Programmversion aufspiele, auch dann versucht er sich am Router anzumelden, wird aber blockiert. Auch hier hilft nur kurzzeitige Entfernung des USB/Stromkabels (Stromversorgung via USB-Kabel), danach läuft alles wieder.
Ich müsste jetzt also irgend welche Befehle einfügen, die dieses Verbindungsproblem bei blockierter IP nach Neustart kurzfristig händeln, nur wie könnte man das machen?