Verbindungsabbruch Wemos D1

Hallo,

ich bin dabei, meinen Wasserzähler mit einem Wemos D1 mini auslesen zu lassen und den Verbrauch zu meiner Homematic senden zu lassen. Das auslesen funktioniert soweit zuverlässig.
Nur verliert er mehrmals pro Stunde die WLAN-Verbindung, wobei ähnliche Projekte bei mir zu Hause seit Jahren zuverlässig funken.
Die Stromversorung läuft über ein 1A 5V-Netzteil, zusätzlich ein 100 uf-Kondensator zwischen 5V-Pin und GND. Selbst bei zusätzlichem Anschluss über USB tritt der Fehler auf.
Auch habe ich es schon mit einem anderen Wemos D1 mini probiert, keine Verbesserung.
Ansonsten hängt nur eine Photodiode an A0.
Er steht nur 2m neben meinem Router, die Fritzbox zeigt ein kräftiges Signal an.

Softwareseitig diente ein anderer Sketch als Vorlage, der schon Jahre zuverlässig Daten sendet.

#include <ESP8266WiFi.h>
// #include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <EEPROM.h>

int PhotoPin = A0;
unsigned long vergangeneZeit = 0;  // Zeitzähler Zählerauslesen 100ms
unsigned long aktuelleZeit = 0;
int Scheibe = 2;  //Zählscheibe hell 1 /dunkel 0
int Sensitiv = 15;
int Helligkeit[100] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
float HelligkeitMin = 0;
float HelligkeitMittel = 0;
float HelligkeitMax = 0;
int Durchlauf = 0;  

int onlinezeittage = 0;  // Onlinezeit
int onlinezeittagegesamt = 0;
int onlinezeit = millis();

int rebootscounter = 0;  // Neustart WLAN

unsigned long vergangeneZeitHM = 0;  // Homematic stündlich kontaktieren
unsigned long aktuelleZeitHM = 0;

unsigned long vergangeneZeitWLAN = 0;  // Intervall zum Wifi-check

unsigned long Verbrauchh = 0;  // Verbrauchszählung
unsigned long Verbrauchd = 0;
unsigned long Verbrauchw = 0;

String Tag = "";  //Zeitübertragung Homematic
String Tagalt = "";

unsigned long timeout = 0;  // timeout beim warten auf Homematic
String url = "";            // url zum Daten senden an Homematic
const int httpPort = 80;    // Port der Homematic


const char* ssid = "****";
const char* password = "****";
const char* HomematicIP = "****";

String webString = "";  // Server-String

ESP8266WebServer server(80);

void setup() {
  EEPROM.begin(502);
  Serial.begin(115200);

  initWifi();

  EEPROM.get(15, Verbrauchw);
  EEPROM.get(25, onlinezeittagegesamt);

  pinMode(PhotoPin, INPUT);

  delay(300);

  for (int i = 0; i < 100; i++) {
    Helligkeit[i] = analogRead(PhotoPin) * 10;
    delay(5);
  }

  server.on("/", SchleifeServerRoot);

  server.begin();
  Serial.println("HTTP Server gestartet");
}


