-         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 40 von 40

Thema: NodeMCU UDP Paket senden + deepsleep

  1. #31
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    16
    Anzeige

    Hallo zusammen,

    vielen Dank erst einmal für eure tolle Unterstützung!

    Zitat Zitat von Moppi
    Und wie ist das Ergebnis damit?
    Leider konnte ich mit WiFi.forceSleepWake(); keinen Unterschied feststellen.
    Hier ein kurzer Auszug wie ich es eingebaut habe:
    Code:
    void setup() { 
      Serial.begin(115200);
      delay(1000);
      Serial.println("\n\nSerial connection started");
      
      WiFi.forceSleepWake();
      WiFi.mode (WIFI_STA);
      //WiFi.config (IPlocal, IPdns, IPgateway, IPsubnetmask);
    
    
      WiFi.begin(ssid, passphrase);
      while (WiFi.status() != WL_CONNECTED) 
      {
        delay(500);
        Serial.print(".");
        Serial.print(WiFi.status());
      }
      WiFi.printDiag(Serial);
      Serial.print(WiFi.status());
    
      pinMode(12, OUTPUT);
      Serial.printf("Now listening at IP %s, UDP port %d\n\n", WiFi.localIP().toString().c_str(), receiveUdpPort);
      delay(5000);  
    
    }
    Zitat Zitat von Moppi
    Die serielle Kommunikation (Serial...) bitte mal raus nehmen, die brauchst Du später sowieso nicht. Beschränke mal auf das, was das nodeMCU später tun soll. Nämlich Datenerfassung und per WiFI und UDP verschicken.
    Werde ich machen.

    Zitat Zitat von Moppi
    Und zum Schluss vorerst eine andere Vorgehensweise:
    Wenn das nodeMCU startet, sende mal bitte ein Paket an das nodeMCU selber (und nur dieses) und warte bis das angekommen ist. Eigentlich müsste das nodeMCU die Pakete, die per Broadcast gesendet werden, auch wieder empfangen können. Daher würde ich ein Paket mit dem nodeMCU verschicken und prüfen, ob das beim nodeMCU auch an kommt. Wenn nicht, würde ich das Paket nochmal senden und warten ob es dann ankommt. Die Alternative ist eben, das erste "Verfikations"-Paket nur an das nodeMCU zu schicken, dass es auch verschickt. Wenn das erfolgreich war, würde ich schauen, ob danach jedes weitere UDP-Paket im Netzwerk ankommt, das verschickt wird.
    Das klingt gut! Ich werde die Pakete an 127.0.0.1 schicken, falls das funktioniert..

    Zitat Zitat von HaWe
    Der DHT11 ist übrigens auch extrem zickig, er braucht oft bis zu 2sec, bis er nach mehrmaligem Versuch überhaupt Daten liefert, davor ist alles ungültig. Viel bessere Ergebnisse habe ich mit BME280 und BMP280 per i2c.
    Das habe ich auch gelesen und habe deshalb ein delay von 3,5s eingebaut.

    Zitat Zitat von Moppi
    Schön und optimal ist das sicher alles nicht.
    Das sehe ich auch so, denn zu starten und mehr oder weniger nur ein UDP-Paket zu senden ist, denke ich, für ein mit WiFi ausgestatter Mikrokontroler keine überragende Leistung .. Komischer Weise scheint ja das Beispielscetch tadellos zu funktionieren. Also, wo ist der unterschied? In erster Linie sehe ich da nur das zuvor empfangene Paket und das Senden an die RemoteIp + RemotePort...

    Zitat Zitat von Moppi
    Wobei es so sein soll, dass das nodeMCU beim Starten mehr Strom benötigen soll (oder so ähnlich), so dass die Spannungsquelle hier mitspielen muss, dass es nicht zu diffusen Fehlern kommt.
    Das werde ich auch noch mal testen. Bisher hing der ESP immer am USB-Port des Laptops (soweit ich weiß ~500mA?! ) Ich werde mal ein 2A starkes Steckernetzteil nehmen.

    Zitat Zitat von HaWe
    ich würde dazu raten, das Problem ganz neu im ESP8266 Forum als issue zu melden - und vorher sicherheitshalber auch auf IDE 1.8.6, den neuesten esp core 2.4.2 und auch die neueste esp8266WiFi lib etc. abzudaten, denn es werden die issues nur bei den jeweils neuesten Versionen von den Entwicklern bearbeitet.

    Es wird dort auch immer ein minimalistischer lauffähiger Test-Sketch verlangt, den würde ich in jedem Falle mit konstanten oder überprüfbaren randomisierten Werten OHNE DHT11 schreiben.
    Ich werde in der Tat mal alles auf den neuesten Versionsstand bringen. Das Melden hebe ich mir noch auf...

    Zitat Zitat von Moppi
    Bitte diese Seite mal durchlesen, das Beispiel scheint auch zu funktionieren und Hinweise zu Problemen gibts auch.

    https://www.arduino-hausautomation.d...im-tiefschlaf/
    Diese Seite habe ich auch schon studiert

    Leider habe ich nicht durchgängig viel Zeit um an diesem Problem zu arbeiten, ich bemühe mich aber schnell Neuigkeiten zu berichten
    Geändert von d2x (18.11.2018 um 12:07 Uhr)

  2. #32
    Erfahrener Benutzer Robotik Einstein Avatar von HaWe
    Registriert seit
    09.10.2014
    Beiträge
    3.506
    es reicht nicht, beim DHT11 einfach per delay(3500) zu warten - man muss es mehrfach immer wieder probieren, bis man gültige Werte erhält.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  3. #33
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    16
    Zitat Zitat von HaWe
    man muss es mehrfach immer wieder probieren, bis man gültige Werte erhält.
    Kann ich für den DHT22 nicht bestätigen. Ich erhalte immer eine zuverlässige Antwort, auch bei kürzerer Zeit.

  4. #34
    Erfahrener Benutzer Robotik Einstein Avatar von HaWe
    Registriert seit
    09.10.2014
    Beiträge
    3.506
    Zitat Zitat von d2x Beitrag anzeigen
    Kann ich für den DHT22 nicht bestätigen. Ich erhalte immer eine zuverlässige Antwort, auch bei kürzerer Zeit.
    muss nicht, nein, und der 22er ist auch besser als der 11er, aber es KANN passieren. Ich selber frage erst immer nach dem Pollen nach nan, und wenn ja, nochmal probieren, ansonsten weitermachen.


    float ftmp = DHT11.readTemperature(); // Temperatur auslesen (Celsius)
    delay(10);
    if (isnan(ftmp)) {
    // error, ggf auch in while() Schleife
    }
    else {
    // ok, weitermachen
    }
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  5. #35
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    16
    So, ich habe mich mal wieder mit dem Thema beschäftigen können.

    Ein anderes Netzteil bringt keinen Unterschied

    Was ich inzwischen herausgefunden habe:
    Wenn deepSleep nur einen Durchlauf zulässt, scheint das Senden noch nicht sofort zu funktionieren. Wenn ich 20..30 Pakete vorher an einen anderen Port sende, dann kommt die Nachricht an. (Man könnte die Pakete auch an den gleichen Port senden.) Ich habe diese per For-Schleife geschickt bevor ich meine Nachricht geschickt habe. Ich werde jetzt mal probieren, das deepSleep in eine if-Abfrage zu stecken, damit die loop-Schleife ein paar Runden drehen kann bevor ich meine Nachricht sende. Mal sehen ob ich das morgen mal schaffe. Ich melde mich dazu.
    Fakt ist, inzwischen bekomme ich es relativ zuverlässig hin, Pakete per UDP mit deepSleep zu senden. Die Lösung ist bisher allerdings noch etwas hässlich und daher werde ich das oben genannte die Tage mal probieren.
    Gruss

  6. #36
    Erfahrener Benutzer Roboter-Spezialist Avatar von Moppi
    Registriert seit
    18.03.2018
    Beiträge
    503
    Guten Morgen d2x,

    prima, dass Du dran geblieben bist!

    Stichwort eingesetzte Bibliotheken:
    Mit einem ATmega328P habe ich auch Probleme mit den Sleep-Modi. Nicht dass es nicht funktioniert, nur mit der Stromaufnahme, die nicht "weit genug" sinkt. Hier ist es mir so ergangen, dass die "sleep.h" und die "power.h" verwendet werden - jedenfalls in den meisten Beispielen, die ich im Internet fand. Ich fand dann noch eine Anleitung, die diese Bibliotheken umgeht und auch in den Deep-Sleep-Power-Down wechselt und zwar mit deutlich mehr Stromersparnis.

    MfG
    Geändert von Moppi (23.11.2018 um 09:28 Uhr)

  7. #37
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    16
    Update:
    Die oben genannten Maßnahmen führen zwar dazu, dass zu 95% das Paket ankommt, hin und wieder reichen aber selbst 150 vorab gesendete Pakete nicht aus. Diese sind dann inklusive meinem Paket mit den Daten verloren.

  8. #38
    Erfahrener Benutzer Roboter-Spezialist Avatar von Moppi
    Registriert seit
    18.03.2018
    Beiträge
    503
    Wenn Du den Sleep-Mode nutzt, geht das doch bei nodeMCU nur per Reset, weil was anderes nicht funktioniert - hatte ich so gelesen.
    Probiere mal ohne den Sleep-Modus und mache mit einem Taster am nodeMCU einen längeren Reset. Ob das dann genau so ist oder dann immer funktioniert.
    Dann wenn er im Sleep-Mode drin ist, auch mal mit einem Taster am nodeMCU einen langen Reset machen und schauen, wie sich das dann verhält.

    Kann es sein, dass das nodeMCU nach einem Reset manchmal nicht richtig "anspringt"?

    MfG

  9. #39
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    16
    Das werde ich mal testen.
    "Nicht richtig anspringt" kann grundlegend nicht der Fall sein, da ich über die serielle Schnittstelle jeden Schritt nachvollziehen kann und das ab dem ersten Loopdurchgang.

  10. #40
    Erfahrener Benutzer Roboter-Spezialist Avatar von Moppi
    Registriert seit
    18.03.2018
    Beiträge
    503
    Ja, aber z.B. das WiFi-Modul oder andere Bausteine auf dem Modul. Irgendetwas muss es ja sein, was mal einwandfrei und mal nicht einwandfrei funktioniert. Sonst hättest Du keine Probleme damit.

    Falls das mit dem manuellen Reset dann einwandfrei funktionieren sollte, dann könntest Du eine extra Reset-Schaltung bauen, die einen sauberen Reset durchführt. Das war die Idee dahinter.

    Ansonsten wüsste ich auch nicht, was man da noch machen sollte. Leider habe ich zurzeit zu viel zu tun, als nochmals mit was anderem anzufangen. Sonst hätte ich das selber schon ausprobiert. Es ist ja sowieso schon so eine Sache, dass nur eine Art Rückkehr vom Sleep Mode funktionieren soll, weil die anderen Arten nicht richtig implementiert sind, dass sie einwandfrei anwendbar wären. Oder hat sich das in der Zwischenzeit mal geändert?

    MfG
    Geändert von Moppi (03.12.2018 um 21:51 Uhr)

Seite 4 von 4 ErsteErste ... 234

Ähnliche Themen

  1. Welches Paket für "Atom" installieren?
    Von RoboTrader im Forum Arduino -Plattform
    Antworten: 9
    Letzter Beitrag: 18.11.2017, 14:30
  2. nodeMCU zu nodeMCU: keine Kommunikations-Verbindung mehr nach wenigen Minuten
    Von HaWe im Forum NodeMCU-Board und ESP8266, ESP32-Serie
    Antworten: 0
    Letzter Beitrag: 02.10.2017, 15:01
  3. Deepsleep oder Sleep
    Von hubert_K im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 02.09.2010, 13:32
  4. 1 Befehl für ein Paket von Befehlen?
    Von stani im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 10.10.2009, 12:42
  5. Keine RP6-CD im paket
    Von WarChild im Forum Robby RP6
    Antworten: 10
    Letzter Beitrag: 17.04.2009, 19:48

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •