Wifi Reset bei nicht verbinden

Hallo,
ich habe einen ESP32 der nach dem Deepsleep ab und zu sich nicht wieder verbindet.
Nach einem Reset allerdings schon.
Es gab doch mal einen Code das er nach Ablauf einer gewissen Zeit ohne Connection sich resetet.
Hat mir das gerade mal bitte einer.
Danke

Hi

Denke, Du meinst Etwas mit WDT - also den WatchDogTimer aktivieren und per while(1) drauf warten, daß Dieser den µC resettet.

MfG

Ich hatte mal ein Beispiel wo er abfragt ob verbunden ist wenn dieses nicht passiert ist hat er das Wifi neugestartet.
Leider find eich den nicht mehr.

Hi

Wie reconnectest Du denn jetzt?
Ob Du verbunden bist, kannst Du wie feststellen?
Wenn Du Beides beantworten kannst, kannst Du Dir zwei IFs erstellen, Die Das machen.
1: sind wir offline und waren vorhin online? -> Uhrzeit merken
2: sind wir offline und Das schon 'so und so lange'? -> reconnect

MfG

Hallo,
ich meine das er die “.” macht und nach 20 oder so Wifi neu startet wen nicht connected ist.

Aktuell habe ich als Code:

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Wifi connect");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

Da macht er mir aber UNENDLICH den"."
Er soll aber nur 20 machen und dann neustarten.
Danke

Lordcyber:
Da macht er mir aber UNENDLICH den"."

So

Esp32-Webserver/connect-Esp32-tab

oder so

Esp8266-Webserver/connect-esp8266-tab

oder wie möchtest du das?

Gruß Fips

Lordcyber:
Er soll aber nur 20 machen und dann neustarten.

Das mit den 20 zu erreichen ist ziemlich simpel. Du brauchst eine globale Variable, z. B.

byte resetCounter=0;

In der while-Schleife zählst Du hoch ...

resetCounter++;

... und fragst den Stand der Variable ab:

if (resetCounter==20)
{
  // hier Code fuer Neustart
}

Voilà.

Gruß

Gregor

Derfips:
So

Esp32-Webserver/connect-Esp32-tab

oder so

Esp8266-Webserver/connect-esp8266-tab

oder wie möchtest du das?

Gruß Fips

Danke genau das war es.

gregorss:
Du brauchst eine globale Variable....

Ist das ein neuer Trend, globale zu nehmen?

Gruß Fips

Derfips:
Ist das ein neuer Trend, globale zu nehmen?

Nein, aber bei einem schnellen Blick auf den gezeigten Code konnte ich nicht erkennen, ob die while-Schleife in setup() oder sonstwo steht. Insofern ist eine globale Variable IMO die „sicherste“ Variante (im Sinne von „funktioniert auf alle Fälle“).

Gruß

Gregor

int counter = 0;


bool wifiConnect() {

 // connect
 WiFi.disconnect();
 WiFi.mode(WIFI_STA);


 int counter = 0;
 while (WiFi.status() != WL_CONNECTED) {
   if (counter == 100) {
     wifiRestart();
     delay(500);
   }
   if (counter == 150) {
     softReset();
     return false;
   }
   if (espWifiOff) {
     return false;
   }

   delay(500);
   counter++;
 }
 return true;
}

void wifiRestart(){
 WiFi.mode(WIFI_OFF);
 delay(10000);
 WiFi.mode(WIFI_STA);
}

void wifiOff(){
 WiFi.disconnect();
 WiFi.mode(WIFI_OFF);
 espWifiOff = true;
}

marcel_at_arduino:
int counter = 0; Da ist sie wieder, die globale!

bool wifiConnect() {

// connect
WiFi.disconnect();
WiFi.mode(WIFI_STA);

int counter = 0; Nanu, doch lieber Lokal?

Was möchtest du uns mit dem Code Schnipsel mitteilen?
Die Dokumentation zu deinem Code ist schwer zu lesen!

Gruß Fips