Keine oder fehlerhafte Signale über WLAN

Mehr
10 Sep 2018 11:43 #477 von ilikecookies
ilikecookies erstellte das Thema Keine oder fehlerhafte Signale über WLAN
Hey hey liebe Community^^

aktuell arbeite ich daran ein Netzwerk aus ESP8266-01 aufzubauen um damit über DMX512 leuchtmitteln über WLAN zu steuern. Dabei soll ein ESP der HOST sein und die anderen die CLIENTS. Anbei hänge ich mein Programm für beide ESP Typen ein. Mein Problem ist folgender: nach langen rumtesten ist mir aufgefallen, dass die Verbindung zwischen den ESP's funktioniert, jedoch sendet entweder der Server kein oder falsche Signale. Ich habe viel im internet geschaut um nach einer Lösung zu finden aber ich komme da echt nicht weiter. Habe ich vielleicht bei den Einstellungen des Servers/Clients was vergessen oder kann der Server nicht gleichzeitig ein AP sein? Ich hoffe mir kann jemand dabei helfen, ich würde zu gerne das ganze schaffen^^

Als Umgebung benutzt ich den Arduino IDE 1.8.6 mit dem ESP8266 Community 2.2.0

Mit freundlichen Grüßen,

Frank
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
14 Sep 2018 15:54 #479 von ilikecookies
Keine oder fehlerhafte Signale über WLAN
Update:

hab jetzt einfach ein komplett neuen Code geschrieben und UDP als Protokoll genutzt und jetzt funktioniert alles wie ich es haben will. Aber rein aus Interesse würde es mich schon interessieren warum der Code den ich hier gepostet habe nicht funktioniert! Hat da jemand vielleicht eine Idee?

Liebe Grüße,

Frank

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
15 Sep 2018 17:31 #480 von supporter
Keine oder fehlerhafte Signale über WLAN
Hallo Frank,

kann ich mir am Montag mal angucken. Nicht enttäuscht sein, wenn keiner antwortet. Manchmal ist es ganz einfach so, dass schlichtweg niemand eine Idee dazu hat.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
19 Sep 2018 18:52 #481 von RedBaron
Keine oder fehlerhafte Signale über WLAN
Das Problem ist ganz einfach.
server.write('a');
hat keine Funktion. Wohin (an wen) sollte denn auch geschrieben werden? Ein Server kann gleichzeitig mit mehreren Clients verbunden sein. Welchen soll er dann nehmen?

Ein Server hat (nur) die Funktion auf eine Verbindung durch einen Client zu warten.
cli = server.available();
liefert ein Client-Objekt zurück. Die Kommunikation erfolgt dann über diesen Client. Im Prinzip reden nun zwei Client-Objekte miteinander.
void loop() {
  ArduinoOTA.handle();
  cli = server.available();
  if (cli) {
    digitalWrite(LED_BUILTIN, LOW);
    cli.write('a');
    cli.stop();
  }
  else {
    digitalWrite(LED_BUILTIN, HIGH);
  }
}

Dann muss man sowohl im Host- als auch im Client-Programm noch ein wenig auf den Auf- und wieder Abbau der Verbindung achten! Wie genau, hängt davon ab, wie lange solch eine Verbindung bestehen bleiben soll.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
20 Sep 2018 14:10 #483 von ilikecookies
Keine oder fehlerhafte Signale über WLAN
server.write('a');

laut definition schickt der Server mit dieser Zeile an jeden verbundenen Client den Signal 'a'. (Quelle: www.arduino.cc/en/Reference/WiFiServerWrite )
Hab aber leider nicht mehr den Code vor augen und wenn zu diesem Zeitpunkt kein Client verbunden ist dann hat die Zeile wirklich kein nutzen.

ansonsten danke für die Antwort!! Mir ist noch nicht ganz Klar ab was es Bedeutet wenn eine Verbindung zwischen einem Client und Host bestehen bleibt bzw. nicht geschlossen wird. Also warum schließt man die Verbindung mit client.stop();? Werden dann von dem gleichen ESP immer wieder neue verbindungen zum Host aufgebaut bei jedem durchlauf und somit kommt es zur Überlastung des Servers? Oder merkt sich der Server den Client und die Verbindung begrenzt sich dann auf (in dem Fall) 1 Client. Ich glaub wenn ich das Verstanden habe kriege ich den Rest hin. Wobei ich ja aktuell schon weiter bin mit Hilfe von UDP :'D

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
25 Sep 2018 16:58 #485 von RedBaron
Keine oder fehlerhafte Signale über WLAN
Ja, das ist richtig für den WiFiServer in der Arduino-Bibliothek, aber nicht für den ESP8266! Dies ist der Code in ...\arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WiFi\src\WiFiServer.cpp. write ist da nicht implementiert!
size_t WiFiServer::write(uint8_t b) {
    return write(&b, 1);
}

size_t WiFiServer::write(const uint8_t *buffer, size_t size) {
    // write to all clients
    // not implemented
    (void) buffer;
    (void) size;
    return 0;
}

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum