Forum: Mikrocontroller und Digitale Elektronik ESP01S: Frage UDP Server


von Bot N. (botnec)


Lesenswert?

Da ich nur Halbwissen zu Netzwerken und Arduino-Programmierung habe,
müsste ich nochmals um Unterstützung bitten.

Ich habe derzeit 3 UDP-Clients die sporadisch Daten liefern. Diese Daten
möchte ich mit einem UDP-Server sammeln und auswerten.
Wenn ich es richtig verstanden habe ist das weder Unicast, noch 
Multicast
oder Broadcast.

Vielleicht eine Dumme Frage, aber kann man den Server so einstellen,
dass es er generell auf UPD-Messages von beliebigen IPs hört ?

Ein Hobbyprojekt mit UDP-Multicast habe ich erstellen können, aber zum
beschriebenen Problem habe ich eigentlich nichts in meinen Dokus zu
Arduino-Programmierung finden können.

Kann mir da bitte jemand helfen ?

Danke.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Der ESP8266 unterstützt Multicast, dafür gibt es extra ein paar 
Methoden. Ich denke, er empfängt generell UDP pakete von beliebigen 
Quellen. Mit remoteIP() und remotePort() kannst du diese abfragen.

https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/src/WiFiUdp.h

: Bearbeitet durch User
von Dieter S. (hotsystems)


Lesenswert?

Bot N. schrieb:
> Wenn ich es richtig verstanden habe ist das weder Unicast, noch
> Multicast oder Broadcast.

Doch, das ist schon Unicast. https://de.m.wikipedia.org/wiki/Unicast

Sende einfach von einem Client eine UDP-Nachricht an den Server.
Das geht dann auch von allen Clients aus. Du musst nur drauf achten, 
dass die Sendungen sich nicht überschneiden. Da wird im Protokoll nichts 
überprüft.
Das musst du in deinem Programm selbst handeln.

von Bot N. (botnec)


Lesenswert?

Dieter S. schrieb:
> Doch, das ist schon Unicast. https://de.m.wikipedia.org/wiki/Unicast

Super Danke.

Aufgrund deines Hinweises habe ich ein Beispiel gefunden wie ich den
Server anwenden muss. Leuchtet mir dann auch ein.

Das mit der Überschneidung ist mir klar, kann ich aber nicht verhindern.
Damit kann ich aber leben, dann fehlen mir gelegentlich paar Daten.

Vielen Dank nochmals für den Tipp.

: Bearbeitet durch User
von Dieter S. (hotsystems)


Lesenswert?

Bot N. schrieb:
> Das mit der Überschneidung ist mir klar,

Ich löse das, indem ich unterschiedliche Intervalle zum Senden nutze und 
mehrfach hintereinander sende.

von Bot N. (botnec)


Lesenswert?

Dieter S. schrieb:
> Ich löse das, indem ich unterschiedliche Intervalle zum Senden nutze und
> mehrfach hintereinander sende.

Würde ich normalerweise auch so machen.

Leider kann ich aber bei den Clients hier nichts diesbezüglich
verändern, da es gekaufte Teile sind bei denen ich die SW nicht
verändern kann. Dazu kommt noch dass die Aussendung unterschiedlich
getriggert werden kann. Leider.

: Bearbeitet durch User
von Dieter S. (hotsystems)


Lesenswert?

Bot N. schrieb:
> Leider kann ich aber bei den Clients hier nichts diesbezüglich
> verändern,

Ok, das konnte ich allerdings nicht wissen. Da musst du mit den 
Einstellungen leben.

von Norbert (der_norbert)


Lesenswert?

Bot N. schrieb:
> Leider kann ich aber bei den Clients hier nichts diesbezüglich
> verändern, da es gekaufte Teile sind bei denen ich die SW nicht
> verändern kann.

Wer UDP Pakete mit Daten verschickt, ohne eine Empfangsbestätigung, dem 
sind die Daten nicht wichtig. Oder die Daten sind allgemein nicht 
wichtig.

Da kann man auch einen Stapel Postkarten in die U-Bahn schmeißen und 
hoffen dass die jemand in den Kasten wirft.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Norbert schrieb:
> Da kann man auch einen Stapel Postkarten in die U-Bahn schmeißen und
> hoffen dass die jemand in den Kasten wirft.

Ich vergleiche UDP auch gerne mit Postkarten, aber ganz so schlecht ist 
es nicht. Im lokalen Netz kommen UDP Pakete fast immer an. Du musst es 
also mit einer Postkarte vergleichen, die du in den Briefkasten der Post 
wirfst.

Dass zwei Clients gleichzeitig senden könnten ist meiner Meinung nach 
kein "problem" bei/von UDP, weil Kollisionen auf einer anderen Ebene 
erkannt und behoben werden.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Dass zwei Clients gleichzeitig senden könnten ist meiner Meinung nach
> kein "problem" bei/von UDP, weil Kollisionen auf einer anderen Ebene
> erkannt und behoben werden.

Wir haben – das ist schon Jahre her – mal kräftig Daten im Netz 
generiert und gemessen was (und wann) vom UDP Traffic tatsächlich noch 
ankam.

War ein eye-opener.

Aber ja, wenn die Daten unwichtig sind und man verlorene Pakete getrost 
ignorieren kann, dann isses die einfachste Möglichkeit.
Dagegen spricht allerdings:

Bot N. schrieb:
> Diese Daten
> möchte ich mit einem UDP-Server sammeln und auswerten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.