NodeMCU im Dauerbetrieb

Hi,

Ich wollte ein NodeMCU im Dauerbetrieb 24/7 betreiben. Ist der Controller dafür ausgelegt? Brauch ich noch Hardware z.B. Kondensatoren oder ähnliches. Andere Frage wie ist es mit dem Wlan kann es passieren, dass der Controller plötzlich eine Störung hat und vom Wlan getrennt wird?

Mfg

Bist du süchtig, nach Problemen?
Leider kann ich dir keine anbieten.
Du musst also heute ohne Sorgen ins Bettchen gehen.

Ich habe seit ca. 1 Monat ein NodeMCU V1 im Garten liegen (verpackt, keine Sorge) der hat bis jetzt noch keine Probleme gemacht.

Ich habe mal einen WEMOS D1 mini pro 1,5 Jahre im Dauerbetrieb gehabt - keine Probleme.
Ein reconnect zum WLAN solltest Du einbauen, da ja auch mal Dein WLAN-Router sterben kann.

Gruß Tommy

Tommy56:
Ein reconnect zum WLAN solltest Du einbauen

Hatte ich mal so versucht;

 if (WiFi.status() == WL_DISCONNECTED) {
    Serial.println("Verbindung verloren! Neustart...");
    ESP.restart();
  }

hat aber nicht geklappt. sobald das WLAN weg war hat er nichts mehr gemacht

Hi

Liegt ggf. daran, daß Du, statt 'disconnected' eher den Zustand 'broken' hattest?
Ein paar (Dutzend) Serial.print im Code lassen erahnen, wohin die Reise ging.

MfG

Probier doch mal das Gegenteil:

if (WiFi.status() != WL_CONNECTED) {
  // mache einen Reconnect
}

Gruß Tommy

Tell_me_why:
Ich wollte ein NodeMCU im Dauerbetrieb 24/7 betreiben. Ist der Controller dafür ausgelegt? Brauch ich noch Hardware z.B. Kondensatoren oder ähnliches.

da brauchst keine Sorgen haben, die Laufen grundsätzlich stabil. Einschränkung "grundsätzlich" weil es an dir liegt sauberen Code zu schreiben.

Extra Kondensatoren haben meine normalerweise nicht, schaden tun die aber auch nicht.
Einige über Micro-USB Netzteil, einige mit Step-Down Wandler und ein Sonoff-Touch seit einem Jahr und 3 Tage (Jul 27 2018 10:46:35) - außer den normalen Stromausfällen, hat der auch noch nie einen separaten Reset gebraucht (wäre auch blöd, weil der ist verbaut).

Und dein Code soll in der Lage sein, sich zu einem Wifi wieder zu verbinden, weil du damit rechnen musst, dass mal WLAN kurz weg ist und deswegen darf sich dein Code nicht aufhängen.

Tommy56:
Ich habe mal einen WEMOS D1 mini pro 1,5 Jahre im Dauerbetrieb gehabt

Sowas hätte ich auch gerne mal erlebt!
Mein Sonoff Dual hat zuletzt irgendwas mit 127 Tagen geschafft, dann war wieder Stromausfall.
Kaum zu glauben, aber wahr, sieben Tage später ist hier eine Trafostation in Flammen aufgegangen.

Die Stromausfällen sind hier allgegenwärtig, wie am Mekong!

Gruß Fips

Hallo,

Derfips:
Die Stromausfällen sind hier allgegenwärtig, wie am Mekong!

Du hast aber schonmal darüber nachgedacht, warum Deine ESPs das Stromnetz zusammenbrechen lassen? :wink:

Hier geistern ca. 15 ESPs als Sensoren, Aktoren, Wetteranzeige, Uhren mit NTP-Sync usw. rum.
Dauerlaufzeiten kann ich nicht anbieten, ich achte nicht darauf. Ausfälle durch die Hardware habe ich garkeine, Abstürze durch ungünstige Programmierung oder Experimente durchaus, alle möglichen Möglichkeiten bei WLAN, MQTT, Internet usw. sauber abzufangen und sinnvoll zu bearbeiten, kann dauern, bis es wirklich stabil ist. Etliches ist aber schon seit Jahren in Betrieb.

