Arduino Forum

International => Deutsch => Topic started by: Tell_me_why on Jul 30, 2019, 07:11 pm

Title: NodeMCU im Dauerbetrieb
Post by: Tell_me_why on Jul 30, 2019, 07:11 pm
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
Title: Re: NodeMCU im Dauerbetrieb
Post by: combie on Jul 30, 2019, 07:14 pm
Bist du süchtig, nach Problemen?
Leider kann ich dir keine anbieten.
Du musst also heute ohne Sorgen ins Bettchen gehen.
Title: Re: NodeMCU im Dauerbetrieb
Post by: GreyDiamond on Jul 30, 2019, 07:17 pm
Ich habe seit ca. 1 Monat ein NodeMCU V1 im Garten liegen (verpackt, keine Sorge) der hat bis jetzt noch keine Probleme gemacht.
Title: Re: NodeMCU im Dauerbetrieb
Post by: Tommy56 on Jul 30, 2019, 07:21 pm
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
Title: Re: NodeMCU im Dauerbetrieb
Post by: Tell_me_why on Jul 30, 2019, 09:04 pm
Ein reconnect zum WLAN solltest Du einbauen
Hatte ich mal so versucht;

Code: [Select]

 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
Title: Re: NodeMCU im Dauerbetrieb
Post by: postmaster-ino on Jul 30, 2019, 09:07 pm
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
Title: Re: NodeMCU im Dauerbetrieb
Post by: Tommy56 on Jul 30, 2019, 10:07 pm
Probier doch mal das Gegenteil:
Code: [Select]

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


Gruß Tommy
Title: Re: NodeMCU im Dauerbetrieb
Post by: noiasca on Jul 30, 2019, 11:18 pm
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.
Title: Re: NodeMCU im Dauerbetrieb
Post by: Derfips on Jul 31, 2019, 12:12 am
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

Title: Re: NodeMCU im Dauerbetrieb
Post by: amithlon on Jul 31, 2019, 08:35 am
Hallo,

Die Stromausfällen sind hier allgegenwärtig, wie am Mekong!
Du hast aber schonmal darüber nachgedacht, warum Deine ESPs das Stromnetz zusammenbrechen lassen? ;)

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
 
Title: Re: NodeMCU im Dauerbetrieb
Post by: noiasca on Jul 31, 2019, 02:29 pm
irgendwas mit 127 Tagen geschafft,
hättest da einen Zweizeiler für mich wie ich über das unsigned long Limit beim millis komme?
Title: Re: NodeMCU im Dauerbetrieb
Post by: Tommy56 on Jul 31, 2019, 02:36 pm
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
Title: Re: NodeMCU im Dauerbetrieb
Post by: noiasca on Jul 31, 2019, 02:44 pm
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.
Title: Re: NodeMCU im Dauerbetrieb
Post by: Tommy56 on Jul 31, 2019, 02:49 pm
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
Title: Re: NodeMCU im Dauerbetrieb
Post by: Derfips on Jul 31, 2019, 03:16 pm
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. (https://fipsok.de/Esp8266-Webserver/admin-esp8266-tab.html)

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
Title: Re: NodeMCU im Dauerbetrieb
Post by: noiasca on Jul 31, 2019, 04:00 pm
OT:
cooool. Hatte eh schon ein Sekundenzähler ss=millis()/1000

Ist zwar nun doch ein sechszeiler, aber ok:
Code: [Select]

  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.


Title: Re: NodeMCU im Dauerbetrieb
Post by: Derfips on Jul 31, 2019, 05:18 pm
Ist zwar nun doch ein vierzeiler....
Auf die fünfte Zeile würde ich nicht verzichten.

Code: [Select]

  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.

Code: [Select]

  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
Title: Re: NodeMCU im Dauerbetrieb
Post by: Tell_me_why on Jul 31, 2019, 06:21 pm
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
Title: Re: NodeMCU im Dauerbetrieb
Post by: GreyDiamond on Jul 31, 2019, 06:23 pm
Der Code sollte weiterhin funktionieren, da hast du Recht.
Title: Re: NodeMCU im Dauerbetrieb
Post by: noiasca on Jul 31, 2019, 06:48 pm
Mit einem kleinen Trick geht's auch als vierzeiler.
*keks*

Title: Re: NodeMCU im Dauerbetrieb
Post by: freddy64 on Jul 31, 2019, 09:15 pm
Ich habe auch so einen "Dauerläufer". Ist es beim ESP8266 bzw. ESP32 möglich, die MAC-Adressen zu filtern?
Dann wäre mein Teil sicherer vor unbefugtem Zugriff wenn nur MAC aa:aa:aa und aa:aa:ab Zugriff auf den Webserver auf dem ESP hätten.

Der Code oben mit den millis() in Sekunden sieht auch interessant aus.
Was ist rolloverCounter? unsigned long?
Title: Re: NodeMCU im Dauerbetrieb
Post by: noiasca on Jul 31, 2019, 09:51 pm
aktuell uint16_t, ehrlicherweise würden mir uint8_t auch reichen (255 Überläufe nach 49 Tage, 34 Jahre!).
Title: Re: NodeMCU im Dauerbetrieb
Post by: Derfips on Jul 31, 2019, 10:10 pm
Der Code oben mit den millis() in Sekunden sieht auch interessant aus.
Was ist rolloverCounter? unsigned long?
In Beitrag #14 (https://forum.arduino.cc/index.php?topic=629067.msg4259666#msg4259666) ist doch der Hyperlink zum Original drin.


Gruß Fips