void loop() {

  server.handleClient();

  if ((millis() - onlinezeit) > (1000 * 60 * 60 * 24)) {
    onlinezeit = millis();
    ++onlinezeittage;
    ++onlinezeittagegesamt;
    EEPROM.put(25, onlinezeittagegesamt);
    EEPROM.commit();
  }

  aktuelleZeitHM = millis();

  if (aktuelleZeitHM - vergangeneZeitHM >= 3600000) {  //einmal stündlich Zählerstand melden
    vergangeneZeitHM = aktuelleZeitHM;
    Verbindung();
  }

  aktuelleZeit = millis();

  if (aktuelleZeit - vergangeneZeit >= 1) {
    vergangeneZeit = aktuelleZeit;

    Durchlauf++;
    
    if (Durchlauf == 100) { Durchlauf = 0; }

    Helligkeit[Durchlauf] = analogRead(PhotoPin);



    if (Durchlauf == 0) {

      HelligkeitMittel = 0;      
      for (int i = 0; i < 100; i++) {
        HelligkeitMittel = HelligkeitMittel + Helligkeit[i];
      }
      HelligkeitMittel = HelligkeitMittel / 100;

      checkWifi();  // Kontrolle WLAN
      
      if (WiFi.status() == WL_CONNECTED) {
        rebootscounter = 0;
      }

      // Serial.print(Helligkeit[Durchlauf]);  //zum Fehler ermitteln einschalten
      // Serial.print("    ");                 //zum Fehler ermitteln einschalten
      // Serial.print(HelligkeitMittel);
      // Serial.println();


      if (Scheibe == 2) {
        if (HelligkeitMittel < HelligkeitMin) { HelligkeitMin = HelligkeitMittel; }
        if (HelligkeitMittel > HelligkeitMax) { HelligkeitMax = HelligkeitMittel; }
        if (HelligkeitMittel > HelligkeitMin + Sensitiv) { Scheibe = 1; }
        if (HelligkeitMittel < HelligkeitMax - Sensitiv) { Scheibe = 0; }
      }

      if (Scheibe == 1) {
        if (HelligkeitMittel > HelligkeitMax) {
          HelligkeitMax = HelligkeitMittel;
          if (HelligkeitMittel > HelligkeitMin + Sensitiv) {
            HelligkeitMin = HelligkeitMittel - Sensitiv;
          }
        }
        if (HelligkeitMittel < HelligkeitMin) {
          HelligkeitMin = HelligkeitMittel;
          if (HelligkeitMittel < HelligkeitMax - Sensitiv) {
            HelligkeitMax = HelligkeitMittel + Sensitiv;
          }
          Scheibe = 0;
          Serial.println();
          Serial.println("Wechsel auf Dunkel!");
          Serial.println();
        }
      }

      if (Scheibe == 0) {
        if (HelligkeitMittel < HelligkeitMin) {
          HelligkeitMin = HelligkeitMittel;
          if (HelligkeitMittel < HelligkeitMax - Sensitiv) {
            HelligkeitMax = HelligkeitMittel + Sensitiv;
          }
        }
        if (HelligkeitMittel > HelligkeitMax) {
          HelligkeitMax = HelligkeitMittel;
          if (HelligkeitMittel > HelligkeitMin + Sensitiv) {
            HelligkeitMin = HelligkeitMittel - Sensitiv;
          }
          Scheibe = 1;
          Wasser();
          Serial.println();
          Serial.println("Wechsel auf Hell!");
          Serial.println();
        }
      }
    }
  }
}

void Wasser() {
  Verbrauchh++;
  Verbrauchd++;
  Verbrauchw++;
}

void initWifi() {
  Serial.print("Connecting to ");  // Verbindung mit WLAN
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);

  WiFi.begin(ssid, password);
  uint8_t VersucheCount = 0;
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
    VersucheCount++;
    if (VersucheCount >= 6 && WiFi.status() == WL_CONNECT_FAILED) {
      WiFi.begin(ssid, password);
      VersucheCount = 0;  // ESP32-workaround (otherwise WiFi-connection sometimes fails)
    }
  }
  Serial.println("");  // Die IP vom Webserver auf dem seriellen Monitor ausgeben
  Serial.println("WLAN verbunden.");
  Serial.println("IP Adresse: ");
  Serial.println(WiFi.localIP());
}

