Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESP8266 Async Webserver #107

Closed
wants to merge 8 commits into from
Closed

Conversation

stefan123t
Copy link
Collaborator

@lumapu würde gerne den AsyncWebserver mergen, muss ihn davor aber noch testen.
Dafür hier schonmal der Pull Request.

Ich habe ihn bisher nur kompiliert und weder auf dem NodeMCU noch auf dem Wemos D1 Board live getestet.

lumapu and others added 4 commits July 10, 2022 22:55
@lumapu lumapu changed the title ESP8166 Async Webserver ESP8266 Async Webserver Jul 18, 2022
@lumapu
Copy link
Owner

lumapu commented Jul 18, 2022

leider geht das Update noch nicht und auch die Setup Seite bleibt weiß.
Ich bin schon dran, die beiden Probleme zu beheben.

@mslookup
Copy link

wenn ihr nen beta tester braucht kann euch meine dienste anbieten.

  • 1x nodemcu3 mit 2x hoymiles hm1500 (uptime 3 tage auf 0.4.25)
  • 1x nodemcu3 mit hoymiles hm600 (uptime 4 stunden auf 0.4.20)

@lumapu
Copy link
Owner

lumapu commented Jul 19, 2022

Ja gerne, ist zwar noch etwas verfrüht, aber ich konnte immerhin schon zwei issues fixen. Leider geht das Speichern der Parameter noch nicht:
https://github.com/lumapu/ahoy/tree/asyncWeb

@lumapu
Copy link
Owner

lumapu commented Aug 5, 2022

@mslookup jetzt habe ich eine funktionierende Variante zum Testen:
https://github.com/lumapu/ahoy/tree/asyncWeb

@mslookup
Copy link

mslookup commented Aug 6, 2022

@lumapu: hab deine Version draufgeschmissen, erstes Feedback von mir:

  • Webinterface viel mehr responsive (klar, da async)

  • Ich bewundere dein Engagement!

  • Bug: MQTT IP lässt sich nicht setzen - nach dem Speichern steht irgendwas kryptisches drinnen
    setup_ip

  • Bug: Nach dem Reboot nach dem Settings speichern kommt immer eine "File not found" exception
    after_reboot

  • Bug: Firmware Update bringt immer nach dem Absenden (ca. 3sek) einen Fehler, von 3 Versuchen hat nur einer die neue FW geflashed.
    firmware_update

Ich hab dir mal ein paar Screenshots angehängt.

Wenn du den Bug mit der MQTT IP gefixt hast, gerne wieder bescheid geben, dann werd ich nochmal testen... so kann ich das leider nicht betreiben, da ich wie schon gesagt keine MQTT IP eintragen kann.

VG mslookup

@lumapu
Copy link
Owner

lumapu commented Aug 6, 2022

vielen Dank für das schnelle Feedback. Habe auch gespeichert zum Test aber keine Daten verändert.
Ich melde mich wieder wenn ich soweit bin.

@stefan123t
Copy link
Collaborator Author

Wegen Bug: MQTT IP lässt sich nicht setzen - nach dem Speichern steht irgendwas kryptisches drinnen.
Das habe ich allgemein auch im main branch. Nach einem Reset des EEPROMs (fehlerhafte CRC Chksum) wird der ganze Bereich mit 0xFF überschrieben (nicht 0x00!). So steht bei mir jetzt 65535 als long Wert für das MQTT Intervall.
Das ist nun read-only und ich kann es nicht anpassen.
@lumapu eventuell hier die Default Werte aus der config.h beim initialisieren des EEPROMs gleich drüber schreiben / vorher kurz setzen und dann einmal speichern ?

@lumapu
Copy link
Owner

lumapu commented Aug 7, 2022

lustiger Weise bin ich gerade genau an diesem Punkt. Bei mir hat die app.cpp unter saveValues diesen Codeblock

request->arg("mqttAddr").toCharArray(buf, 20);
i = 0;
p = strtok(buf, ".");
while(NULL != p) {
    mqttAddr[i++] = atoi(p);
    p = strtok(NULL, ".");
}

beim auslesen wir die Adresse allerdings als char-Array interpretiert:

char mqttAddr[MQTT_ADDR_LEN];
...
mEep->read(ADDR_MQTT_ADDR,     mqttAddr,  MQTT_ADDR_LEN);
...
if(mqttAddr[0] > 0) {
    mMqttActive = true;
    if(mMqttInterval < MIN_MQTT_INTERVAL)
        mMqttInterval = MIN_MQTT_INTERVAL;
}
else
    mMqttInterval = 0xffff;

@lumapu
Copy link
Owner

lumapu commented Aug 7, 2022

im Commit 35e1ff1 wurde es zerstört (10.07.)
Im main-Branch ist es schon gefixt habe ich gerade gesehen.

@lumapu
Copy link
Owner

lumapu commented Aug 7, 2022

@mslookup jetzt gibt es eine neue Version, bei der sowohl MQTT gefixt ist, als auch das neueste Feature der Leistungsbegrenzung integriert ist (merge mit main) - also quasi auf aktuellem Stand.
Update ist noch nciht gefixt.

@mslookup
Copy link

mslookup commented Aug 7, 2022

Guten Morgen :)

  • MQTT Setup fix kann ich bestätigen
  • Aktuelle Werte werden kryptisch dargestellt
    cryptic_display
  • Manchmal fehlt das Design auf der Setup Page
    design_fehlt

Auf den ersten Blick sieht der Rest gut aus.
VG
mslookup

@stefan123t
Copy link
Collaborator Author

@lumapu danke fürs finden des Fehlers, ich habe sowohl die NTP Werte als auch die DevControl Methode ebenfalls mit request-> anstelle von mWeb-> gemerged.

