Gibt es eine Taktik, mit der das ESP8266 unter Micropython zuverlässig TCP-Streams empfangen kann und die üblichen Unix-Verdächtigen wie select() und recv() auch wie erwartet funktionieren? Wenn ja, kann mir jemand sagen, was ich falsch mache? Nach mehreren Tagen bin ich inzwischen weitgehend der Überzeugung, dass der uP-Code für TCP ziemlicher Schrott ist. Ich lasse mich aber gerne eines Besseren überzeugen. * Lesen auf einem offenen Socket mit read() oder readline() bricht immer wieder mit ECONNRESET ab, obwohl die Gegenstelle definitiv noch Daten sendet * poll() liefert als einzige je gesehenen Wert POLLIN zurück (d.h. Daten stehen zum Empfang bereit). POLLHUP habe ich nie gesehen. Bitmaske ist richtig gesetzt. * Auch gerne genommen: poll() liefert POLLIN, ein anschließendes read() geht dann in den Timeout. Mir scheint, als würde, wenn die Gegenstelle die Daten nicht am Stück sendet, am Ende nur noch ein einzelner Ethernet-Frame (536 Byte) durchkommen, dann ist Schluss. Verrückterweise stimmt das aber auch nicht immer, manchmal geht´s. Die aktuelle Version ist per mpy-cross übersetzt und auf das Board geladen. Eine ältere Version hatte ich direkt ins Image eincompiliert, verhält sich genauso bescheiden. Die Effekte sind auf zwei verschiedenen ESP-12S identisch. Aktueller (zig-mal umgebauter) Code anbei. Der Code soll mit einem Raumfeld One S sprechen - das tut er auch, aber mit den oben beschriebenen Eigenschaften macht das so keinerlei Spaß. urequest habe ich auch schon ausprobiert, das kann aber keine Redirects. Den Ansatz mit readline() hatte ich auch schon in meinem Code drin, hat nicht geholfen. Das Monster http.client aus der uP-Lib habe ich nicht versucht - das müsste ich samt sämtlicher Abhängigkeiten eincompilieren, und am Ende steht dann doch wieder nur ein poll() und read(). Also: hat das mal jemand erfolgreich ans Laufen bekommen? Wenn ja, wie?
:
Bearbeitet durch User
Max G. schrieb: > Also: hat das mal jemand erfolgreich ans Laufen bekommen? Wenn ja, wie? Hallo Max Ich hatte genau die selben Probleme wie du. Kurz und bündig: uPython ist für diese Anwendung unbrauchbar. Welchsle zu der ArduinoIDE mit dem ESP8266 Plugin. Damit funktionierts massiv stabiler. Ist halt kein Python mehr. Dafür läufts.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.