NodeMCU v2 stürzt ab

Hallo zusammen,

ich habe einen NodeMCU V2 mit einem inzwischen recht umfangreichen Sketch (> 600 Zeilen). Dabei habe ich schon so einiges reingepackt wie NTP, Wifi mit Push Button, MQTT (PubSubClient), OneWire, DallasTemperature, Bounce2.

Leider läuft er nicht so recht robust. Also entweder stürzt er ab oder er verliert die WLAN-Verbindung. Die längste durchgehende Laufzeit waren bisher rund 14 Stunden.

Bevor ich meinen ganzen Sketch poste, hier erst einmal die Fehlermeldung, der er seriell auswirft:

state: 5 -> 0 (0)
rm 0
pm close 7
del if0
usl

Ich kann damit nichts anfangen und eine Google-Suche brachte zwar Ergebnisse, aber leider keine Erkenntnisse.

naja gegen den Verlust eine WLAN Verbindung sollst dich sowieso absichern und eben wieder ein reconnect machen falls sie weg ist.

Ganz allgemein:

Falls in deinem Programmablauf Verzögerungen enthalten sind, etwa in Form von längeren Schleifen, blockierendem Warten auf einen Zustand oder Ähnlichem, die länger als etwa 20 Milisekunden dauern, kann das zu Problemen führen - hat damit zu tun, dass anscheinend der Sheduler nicht oft genug aufgerufen wird.

Auch wenn AnalogRead zu oft ausgeführt wird, kann das Probleme machen. Man sollte nicht in jedem Loop-Durchlauf AnalogRead durchführen, sondern höchstens alle 100-200ms.
Siehe: analogRead forces WiFi to disconnect · Issue #1634 · esp8266/Arduino · GitHub

Danke für die schnellen Antworten.

Reconnect baue ich noch ein. Danke für den Tipp.

Ich habe den Code eigentlich komplett deblocking aufgebaut. Die einzigen Delays, die drin sind, kommen aus der Push-Button-Vorlage. Stören die eurer Meinung nach bzw. kann man die auch deblocking ausführen?

Analoge PINs lese ich eigentlich gar nicht aus, nur digitale. Wäre es vielleicht möglich, dass ich PINs benutzt habe, die man nicht nutzen sollte? Bisher nutze ich D1, D2, D4, D5, D6.

Meine Sketch habe ich angehängt. Direkt als Code war er zu groß.

wps_push_button_nodemcu_forum.ino (15.8 KB)

Hallo,

BobaFett:
ich habe einen NodeMCU V2 mit einem inzwischen recht umfangreichen Sketch (> 600 Zeilen). Dabei habe ich schon so einiges reingepackt wie NTP, Wifi mit Push Button, MQTT (PubSubClient), OneWire, DallasTemperature, Bounce2.

Leider läuft er nicht so recht robust. Also entweder stürzt er ab oder er verliert die WLAN-Verbindung. Die längste durchgehende Laufzeit waren bisher rund 14 Stunden.

state: 5 -> 0 (0)

rm 0
pm close 7
del if0
usl




Ich kann damit nichts anfangen und eine Google-Suche brachte zwar Ergebnisse, aber leider keine Erkenntnisse.

mit der Fehlermeldung kann ich erstmal auch nichts anfangen, erzeugt Du die im Sketck oder kommt die von einer Komponente oder vom ESP-Core selbst?

Die benutzen Pins sind eigentlich ok, Probleme hat man mit einigen Pins, die entweder das Bootverhalten beeinflussen (GPIO0, GPIO15), wenn man da extern Komponenten dran hat, die für falsche Pegel beim PowerOn sorgen können, bootet er eben im falschne Bootmode, läuft also garnicht erst ins eigene Programm.
Probleme können auch GPIO2 und die SPI-Pins machen, weil da beim Booten diverse Signale rauskommen bis er komplett initialisiert ist. Das stört aber dann nur Deine Komponentenh beim Booten.

Ansonsten sieht setup() für mich erstmal soweit ok aus, aber erstmal nur schnell reingeschaut.
Problematisch sind teilweise die Rückmeldungen zum WLAN-Status, die das SDK liefert. Welche Version benutzt Du in der IDE? 2.3.0 oder 2.4.1? Wenn die 2.4.1 mit welcher LwIP-Version compilierst Du?
Die v2.0 hat durchaus noch ein paar Probleme speziell in Kombination mit anderen älteren Libs. Die v1.4 Higher Bandwith ist bei mir bisher stabil. PubSubClient habe ich nur noch in einem älteren Sensor laufen, der Rest ist inzwischen überall AsyncMQTT.

Zum Reconnect habe ich es inzwischen (wieder) komplett stabil, hier ist viel los mit WLANs, ein paar Reconnects an manchen Tagen sind die Regel. Ich hatte zwischendurch den Zustand, daß WLAN sauber wieder drin war, der MQTT aber vom Broker als nicht verbunden gemeldet wurde.

Gruß aus Berlin
Michael