@lumapu
Copy link
Owner

lumapu commented Aug 7, 2022

@stefan123t wo hast du gemergt, mir ist nichts aufgefallen

@mslookup ich kann das bei mir nicht nachvollziehen. Also beides nicht, habe die heutigen Änderungen in Main einfließen lassen 0.4.101

@stefan123t
Copy link
Collaborator Author

stefan123t commented Aug 10, 2022

@lumapu ^^^^ hier ist der aktuelle Merge f4f2faf für asyncWeb mit main branch 0.5.5

@stefan123t
Copy link
Collaborator Author

@mslookup willst Du mit der aktuellen Version nochmal testen und Feedback geben, was ggf. gefixt ist bzw. evtl. immer noch nicht geht ?

Falls Du das Problem mit den kryptischen Zeichen debuggen willst solltest Du mal das Debugging in der platformio.ini aktivieren:

build_flags = -DDEBUG_ESP_PORT=Serial
	-DDEBUG_ESP_CORE 
	-DDEBUG_ESP_WIFI 
	-DDEBUG_ESP_HTTP_CLIENT 
	-DDEBUG_ESP_HTTP_SERVER 
	-DDEBUG_ESP_OOM 

Eventuell willst Du auch HTTP_CLIENT UND _SERVER wieder abschalten, da hier sehr viele Zeilen geloggt werden.

Ich speichere es bei mir mit log2file in eine Datei und lese mir diese nachträglich durch, da der Monitor im VSCode/PlatformIO nur einen eingeschränkten Scroll Buffer hat.

monitor_filters = 
	;default   ; Remove typical terminal control codes from input
	time       ; Add timestamp with milliseconds for each new line
	log2file  ; Log data to a file “platformio-device-monitor-*.log” located in the current working directory

Originally posted by @stefan123t in #132 (comment)

@lumapu
Copy link
Owner

lumapu commented Aug 10, 2022

danke, ich bin noch nicht ganz zufrieden, ich glaube in Setup bleibt der Platzhalter für die MQTT Adresse stehen

@mslookup
Copy link

mslookup commented Aug 10, 2022

@stefan123t hab gerade deinen commit (https://github.com/grindylow/ahoy/tree/f4f2faf2717c871ba567f58154db3f8a674083d6) bauen wollen, leider bekomme ich nur fehlermeldungen :/

main.cpp:145:21: error: qualified-id in declaration before '(' token
145 | bool Main::getConfig(void) {

Hattest du den mal selbst gebaut und lief der bei dir durch?

@stefan123t
Copy link
Collaborator Author

Nö nur nach bestem Wissen und Gewissen hier im GitHub den Merge erstellt.

@stefan123t
Copy link
Collaborator Author

stefan123t commented Aug 11, 2022

@lumapu offenbar scheint sich das BasicOTA mit dem AsyncWebServer zu beissen.

https://randomnerdtutorials.com/esp8266-nodemcu-ota-over-the-air-vs-code/

There are a bunch of alternatives for OTA programming with the ESP8266 boards. For example, in the Arduino IDE, under the Examples folder, there is the BasicOTA example (that never worked well for us); and many other examples from different libraries.

Most of our web server projects with the ESP8266 use the ESPAsyncWebServer library. So, we wanted a solution that was compatible with that library. The AsyncElegantOTA library is just perfect for what we want:

@aschiffler
Copy link
Contributor

Ich schlage vor den PR nochmal zurückzustellen

@aschiffler aschiffler closed this Aug 17, 2022
@stefan123t stefan123t mentioned this pull request Sep 8, 2022
19 tasks
@lumapu
Copy link
Owner

lumapu commented Sep 8, 2022

@mslookup Ich habe im Branch asyncWeb03 eine aus meiner Sicht komplett vollständige Version mit AsyncWebserver und allen Funktionen der aktuellen Entwicklung - neuer geht nicht.

Könntest du nochmal testen und hier dein Feedback geben?

@mslookup
Copy link

@lumapu leider war ich ein bisschen zu langsam, so dass ich nur den aktuellen stand des branches asyncWeb03 testen konnte.
Ich bin verblüfft, wie krass weit die Entwicklung, verglichen zum letzten Stand, gekommen ist.

Ich weiß nicht, obs an dem letzten Commit im Branch liegt, aber die Live View scheint bei mir broken zu sein:
grafik

Darüber hinaus hatte ich jetzt schon 2 automatische Neustarts in ca. 5 Minuten, entweder ausgelöst durch zu viel klicken im UI, oder einfach so. Werde jetzt mal die Finger von der UI lassen und mal schauen, ob er dann länger läuft.
grafik

VG!

@mslookup
Copy link

mslookup commented Sep 10, 2022

Noch ein paar Dinge, die mir aufgefallen sind:
Beim Frisch eintragen nach einem Settings Reset geht er davon aus, dass ich einen HM1500 habe - was nicht korrekt ist:
grafik

nach dem Speichern und einem Reboot ists aber korrekt, leider scheint die Anzahl an Buchstaben im Module Name nun auf 4 begrenzt zu sein
grafik

@lumapu
Copy link
Owner

lumapu commented Sep 10, 2022

Vielen Dank für deine schnelle Reaktion. Bei mir ist die Visualisierung auch leer - ohne Sonne konnte ich nicht testen. Kann gut sein, dass mein letzter Commit damit zu tun hat

@mslookup
Copy link

Gerne, kein Problem. Ich kann mir vorstellen, wie viel Arbeit in so einer Entwicklung steckt - da ist es das Mindeste seine Dienste zum Testen anbieten zu können - wenn man sonst schon Nichts beitragen kann :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants