Immer mit der selben BSSID zu verbinden ist wohl keine Lösung. Da habe ich in meiner Villa 10 Repeater und ESPuino verbindet sich immer nur mit genau einem…
Den zusätzlichen WiFi-Scan haben wir ja entfernt weil sonst der Verbindungsaufbau sehr langsam wird. @Joe91 wie lange dauert denn der Verbindungsaufbau bei Dir?
Es ergibt eigentlich kaum Sinn für den „fast-path“, also wenn direkt und ohne Scan zur letzten SSID verbunden wird. Das entspricht dann dem Code im master.
Sonst könnte noch eine Änderung in Arduino 2 die Ursache sein.
Es gibt für Alle einen Sinn die kein Mesh haben. Weil die Verbindungsherstellung ist jetzt pfeilschnell & ich möchte ungern auf diesen Schnellstart verzichten.
Sonst könnte noch eine Änderung in Arduino 2 die Ursache sein
Yepp, das riecht nach einem Bug…
Vielleicht gibt es ja noch eine Lösung dazu
Also grundsätzlich gibt es dieses Problem, dass sich ESPuino mit dem „falschen“ WLAN verbindet, schon länger. Aber die Problematik ist mit Arduino2 irgendwie größer geworden.
Ja das habe ich mir auch schon gedacht. Also ich sitze in meinem Arbeitszimmer an einem Tisch, auf dem auch der Router steht. Und die Möhre kommt auf die Idee, sich mit einem AP zu verbinden, der im OG hockt (oder vielleicht sogar im Keller).
wie wäre es mit einem USE_BSSID Flag in der Config.
Wenn das gesetzt ist wird nach dem stärksten bekanntem WLAN gesucht und dann verbunden (dauert halt länger), ohne das Flag ist das Verhalten das gleiche wie jetzt (uund schnell)…
Grundsätzlich ist das ein generelles WLAN Problem, daher kann ich mir auch vorstellen das da nicht viel kommt an Bugfixes im Arduino…
noch bißchen Lesestoff:
https://community.ui.com/questions/Wireless-LAN-Roaming-FAQ/3044afc5-55ac-4c52-804d-2fbb91381e60
Das was ihr beobachtet ist eine Abwandlung von dem „typischen“ Problem (Client bleibt am „schlechten“ AP hängen)
Über sowas hatte ich gestern auch nachgedacht. Ich würd’s allerdings etwas weniger technisch bezeichnen, so dass es für Benutzer mehr Aussagekraft hat.
Idealerweise würde das im ESP32 stack automatisch funktionieren.
Man könnte es auch in der espuino-Implementierung lösen. Zum Beispiel bei schlechter RSSI oder gelegentlich einen Scan durchführen und mit einem besseren Netzwerk verbinden. Das könnte auch direkt nach den booten passieren: direct connect → scan → reconnect.
Frage ist, ob man mit diesen Verbindungsabbrüchen leben will.
Der Verbindungsaufbau mit Scan dauert ziemlich genau 1,66 s länger bei meiner Netzwerkumgebung (jeweils fünf mal auf beide Arten versucht und dann das Mittel angeschaut: 2,36 s ohne Scan, 4,01 s mit Scan).
Witzigerweise verbindet er sich bei mir seither deutlich öfter direkt mit dem starken Router, egal ob ich jetzt den dev-Branch oder meine Modifikation verwende.
Wie wäre es mit folgender Modifikation:
- Beim Scan wird immer direkt über die BSSID mit dem stärksten Signal verbunden.
- Zusätzlich eine Konfig-Option jedes mal den Scan durchzuführen?
Hier mal ein PR als Diskussionsgrundlage:
@Joe91 das sind ja moderate Änderungen, fein!
Ich werde am Wochenende eine zus. FRITZBox als Repeater daheim einklinken und kann es erst dann selbst testen.
1,5 Sekunden klingen jetzt nicht viel, würde aber gern die schnelle Verbindungsherstellung beibehalten, zur Not mit auch mit einer Einstellung. Evt. auch in Verbindung mit WLAN-Aufklappliste, weil da ist der Scan gemacht & die BSSID bereits bekannt.
Geht mir genauso mit der Geschwindigkeit. Ich für mich würde glaub die Option mit dem Scan jedes Mal aufgrund der Vorteile aktivieren, aber finde das mit den 1,6 s länger schon etwas schade .
Im Zusammenhang mit dem Scan die BSSID mit zu verwenden ist aber glaub in jedem Fall (auch bei der WLAN-Liste) sinnvoll (und ja auch sehr einfach umsetzbar).
Btw: in meinen Versuchen hat der „normale“ Scan auch länger gedauert als 1,6s. Deshalb wird im Code auch der psssive Scan verwendet.
Ich habe die Zeit für den Scan einmal für die WLAN-Aufklappliste gemessen:
WiFi.scanNetworks(true);
→ 6,9s
WiFi.scanNetworks(true, false, true, 120);
→ 2,1s
Also passiver Scan ist deutlich schneller aber 1,6s erreiche ich auch nicht.
Die 1,6 s hatte ich im direkten Vergleich bis die Verbindung stand. Als Differenz von Boot bis erfolgreich verbunden.
Meine These dazu ist, dass das initiale verbinden etwas länger benötigt wenn davor noch kein Scan stattgefunden hat.
Im log wurde jeweils zum selben Zeitpunkt der Scan oder der erste Verbindungsversuch gestartet.
Oder das verbinden mit BSSID geht schneller als ohne.
Behalte auch in Auge beim Lolin D32 (Pro) ist den Wifi 2.4gHz 802.11b/g/n mit wahrscheinlich eine Liebe für 802.11n.
Die soll damit eher eine ´alte´ AP wählen statt einen ´neuen` mit AC/AX…
Hast du dir eine Meinung dazu bilden können (oder sonst auch jemand anderes ) ?
Hatte diesen Commit jetzt die letzten Tage immer mit drin und konnte damit keine Nachteile feststellen (egal ob mit oder ohne dem Scan vor dem ersten Verbinden…).
Werde das für mich auf jeden Fall (aktiviert) weiterverwenden und nächste Woche mal nochmal an die Performance-Messungen zwischen Arduino als Komponente und normaler dev gehen…
Wenn Änderungswünsche da sind einfach melden. Gute Nacht Zusammen.
Ich habe jetzt eine 2. FRITZ!Box (7490) als Repeater am Start, um das Mesh/Repeater Problem nachvollziehen zu können. Der Hauptrouter (7590) steht weit weg (10m Altbau ohne Beton), die 2. Fritzbox als Repeater ist direkt neben dem ESPuino. Router & Repeater haben den gleichen WLAN-Namen und Kennwort.
Und tatsächlich:
ESPuino verbindet sich scheinbar abwechselnd/willkürlich mit dem einen oder anderen Router/Repeater und nimmt nicht das stärkste verfügbare WLAN. Das sieht man jetzt im Log an der BSSID (Mac-Adresse des Routers/Repeaters).
Web-Upload:
- Hauptrouter (weit entfernt Signalstärke: -78 dBm): ca. 550 Kb/s
- Repeater (direkt dran Signalstärke: -40 dBm): ca. 450 KB/s
Seltsam. Der neue Repeater (7490) ist trotz deutlich besserer Signalstärke langsamer als der Router. Irgendwelche Ideen?
Ich vermute mal der „Repeater“ hängt per WLAN an der ersten Box?
Wenn ja ist das Verhalten normal, die zweite Box muss ja abwechselend sich mit dem ESP unterhalten und mit der ersten Box.
Repeater erhöhen nur die Reichwweite, sie erhöhen (verringern sogar) den Durchsatz.
Ich vermute mal, das ist so eine Art „first come first serve“. Das verbindungsfreudige Gerät (ESP) ruft seine bekannten SSID in den Raum und warte auf eine Antwort. Dann ist es ein Glücksspiel - je nachdem wie die Router/Repeater ausgelastet sind - und der zuerst Antwortende wird gezogen, egal wie stark das Signal ist.
7590 hat (MU-)MIMO. Dadurch kann der 7590 das Signal an den Client richten/fokussieren.
Ich bewundere echt dein Setup! Ich habe mit aktuell drei Systemen hier bei keinem einzigen Upload-Raten von zuverlässig über 270 KB/s auf dauer eines ganzen Ordners (meistens sogar knapp unter 200 KB/s, auch wenn immer mal wieder einzelne Dateien darin auch nach oben ausreisen) .
Auch wenn ich jetzt über den BSSID-Connect aus dem PR immer mit > -30dBm verbunden bin.
Irgendwas übersehe ich hier (oder ich habe einfach Schrott SD-Karten, dann sollte es per USB aber auch nicht schneller sein).
Kann es hier noch mehr Abhängigkeiten geben? Das wäre echt hilfreich fürs benchmarken.
Bin aktuell ausschließlich auf dem dev-Branch.
Oder du spezielle Platinen bei dir? Wie ist die SD angebunden und verwendet dein Board einen Port-Expander?
Häufig verhält es sich so, dass von z.B. 5 Dateien null bis zwei mit ~550 KB/s hochgeladen werden und der Rest mit ~180 KB/s.
Auf einem anderen System (ganz leere SD-Karte) sind es ähnliche Werte nur mit ~260 KB/s und ~550 KB/s…
Ich werde mal noch ein paar Kreuztauschs ausprobieren.
Update: Die „langsame“ Geschwindigkeit scheint mit der der Karte zu wandern. Spannend wie es trotzdem zu den „schnellen“ Geschwindigkeiten kommt. Ich mache einfach mal weiter…