void checkWifi() {
  aktuelleZeit = millis();
  if ((WiFi.status() != WL_CONNECTED) && (aktuelleZeit - vergangeneZeitWLAN >= 30000)) {  // check Wifi-Verbindung alle 30 Sekunden
    Serial.print(millis());
    Serial.println("Reconnecting to WiFi...");
    WiFi.disconnect();
    delay(50);
    WiFi.reconnect();
    delay(50);
    vergangeneZeitWLAN = aktuelleZeit;
    rebootscounter++;
  }
  if (rebootscounter == 10) {  // speichern, Auszeit, neues WLAN

    rebootscounter = 0,
    EEPROM.put(15, Verbrauchw);
    EEPROM.put(25, onlinezeittagegesamt);
    EEPROM.commit();
    Serial.println();
    Serial.println("WLAN reagiert nicht !!!!");
    Serial.println("10 Sekunden Wartezeit...");
    Serial.println();
    delay(5000);
    WiFi.disconnect();
    delay(5000);
    initWifi();
  }
}

void Verbindung() {
  checkWifi();
  WiFiClient client;  //Datenübertragung Verbrauch Stunde
  if (!client.connect(HomematicIP, httpPort)) {
    Serial.println("Verbindungsaufbau zu Homematic fehlgeschlagen");
    return;
  } else {
    Serial.println("Verbindung zu Homematic hergestellt");
  }
  // jetzt setzen wir die URL für die Datenübermittlung zusammen
  url = "/config/xmlapi/statechange.cgi?ise_id=18741&new_value=";
  url += Verbrauchh;
  // jetzt senden wir die Anfrage an die Homematic
  client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + HomematicIP + "\r\n" + "Connection: close\r\n\r\n");
  timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Homematic Timeout !");
      client.stop();
      return;
    }
  }
  // lese die Antwort von Homematic und gibt sie seriell aus
  while (client.available()) {
    String line = client.readStringUntil('\r');
    Serial.print(line);

    if (line.substring(1, 5) == "Date") {  // auslesen Tag
      Tag = line.substring(7, 10);
      Serial.println();
      Serial.print("lese Wochentag: ");
      Serial.println(Tag);
    }
  }
  Serial.println();
  Serial.println("closing connection");

  Verbrauchh = 0;

  if (Tagalt == "") { Tagalt = Tag; }

  if (Tag != Tagalt) { VerbindungTag(); }
}

void VerbindungTag() {

  if (Tag == "Mon") { VerbindungWoche(); }
  Tagalt = Tag;

  checkWifi();
  WiFiClient client;  //Datenübertragung Verbrauch Tag
  if (!client.connect(HomematicIP, httpPort)) {
    Serial.println("Verbindungsaufbau zu Homematic fehlgeschlagen");
    return;
  } else {
    Serial.println("Verbindung zu Homematic hergestellt");
  }
  // jetzt setzen wir die URL für die Datenübermittlung zusammen
  url = "/config/xmlapi/statechange.cgi?ise_id=18742&new_value=";

  // jetzt senden wir die Anfrage an die Homematic
  client.print(String("GET ") + url + Verbrauchd + " HTTP/1.1\r\n" + "Host: " + HomematicIP + "\r\n" + "Connection: close\r\n\r\n");
  timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Homematic Timeout !");
      client.stop();
      return;
    }
  }
  // lese die Antwort von Homematic und gibt sie seriell aus
  while (client.available()) {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  Serial.println();
  Serial.println("closing connection");

  Verbrauchd = 0;
  EEPROM.put(15, Verbrauchw);
  EEPROM.commit();
}


void VerbindungWoche() {
  checkWifi();
  WiFiClient client;  //Datenübertragung Verbrauch Woche
  if (!client.connect(HomematicIP, httpPort)) {
    Serial.println("Verbindungsaufbau zu Homematic fehlgeschlagen");
    return;
  } else {
    Serial.println("Verbindung zu Homematic hergestellt");
  }
  // jetzt setzen wir die URL für die Datenübermittlung zusammen
  url = "/config/xmlapi/statechange.cgi?ise_id=18743&new_value=";

  // jetzt senden wir die Anfrage an die Homematic
  client.print(String("GET ") + url + Verbrauchw + " HTTP/1.1\r\n" + "Host: " + HomematicIP + "\r\n" + "Connection: close\r\n\r\n");
  timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      Serial.println(">>> Homematic Timeout !");
      client.stop();
      return;
    }
  }
  // lese die Antwort von Homematic und gibt sie seriell aus
  while (client.available()) {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  Serial.println();
  Serial.println("closing connection");

  Verbrauchw = 0;
}

void SchleifeServerRoot() {

  webString = "<!DOCTYPE html> <html>\n";
  webString += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  // webString +="<meta http-equiv=\"refresh\" content=\"2\">\n"; //Automatische Seitenaktualisierung verursacht Absturz
  webString += "<title>Kaltwasserzaehler</title>\n";
  webString += "<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  webString += "h1 {color: #0000FF;}\n";  //
  webString += "body{margin-top: 50px;} h1 {color: #0000FF;margin: 50px auto 30px;}\n";
  webString += "p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
  webString += "</style>\n";
  webString += "</head>\n";
  webString += "<body>\n";
  webString += "<div id=\"webpage\">\n";
  webString += "<h1>Hallo von der Erfassung Kaltwasser!</h1>\n";

  webString += "<p>aktueller Verbrauch Stunde: ";
  webString += String((int)Verbrauchh);
  webString += " Liter</p>";

  webString += "<p>aktueller Verbrauch Tag: ";
  webString += String((int)Verbrauchd);
  webString += " Liter</p>";

  webString += "<p>aktueller Verbrauch Woche: ";
  webString += String((int)Verbrauchw);
  webString += " Liter</p>";

  webString += "<p>Online seit: ";
  webString += String((int)onlinezeittage);
  webString += " Tagen</p>";

  webString += "<p>Gesamtlaufzeit: ";
  webString += String((int)onlinezeittagegesamt);
  webString += " Tage</p>";

  webString += "</div>\n";
  webString += "</body>\n";
  webString += "</html>\n";

  server.send(200, "text/html", webString);
  delay(100);
  Serial.println("------------Webseite aufgebaut------------");
}

Interessant sind wohl hauptsächlich "void initWifi()" und "void checkWifi()".

Was sind noch Fehlerquellen, was kann ich probieren?

Vielen Dank und schon mal schöne Feiertage!

Hast du dir das die serielle Schnittstelle mit einem Monitor angesehen?
Vielleicht greift der Watchdog und der Controller bootet neu?

Erst mall die Zeiten runterfahren, und den Hund mall futern, bin der meinung das die Zeiten zu hoch sind.
Lese mall auf wolles-elektronikkiste.de dort ist das schön beschrieben

Ich habe vorhin in void checkWifi() "WiFi.status() != WL_CONNECTED" gegen "WiFi.status() == WL_CONNECT_FAILED" getauscht. Anscheinend verbindet er sich nun viel seltener neu, allerdings kann auch keine Verbindung zu Homematic mehr hergestellt werden :frowning:
Ansonsten bootet er nicht neu, sondern zählt den Wasserverbrauch brav weiter. Also möchte ich den Watchdog ausschließen.

10:32:36.680 -> ....
10:32:38.881 -> WLAN verbunden.
10:32:38.881 -> IP Adresse: 
10:32:38.881 -> 192.168.178.41
10:32:39.699 -> HTTP Server gestartet
10:32:52.090 -> 
10:32:52.090 -> Wechsel auf Dunkel!
10:32:52.090 -> 
10:32:53.493 -> 
10:32:53.493 -> Wechsel auf Hell!
10:32:53.493 -> 
10:33:23.788 -> ------------Webseite aufgebaut------------
10:34:51.419 -> 136844Reconnecting to WiFi...
10:50:09.733 -> 
10:50:09.733 -> Wechsel auf Dunkel!
10:50:09.733 -> 
10:50:10.633 -> 
10:50:10.633 -> Wechsel auf Hell!
10:50:10.633 -> 
10:50:16.224 -> 
10:50:16.224 -> Wechsel auf Dunkel!
10:50:16.224 -> 
10:50:17.005 -> 
10:50:48.430 -> Wechsel auf Hell!
10:50:48.430 -> 
11:32:34.621 -> Verbindungsaufbau zu Homematic fehlgeschlagen
12:09:36.770 -> 
12:09:36.770 -> Wechsel auf Dunkel!
12:09:36.770 -> 
12:09:38.386 -> 
12:09:38.386 -> Wechsel auf Hell!
12:09:38.386 -> 
12:32:34.640 -> Verbindungsaufbau zu Homematic fehlgeschlagen

Hallo,
ist er dann aus der Fritzbox auch abgemeldet ?
d.h er hängt Irgendwo aber die Messung selbst macht er noch , bzw. er reagiert auch nicht mehr auf die Webseiten Anforderung

das könnte irgendwann schief gehen

Mich wundert eigentlich das er die Verbindung verliert , die Abfrage auf

(WiFi.status() != WL_CONNECTED)

quasi im Loop mach ich eigendlich nur weil die Fritzbox ja mal spannungslos gewesen sein könnte und sich in dem Fall das Ding neu verbinden muss.

das könnte irgendwann schief gehen

Heinz

Danke Heinz für den Hinweis zu "int onlinezeit", ich habs in unsigned long geändert.

Zusätzlich habe ich "WiFi.status() == WL_CONNECT_FAILED" wieder gegen "WiFi.status() != WL_CONNECTED" geändert. Nun kann man das Verbindungsproblem schön im seriellen Monitor sehen. Was mich stutzig macht: Nach 5 min WLAN-Verbindung bricht sie wieder ab ?!?

14:36:23.890 -> ....
14:36:26.112 -> WLAN verbunden.
14:36:26.112 -> IP Adresse: 
14:36:26.112 -> 192.168.178.41
14:36:26.903 -> HTTP Server gestartet
14:36:50.019 -> 
14:36:50.019 -> Wechsel auf Dunkel!
14:36:50.020 -> 
14:36:53.105 -> 
14:36:53.105 -> Wechsel auf Hell!
14:36:53.105 -> 
14:37:11.977 -> ------------Webseite aufgebaut------------
14:43:43.254 -> 441439Reconnecting to WiFi...
14:44:13.237 -> 471439Reconnecting to WiFi...
14:44:43.344 -> 501538Reconnecting to WiFi...
14:45:13.450 -> 531637Reconnecting to WiFi...
14:45:43.545 -> 561736Reconnecting to WiFi...
14:46:13.657 -> 591835Reconnecting to WiFi...
14:46:43.745 -> 621934Reconnecting to WiFi...
14:47:13.832 -> 652033Reconnecting to WiFi...
14:47:43.952 -> 682132Reconnecting to WiFi...
14:48:14.033 -> 712231Reconnecting to WiFi...
14:48:14.159 -> 
14:48:14.159 -> WLAN reagiert nicht !!!!
14:48:14.159 -> 10 Sekunden Wartezeit...
14:48:14.159 -> 
14:48:24.184 -> Connecting to mein Netzwerk
14:48:24.636 -> ...................................
14:48:42.404 -> WLAN verbunden.
14:48:42.404 -> IP Adresse: 
14:48:42.404 -> 192.168.178.41
14:52:09.212 -> 
14:52:09.212 -> Wechsel auf Hell!
14:52:09.212 -> 
14:52:14.601 -> 
14:52:14.601 -> Wechsel auf Dunkel!
14:52:14.601 -> 
14:52:15.410 -> 
14:52:15.410 -> Wechsel auf Hell!
14:52:15.410 -> 
14:52:20.696 -> 
14:52:20.696 -> Wechsel auf Dunkel!
14:52:20.696 -> 
14:52:21.599 -> 
14:52:21.599 -> Wechsel auf Hell!
14:52:21.599 -> 
14:52:27.121 -> 
14:52:27.121 -> Wechsel auf Dunkel!
14:52:27.121 -> 
14:52:27.912 -> 
14:52:27.912 -> Wechsel auf Hell!
14:52:27.912 -> 
14:52:33.411 -> 
14:52:33.411 -> Wechsel auf Dunkel!
14:52:33.411 -> 
14:52:34.300 -> 
14:52:34.300 -> Wechsel auf Hell!
14:52:34.300 -> 
14:52:39.703 -> 
14:52:39.703 -> Wechsel auf Dunkel!
14:52:39.703 -> 
14:52:40.623 -> 
14:52:40.623 -> Wechsel auf Hell!
14:52:40.623 -> 
14:52:46.110 -> 
14:52:46.110 -> Wechsel auf Dunkel!
14:52:46.110 -> 
14:52:47.000 -> 
14:52:47.000 -> Wechsel auf Hell!
14:52:47.000 -> 
14:53:43.613 -> 1041800Reconnecting to WiFi...
14:54:13.718 -> 1071899Reconnecting to WiFi...
14:54:43.820 -> 1101998Reconnecting to WiFi...
14:55:13.933 -> 1132097Reconnecting to WiFi...
14:55:44.002 -> 1162196Reconnecting to WiFi...
14:56:14.116 -> 1192295Reconnecting to WiFi...
14:56:44.093 -> 1222295Reconnecting to WiFi...
14:57:14.196 -> 1252394Reconnecting to WiFi...
14:57:44.323 -> 1282493Reconnecting to WiFi...
14:58:14.401 -> 1312592Reconnecting to WiFi...
14:58:14.527 -> 
14:58:14.527 -> WLAN reagiert nicht !!!!
14:58:14.527 -> 10 Sekunden Wartezeit...
14:58:14.527 -> 
14:58:24.530 -> Connecting to mein Netzwerk
14:58:25.028 -> .......
14:58:28.771 -> WLAN verbunden.
14:58:28.771 -> IP Adresse: 
14:58:28.771 -> 192.168.178.41
15:00:11.478 -> 
15:00:11.478 -> Wechsel auf Dunkel!
15:00:11.478 -> 
15:00:14.857 -> 
15:00:14.857 -> Wechsel auf Hell!
15:00:14.857 -> 
15:00:37.874 -> 
15:00:37.874 -> Wechsel auf Dunkel!
15:00:37.874 -> 
15:00:41.265 -> 
15:00:41.265 -> Wechsel auf Hell!
15:00:41.265 -> 
15:01:04.360 -> 
15:01:04.360 -> Wechsel auf Dunkel!
15:01:04.360 -> 
15:01:07.945 -> 
15:01:07.945 -> Wechsel auf Hell!
15:01:07.945 -> 
15:03:43.985 -> 1642159Reconnecting to WiFi...
15:04:14.074 -> 1672258Reconnecting to WiFi...
15:04:44.183 -> 1702357Reconnecting to WiFi...
15:05:14.287 -> 1732456Reconnecting to WiFi...
15:05:44.378 -> 1762555Reconnecting to WiFi...
15:06:14.474 -> 1792654Reconnecting to WiFi...
15:06:44.580 -> 1822753Reconnecting to WiFi...
15:07:14.687 -> 1852852Reconnecting to WiFi...
15:07:44.763 -> 1882951Reconnecting to WiFi...
15:08:14.863 -> 1913050Reconnecting to WiFi...
15:08:15.005 -> 
15:08:15.005 -> WLAN reagiert nicht !!!!
15:08:15.005 -> 10 Sekunden Wartezeit...
15:08:15.005 -> 
15:08:25.001 -> Connecting to mein Netzwerk
15:08:25.502 -> .......
15:08:29.216 -> WLAN verbunden.
15:08:29.216 -> IP Adresse: 
15:08:29.216 -> 192.168.178.41
15:13:42.324 -> 2240512Reconnecting to WiFi...
15:14:12.422 -> 2270611Reconnecting to WiFi...
15:14:42.549 -> 2300710Reconnecting to WiFi...
15:15:12.631 -> 2330809Reconnecting to WiFi...
15:15:42.730 -> 2360908Reconnecting to WiFi...
15:16:12.835 -> 2391007Reconnecting to WiFi...
15:16:42.820 -> 2421007Reconnecting to WiFi...
15:17:12.937 -> 2451106Reconnecting to WiFi...
15:17:43.000 -> 2481205Reconnecting to WiFi...
15:18:13.129 -> 2511304Reconnecting to WiFi...
15:18:13.223 -> 
15:18:23.244 -> Connecting to mein Netzwerk
15:18:23.741 -> .......
15:18:27.470 -> WLAN verbunden.
15:18:27.470 -> IP Adresse: 
15:18:27.470 -> 192.168.178.41
15:23:47.070 -> 2845236Reconnecting to WiFi...
15:24:17.175 -> 2875335Reconnecting to WiFi...
15:24:47.255 -> 2905434Reconnecting to WiFi...
15:25:17.376 -> 2935533Reconnecting to WiFi...
15:25:47.459 -> 2965632Reconnecting to WiFi...
15:26:17.553 -> 2995731Reconnecting to WiFi...
15:26:47.667 -> 3025830Reconnecting to WiFi...
15:27:17.770 -> 3055929Reconnecting to WiFi...
15:27:47.867 -> 3086028Reconnecting to WiFi...
15:28:17.970 -> 3116127Reconnecting to WiFi...
15:28:18.061 -> 
15:28:18.061 -> WLAN reagiert nicht !!!!
15:28:18.061 -> 10 Sekunden Wartezeit...
15:28:18.061 -> 
15:28:28.073 -> Connecting to mein Netzwerk
15:28:28.571 -> .......
15:28:32.285 -> WLAN verbunden.
15:28:32.285 -> IP Adresse: 
15:28:32.285 -> 192.168.178.41

Hallo,
dann las das ganze Reconnecting erst mal weg und schau in der Fritzbox ob das Ding noch angemeldet ist. Das geht recht einfach auch mit dem Zeittempel über Ereignisse/ Wlan. Solange das Ding noch in der Fritzbox angemeldet ist macht das ja keinen Sinn denke ich. Nun hab ich keine Ahnung von dem Homatic Netz , ich würde das erst mal komplett rauslassen um festzustellen ob es damit was zu tun hat. Der Aufruf der Webseite sollte ja auf jeden Fall klappen, im Moment hast Du zwei Baustellen. Ich denke Du kannst jetzt da nur schrittchenweise vorgehen.
Heinz

1 Like

Ich habe zwischen meinen zig ESP8266 ein paar dabei deren WLAN Empfang seeeehr schlecht ist. Lass doch mal den RSSI Wert alle 20 Sekunden am seriellen Monitor ausgeben. Da sieht man dann ob es gut oder schlecht ist, oder ob er sich ändert.

Guten Morgen,

ich bin gestern noch auf die Fehlerursache gekommen.

Der Wemos schaute bisher alle 1 ms, ob das Zählerrädchen sich gedreht hat. Weil die Werte sehr schwanken, mittle ich 100 Werte, diese werden demzufolge 10 mal pro Sekunde ausgewertet.
Das war aber zu viel, fürs WLAN blieb anscheinend keine Zeit mehr.
Nun schaut er alle 2ms und mittelt nur 70 Werte. Seitdem funktioniert alles zuverlässig.

Ich danke euch trotzdem für eure Denkanstöße.
Wie kann man denn den RSSI-Wert ermittlen? Das wäre interessant für die Info-html-Seite bei vielen Projekten.

Suche nach WiFi.RSSI())

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.