Der "dicke" ESP von LoLin ist gerade geflasht worden und es gibt schon mal einen startenden Webserver.
Abwarten...
Ich beschreibe den jetzt nur mit 9600 Upload. Stand auch irgendwo in diesem Internet. Halte ich aber auch für Voodoo.
ISS Pointer
-
-
Dein Code läuft (mit ein paar "nicht invasiven" Erweiterungen) bei mir schon gut 2h auf einem Wemos D1 mini Clone durch. Ich melde mich später nochmal.
Edit: Läuft noch immer - nach nunmehr ca. 6h. Allerdings ohne große "Last" auf dem Server - sprich: Nur hin und wieder mal ein Command gesendet.
Ping Statistik: 14 von 22440 Pakete sind verloren gegangen - also verschwindend wenig.
Aber: Belastet man die "Stepper/Steps" Funktionen heftig mit Requests, scheint es den Controller zu überlasten. Vor allem, wenn die Requests schneller kommen, als die MCU die Steps bearbeiten konnte.
Der client wir dann nicht mehr disconnected, sondern wartet scheinbar immernoch auf Daten.
Ich schau mir das mal an und teste mal bisschen weiter.
-
-
Bitte mal den Code im Anhang testen. Läuft bei mir auch mit hoher Last recht stabil.
Hab ein paar Veränderungen vorgenommen:
- Non-blocking delays
- Timeout für clients
- Bisschen mehr [definition=12,0]debug[/definition] Infos in Terminal und HTTP Response -
Ohne es getestet zu haben schon mal 1000 Dank.
Der neue ESP läuft ebenfalls nicht mit dem (alten) Code. Also läuft ... aber eben nur eine gewisse Zeit.
Ich habe direkt 2 bespielt und an verschiedenen Stellen im Haus laufen lassen. Nur um auch das auszuschließen.Wird gleich geflasht.
-
-
Läuft jetzt schon 2 Stunden
Ich teste den ganzen Tag immer wieder mal zwischendurch. Bis jetzt sieht das sehr gut aus.
-
100% stabil:
Aktuell auf einem "besserem" ESP. So einem LoLin-Ding mit mehr Pins als einem einfachem Wemos.
Dickes DANKE @root2 . Das Projekt stand schon kurz vor der Schublade.
-
-
Gerne! Hat auch Spaß gemacht gestern noch bisschen rum zu spielen
Wenn es jetzt nen Monat durchhält können wir vielleicht wirklich von "stabil" reden
-
Läuft
Dann weiter zum Display:
Den Python-Part scheine ich am Laufen zu haben.
Zumindest startet es noch.
Anbei zum Vergleich die Datei dazu.Im Sketch bekomme ich aber ein
'req' was not declared in this scope
Verstehe ich nicht, da doch genau der Befehl sehr oft im Sketch aufgerufen wird.Die ino auch ist auch mit in der ZIP.
Das ganze ist jetzt wieder auf dem kleinen Wemos D1 mini.
Pins sind jetzt fast alle belegt.Aktueller Plan:
- auf Hilfe für das Display hoffen
- Stromversorgung durchgehen
- GestaltungDie Steuerplatine für den Stepper ist schon recht groß.
Und da ich ja wieder billig gekauft habe, ist es ein Stepper bei dem die Achse nicht in der Mitte sitzt.
Das macht den Aufbau etwas spannender.
Aber das sind alles Probleme für später. -
-
C
Alles anzeigen// CONTROL LCD int index = req.indexOf("/lcd/time/"); if (index != -1) { Serial.println(req.substring(index+10)); respMsg = "OK: LCD NEW TIME SET"; } // Read the first line of the request String req = client.readStringUntil('\r'); printMillis(); Serial.println(req); client.flush();
Das funktioniert nicht aus 2 Gründen,
Du hast req.indexOf vor der Definition String req = ... aufgerufen, da existiert es noch nicht
und es würde auch nicht funtionieren, da client.readStringUntil('\r'); den String ja erstmal liest.Heisst, den Control LCD Block vor z.B. Control LED aber auf jeden Fall hinter Read the first line of request Block.
Cheers
Claudia -
... und den LCD String bekommst Du nur wenn tr < ts ist (was immer das heissen mag)
Python
Alles anzeigenif (ts > tr): duration = int((ts - tr) *60*60*24) print("Next Pass (Localtime): %s" % ephem.localtime(tr)) doLCD(ephem.localtime(tr)) if INFO: print("UTC Rise Time : %s" % tr) print("UTC Max Alt Time: %s" % tt) print("UTC Set Time : %s" % ts) print("Rise Azimuth: %s" % azr) print("Set Azimuth : %s" % azs) print("Max Altitude: %s" % altt) print("Duration : %s" % duration)
vielleicht testhalber ein doLCD... vor dem if(ts > tr)
Cheers
Claudia -
-
-
-
-
Eigentlich sollte da der Syntaxcheck zuschlagen, da ja nach einem if ... ein Einrücken erwartet wird.
Wahrscheinlich ist der SourceCode mit Tabs und Leerzeichen vermischt.
Ich besorge mir mal das von github und prüfe das.
Bis dannCheers
Claudia -
Ja, ist so Tabs und Leerzeichen sind vermischt -> kann, muß aber nicht funktionieren.
Magst Du die Struktur sowie es momentan ist beibehalten oder darf ich das umschreiben?
Z.B wird in fast jeder do... Funktion der gleich try...except Block ausgeführt,
den könnte man ja in eine eigene Funktion packen und dann von den anderen aufrufen.Ḿache ich gerne, habe aber ÜBERHAUPT kein Problem damit wenn Du sagst, nein, lass es wie es ist damit komme ich (besser) klar.
Hier der nicht geänderte Code (natürlich wurden die Tabs gegen Leerzeichen getauscht)
Cheers
Claudia -
-
Alles was hilft und mir Arbeit abnimmt ist willkommen
DANKE!
Heute Abend hoffe ich etwas Zeit für den ISS-Robi zu finden.
Ich überlege gerade, wie ich den Sketch ändern muss, wenn ich den Stepper auf dem Kopf einbauen will um das Volumen besser nutzen zu können. -
Ich überlege gerade, wie ich den Sketch ändern muss, wenn ich den Stepper auf dem Kopf einbauen will
Ganz verrückte Idee (und ungetestet): Die (relativ) zu fahrenden Steps jeweils mit (-1) multiplizieren?
-
-
Klingt plausibel
Werde ich probieren. -
War einfacher als gedacht:
einfach in den Zeilen zum Stepper die Schrittwerte umdrehen. Genau genommen steht es sogar im Code, wie es geht:XML
Alles anzeigen// This is just a simplistic method of handling + or - number steps... else if (req.indexOf("/stepper/steps") != -1) { int steps = getValue(req); if ((steps == 0) || (steps < 0 - STEPS) || ( steps > STEPS )) { respMsg = "ERROR: steps out of range "; } else { digitalWrite(STBY, HIGH); // Make sure motor is on respMsg = "OK: STEPS = "+String(steps); // delay(DELAY); SleepMilliSeconds(DELAY); if ( steps > 0) { // Forward for (int i=0;i<steps;i++) { // This loop is needed to allow Wifi to not be blocked by step stepper.step(-1); // delay(DELAY); SleepMilliSeconds(DELAY); yield(); } } else { // Reverse for (int i=0;i>steps;i--) { // This loop is needed to allow Wifi to not be blocked by step stepper.step(1); // delay(DELAY); SleepMilliSeconds(DELAY); yield(); }
Hier jetzt Zeile 13 und 20 stepper.step(-1) und (1) getauscht - läuft.
Mehr Zeit habe ich heute auch schon wieder nicht. Morgen oder am Wochenende geht es weiter. Die Flyby-Info im Display wäre halt schon noch schick.
-
-
>Die Flyby-Info im Display wäre halt schon noch schick.
Ist das ein offener Punkt bei Dir, sprich implementieren und testen oder läuft mein Code nicht?
Nur um sicherzustellen das wir auf dem gleichen Stand sind, das angehängte zip
sollte schon funktionieren und auf der seriellen Konsole die Displayasugaben erzeugen.Bin leider noch nicht dazugekommen, das Skript etwas zu vereinfachen, da ich momentan mit dem LE Buildprozeß kämpfe.
Cheers
Claudia -
Hi,
Ich bin einfach noch nicht zum Testen gekommen -
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!