Aktueller Stand ESP32-Arduino 2

Ich denke wir sollten hier einen neuen Thread aufmachen, da es nichts mit der neuen Version zu tun hat. Ich verwende nach wie vor die alte Version und habe diesen Fehler.

Bei mir taucht immer der Fehler in der led.cpp auf.

Zu 6.0.1 Umlaute im Dateinamen:

Das funktioniert wenn man nicht convertUtf8ToAscii(param->value(), filePath); aufruft sondern direkt den Parameter als Dateinamen verwendet, also etwa so:

fileToPlay = (char *) param->value().c_str();
AudioPlayer_TrackQueueDispatcher(fileToPlay, 0, playMode, 0);

Dann kann ich auch Dateien mit Sonderzeichen wieder abspielen. Weiß jetzt noch nicht wo man das am Besten behebt, in der Routine convertUtf8ToAscii ?

Habe auch testweise die playlistcache.csv verglichen:

1.0.6:

6.0.1:

Das kann ich tatsächlich bestätigen. Und vermutlich komplett das Problem aus den Zeilen, die zu case LedAnimationType::Playlist gehören. Weil wenn ich das auskommentiere, dann ist das Problem weg.

Edit:
@Joe91 In barLength steht mitunter komischer Kram drin (255), der offenbar durch case 3 (negative) kommt. Das wird dann versucht, in LEDs darzustellen und dann knallt es. Würde ich jetzt spontan den Code verstehen, dann könnte ich es direkt fixen :rofl:. Aber ich vermute mal, dass ein – auf 0 gemacht wird und dann kommt halt 255 raus.
Sind auch Typos vorhanden in den Variablennamen:

  • activeAnnimation
  • nextAnimaiton

Oh krass. Tut mir wirklich Leid das übersehen zu haben.
Ja, für den Fall, dass der Progress unter 1 LED rauskommt und die „fullLeds“ 0 wären, würde versucht werden 255 LEDs auszugeben.
Hatte zwar große Playlists getestet, allerdings leider zu viele LEDs verwendet als dass ich den Fehler gefunden hätte.
Hier der fix dazu. Habe es zum Testen bei mir auf 4 LEDs gestellt und es funktionoiert damit jetzt:

@biologist: Soll ich dazu einen PR erstellen oder holst du dir den wieder direkt per CherryPick?

1 „Gefällt mir“

Hatte bei mir tatsächlich nur Musik drauf die mir gefällt und dort waren keine Sonderzeichen drin :smiley: .
Da der Funktionsnamen convertAsciiToUtf8 ja dann falschen Code suggeriert sollten wir die Fallunterscheidung lieber im Audioplayer.cpp einbauen.
Aus Kompatibiltätsgründen müssen wir wohl früher oder später eine Fallunterscheidung zwischen Arduino 1.6 und 2.0.X einbauen. Oder hattest du nochmal eine bessere Idee?

Hab’s mir per CherryPick geholt.
Danke für für den schnellen Fix!

1 „Gefällt mir“

Die gibt’s an verschiedenen Stellen eh schon und aus meiner Sicht total ok, da ich das nicht kommen sehe, dass alle von heute auf morgen umsteigen.

OK, da waren ja jetzt mehrere Sachen zusammengelaufen! Bugfix für die Abstürze (die auch Arduino 1.0.6 betrafen) scheint ja jetzt drin zu sein.

Für Arduino 2: Auch wenn mehrere Leute hier das schon einsetzen ist das noch EXPERIMENTELL, es gibt noch einige Dinge die geklärt sein müsssen bevor das offiziell werden kann.

Aus Kompatibiltätsgründen müssen wir wohl früher oder später eine Fallunterscheidung zwischen Arduino 1.6 und 2.0.X einbauen. Oder hattest du nochmal eine bessere Idee?

Genau das wird jetzt schon gemacht. Z.B. hier:

Frage, wo setzt man bei dem Umlautproblem im Dateinamen jetzt am Besten an? Fix in convertUtf8ToAscii() oder einzeln an den jeweiligen Stellen in web.cpp?

2 „Gefällt mir“

Im ersten Schritt würde ich es einfach in der Funktion ändern um Aufwand zu sparen. Vielleicht mit einem Kommetar das später mal noch sauber zu ziehen :wink: .
Schöner wäre aber vermutlich schon das an jeder stelle dreikt zu unterscheiden.
Ich habe dabei keine Preferenzen.