Gruß aus Berlin
Michael

Derfips:
irgendwas mit 127 Tagen geschafft,

hättest da einen Zweizeiler für mich wie ich über das unsigned long Limit beim millis komme?

Was hat das mit den 127 Tagen zu tun? Man könnte z.B. Sekunden/Minuten/Stunden/Tage zählen, mit dem Unix-Timestamp arbeiten oder uint64_t nutzen, wenn man unbedingt Millisekunden aufaddieren will.

Gruß Tommy

die millis am nodemcu sind doch auch nur 32bit oder? also nehme ich an er hat was gemacht haben dass er auf 127 Tage kommt und den Rolllover nach 49,irgendwas mitbekommt.

Also ich wußte es daher, dass ich alle 15 Minuten die Daten in eine MySQL-Datenbank geschrieben hatte (incl. Timestamp)

Welchen Weg Fips gegangen ist, weiß ich nicht, aber ein paar mögliche Wege habe ich Dir aufgezeigt. Evtl. hat er auch mit der NTP-Zeit gearbeitet.

Gruß Tommy

noiasca:
hättest da einen Zweizeiler für mich wie ich über das unsigned long Limit beim millis komme?

Gerne auch etwas mehr Zeilen?

Die Funktion "String runtime()" im Admin Tab.

Im loop mit

if (millis() < 0x2FFF || millis() > 0xFFFFF0FF) runtime();

aufrufen.

So ist sicher das die Funktion den Überlauf registriert.

Die Prüfung auf den Überlauf ist einfach, immer wenn die aktuelle millis() kleiner als die letzte millis() hat es den Überlauf gegeben.

Gruß Fips

OT:
cooool. Hatte eh schon ein Sekundenzähler ss=millis()/1000

Ist zwar nun doch ein sechszeiler, aber ok:

  static uint32_t lastMillis = 0;
  static uint8_t rolloverCounter = 0;
  uint32_t actualMillis = millis();
  if (actualMillis < lastMillis) rolloverCounter++;       // prüft Millis Überlauf
  ss = (0xFFFFFFFF / 1000 ) * rolloverCounter + (actualMillis / 1000);
  lastMillis = actualMillis;

merci.

noiasca:
Ist zwar nun doch ein vierzeiler....

Auf die fünfte Zeile würde ich nicht verzichten.

  static uint32_t lastMillis = 0;
  uint32_t actualMillis = millis();
  if (actualMillis < lastMillis) rolloverCounter++;       // prüft Millis Überlauf
  ss = (0xFFFFFFFF / 1000 ) * rolloverCounter + (actualMillis / 1000);
  lastMillis = actualMillis;

Mit einem kleinen Trick geht's auch als vierzeiler.

  static uint32_t lastMillis = 0;
  uint32_t actualMillis = millis();
  if (actualMillis < lastMillis) rolloverCounter++;       // prüft Millis Überlauf
  ({ss = (0xFFFFFFFF / 1000 ) * rolloverCounter + (actualMillis / 1000); lastMillis = actualMillis;});

Gruß Fips

postmaster-ino:
Liegt ggf. daran, daß Du, statt 'disconnected' eher den Zustand 'broken' hattest?

Hi

Also der Code läuft. Das einzige was ich dann mache ist den Internetzugang für den ESP zu sperren. Der Code müsste doch theoretisch dann einfach weiterlaufen und sich nicht aufhängen oder ?
Das gegenteil davon habe ich zuerst probiert.

Mfg

Der Code sollte weiterhin funktionieren, da hast du Recht.

Derfips:
Mit einem kleinen Trick geht's auch als vierzeiler.

keks