ESP8266 - Sendet manchmal nicht alles

  • Ja. Und nein. Grundsätzlich natürlich, die abfragefrequenz ist ja eh viel höher als die Daten sinnvoll schwanken können - in diesem Fall. Aber der TE hatte ja eine wirklich systematischen Fehler, der zweite wert kam nie durch. Darum sollte dein Vorschlag mit dem längeren delay ja auch gut wirksam sein. Und es ist schon interessant, wie man das Problem zuverlässig löst, denn bei anderen Problemen kann man sich das ggf. nicht leisten.

  • So funktioniert aber der ESP deep sleep nicht. Da hat WPi2 schon recht. Das ist aus Sicht der Haupt-CPU schon ein kompletter shutdown. Und entsprechender Neustart. Man kann also ohne Verlust den Loop abklemmen.

  • Ich möchte noch Hinzufügen das bei mir damals, vor ca. 2 Jahren, ein einfaches "delay" nicht funktioniert hat. Nur ein paar "client.loop" Aufrufe haben Abhilfe geschaffen.

    Code
    boolean loop ()
    
    This should be called regularly to allow the client to process incoming messages and maintain its connection to the server. Aus der API:
    Returns
    
        false - the client is no longer connected
        true - the client is still connected

    Ich gehe davon aus, dass nicht alle Daten sofort nach Publish in dem Networkstack des ESPs geschrieben werden, sondern aufgeteilt und priorisiert werden und dann in der loop Funktion portionsweise verschickt werden. Das ist meine Theorie. Ich hab aber den Sourcecode nicht untersucht.

    Mein vorgeschlagene Lösung in #4 simuliert den "loop"

  • Der Code gibt das so erstmal nicht her. Wenn es trotzdem einen Unterschied macht, dann weil versucht wird vom socket etwas zu lesen. Da kann man dann auch eher Client.flush nehmen. Das klingt sinnvoller, weil es für sowas gedacht ist.

  • Um das letzte Wort zu haben

    In diesem Thread jedenfalls nicht :lol:

    Ich habe noch einen ESP auf eineem Breadboard mit Sensor - also denselben HW Setup wie mein Helligkeitssensor der per USB Netzteil versorgt wird und perfekt ohne DeepSleep funktioniert. Ich werde da mal den existierenden funktionierenden Code fuer diesen ESP so aendern dass zwischen zwei Sensorsamples ein DeppSleep stattfindet und mal sehen wie weit ich komme :shy:

  • Habe mich mal in das Thema DeepSleep eingelesen und dabei u.A. auch diese Seite gefunden. Dort steht

    Zitat

    The loop() section is empty, because the ESP32 will go to sleep before reaching this part of the code. So, you need to write all your sketch in the setup().

    Ich revidiere somit meinen Post in #22. Und wenn man drueber nachdenkt ist loop auch berechtigterweise in diesem Falle obsolet. Allerdings bedeutet das auch dass der loop nie ausgefuehrt wird wenn am Ende von Setup der DeepSleep aktiviert wird.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!