- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 48

Thema: NodeMCU UDP Paket senden + deepsleep

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    24.02.2013
    Beiträge
    19
    Danke Moppi für deine Mühe. Mein Code ist genau an diesem Beispiel angelehnt. Um aber nicht doch irgend etwas vermurkst zu haben, habe ich diesen noch mal verwendet und habe dabei alles was mit dem Empfang zu tun hat, raus geschmissen.

    Sieht dann so aus:
    Code:
    #include <ESP8266WiFi.h>
    #include <WiFiUdp.h>
    
    const char* ssid = "SSID";
    const char* password = "password";
    
    WiFiUDP Udp;
    unsigned int localUdpPort = 4210;  // local port to listen on
    char incomingPacket[255];  // buffer for incoming packets
    char  replyPacket[] = "Hi there! Got the message :-)";  // a reply string to send back
    
    IPAddress IPudp (255, 255, 255, 255); // <--- wird benötigt, da jetzt kein RemoteIp mehr abgefragt werden kann
    unsigned int sendUdpPort = 5005; // <---- wird benötigt, da jetzt kein RemotePort mehr abgefragt werden kann
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println();
    
      Serial.printf("Connecting to %s ", ssid);
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED)
      {
        delay(500);
        Serial.print(".");
      }
      Serial.println(" connected");
    
      Udp.begin(localUdpPort);
      Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
    }
    
    
    void loop()
    {
      
        Udp.beginPacket(IPudp, sendUdpPort);
        Udp.write(replyPacket);
        Udp.endPacket();
        delay(5000);
     
    }
    Daher willst Du das Paket mit was Anderem empfangen, als einem nodeMCU z.b. oder?
    Richtig, daher sollte das auf meinem Laptop, später auf dem Server, sichtbar sein.

    Wenn ich richtig gelesen habe, kommen nicht alle Pakete an? Also kommen welche an. Wenn welche ankommen, funktioniert auch der Versand. Mal anders gefragt, woher weißt Du, dass nicht alle ankommen, vielleicht wurden nicht so viele verschickt, wie Du glaubst?
    Richtig, es kommen nicht alle an. Das sehe ich daran, dass der serielle Monitor des Arduino mir brav mitteilt, das ein Paket erfolgreich verschickt wurde (bei meinem Code aus dem ersten Beitrag). Im Netzwerksniffer Wireshark, sowie per Terminalbefehl "netcat -ul 5005" kommen diese Pakete aber nur spradisch an. Laut angehängtem Code sollten das alle 5sek(+Durchlaufzeit) sein. Am NodeMCU sehe ich auch die blaue LED im richtigen Intervall aufleuchten. Das WiFi.disconnect() war eine Idee, dem Accesspoint mitzuteilen, dass die Verbindung beendet wird um nach der Schlafzeit diese wieder korrekt aufzubauen. Auch das yield() ist nur ein Versuch dem Prozessor Zeit zu geben, Hintergrundprozesse wie das Senden, beenden zu können.

    Klicke auf die Grafik für eine größere Ansicht

Name:	udp.png
Hits:	3
Größe:	105,9 KB
ID:	33789

    Hier sieht man die Zeitabstände von Paket zu Paket.

    - - - Aktualisiert - - -

    Neue Erkenntnis:
    Ich habe soeben mal drei Pakete unmittelbar hintereinander geschickt:

    Code:
    udp.beginPacket(IPudp,sendUdpPort1);
      udp.write(UnitID);
      udp.write(" ");
      udp.write("10000");
      udp.write(" ");
      udp.write("44.4");
      udp.write(" ");
      udp.write(rssi);
      sendingStat == udp.endPacket();
      
      udp.beginPacket(IPudp,sendUdpPort2);
      udp.write(UnitID);
      udp.write(" ");
      udp.write("20000");
      udp.write(" ");
      udp.write("44.4");
      udp.write(" ");
      udp.write(rssi);
      udp.endPacket();
        
      udp.beginPacket(IPudp,sendUdpPort3);
      udp.write(UnitID);
      udp.write(" ");
      udp.write("30000");
      udp.write(" ");
      udp.write("44.4");
      udp.write(" ");
      udp.write(rssi);
      udp.endPacket();
    Demnach ist zu erkennen, dass das erste Paket fast nie ankommt, aber häufig Paket 2+3. Aber auch bei Paket2+3 sind manchmal 2-3 Codeschleifen (ca.9sek/loop) durchlaufen, ohne das diese ankommen.
    Hier sieht man anhand des Ports, welche Pakete ankommen:
    Klicke auf die Grafik für eine größere Ansicht

Name:	udp.png
Hits:	3
Größe:	144,2 KB
ID:	33791
    Geändert von d2x (15.11.2018 um 14:46 Uhr)

Ä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
  •  

Solar Speicher und Akkus Tests