Forum: Mikrocontroller und Digitale Elektronik ESP8266 Server/Client


von Günter (Gast)


Lesenswert?

Hallo

folgende Situation
1 Server (als AP) / 2 Clients (späterhin 4)

Code_Snipsel (Client)
client.print (String("GET ") + "HTTP/1.1\r\n" +
                  "Host: " + "178.168.4.1" + "\r\n" +
                  "\r\n\r\n");

Server soll Daten (derzeit 1 Byte) an die beiden Clients senden;

Code_Snipsel (Server)
 if (client.connected()) {
    test = test + 1;
    client.print (test);}


Daten kommen teilweise unregelmäßig an; zwar manchmal in beiden Clients 
korrekt; aber vielfach nur in einem der beiden (abwechselnd)

Welche Möglichkeiten der Steuerung (Absicherung) muss berücksichtigt 
werden, damit in beiden Clients die Daten korrekt ankommen (müssen nicht 
gleichzeitig ankommen -- aber Übertragung muss sicher stattfinden !!!)

vielen Dank im Voraus
Günter

von Einer K. (Gast)


Lesenswert?

Da die Übertragung per TCP stattfindet, ist sie schon "sicher"!

Vermutlich liefert eine deiner Funktionen/Methoden Fehlercodes, welche 
du stupmpf ignorierst.

Klarer: Das System schreit um Hilfe/Vergebung, aber du hörst nicht zu.

von R. R. (elec-lisper)


Lesenswert?

Funktioniert es besser wenn du client.flush() aufrufst nach dem print()?

von Bernhard BRM (Gast)


Lesenswert?

Hallo Günter,

Sowie ich dich verstanden habe, senden die Clients Daten an den Server 
oder umgekehrt?
Bei Client hast du ei GET, also sendet der Client.
Im Text schreibst du aber der Server sendet, was stimmt nun?

Ich hatte auch Probleme mit HTTP auf dem ESP8266.
Vor allem, wenn mehrere Request parallel ankommen, geht ab und zu was 
verloren. Ich habe ein Server und viele Clients (>20 Stück).
Ich hatte dann von HTTP auf UDP umgestellt.
Wenn bei einem Client eine Aktor angibt, dann sendet der Client per UDP 
die Daten an den Master und der Master schaut welche Clients den Event 
"aboniert" haben und sendet diesen den Event auch per UDP.

UPD hat zwar den Nachteil, dass die Ablieferung nicht garantiert ist, 
dafür ist das Protokoll um ein vielfaches weniger Komplex als HTTP.
Auch die Übertragungszeit sinkt, da keine Verbindungsaufbau und kein 
Response benötigt wird. Bei mir dauert das Verteilen einige 
Millisekunden.

Ein weitere Vorteil ist, der Server könnte per Broadcast mit einem Call 
an alle Clients senden. Ich verwende mein Heim-WiFi - beachte noch, wenn 
der ESP ein AP erstellt, ist die Anzahl der Clients begrenzt, auch ein 
Routing ist nicht möglich.

Also schreib doch nochmal etwas genauer was du baust, du wer jetzt an 
wen sendet.

von Michael U. (amiga)


Lesenswert?

Hallo,

Bernhard BRM (Gast) mehr als Anmerkung:

dafür wäre MQTT das nahezu ideale Protokoll gewesen.
Der nötige Broker (Mosquitto als Beispiel) macht kaum Last und Anbindung 
an HTTP-Server gibt es.

Gerade Sachen wie keepAlive, QoS usw. erledigt diese Kombi sozusagen 
alleine mit kaum Aufwand und Netzwerktraffic.

Gruß aus Berlin
Michael

von Günter (Gast)


Lesenswert?

Hallo Bernhard BRM (Gast)

Die Clients sollen Daten beim Server abrufen;
dazu habe ich den GET-Abruf verwendet

Wikipedia:
"
GET     ist die gebräuchlichste Methode. Mit ihr wird eine Ressource 
(...) ) unter Angabe eines URI vom Server angefordert.
"

mein Server sendet darauf auch (jeweils die gleichen) Daten an die 
Clients.
diese Daten kommen sporadisch in einem der beiden Clients aber nicht an. 
(das ist mein Problem...)

*******************************************

zum Thema UDP...

was ist da zu beachten (Beispiels, Links würden genügen)

Frohe Weihnachten und viele Grüße

Günter

von Einer K. (Gast)


Lesenswert?

Günter schrieb:
> diese Daten kommen sporadisch in einem der beiden Clients aber nicht an.
> (das ist mein Problem...)
Und?
Schon die Serverlogs Untersucht?
Die Rückgaben der Methoden untersucht?
Die Debugmeldungen auf den ESP aktiviert?

Huch, sorry.....
Es kann auch sein, dass du nur jammern willst und gar nicht an einer 
Lösung interessiert bist. Dann überlese meine Beiträge bitte weiter, wie 
bisher...

von Günter (Gast)


Lesenswert?

Hallo Arduino Funboy

Huch, sorry.....
kann es sein, dass du da auf einem "sehr hohem Roß" sitzt ?

Wie wärs, wenn du mir - anstelle deiner nicht sehr motivierenden
Anwort - erklären würdest

wie und wo ich die Serverlogs finden und untersuchen kann?
wie und wo ich die Rückgaben der Methoden finden und untersuchen kann ?

OK ! .. die Debugmeldungen auf den ESP habe ich bereits aktiviert
kann aber leider die einzelnen Meldungen nicht interpretieren

Als  "NEWCOMER" bin ich leider auf die Hilfe anderer Leute
angewiesen.

Ich wünsche dir zum Weihnachtsfest mehr Demut...

Freundlichst
Günter

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.