ESP32-Webseite nach einer Weile nicht mehr erreichbar

Hallo liebes Forum,

meine Wetterstation-Webseite, die ich mit einem ESP32 aufsetze, läuft anfänglich föllig normal.Jedoch ist sie nach einer Weile nicht mehr erreichbar. Der Router zeigt jedoch den ESP32 als verbunden an. Da die Wifi-Verbindung nicht unterbrochen wird, kann ich auch nicht eine reconnect-Funktion einbauen. Die Zeitabstände ab wann die Seite nicht mehr aufrufbar ist variieren und wird der ESP32 resettet läuft wieder alles flüssig.

Die Webseite wird über eine HTML-Datei aufgebaut und die Werte über AJAX alle 10sec aktualisiert.

Ich habe online leider nur Lösungsansätze für den ESP8266 gefunden. Hatte jemand das selbe Problem und könnte mir somit weiterhelfen?

Danke im Voraus.

In welchem Zeitraum tritt das Problem denn auf ?

Ich habe zwar aktuell keinen ESP32 laufen, aber in der letzten Testphase kein ähnliches Problem festgestellt.
Meine ESP8266 laufen mehrere Tage problemlos ohne zu murren und ich kann jederzeit darauf zugreifen.

Hallo @HotSystems,

manchmal tritt das Problem nach Stunden auf manchmal nach ein paar Minuten. Letzte Nacht hatte ich ein paar Änderungen durchgeführt und heute morgen lief noch alles. Momentan aktualisieren sich die Werte nach ein paar Minuten nicht mehr und beim Neuladen der Seite, ist diese nicht mehr erreichbar bzw der Server antwortet nicht mehr.

Dann poste mal den Sketch in Code-Tags und ich kann es mal mit einem ESP32 testen.
In der Hoffnung ich habe auch die restlichen Teile.

Verwende für die Code-Tags die Schaltfläche </> oben links im Editor-Fenster.

Mir ist gerade aufgefallen, dass sich der ESP32 aufhängt. Ich habe ein paar Aktoren die sich in Abhängigkeit von der Temperatur bzw. Luftfeuchte schalten. Diese Aktoren haben sich nicht mehr gerührt bzw. verblieben im letzten Aktorenzustand. Die Aktoren werden von einem Arduino Uno, der I2C mit dem NodeMCU ESP32 kommuniziert, geschaltet. Nachdem ich den Stecker gezogen und wieder verbunden habe, lief alles wieder.

Sketch kommt sofort.

Leider ist der Code zu lang gewesen, also habe ich die .ino angehängt.

Neu_Flower_Power_ESP32.ino (21 KB)

Ok, du hast eine I2C-Verbindung zum Uno.
Ist die stabil verdrahtet und mit Pullup-Widerständen versehen ?

Da entstehen schnell mal Probleme, die einen Controller zum Absturz bringen.
Wer ist der Master ?
Der ESP oder der Uno ?
Soweit mir bekannt ist, geht der ESP nur wenn er Master ist.

saint281:
Leider ist der Code zu lang gewesen, also habe ich die .ino angehängt.

Den kann ich hier am Tablet nicht ansehen, da muss ich dann später mal am PC schauen.

Der ESP ist der Master. ( ESP nur im Master-Modus betreibbar)

Nein ich habe keine Pullup-Widerstände verwendet. Habe nur wie üblich SDA, SCL und GND miteinander verbunden und die Wire-Bibliothek verwendet.

saint281:
Der ESP ist der Master. ( ESP nur im Master-Modus betreibbar)

Nein ich habe keine Pullup-Widerstände verwendet. Habe nur wie üblich SDA, SCL und GND miteinander verbunden und die Wire-Bibliothek verwendet.

Mit dem Master hatte ich ja auch so geschrieben.

Dann hast du damit schon mal ein Problem.

Keine Pullup ist schlecht, wobei du auch einen Levelshifter brauchst. Du hast 3,3 V am ESP und 5V am Uno. Das kann funktionieren, geht aber oft schief, da es nicht den Spezifikationen entspricht.

Das solltest du erst mal richtig stellen, evtl. liegt da ja dein Problem.

Edit:
Du kannst es vorläufig mit Pullup-Widerständen gegen 3,3V machen.
Musst aber unbedingt die Levelshifter einsetzen, damit das sicher und stabil funktioniert.

HotSystems:
Dann hast du damit schon mal ein Problem.

Keine Pullup ist schlecht, wobei du auch einen Levelshifter brauchst. Du hast 3,3 V am ESP und 5V am Uno. Das kann funktionieren, geht aber oft schief, da es nicht den Spezifikationen entspricht.

Das solltest du erst mal richtig stellen, evtl. liegt da ja dein Problem.

Ok, danke für den Tipp. Ich werde mich jetzt mal einlesen, wie man das am besten Umsetzt und melde mich sobald es Neuigkeiten gibt zurück.

Hatte im letzten Post noch was dazu geschrieben.
Levelshifter für I2C gibt es fertig für wenige €.

Ich dachte, das die für die I2C-Kommunikation vorgesehenen Pins schon mit Pullups ausgestattet wären.

Brauche ich jetzt eine Kombination aus Levelshifter und Pullups oder nur eins von beiden?

saint281:
Ich dachte, dass die für die I2C-Kommunikation vorgesehenen Pins schon mit Pullups ausgestattet wären.

Brauche ich jetzt eine Kombination aus Levelshifter und Pullups oder nur eins von beiden?

Die Library setzt soweit mir bekannt ist, die Pins auf Pullup, aber die sind für den normalen Gebrauch am I2C zu hochohmig. Das führt meist zu Störungen und Ausfällen des I2C.
Der Levelshifter hat die richtigen Pullups on Board, da brauchst du keine mehr.

Dann werde ich es mal mit dem Level Shifter ausprobieren. Schon mal vielen Dank für die Hilfe.

Montag sollte der Shifter ankommen. Würde mich dann nochmal melden.

Ich habe bemerkt, dass der ESP nach einer Weile wieder erreichbar ist. Also hat der ESP nur für ca 10-15 min Probleme.

konkret zu deinem Problem hab ich keinen Tipp. Aber was mir so auffällt:

schau dir mal das Beispiel Webserver | HelloServer an. Am ESP will man dann eigentlich sich um Header und Parameter nicht mehr selber kümmern müssen, wenn es dafür eine fertige Lib gibt.

Und überarbeite mal deine ganzen print Ausgaben/Fixtexte, da kannst noch oft das F-Makro einsetzen. Gilt sowohl für die client.print wie auch serial.print

saint281:
Dann werde ich es mal mit dem Level Shifter ausprobieren. Schon mal vielen Dank für die Hilfe.

Montag sollte der Shifter ankommen. Würde mich dann nochmal melden.

Das ist gut, auch wenn damit evtl. dein Problem nicht gelöst ist, sollte der Levelshifter eingebaut werden.

noiasca:
konkret zu deinem Problem hab ich keinen Tipp. Aber was mir so auffällt:

schau dir mal das Beispiel Webserver | HelloServer an. Am ESP will man dann eigentlich sich um Header und Parameter nicht mehr selber kümmern müssen, wenn es dafür eine fertige Lib gibt.

Und überarbeite mal deine ganzen print Ausgaben/Fixtexte, da kannst noch oft das F-Makro einsetzen. Gilt sowohl für die client.print wie auch serial.print

Ok werde mir das Beispiel angucken und danke für den Tipp mit den F-Makro werde das in mein Code implementieren.