wenn WIFI oder MQTT nicht klappt script trotzdem weiterarbeiten?

Ich hätte da ma eine Frage. Kann man es irgendwie einrichten das wenn z. B. kein WIFI oder mal der MQTT server nicht erreichbar ist das das Script trotzdem weiterarbeitet?

wie bei diesem Beispiel von PubSubClient?

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
       Serial.print("baue die Verbuindung zum MQTT auf...");
       String clientId = "Huehner";
    // Attempt to connect
    if (client.connect("Huehner")) {
      Serial.println("connected");
      // Subscribe
      client.subscribe("/huehner/info");  //der Pfad auf den gelauscht wird ***
      client.subscribe("/huehner/ZeitAuf");  //der Pfad auf den gelauscht wird ***
      client.subscribe("/huehner/ZeitZu");  //der Pfad auf den gelauscht wird ***
      client.subscribe("/huehner/IO");  //der Pfad auf den gelauscht wird ***             
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

Hintergrund ist das ich da eine Klappensteuerung am basteln bin und möchte da eine "Rückversicherung" wenn mal der MQTT Server nicht erreichbar ist dass das Script weiter arbeitet und die hinterlegten auf und zu Mechanismen abarbeitet (die alle gute gehen).

Ja, denn Du kannst die Schleife über eine Bedingung verlassen. Beispielsweise zählst Du die Fehlversuche in einer Variablen hoch und verläßt diese, wenn ein Grenzwert überschritten wurde.

Eleganter wäre es, das blockierende while rauszuschmeißen und ab und an die Verbindung zu überprüfen und bei verlorenen Verbindung diese neu aufzubauen.

hmmm das mit der " Schleife über eine Bedingung verlassen " glaube ich gefällt mir da schon ganz gut. Weil ich möchte ja dass, wenn ich über den ioBroker was sende das auch gleich ausgeführt wird.

Andere dumme Anfänger Frage .... wie verlässt mann so eine Schleife ?

foto2004:
Andere dumme Anfänger Frage .... wie verlässt mann so eine Schleife ?

Die Schleife hat eine Bedingung: while (bedingung)

Die Schleife wird so lange durchlaufen, bis diese Bedingung nicht mehr erfüllt (== 0) ist.

Sowas wie while (!client.connected() || (versuche > 5)) könnte funktionieren.

Andere Möglichkeit wäre noch "break"

Gruß, Jürgen

Danke für die Denkanstöße werde da mal einiges testen.

LG Immanuel und bleibt gesund.

ich habe agume 's Denkanstoß genommen und es so gelöst.

 while (!client.connected() && MM == 0) {
       Serial.print("baue die Verbuindung zum MQTT auf...");
       String clientId = "Huehner";
    // Attempt to connect
    if (client.connect("Huehner")) {
      Serial.println("connected");
      // Subscribe
      client.subscribe("/huehner/info");  //der Pfad auf den gelauscht wird ***
      client.subscribe("/huehner/ZeitAuf");  //der Pfad auf den gelauscht wird ***
      client.subscribe("/huehner/ZeitZu");  //der Pfad auf den gelauscht wird ***
      client.subscribe("/huehner/IO");  //der Pfad auf den gelauscht wird ***             
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      MM = 1;
      break;
      delay(5000);
    }
  }
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      MM = 1;
      break;
      delay(5000);

Zur letzten Zeile dürfte das Programm nie kommen.