Heute habe ich ein paar Mal den “rst cause 4” bei meinem ESP8266 gehabt. Ich wusste nicht genau woher das kommt aber nach eine kurzen Suche wurde es etwas klarer ;)

Zunächst einmal gibt es verschiedene Gründe warum ein Reset durchgeführt wird:

  • 0: Unknown
  • 1: normal boot
  • 2: reset pin
  • 3: software reset
  • 4: watchdog reset

( Quelle  und hier )

Das heisst, bei mir hat der Watchdog zugeschlagen. Dieser setzt den ESP8266 zurück sofern nicht regelmäßig an den Watchdog gemeldet wird, dass noch alles okay ist. In meinem Falle hatte das Auslesen eines Sensors (HX711) so lange gedauert, dass der Chip sich zurückgesetzt hat, da zwischenzeitlich kein “delay” oder “yield” aufgerufen wurde und der loop nicht einmal durchgelaufen ist. Lösung:

1
2
3
4

ESP.wdtDisable();
f = scale.read_average(20);
ESP.wdtEnable(2000);

Und schon lief es ;) Hinweis: Das Fragment ESP.wdtDisable(); schaltet nur den Software Watchdog aus (siehe hier ) da das Ausschalten des Hardware Watchdog keine gute Idee ist. ESP.wdtEnable(2000); schaltet ihn wieder ein, allerdings auf 2 Sekunden statt der normalen Sekunde.