Schnurrt wieder wie ein Kätzchen der ESPuino. Danke!

2 „Gefällt mir“

Bei mir gibt es 50 % Erfolg. Der Mini 4 Layer läuft wieder. Der Zweit kommt jetzt mit einem SD Card Fehler. [E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.

Der Zweit kommt jetzt mit einem SD Card Fehler. [E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.

Das läuft problemlos bei Dir mit Arduino 1.0.6 bei gleichen Settings? Also Fehler tritt nur mit Arduino 2 auf?

OK, dann bist Du hier im falschen Thema: Hier geht es um all die Umstellungen die notwenidig sind um ESPuino auf dem neuen IDF zum Laufen zu bringen. Damit handelst Du Dir automatisch neue Probleme ein! Bringe doch erstmal den ESPuino vernünftig zum Laufen mit dem offiziellen Master basierend auf 1.0.6.

Zu Deinem Fehler: Die SD-Karte kann bei jedem 2.Start nicht eingebunden werden? Das könnte jetzt mehrere Ursachen haben:

  • Schlechte Verkabelung: Fällt raus weil Du hast ja 4-Layer Platine
  • Keine Pullup Widerstände: Auch die sind richtig auf der Platine drauf

Also Hardware-Problem schließe ich aus.
Bist Du alle Punkte durchgegangen wie hier beschrieben?
Vor allem POWER muss stimmen. Könntest die Versorgungspannung der SD auch noch messen.
Arbeitest Du im Batteriebetrieb? Und mit LPCD? SD-Karte <64GB?

Neue Testrunde für die MuTiger :wink:

Arduino 2.0.7 ist seit einer Woche veröffentlicht und lässt sich mit PlatformIO jetzt auch verwenden. Ist noch nicht offziell aber kann mit dem Development-Zweig eingebunden werden:

[env]
;platform = espressif32@<=6.0.1
platform = https://github.com/platformio/platform-espressif32.git

ESPuino kompiliert fein, nach dem Start zeigt es eine neuere IDF Version 4.4.4:

ESP-IDF version: v4.4.4

Ich habe beim Webupload weniger Schwankungen und minimal 300KB/s. Kann das jemand bestätigen?

Ansonsten gibt es noch die Probleme mit Umlauten im Dateinamen, die müssen wir aber hier im Projekt fixen. Hat jemand schon eine Lösung dafür?

Gerne Feedback hier!

1 „Gefällt mir“

Ist es wirklich noch sinnvoll jede neue Version „zu testen“?
Ich glaube ja irgendwie nicht, dass da noch unsere Probleme behoben werden.
Wie Du schon schreibst, müssen wir das im Code anpassen - und vermutlich für IDF 5 auch wieder.

2.0.7. wird voraussichtlich die letzte Version auf der Basis von IDF 4 sein. IDF 5 ist bereits released.

Ich finde auch die Unterscheidung im Code zwischen 1.x und 2.x schwierig. Sollte man nicht den Code fit für 2.x machen und dann den alten 1.x „Zopf abschneiden“?
Man kann sicher auch argumentieren, einfach bei 1.x zu bleiben, weil der Code dort fehlerfrei läuft - neue Hardware wird dort aber sicher nicht unterstützt.

Ich denke auf kurz oder lang wird uns nix Anderes übrigbleiben, als auf 2.x zu wechseln. Im Prinzip gibt’s auch nur zwei Dinge, die nachteilig wären:

a) WLAN-Verbindungsaufnahme: Weiß der Kuckuck, warum das immer nur jedes zweite Mal klappt. Hatten wir bei Arduino1 auch mal, aber das haben sie in den Griff bekommen. Vielleicht muss ich mir da mal Code von anderen Projekten anschauen - vielleicht geht das ja irgendwie besser.
b) Durchsatzraten. Da habe ich bei Arduino1 gesehen, dass ich brutto teilweise über 500 kB/s liege. Wie ist da nochmal der aktuelle Stand bei Arduino2?

Vorteilig (Liste ggf nicht vollständig):
a) Gibt keine Probleme mit MQTT.
b) Die GUI wird latenzfreier angezeigt.
c) Weniger Speicherverbrauch.

Also vielleicht geht man einfach hin und macht einen Branch Arduino2 und diesen entwickelt man dann in die Richtung. So arg weit wird der Weg vermutlich auch nicht sein, da verschiedene Dinge ja bereits umgesetzt wurden.

@tueddy Was meinst du dazu?

Also erstmal haben wir hier Luxusprobleme: Der Stand Arduino 1 läuft sehr stabil (bis auf einige Bugs die letzten Wochen) und Arduino 2 ist doch auch schon recht weit. Einige Leute hier setzen das ja schon in Ihrer Box ein. Die verbliebenenen Probleme lichten sich.
Bisher sind wir ohne eigenen Branch ausgekommen, nur an wenigen Stellen müssen wir zwischen 1/2 unterscheiden. Vorteil jetzt, man kann mit einer Zeile in Platform.ini umschalten und Beides testen. Das finde ich schon fein. Aus meiner Sicht ist kein eigener Branch für Arduino 2 notwendig. Eher ein Dev-Branch für neue Entwicklungen um Regressionen zu vermeiden…

WLAN Verbindungsprobleme habe ich überhaupt nicht mehr! Seit ich in der FRITZBox WPA3/2 auf reines WPA2 umgestellt habe verbindet sich ESPuino immer zuverlässig & schnell.

Aus meiner Sicht bleibt nur der schwankende Web-Upload. Den habe ich bisher immer im IDF 4.4 verortet, aber @Christian hat für den Upload den Audio- und LED-Task pausiert und viel gleichmäßigere Ergebnisse erzielt. Das deutet auf andere Lastverteilung der Tasks in Arduino 2 hin und könnte hier bei uns behoben werden.

Mein Vorschlag:

  • Wir nehmen zunächst die Idee von @Christian auf, während des Web-Uploads Audio- & LED-Task zu pausieren. Ich denke damit könnte man gut leben, Feedback hat man eh in der Web-UI und Audio weiterlaufen zu lassen. Damit können wir die Schwankungen schon mal verkleinern und besser messen/vergleichen.

  • Umlaute im Dateinamen: Das Problem ist ja recht neu durch die Änderungen am Dateisystem. Sollte lösbar sein, ich habe das aber noch nicht hinbekommen. Vielleicht können wir das zunächst fixen? Sollten nur wenige Zeilen sein…

Ist es wirklich noch sinnvoll jede neue Version „zu testen“?

Nicht jede, aber hier ist IDF von Version 4.4.3 auf 4.4.4 gehoben worden. Ich sehe im Release auch einige Fixes im Wifi-Bereich:

Ich verwende jetzt schon einige Zeit Arduino 2. Ich will auch nicht mehr zurück weil es damit bei mir deutlich weniger/kürzere Störgeräusche beim Zugriff auf SD gibt. Auch wenn ich mit Arduino 2 massive Probleme habe. Und außerdem …Stillstand ist Rückschritt. Die Entwickler werden das in den Griff kriegen, sie müssen die Problem nur erfahren.

So das PlatformIO Arduino Package 6.1.0 ist jetzt offiziell, mal schaun wie’s es hier weiter gehen kann:

3 „Gefällt mir“

Ich habe jetzt nochmal das Umlautproblem in der Web-UI getest und kann mit der aktuellen Version Arduino 2.0.7 / Platform-Package 6.1.0 keine Probleme mehr feststellen:

[env]
platform = espressif32@<=6.1.0
;platform = espressif32@<=3.5.0

Also das klappt fehlerfrei bei mir:

  • Rechte Maustaste auf Datei mit Umlaut und „Abspielen“
  • Rechte Maustaste auf Ordner mit Umlaut und „Abspielen“
  • Rechte Maustaste auf Root und „Neuer Ordner“ mit Umlaut
  • Rechte Maustaste auf Datei mit Umlaut und „Löschen“
  • Rechte Maustaste auf Ordner mit Umlaut und „Löschen“

Also alle Menupunkte aus dem Kontextmenu funktionieren. Einizige Änderung bei mir war ein Wechsel der IDE von Windows 11 auf Mac da ich Upload-Probleme mit aktuellen USB-C Board auf Win11 hatte.

Kann das jemand so bestätigen?

1 „Gefällt mir“